![[レポート]  Dive Deep Alexa Voice Service #Alexa #AWSSummit](https://devio2023-media.developers.io/wp-content/uploads/2018/04/400x400.png)
[レポート] Dive Deep Alexa Voice Service #Alexa #AWSSummit
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは、せーのです。
今日は2018/05/30より3日間に渡って東京、品川で開催されている「AWS Summit Tokyo 2018」からセッションリポートをいたします。
このレポートはTech上級 「Dive Deep Alexa Voice Service」です。スピーカーはアマゾンジャパン合同会社 Alexa Voice Service本部 シニアソリューションアーキテクトの北迫 清訓氏です。
レポート
- Alexaを様々な製品にどのようにして搭載するか、を技術的観点から紹介する
 - 2014末に販売開始
 - 日本でも2018/3末に販売開始
 - 音声認識のエンジン「Alexa」をクラウドに持っていった部分がイノベーションのカギ
 - ユーザーが触れるデバイスはマイク、スピーカー、ネットワークのコネクティビティのみが入っている
 - クラウドはどんどん進化するので、クラウドにつながっているすべてのデバイスはその進化を常に享受できる
 
数字で見るAlexa
- 46%が成人が音声アシスタントもしくは音声検索を利用
- 音声は次世代のインターフェースとしてWebやモバイルに取って代わる存在になりうる
 
 - 55%がハンズフリーの利便性で音声を利用
 - 60%が1日4回以上音声アシスタントを利用
- 特定の用途だけではなく様々なシーンで今後音声が使われることになる
 
 - 91%がコネクテッドデバイスの購入を追加で検討している
- 日々生活する上で触れるもの、あらゆるもので音声でのサービスを受けたい、と思っている
 
 - 利用用途の順位は「質問をする」「ニュースを聞く」「天気」「交通情報」などWebを使って検索していたものの代替となっている
 - エンターテインメントとして音楽やラジオを聞く
 - タイマーをセットする
 - スマート家電の操作
 - 
電話やメッセージングのツールとしてAlexaを使用する
 - 
利用場所の順位は「リビングルーム」「キッチン」「ベッドルーム」
- 長い時間過ごす場所においてある
 
 
ビジョン: Alexa Everywhere, for everyone
- いろいろな製品にAlexaを搭載し、VUIを組み込む
 - ありとあらゆる方が自由にAlexaと会話できる環境を提供する
 - 代表的なドメイン
- ホームオーディオ
 - 家電
 - テレビ
 - ウェアラウル
 - 自動車
 - スマートスピーカー
 - スマートホーム
 - スマートフォン
 
 - Echoは「スマートスピーカー」に入る
 - 
発売されているAlexa搭載製品
- スピーカー - 音声で音楽の検索、操作ができる
 - 冷蔵庫
- タイマーの設定や冷蔵庫の中を見て足りないものを音声で注文する
 
 - テレビ
- 音声でテレビの操作
 
 - 持ち運びできる時計にAlexa
 - 車
 - 家の中の温度を音声でコントロール
 - PCにAlexaが入る
- 音声でPCを操作
 
 - イヤホンにAlexa
 - 火災探知機
- 家庭に当たり前にある製品にAlexaを搭載する
 
 
 
Alexa Voice Service
- Alexa全体のアーキテクチャ
 - 音声を理解し、内容を解釈するコアがAlexa
 - Alexa Voice Serviceはコネクテッドデバイスに対してAlexaとの通信ができるAPI等を提供するもの
 
Alexa搭載製品の仕組み
- 「ジャズの音楽をかけて」とユーザーが発話
- ウェイクワードエンジンが常に音声を聞いている
 - ウェイクワードを検知しない限りクラウドに音声は通信しない
 
 - Alexa
- ASRを通じてテキスト変換
 - NLUにてキーワードを抽出する
- 「音楽」というキーワードでミュージック系のものと判断
 - 「ジャズ」から音楽のカテゴリと判断
 - 「かけて」をインテントの一種と認識する
 
 
 - サービス・プロバイダ
- ミュージックサービスのスキルにAPIを通じてリクエストを受ける
 - サービス内容を返す
 
 - Alexa
- 受け取ったレスポンスをTTSにて音声に変換
 - 実際の音楽は別途URLを提供する(音楽ファイルを送るわけではない)
 
 
Inside of Alexa Enabled Device
Alexa搭載製品の「機能」
- 音声ハードウェア
- 音声の処理を司るチップ等
 
 - デバイスソフトウェア
- AVS Client
 
 - インタラクションモデル
 - 製品モデルの種類
- Close to Talk: プッシュ/ タップ / タッチ機能
- 2.5ft / 0.72m以内
 
 - Near-Field: 音声起動
- 5ft / 1.5m以内
 
 - Far-Field: 音声起動
- 20ft / 6m以内
 
 
 - Close to Talk: プッシュ/ タップ / タッチ機能
 - 距離が離れるほど周りのノイズをどうキャンセルするか => マイクなどのハードウェア性能で実現する
- Audio Front End
 - ADC(Analog Digital Converter)
 - DSP
- ノイズキャンセリングなどを行う
 
 - Audio Output
 - Amp / DAC
 
 - ハードが担うのはマイクを複数個つかったプロセッサ
 
正しいAudio Front Endの選択
- Audio algorithms
- 音響エコー
 - 電話機をイメージするとわかりやすい
 - スピーカーからの相手の音声をマイクが拾うとやまびこのようになる
 - デバイスのマイクで拾われたスピーカー出力が一緒にクラウドに送られるとクリアな音声が送れない
 - DSPを使ってスピーカー部分をノイズキャンセリング
 - 音声収集
 - ビームフォーミング
- 複数のマイクで数msのズレを検知、ユーザーが話している方向を検知する
 
 
 - マイクロフォンの数
- リモコン型など近くで話すケースであればマイクは1つでいい
 - 遠くから放されるのであればマイクは複数必要
 
 - マイクロフォンの配置
- 360度どこから話しかけられるかわからない場合は円形に配置
 - ディスプレイ型などはまっすぐに配置する
 
 - マイクの数が多いほうが一般的に性能が良いが等倍ではない
 - S/N比が高い環境では、マイクの数が少なくても十分に紫衣脳が出る
 - S/N比が低いと7つマイク開発キットでも、制度が落ちる
 - 
AVS開発キット
- Audio FrontendのキットがAmazonはじめ各社メーカーが出している
 - メーカーにより特色が出ている
 
 
Software Architecture
- デバイスソフトウェア
- Events
- クライアントからAVSは情報を送信
 
 - Directives
- AVSからクライアントに指示を送信
 
 
 - Events
 - 「Alexa、今日の天気を教えて」という発話をどのように処理しているか
- Recognize event
- マイクで拾った音声データを認識用に投げる
 
 - StopCapture directive
- 音声の終わりを検知してマイクを止めるように支持
 
 - Speak Directive
- 音声合成をデバイスに返す
 
 - RederTemplate Directive
- 天気情報のメタデータをあわせて返す
 
 - SpeachStarted event
- デバイスが再生を開始した、という通知をAlexaに通知
 
 - SpeachFinished event
- デバイスが再生を終了した、という通知をAlexaに通知
 
 
 - Recognize event
 - デバイスに複雑な実装を載せないため
 
AVS API
- AVS搭載製品いあらAVSのサービスを利用するためのAPIを公開
- 製品からの接続認可はLWA(Login with Amazon)を利用
 - AVSとの相互接続はHTTP/2を利用
 - 地域ごと(North America/Europe/Asia)にAVSエンドポイントが存在
 - エンドポイントには様々なインターフェースがある
 - インターフェースの中にeventやDirectiveがある
 
 
AVS Device SDK
- クライアント側のSW実装を容易にするDevice  SDKをGithubで公開
- C++ベースでマルチプラットフォームで利用可能
 - イベント/ ディレクティブ管理、チャンネル管理のじっそうが 容易
 - カスタマイズができる、差し替えも可能
 
 - AVSデバイスSDKアーキテクチャ
- Audio Input Processor(API)
- トリガーされた際のみ音声データを送信
 
 - Wake Word Engine 
- Alexaの国に合わせたモデルで検知
 
 - Shared DatatStream
- バッファに15-20の音声をためておく
 
 - Alexa Communication Library はADSLにdirectivesを渡す
 - 永続的なチャンネルを提供
 - Eventごとにストリームが貼られている
 - Alexaから特定のデバイスに指示が飛んでいく場合
 - ダウンチャンネルストリーム
- http/w persistentコネクションをつかっている
 
 - インタラクションの中継
 - ACLからdirectivesを受け取る => Alexa Directive Sequencer Library
 - Capability Agentがdirectiveを受け取ってアクションをする
 - Capability Agentの種類
- 音声のキャプチャ
 - notification
 - スピーカーの音量を変える
 - オーディオの制御
 - メタデータのレンダリング
 - ステータスをAVSに通知
 
 - Agentは並列に立ち上がる
 - 一つしかないスピーかーの優先度を決める
 - Alexa Focus Manager Library
- 優先度はダイアログ、アラート、コンテンツの順
 
 - AVS開発キットとAVSデバイスSDKを使うとプロトタイプから商用デバイス開発まで実装が可能
 
 - Audio Input Processor(API)
 - Alexaと何を作りますか?
 
まとめ
いかがでしたでしょうか。後半はAlexa内部のかなり深い仕組みの話で興味深かったです。
ガチな製品でもラズパイのようなプロトタイプでも同じ実装でAlexaの世界を体験できる、というのは開発者にとって嬉しいですね。この機会にAVSの世界にも足を踏み入れようかと思っているせーのでした。










