1分で会話内容をSlack投稿する(Amazon Connect + Transcribe)

記事タイトルとURLをコピーする

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の設定

機能のデプロイ

  • 今回の機能はAWS Lambda(Python)で実装、Serverless Frameworkでデプロイできるようにしました
  • 今回作成したソースコードは下記に置きました

実行

  • Connectへ電話を掛け、話します
    • 良い話題がなかったので、欠勤の連絡を独り芝居しました
  • 電話切断すると、即時~数秒でS3へ通話記録WAVファイルが出力されます
  • Transcribeジョブが投入されるので、処理を待ちます
    • 今回は通話記録の音声が36秒で、Transcribeジョブの処理時間も36秒でした(同じ秒数になったのは偶然)
    • 何度か1分以内ぐらいの会話で試しましたが、1~2分ぐらい待つと完了するような感触です
  • Transcribeジョブの結果は、jsonファイルとしてS3へ出力されます
    • ファイルの内容はバラバラの言葉になっています。形態素というんでしょうか
  • アウトプットとして、Slackへポストしてみた結果が下記です
    • 今回は雰囲気で会話風にまとめるように実装してみました
  • 処理時間はほぼTranscribeのジョブ待ちですので、通話終了から1~2分で文字起こし結果を連携できるようなイメージです

アウトプット

  • 滑舌の悪さは自覚しているので、今回はゆっくりめに話しました
  • 結果、文字起こしとしてはパーフェクトでした 🙌

まとめ

コンタクトセンター等の場合だと、エージェント側はハッキリ発声する、キーワードに気をつける、等の対応が取れるケースが多いと思います。
トレーニングした上で利用することで、文字起こし機能として利用していけるのではないでしょうか。

なお、今回は評価用として作成した簡易的な仕組みとなっております。
S3のイベントは失われることがあります。これをトリガーにした今回の仕組みは、そのままでは本番環境には適用できませんので、ご了承ください。