Tacotron 2의 모델 아키텍처에 대해 자세히 알아보기. 이미지의 아래쪽 절반은 문자 시퀀스를 스펙트로그램에 매핑하는 시퀀스-시퀀스 모델을 나타냅니다. 기술적인 세부 사항은 논문을 참조하세요.


최첨단 TTS 시스템의 결과를 보여주는 Tacotron 2 오디오 샘플 몇 가지를 들을 수 있습니다. 인간 청취자에게 생성된 음성이 얼마나 자연스러운지 점수를 매겨달라고 요청한 평가에서 성우와 같은 전문가들이 녹음한 음성에 대해 매긴 점수와 비슷한 점수를 얻었습니다.

샘플이 훌륭한 것 같지만 아직 해결해야 할 어려운 문제가 몇 가지 남아 있습니다. 예를 들어, 우리의 시스템은 복잡한 단어(예: decorum, merlot)를 발음하는 데 어려움이 있으며 극단적인 경우에는 이상한 소리를 랜덤하게 생성할 수도 있습니다. 또한, 아직은 실시간으로 오디오를 생성할 수 없습니다. 게다가 아직은 생성된 음성을 제어할 수도 없습니다(예: 행복하거나 슬픈 음색을 내도록 지시). 이들 각각은 그 자체로 흥미로운 연구 과제입니다.

감사의 말

Jonathan Shen, Ruoming Pang, Ron J. Weiss, Mike Schuster, Navdeep Jaitly, Zongheng Yang, Zhifeng Chen, Yu Zhang, Yuxuan Wang, RJ Skerry-Ryan, Rif A. Saurous, Yannis Agiomyrgiannakis, Yonghui Wu, Sound Understanding 팀, TTS Research 팀 및 TensorFlow 팀에 감사의 마음을 전합니다.



개요 페이지에서는 비정상 종료가 발생하지 않은 사용자 비율이 두드러지게 표시되므로 어떤 빌드가 안정성 측면에서 향상되고 있는지를 측정할 수 있습니다.


또한 유의성 배지 도 확인할 수 있습니다. 이 배지가 강조 표시되어 있을 때는 앱 작동을 비정상적으로 만들 수 있는 두드러지는 요소가 있음을 나타냅니다. 예를 들어, 유의성 배지를 통해 특정 문제가 특정 기기, OS 또는 탈옥된 휴대폰에서만 발생하는지를 알 수 있습니다.


이러한 통찰력 있는 정보에 힘입어 문제를 효과적으로 분류하고, 긴급한 문제에 신속하게 대응할 수 있습니다. 탈옥된 기기에서만 일반적으로 발생하는 문제는 우선 순위를 낮출 수 있습니다. 아니면 최신 OS 릴리스로 인해 발생한 문제를 수정하는 데 더 집중할 수도 있습니다. 유의성 배지는 문제를 해결할 때 더욱 현명한 결정을 내리는 데 도움이 됩니다.


사용자설정 키 및 로그

Crashlytics를 사용하면 비정상 종료가 발생한 이유와 어떠한 일이 발생하여 비정상 종료에까지 이르게 되었는지에 대한 추가 정보와 그에 대한 컨텍스트를 제공하는 로그와 키를 계측할 수 있습니다.

구체적으로 말하면, 로그를 사용하여 비정상 종료가 발생하기 바로 전에 사용자가 어떠한 작업을 하고 있었는지에 대한 세부 정보를 수집할 수 있습니다(예: 사용자가 다운로드 화면으로 이동하고 다운로드 버튼을 클릭함). 또한, 로그를 사용하여 사용자 작업에 대한 세부 정보를 얻을 수도 있습니다(예: 이미지 다운로드 크기). 로그는 비정상 종료 전에 발생한 이벤트의 타임라인을 보여 줍니다. 비정상 종료가 발생하면 더욱 신속하게 디버그하는 데 도움이 되도록 로그 내용을 취하여 이를 비정상 종료 보고에 추가합니다.

