Amazon Transcribe
概要
AWS上の文字起こし機能
生音源またはwavファイルの音声を、機械学習を使ってテキスト化する
公式
機能
非同期(ジョブキューも使える)での実行
ストリーミングによるリアルタイムでの実行(日本語は対象外 2020/02/04)
医療系に特化した実行が別APIとしてある
カスタマイズ・ボキャブラリーの管理機能
スラング・卑猥な言葉のフィルター管理機能
取りうるアーキテクチャ
非同期実行
wavかflacファイルを作ってs3にアップロード・Amazon Transcribeを実行
s3にアップロードしたファイルとリクエストを紐づける必要がある
ジョブ名は任意に指定可能だが、必須パラメータではないため、ファイル紐づけの方が安全ぽい
終わったかどうかをGetTranscriptionJobで確認・ステータスがCompletedなら結果ファイルへの参照が一緒に入っているので参照先ファイルを取得して中身を見る
無策だとこの結果の取得を行うのに、無暗やたらに結果を取りにいくことになるので要工夫
裏側で実行していれば良い場合は、CloudWatch EventでTranscribeのステータスをトリガーにできるので、終わったらAmazon SNSなどへ通知して後続処理を実行すればOK
ブラウザなどフロント側へ結果を返さないといけない場合は、ファイルサイズ・再生時間から過去の実行時間の実績から終了時間予測を立てて、その時間に結果を確認するとかすればOK。空ぶった場合は、数秒ごとにリトライするような作りになる。※何回か試した感じだと線形的に実行時間増えてたので、予測に工夫はあんまり必要なさそう
イベントストリームエンコード
デスクトップ or スマホネイティブのアプリ向けの機能っぽい
プロトコルに従ってバイトデータのやり取りするだけ
ストリーミング(WebSocket)
録音ボタンか何かを押したら、サーバ経由でAmazon Transcribeの署名付きURLを発行さす
署名付きURLをフロントに返して、そこへ向かって、マイクなどから吹き込んだ生音声を投げる
結果はリアルタイムに返って来る
終了ボタンか何かを押したら、WebSocketに空のオーディオチャンクをエンコードして送信すれば終わる
※今のところ日本語では使えない
ストリーミング(HTTP/2)
使いたい場面が判らないけど、
バッチ処理などで、複数の入力を効率よく同時に文字起こしするとか?(s3に置けば良いような・・・)
使い道が判らん・・・