はじめに
AWS re:Inventの参加者にAmazon Echo dotが配布されたので、早速Skillを作ってEcho dotで動かしてみました。折角なら音声認識っぽいということで音声通訳にチャレンジです。現時点でEchoに搭載されている音声認識技術のAlexaは英語とドイツ語のみに対応しているので、英語で話しかけるとドイツ語に翻訳されるようにしました。
技術習得にあたって
とはいえ、Alexaを扱うの初めてて、右も左もわからなかったので、会場に設置されているHands-onラボ(パソコンが数十台並んでいてIBTで自習できる)でまずは基本的な開発の仕方を学習しました。これが恐ろしいほど簡単で、1時間ほどでAlexaとAWS Lambdaを使って一通りのことが出来るようになりました。すでにLambdaを理解している人にはびっくりするくらい面白いツールだと思います。
Alexa側の開発画面にはテストツールも用意されていて、Lambdaが返したメッセージを音声で読み上げてくれたりするので、Echo本体がなくても開発・テストをすることが出来ます。
利用したコンポーネント
Amazon Developer Console https://developer.amazon.com/home.html
AlexaはAmazonの技術ですが、AWSではないので別の管理コンソールがあります。こちらも非常に簡単なものなので、これまでAWSの管理やソーシャルサービスの連携アプリなんかの経験がある人なら直ぐに扱えると思います。
AWS Lambda
サーバーサイドはLambdaで動きます。上記のAlexa側にはLambdaのARNを指定し、Lambda側にはTriggerにAlexa Skill Kitを追加するだけです。サンプルコードが用意されているので、リクエストのレスポンスのJSONも直ぐにわかります。
Microsoft Translate API https://msdn.microsoft.com/en-us/library/ff512421.aspx
Google翻訳を使いたかったのですが、有償ということなので無償のMSの翻訳APIを使っています。ただ、どうもアクセストークンの相性が悪いようで、連続使用するとエラーになります。ここはもう少し解析しておきたいところです。
実際の動画
こんな感じで翻訳されます。https://youtu.be/HlFI25AWy2Q
今後に向けて
翻訳周りのAPIを見直すのと(出来ればGoogle翻訳のほうがいいかなぁ)、本日の基調講演でAWSの音声読み上げ機能でAWS Pollyを使って英語から多言語への翻訳に対応させてみようと思います。ドイツ語であればAlexaが読み上げに対応しているので、Lambdaからテキストメッセージを返せば良いのですが、それ以外の言語は翻訳された外国語をPollyで音声データに変換して、Alexaに渡してあげることで対応できそうです。っていうところ、明日のイベントの合間にコツコツと試してみようと思います。