このページでは、Cloud Speech-to-Text API と非同期音声認識を使用して、長い音声ファイル(1 分を超える)をテキストに変換する方法について説明します。
非同期音声認識について
非同期音声認識は、音声処理オペレーションの長時間実行を開始します。60 秒を超える音声を文字に変換するには、非同期音声認識を使用します。短い音声の場合は、同期音声認識を使用したほうが早くて簡単です。非同期音声認識の上限は 480 分です。
Cloud Speech-to-Text と非同期処理
音声コンテンツをローカル ファイルから Cloud Speech-to-Text に直接送信し、非同期処理を行うことができます。ただし、ローカル ファイルの音声時間の上限は 60 秒です。60 秒を超えるローカル音声ファイルを文字変換しようとすると、エラーが発生します。非同期音声認識を使用して 60 秒を超える音声を文字変換するには、Cloud Storage バケットにデータを保存する必要があります。
オペレーションの結果は、google.longrunning.Operations メソッドを使用して取得できます。結果は 5 日後(120 時間)まで取得できます。Cloud Storage バケットに結果を直接アップロードすることもできます。
Cloud Storage バケットを使用して長い音声ファイルを文字変換する
次のサンプルでは、長時間の音声文字変換処理用の生の音声入力データを格納するために、Cloud Storage バケットを使用しています。一般的な longrunningrecognize オペレーションのレスポンスの例については、リファレンス ドキュメントをご覧ください。
プロトコル
詳細については、speech:longrunningrecognize API エンドポイントをご覧ください。
同期音声認識を実行するには、POST リクエストを作成し、適切なリクエスト本文を指定します。次は、curl を使用した POST リクエストの例です。この例では、Google Cloud CLI を使用してアクセス トークンを生成します。gcloud CLI のインストール手順については、クイックスタートをご覧ください。
curl -X POST \ -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ 'config': { 'language_code': 'en-US' }, 'audio':{ 'uri':'gs://cloud-samples-tests/speech/brooklyn.flac' } }" "https://speech.googleapis.com/v1/speech:longrunningrecognize"
リクエスト本文の構成について詳しくは、RecognitionConfig と RecognitionAudio のリファレンス ドキュメントをご覧ください。
リクエストが成功すると、サーバーは 200 OK HTTP ステータス コードと JSON 形式のレスポンスを返します。
{
"name": "7612202767953098924"
}ここで、name はリクエストに対して作成された長時間実行オペレーションの名前です。
処理が完了するまで待ちます。処理時間はソース音声によって異なります。ほとんどの場合、ソース音声の半分の長さで結果が得られます。長時間実行オペレーションのステータスは、GET リクエストを https://speech.googleapis.com/v1/operations/ エンドポイントにすることによって取得できます。your-operation-name は longrunningrecognize リクエストから返された name に置き換えます。
curl -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \ -H "Content-Type: application/json; charset=utf-8" \ "https://speech.googleapis.com/v1/operations/your-operation-name"
リクエストが成功すると、サーバーは 200 OK HTTP ステータス コードと JSON 形式のレスポンスを返します。
{ "name": "7612202767953098924", "metadata": { "@type": "type.googleapis.com/google.cloud.speech.v1.LongRunningRecognizeMetadata", "progressPercent": 100, "startTime": "2017-07-20T16:36:55.033650Z", "lastUpdateTime": "2017-07-20T16:37:17.158630Z" }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.speech.v1.LongRunningRecognizeResponse", "results": [ { "alternatives": [ { "transcript": "how old is the Brooklyn Bridge", "confidence": 0.96096134, } ] }, { "alternatives": [ { ... } ] } ] } }
オペレーションが完了していない場合は、レスポンスの done プロパティが true になるまで GET リクエストを繰り返し行って、エンドポイントをポーリングできます。
gcloud
詳しくは、recognize-long-running コマンドをご覧ください。
非同期音声認識を行うには、Google Cloud CLI を使用して、ローカル ファイルまたは Cloud Storage URL のパスを指定します。
gcloud ml speech recognize-long-running \ 'gs://cloud-samples-tests/speech/brooklyn.flac' \ --language-code='en-US' --async
リクエストが成功すると、サーバーは長時間実行オペレーションの ID を JSON 形式で返します。
{
"name": OPERATION_ID
}次のコマンドを実行すると、オペレーションに関する情報を取得できます。
gcloud ml speech operations describe OPERATION_ID
また、次のコマンドを実行して、オペレーションが完了するまでオペレーションをポーリングすることもできます。
gcloud ml speech operations wait OPERATION_ID
オペレーションが完了すると、音声文字変換の結果が JSON 形式で返されます。
{ "@type": "type.googleapis.com/google.cloud.speech.v1.LongRunningRecognizeResponse", "results": [ { "alternatives": [ { "confidence": 0.9840146, "transcript": "how old is the Brooklyn Bridge" } ] } ] }
Go
Cloud STT 用のクライアント ライブラリをインストールして使用する方法については、Cloud STT クライアント ライブラリをご覧ください。 詳細については、Cloud STT Go API のリファレンス ドキュメントをご覧ください。
Cloud STT に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
Cloud STT 用のクライアント ライブラリをインストールして使用する方法については、Cloud STT クライアント ライブラリをご覧ください。 詳細については、Cloud STT Java API のリファレンス ドキュメントをご覧ください。
Cloud STT に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
Cloud STT 用のクライアント ライブラリをインストールして使用する方法については、Cloud STT クライアント ライブラリをご覧ください。 詳細については、Cloud STT Node.js API のリファレンス ドキュメントをご覧ください。
Cloud STT に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
Cloud STT 用のクライアント ライブラリをインストールして使用する方法については、Cloud STT クライアント ライブラリをご覧ください。 詳細については、Cloud STT Python API のリファレンス ドキュメントをご覧ください。
Cloud STT に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
その他の言語
C#: クライアント ライブラリ ページの C# の設定手順を行ってから、.NET 用の Cloud STT リファレンス ドキュメントをご覧ください。
PHP: クライアント ライブラリ ページの PHP の設定手順を行ってから、PHP 用の Cloud STT リファレンス ドキュメントをご覧ください。
Ruby: クライアント ライブラリ ページの Ruby の設定手順を行ってから、Ruby 用の Cloud STT リファレンス ドキュメントをご覧ください。
音声文字変換の結果を Cloud Storage バケットにアップロードする
Cloud Speech-to-Text では、長時間にわたる認識結果を Cloud Storage バケットに直接アップロードできます。この機能を Cloud Storage トリガーで実装すると、Cloud Storage アップロードで Cloud Functions を呼び出す通知がトリガーされ、Cloud Speech-to-Text にポーリングして認識結果を返す必要がなくなります。
結果を Cloud Storage バケットにアップロードするには、長時間実行の認識リクエストでオプションの TranscriptOutputConfig 出力構成を指定します。
message TranscriptOutputConfig {
oneof output_type {
// Specifies a Cloud Storage URI for the recognition results. Must be
// specified in the format: `gs://bucket_name/object_name`
string gcs_uri = 1;
}
}
プロトコル
詳細については、longrunningrecognize API エンドポイントをご覧ください。
次の例は、curl を使用して POST リクエストを送信する方法を示しています。ここでは、リクエストの本文で Cloud Storage バケットへのパスを指定しています。結果は、SpeechRecognitionResult を格納する JSON ファイルとしてこの場所にアップロードされます。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ 'config': {...}, 'output_config': { 'gcs_uri':'gs://bucket/result-output-path.json' }, 'audio': { 'uri': 'gs://bucket/audio-path' } }" "https://speech.googleapis.com/v2/speech:longrunningrecognize"
LongRunningRecognizeResponse には、アップロードが試みられた Cloud Storage バケットのパスが含まれています。アップロードが失敗した場合、出力エラーが返されます。同じ名前のファイルがすでに存在する場合、アップロードは、タイムスタンプを接尾辞として付加した新しいファイルに結果を書き込みます。
{
...
"metadata": {
...
"outputConfig": {...}
},
...
"response": {
...
"results": [...],
"outputConfig": {
"gcs_uri":"gs://bucket/result-output-path"
},
"outputError": {...}
}
}
使ってみる
Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Cloud STT のパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
Cloud STT を無料で試す