상황에 따라 사용자 앱의 마지막 상태를 아는 것이 작업 순서만큼 중요한 경우도 있습니다. 키는 사용자가 앱을 탐색함에 따라 덮어 쓰이는 항목에 대해 마지막으로 알려진 값을 기록하는 키 값 쌍입니다. 예를 들어, 키를 사용하면 게임 앱에서 사용자가 마지막으로 이룬 레벨이나 맞춤 설정의 최신 구성 등 디버그 작업에 유용할지 모르는 컨텍스트를 나타낼 수 있는 정보를 추적할 수 있습니다.

로그와 키는 세션 메타데이터에서 단서를 찾고 버그를 재현하기 위해 사용자가 수행한 단계를 되짚어 갈 수 있는 아주 훌륭한 방법입니다.


실시간 알림

안정성 문제는 워크스테이션을 사용하지 않을 때도 언제든지 나타날 수 있습니다. 새로운 문제가 발생하면 Crashlytics 대시보드에 실시간으로 우선순위에 따라 표시될 뿐만 아니라 새로운 문제가 발생할 때, 문제로 인해 성능이 저하되는 경우, 그리고 문제의 영향이 갑자기 커지는 경우 이메일 알림도 전송됩니다. 여러분 뒤에 Crashlytics가 있으므로 안심하시고 잠시 물러나 여유롭게 커피 한잔 드셔도 됩니다. Crashlytics는 최근 제공한 앱과 관련하여 문제가 발생하면 알림을 전송해주므로 중요한 비정상 종료를 절대로 놓치지 않을 것입니다.


Firebase Crashlytics와 Cloud Functions for Firebase의 통합

Crashlytics의 많은 강력한 기능을 Firebase에 도입한 것 외에, 우리는 플랫폼의 다른 부분에도 Crashlytics를 통합하는 작업도 진행하고 있습니다. 이제, Cloud Functions for Firebase를 트리거하기 위한 이벤트 소스로 Crashlytics 데이터를 활용할 수 있습니다. 이번 통합을 통해 중요한 앱 흐름(예: 구매 흐름)에 영향을 미치는 문제를 팀의 엔지니어나 Slack 채널에 직접 전달하는 워크플로를 자동화할 수 있습니다. 이런 식으로 긴급한 문제가 즉각적이고도 적절하게 모니터링되고 에스컬레이션되도록 할 수 있습니다.


또한, 안정성 데이터를 새로 디자인된 Firebase 콘솔의 다양한 영역에서 함께 노출합니다. 개발자 여러분은 최고 수준의 안정성을 유지하기 위해 여러 페이지 사이에서 탐색할 필요가 없습니다. 이제는 Crashlytics 데이터를 프로젝트 개요 페이지, Firebase용 Google 애널리틱스 대시보드는 물론, 최신 릴리스 섹션에서도 볼 수 있습니다.

앞으로 예정된 더욱 흥미로운 업데이트

Crashlytics의 이번 베타 출시는 최고의 Fabric과 Firebase의 기능을 결합하는 단계의 시작에 불과합니다. 고객은 이미 Google의 플랫폼을 함께 사용하여 놀라운 결과를 달성하고 있습니다. 일례로, 만남을 갖기에 최고의 날짜와 시간을 찾는 데 도움이 되는 앱인 Doodle을 살펴보도록 하겠습니다. Doodle은 Crashlytics 및 원격 구성을 사용해 앱을 새롭게 디자인하고 사용자 유지율과 참여율을 높였습니다.


이제부터 신규 및 기존 Firebase 고객은 Crashlytics를 사용해야 합니다. Crashlytics가 최고의 Firebase용 오류 보고 도구이기 때문입니다. 신규 Firebase 고객은 g.co/firebase/optin을 방문하여 Crashlytics 사용을 시작할 수 있으며, 기존 오류 보고 고객은 오류 보고 대시보드의 배너를 클릭하시면 됩니다. 우리는 계속해서 Crashlytics를 발전시켜 나갈 것이며 여러분의 피드백을 손꼽아 기다리고 있습니다!

