Amazon Transcribe が日本語にも対応ました。
Amazon Transcribeは、Speech to Text、つまり音声から文字起こしするサービスです。
音声といえば、電話、電話といいえばAmazon Connect、ということで通話記録ファイルを文字起こししてみました。
概要
下記一連の流れを自動処理してみます
- Connectで通話
- 通話記録(WAVファイル)がS3へ出力される
- S3イベントをトリガーにLambda起動
- LambdaでTranscribeジョブを投入
- Transcribe結果(jsonファイル)がS3へ出力される
- S3イベントをトリガーにLambda起動
- jsonをパースして会話に分離
- Slackへpost
手順
Amazon Connectの設定
- データストレージ
- 通話記録を有効化し、出力先のS3バケットを指定します
- 問い合わせフロー
機能のデプロイ
- 今回の機能はAWS Lambda(Python)で実装、Serverless Frameworkでデプロイできるようにしました
- 今回作成したソースコードは下記に置きました
実行
- Connectへ電話を掛け、話します
- 良い話題がなかったので、欠勤の連絡を独り芝居しました
- 電話切断すると、即時~数秒でS3へ通話記録WAVファイルが出力されます
- Transcribeジョブが投入されるので、処理を待ちます
- 今回は通話記録の音声が36秒で、Transcribeジョブの処理時間も36秒でした(同じ秒数になったのは偶然)
- 何度か1分以内ぐらいの会話で試しましたが、1~2分ぐらい待つと完了するような感触です
- Transcribeジョブの結果は、jsonファイルとしてS3へ出力されます
- ファイルの内容はバラバラの言葉になっています。形態素というんでしょうか
- アウトプットとして、Slackへポストしてみた結果が下記です
- 今回は雰囲気で会話風にまとめるように実装してみました
- 処理時間はほぼTranscribeのジョブ待ちですので、通話終了から1~2分で文字起こし結果を連携できるようなイメージです
アウトプット
- 滑舌の悪さは自覚しているので、今回はゆっくりめに話しました
- 結果、文字起こしとしてはパーフェクトでした 🙌
まとめ
コンタクトセンター等の場合だと、エージェント側はハッキリ発声する、キーワードに気をつける、等の対応が取れるケースが多いと思います。
トレーニングした上で利用することで、文字起こし機能として利用していけるのではないでしょうか。
なお、今回は評価用として作成した簡易的な仕組みとなっております。
S3のイベントは失われることがあります。これをトリガーにした今回の仕組みは、そのままでは本番環境には適用できませんので、ご了承ください。