このページでは、非同期音声認識を使用して、長い音声ファイル(1 分以上)をテキストに変換する方法について説明します。
非同期音声認識では、音声処理オペレーションの長時間実行が開始されます。1 分を超える長さの音声を文字変換するには、非同期音声認識を使用します。短い音声の場合は、同期音声認識を使用したほうが早くて簡単です。
オペレーションの結果は、google.longrunning.Operations メソッドを使用して取得できます。結果が残されて取得可能な期間は、5 日間(120 時間)です。ローカル ファイルから音声コンテンツを Speech-to-Text に直接送信することも、{ storage_name } に保存されている音声コンテンツを API で処理することもできます。1 分を超える音声ファイルは、Speech-to-Text で音声文字変換するには、Cloud Storage バケットに保存する必要があります。1 分を超えるローカル ファイルに対して非同期音声認識を実行すると、エラーになるか、不完全な音声文字変換が行われます。
Google Cloud Storage ファイルを使用した長い音声ファイルの文字変換
次のサンプルでは、長時間の音声文字変換処理用の生の音声入力データを格納するために、Cloud Storage バケットを使用しています。 一般的な longrunningrecognize
オペレーションのレスポンスの例については、Speech-to-Text の基本のドキュメントをご覧ください。
プロトコル
詳細については、speech:longrunningrecognize
API エンドポイントをご覧ください。
同期音声認識を実行するには、POST
リクエストを作成し、適切なリクエスト本文を指定します。次は、curl
を使用した POST
リクエストの例です。この例では、Google Cloud Cloud SDK を使用して、プロジェクト用に設定されたサービス アカウントのアクセス トークンを扱います。Cloud SDK のインストール、サービス アカウントがあるプロジェクトの設定、アクセス トークンの取得などの手順については、クイックスタートをご覧ください。
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://gcs-test-data/vr.flac' } }" "https://speech.googleapis.com/v1/speech:longrunningrecognize"
リクエスト本文の構成について詳しくは、RecognitionConfig と RecognitionAudio のリファレンス ドキュメントをご覧ください。
リクエストが成功すると、サーバーは 200 OK
HTTP ステータス コードと JSON 形式のレスポンスを返します。
{ "name": "7612202767953098924" }
ここで、name
はリクエストに対して作成された長時間実行オペレーションの名前です。
処理が完了するまで待ちます。処理時間はソース音声によって異なります。ほとんどの場合、ソース音声の半分の時間で結果が得られます。長時間実行オペレーションのステータスは、https://speech.googleapis.com/v1/operations/
エンドポイントにGET
リクエストを行うことによって取得できます。your-operation-name
は longrunningrecognize
リクエストから返される name
に置き換えます。リクエストの推定進捗状況は、progressPercent
フィールドから取得できます。
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": "okay so what am I doing here...(etc)...", "confidence": 0.96096134, } ] }, { "alternatives": [ { ... } ] } ] } }
オペレーションが完了していない場合は、レスポンスの done
プロパティが true
になるまで GET
リクエストを繰り返し行うことにより、エンドポイントをポーリングできます。
gcloud
詳しくは、recognize-long-running
コマンドをご覧ください。
非同期音声認識を行うには、gcloud
コマンドライン ツールを使用し、そこにローカル ファイルまたは Google 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" } ] } ] }
C#
Go
Java
Node.js
PHP
Python
Ruby
ローカル ファイルを使用した長い音声ファイルの変換
次のサンプルでは、長時間の音声文字変換処理を行う生の音声入力データを格納するために、ローカル ファイルを使用しています。 一般的な longrunningrecognize
オペレーションのレスポンスの例については、Speech-to-Text の基本のドキュメントをご覧ください。
C#
Go
Java
Node.js
PHP
Python
Ruby