이미 Fabric에서 Crashlytics를 사용하고 계시다면 현재 조건으로 충분하십니다. 따라서 아직은 마이그레이션할 필요가 없습니다. Fabric 앱에서 Firebase Crashlytics를 이용할 수 있는 방법에 대한 흥미로운 소식을 곧 알려드릴 예정입니다.

오류 처리

메서드 호출이 실패하면 Task.isSuccessful()이 false가 되고 이 오류에 대한 정보는 Task.getException()을 호출하여 액세스할 수 있습니다. 경우에 따라서는 이러한 예외가 API 호출에서 성공 이외의 값이 반환되는 단순한 형태로 나타나기도 합니다. 다음과 같이 ApiException로 캐스트하여 이를 확인할 수 있습니다.
if (task.getException() instanceof ApiException) {
                    ApiException apiException = (ApiException) task.getException();
                    status = apiException.getStatusCode();
}

다른 경우, MatchApiException이 반환될 수 있으며 여기에는 업데이트된 일치 데이터 구조가 포함됩니다. 이러한 예외도 비슷한 방법으로 검색할 수 있습니다.
if (task.getException() instanceof MatchApiException) {
                    MatchApiException matchApiException =
                        (MatchApiException) task.getException();
                    status = matchApiException.getStatusCode();
                    match = matchApiException.getMatch();
} else if (task.getException() instanceof ApiException) {
                    ApiException apiException = (ApiException) task.getException();
                    status = apiException.getStatusCode();
}

상태 코드가 SIGN_IN_REQUIRED이면 플레이어를 다시 인증해야 함을 나타냅니다. 이를 위해 GoogleSignInClient.getSignInIntent()를 호출하여 플레이어를 대화식으로 로그인합니다.

요약


기존 GoogleApiClient 방식 대신, 더욱 느슨하게 결합된 API 클라이언트 사용으로 변경됨에 따라 상용구 코드가 줄어들고 사용 패턴이 더욱 명확해지고 스레드 안전성이 확보되는 이점이 있습니다. 현재 게임을 API 클라이언트로 마이그레이션하는 경우 다음 자료를 참고하시기 바랍니다.

게임에 대한 로그인 모범 사례:
https://developers.google.com/games/services/checklist

Play Games Services 샘플:
Android 기본 샘플
클라이언트 서버 골격

StackOverflow:
https://stackoverflow.com/questions/tagged/google-play-games



올해 초 Fabric 구성원들이 Firebase와 함께 하기로 했을 때, 우리는 앱을 개발하는 과정에서 일반적으로 발생하는 문제를 해결하는 플랫폼을 제공함으로써 여러분과 같은 개발자들이 멋진 사용자 환경을 만드는데 집중하게 하자는 공통된 목표를 달성하는 것에 뜻을 모았습니다.

많은 영역 중에서도 Fabric이 뛰어난 한 가지는 바로 콘솔과 대시보드였습니다. 우리는 지난 몇 달 동안 Fabric과 협력하여 Fabric과 Firebase에서 가장 뛰어난 부분을 하나로 합치려는 노력을 해왔습니다. 오늘, 우리는 Firebase 콘솔에 대한 몇 가지 개선 사항을 알려드리고자 합니다.


새롭게 설계된 탐색 기능

우리는 먼저 개발팀이 작업하는 방식을 더욱 정확히 반영하기 위해 탐색 기능을 새로 설계하는 작업부터 시작했습니다. 그래서 Firebase 제품을 네 개 그룹, 즉 개발, 안정성, 분석 및 성장으로 묶었습니다. 기존에 Firebase 콘솔에 표시되었던 제품들은 모두 그대로 표시되며, Firebase 플랫폼에서 제공하는 여러 제품들을 더욱 간단히 탐색할 수 있게끔 각 항목들을 재구성했습니다.

새로운 프로젝트 홈

