AWSかGCP使ってSiriみたいなことできないか調査する
ミッションは
- ユーザーがアプリに対して音声で命令する
- 音声データをアプリからパブリッククラウドに連携する
- 解析して、何らかの処理をする
- 何らかのレスポンスをユーザーに返す
何で検索したらいいのかもよくわからなかったけど、キーワードは音声認識 + Chatbotでいいのかな
Amazon Lexが良さそう
Amazon LexはAlexaライクなサービス。詳細な解説は下記
また、東京リージョンを使うと日本語が使えるらしい
音声データを受けて、解析するところはLex
で何とかなる。
アウトプットについては、Amazon Polly
を使うと、読み上げてくれるとのこと。
日本人音声もあって、自然なイントネーションではある。
Lexで簡単にチャットボットがつくれることは理解できたけど、アプリから音声データをどうやって渡すんだ?
というか渡せるのか?
理想はAPI的にアプリから叩くと音声渡せるみたいなのがいいが……
Lexへの音声データ渡しがどうなるのかわからないけど、もし文字列で渡した方がよかったら、Amazon Transcribe
を噛ます必要があるのかな
GCP
Dialogflow
そうそう、こういうことがやりたいんですよ
音声→テキストのサービスはSpeech-to-Text
GCPの方がDeveloperフレンドリーで、音声認識の精度は高い(という噂)っぽい。
一方AWSは情報が多いので、そこの嬉しさはあるか。
日本語対応、無料クレジットは両社ともしてそう。
強いて言えばAmazonの方がサービス良さそう。
調査終わり。
音声データ連携のところ、気が向いたらもう少し深掘りする。
音声データ連携のところ、気が向いたらもう少し深掘りする。
APIにどういう形式で音声データ渡したらいいか、そもそも渡せなくてテキストに変換する必要があるのかをもうちょっと調べます
DialogflowのAPI仕様は見つけた。
APIリファレンス > Sessions 型 > detectIntent > QueryInputとネストが深かった
テキストはもちろん可能で、その他にインテントクエリ、自然言語の音声データ、トリガーされたイベントが指定可能。
インテントクエリとトリガーされたイベントは具体的に何指してるのかわからないが、何かしらGCPコンソールで設定して、そのIDを指定することになるのかな?
Represents the query input. It can contain one of:
- A conversational query in the form of text.
- An intent query that specifies which intent to trigger.
- Natural language speech audio to be processed.
- An event to be triggered.
音声データを渡している事例がググっても出てこないなあ
ちょっと古い記事(2018)だけどわかりやすい
Amazon Lexも音声データを送信可能だった。
このチュートリアルを見た。
AudioInputEvent
, TextInputEvent
, DTMFInputEvent
があるそう。
DTMFってなんだ