インタビューなどの録音データを用いてバッチで文字起こしを行いたいとき (>1分の音声ファイル)
Cognitive Services Speech Services は 音声からの文字起こし (Speech-to-Text), テキスト読み上げ (Text-to-Speech) など、音声↔テキストの変換を Web API で利用できるサービスです。
Speech Services の 音声テキスト変換 では、音声ファイル(wav) をサービスに送信→テキストファイルを取得できます。 (Customでない) Speech Service のREST API は、送信できる wav ファイルは最大60秒という制限があります。
リアルタイム (~1分) | リアルタイム (1分~) | バッチ | |
Speech SDK | ○ | ○ | ○ |
Speech REST API | ○ | × | × |
Custom Speech REST API | ○ | ○ | ○ |
今回は、インタビュー時などの録音を用いて、バッチで文字起こしするソリューションを考えてみました。RNN による 音声テキスト変換を用いたく、Custom Speech の REST API を用いてバッチ処理を行ってみます。
Custom Speech API によるバッチ文字起こし
Custom Speech を利用するサブスクリプション
通常の(Custom なし) の Speech Services と同じサブスクリプションをご用意ください。(Custom Services の辞書登録やカスタマイズなどの諸機能を利用する場合は S0 (有償版) のサブスクリプションが必要です。)
Custom Speech API による音声→テキスト変換バッチ処理
Azure Blob Storage に wav ファイルをアップロードし、API には Blob URL で送信するようにします。
[POST] https://YOUR_REGION.cris.ai/api/speechtotext/v2.0/transcriptions
Request [ { "recordingsUrl": "https://YOUR_STORAGE.blob.core.windows.net/wav/test.wav", "models": [], "locale": "ja-jp", "name": "Simple Transcription", "description": "Simple transcription (ja-JP)" } ]
Status Code 204 で受付OKになったら、バッチ処理のステータスをチェックします。
[GET] https:// YOUR_REGION .cris.ai/api/speechtotext/v2.0/transcriptions
**Channel_0** の値 (URL) が変換されたテキストファイルになります。
Result [ { "recordingsUrl":"https://YOUR_STORAGE.blob.core.windows.net/wav/voice.wav", "reportFileUrl": "https://...........................", "resultsUrls":{ "channel_0": "https://XXXXXX.json?sv=.........................." }, :
docs.microsoft.com > Cognitive Services > Speech Services > バッチ文字起こしの使用方法
cris.ai Swagger UI
音声データのバッチ文字起こしソリューション
今回は Web から Azure Blob Storage に音声ファイルをアップロードし、Blob Storage が更新された時に Azure Logic App (または Azure Function) で Custom Speech API のバッチ文字起こしジョブを投入、ステータスを確認して Blob Storage に結果(テキストファイル)をアップロードしています。音声ファイルとテキストファイルのログを Azure Cosmos DB (または Azure Table Storage) に保持しています。
※Blob Trigger は検証用として暫定的に利用しています。スケールや待機時間の問題がある場合は Event Grid を利用します。
docs.microsoft.com > Azure Functions > Blob Trigger
wav ファイルのアップロードや txt ファイルを取得する Web アプリ (Azure Web App) と、バッチ処理を行う Azure Function のサンプルコードを公開しましたので、お試しください。
Cognitive Services Speech Service Batch STT (Speech-to-Text) Samples