몇 가지 중요 측정항목을 전면과 중심에 표시하도록 Firebase 콘솔의 프로젝트 홈 화면도 다시 설계했습니다. 이제는 Firebase에서 프로젝트를 처음 열 때 네 개의 주요 측정항목, 즉 30일간 비정상 종료가 발생하지 않은 사용자 비율, 30일간 비정상 종료 발생 횟수, 일일 활성 사용자 수 및 매월 활성 사용자 수와 함께 시간 경과에 따라 이러한 추세를 표시하는 그래프가 표시됩니다. 연구 조사를 수행한 결과 개발자는 이 네 가지 측정항목 중 하나를 찾는 데 대부분의 시간을 쓰고 있다는 사실을 확인했으므로 프로젝트 홈 방문 페이지에서 이러한 측정항목에 손쉽게 액세스할 수 있게 했습니다.

Latest Release

많은 사랑을 받은 또 다른 Fabric 콘솔 기능은 Latest Release 섹션입니다. 이 대시보드에서는 최신 앱 출시에서 가장 중요한 통계 정보 일체를 제공하므로 무엇이 잘 진행되고 있는지, 무엇을 롤백해야 하는지 빠르게 파악할 수 있습니다. Latest Release 섹션은 새로 설계된 Firebase 콘솔의 Analytics 섹션 하위에서 찾아볼 수 있습니다. 

업데이트된 Analytics 대시보드

오늘부터 Analytics 대시보드가 궁금한 사항을 쉽게 이해할 수 있도록 단순한 카드로 구성된 것을 볼 수 있을 것입니다. 'DAU' 또는 '사용자 유지 집단(코호트)'과 같은 용어를 기준으로 데이터를 구성하면 탐색하기 어렵기 때문에 "내 사용자가 어디에 참여하는가?" 또는 "사용자를 얼마나 잘 유지하고 있는가?"와 같이 앱과 관련하여 궁금해하는 사항을 기준으로 대시보드를 다시 구성했습니다. 연구 조사 결과 사용자 중 90%가 이 설계를 선호하는 것으로 확인되었으며 여러분도 이 설계가 유용하다는 점을 확인하시게 되기를 바랍니다!


실시간 정보

Fabric의 동료들과 여러 개발자들로부터 들은 의견을 통해 실시간 정보 확보가 중요하다는 점을 알게 되었습니다. 새로운 앱 출시 여부를 추적하거나 버그 수정 상태를 모니터링하는 것과 관계없이 앱에서 어떤 일이 일어나고 있는지 실시간으로 파악할 수 있어야 하며,  이에 따라 변경사항을 반영하거나 작업의 우선 순위를 지정할 수 있어야 합니다.

이를 위해, 새로운 Analytics 대시보드에 표시되는 카드와 콘솔의 Latest Release 섹션에 비정상 종료 및 활성 사용자에 대한 실시간 데이터를 추가되었습니다. 이는 단지 첫 시작일 뿐입니다. 앞으로 계속해서 Firebase 콘솔의 나머지 부분에서도 실시간 데이터를 더 많이 확인할 수 있도록 지원할 계획입니다.

늘 그렇듯이 https://firebase.google.com/support/를 방문하여 피드백을 남기고 궁금한 사항을 질문하실 수 있습니다.
Share on Twitter Share on Facebook


추론을 위해, 모바일 플랫폼에서 신속하게 실행할 수 있도록 최적화된 TensorFlow Lite 작업 세트로 훈련된 프로젝션 모델이 컴파일된 후 기기에서 바로 실행됩니다. 온디바이스 대화형 모델에 대한 TensorFlow Lite 추론 그래프는 다음과 같습니다.
온디바이스 대화형 모델에 대한 TensorFlow Lite 실행.
오늘 출시되는 오픈소스 대화형 모델(코드와 함께 출시)은 위에서 설명한 결합 ML 아키텍처를 사용하여 완벽히 훈련된 모델입니다. 오늘 출시에는 데모 앱도 포함되어 있으므로 휴대기기에서 원터치 스마트 회신 기능을 쉽게 다운로드해 사용해 보실 수 있습니다. 이 아키텍처를 통해 애플리케이션 요구 사항을 기준으로 모델 크기와 예측 품질을 손쉽게 구성할 수 있습니다. 여기서 이 모델이 올바른 효과를 발휘하는 샘플 메시지 목록을 확인할 수 있습니다. 시스템에서는 채팅 대화에서 관찰된 인기 있는 응답 인텐트에서 학습되고 컴파일된 고정된 세트를 통해 회신 제안을 폴백할 수도 있습니다. 기본 모델은 Google이 해당 앱에서 Smart Reply 응답에 사용하는 모델과 다릅니다1.

대화형 모델 이외의 옵션

흥미롭게도, 위에서 설명한 ML 아키텍처에서는 기본 모델을 유연하게 선택할 수 있습니다. 우리는 이 아키텍처를 여러 기계 학습 접근 방식과도 호환되도록 설계했습니다. 예를 들어, TensorFlow 딥 러닝에 사용하는 경우 기본 모델에 대해 경량 신경망(ProjectionNet)을 학습하는 반면, 다른 아키텍처(ProjectionGraph)는 신경망 대신 그래프 프레임워크를 사용하는 모델을 나타냅니다.

결합 프레임워크는 여러 가지 ML 모델링 아키텍처를 사용하는 작업에 대해 경량의 온디바이스 모델을 훈련하는 데 사용할 수도 있습니다. 일례로서, 우리는 동적 프로젝션 작업으로 구성된 단순한 프로젝션 아키텍처 및 완전히 연결된 몇 가지 좁은 계층이 결합된 트레이너 모델에 대해 복잡한 피드 전달 또는 반복 아키텍처(예: LSTM)를 사용하는 ProjectionNet 아키텍처를 도출했습니다. 전체 아키텍처는 TensorFlow에서 역전파를 사용하여 완벽하게 훈련되며 훈련을 마치고 나면 간결한 ProjectionNet이 추론에 직접 사용됩니다. 우리는 이 방법을 사용하여 모델 크기를 상당히 축소시키고(최대 몇 자릿수 이상 축소) 여러 시각적 및 언어 분류 작업(몇 가지 예는 여기를 참조)에 대한 정확성과 관련하여 높은 성능을 실현하는 소형 ProjectionNet 모델을 성공적으로 훈련했습니다. 마찬가지로 반지도학습 설정에서도 그래프 학습 프레임워크를 사용하여 다른 경량 모델을 훈련했습니다.
온디바이스 모델 훈련을 위한 ML 아키텍처: 딥 러닝을 사용하여 훈련된 ProjectionNet(왼쪽)과 그래프 학습을 사용하여 훈련된 ProjectionGraph(오른쪽).
우리는 앞으로도 계속해서 TensorFlow Lite 모델을 향상하고 업데이트된 모델을 오픈소스로 출시할 예정입니다. 이러한 ML 아키텍처를 사용하여 학습된 출시 모델(및 향후 모델)은 많은 자연어 및 컴퓨터 버전 애플리케이션에 재사용하거나 머신 인텔리전스 실현을 위해 기존 앱에 연결할 수 있을 것입니다.  기계 학습 및 자연어 처리 커뮤니티에서 이를 바탕으로 우리가 아직 생각하지 못한 새로운 문제 및 활용 사례를 처리할 수 있게 되기를 바랍니다.

감사의 말
Yicheng Fan 씨와 Gaurav Nemade 씨가 이 작업에 막대하게 기여했습니다. Rajat Monga, Andre Hentz, Andrew Selle, Sarah Sirajuddin과 TensorFlow 팀의 Anitha Vijayakumar, 그리고 Robin Dua, Patrick McGregor, Andrei Broder, Andrew Tomkins과 같은 분들은 물론 Google Expander 팀에게도 감사의 인사를 전합니다.



1 출시된 온디바이스 모델은 휴대폰 및 웨어러블 기기에서 지연 시간이 짧은 소규모 애플리케이션에 최적화할 목적으로 훈련되었습니다. 하지만 Google 앱의 Smart Reply 예측은 그보다 크고 복잡한 모델을 사용하여 생성되었습니다. 또한, 프로덕션 시스템에서는 부적절한 콘텐츠를 감지하도록 훈련된 여러 분류자를 사용하며 추가 필터링 및 조정을 적용하여 사용자 환경 및 품질 수준을 최적화하고 있습니다. 오픈소스 TensorFlow Lite 버전을 사용하는 개발자는 최종 애플리케이션에 이와 같은 방법도 따를 것을 권장합니다.
Share on Twitter Share on Facebook

모집 분야
인원
소프트웨어 엔지니어 경력
(00명)
Engineering Manager, Android Media
(안드로이드 미디어, 엔지니어링 매니저)
0명
Software Engineer, Pixel Camera
(카메라 분야 소프트웨어 엔지니어)
00명
Software Engineer, Android OS
(안드로이드 OS, 소프트웨어 엔지니어)
0명
Software Engineer, Tools and Infrastructure
(툴과 인프라스트럭처, 소프트웨어 엔지니어)
0명
Software Engineer - Seoul (소프트웨어 엔지니어)
00명
소프트웨어 엔지니어 신입
(00명)
Software Engineer, University Graduate (소프트웨어 엔지니어)
00명
소프트웨어 엔지니어 인턴
(00명)
2018 소프트웨어 엔지니어 인턴(공지 예정)
00명
Share on Twitter Share on Facebook



운전은 우리의 일상 활동에 있어 필수적인 부분입니다. 따라서 Google에서는 어떻게 하면 Android 기기를 Google 사용자가 사용하기에 더 적합하고 안전하게 만들 수 있을지 고심하는 데 많은 시간을 할애합니다. 운전에 방해가 되지 않도록 하고 개방적인 에코시스템을 빌드하여 안전이 최우선인 스마트폰 환경을 구현할 수 있을까 하는 고심 말입니다.

우리는 최근에 새로 발표한 Pixel 2세대 기기에서 운전 중 알림 일시중지 기능을 선보였습니다. 운전 중 알림 일시중지 기능을 사용하면 운전할 때 기기가 자동으로 알림 일시중지 모드로 전환됩니다. 이 모드에서는 수신 메시지와 알림이 무음 처리되지만 수신 전화, 내비게이션 안내 및 음성 상호작용은 연결된 차량 블루투스를 이용해 계속 받을 수 있습니다. 이 제품은 운전 중 주의를 산만하게 할 요소를 최대한 줄이는 동시에 사용자가 계속해서 원활하게 내비게이션 또는 이와 유사한 다른 앱은 방해받지 않고 사용할 수 있도록 설계되었습니다.

이면을 살펴보면, 이 제품은 여러 센서, 블루투스 및 와이파이에서 저출력 신호를 사용하여 사용자가 운전 중일 때를 감지하는 AI 기반 온디바이스 동작 인식을 사용합니다. 동작 인식 기능은 Android 센서 허브를 사용하여 짧은 지연 시간, 낮은 전력 및 정확한 운전 감지를 보장합니다.

이것이 바로 우리가 나아가야 할 다음 단계이지만 앞으로도 갈 길이 멉니다. 내년 초에는 산만한 요소가 없는 운전 환경을 빌드하기 위해 운전 중 알림 일시중지 기능에서 사용되는 동일한 API인 Activity Recognition Transition API를 출시할 예정입니다.

보내주신 피드백에 감사드리며, 제품의 진화에 따라 계속 여러분의 의견을 경청할 것입니다.

운전 중 알림 일시중지 기능 설정에 관해 궁금한 사항이 있으시면 고객센터를 통해 확인하시기 바랍니다.
Share on Twitter Share on Facebook