Speech-to-Text API に音声データを送信する場合は、データを直接送信するか(リクエストの content
フィールドに指定)、API を使用して Google Cloud Storage バケットに格納されているデータにリモート認識を行います。音声データが 60 秒以下で 10 MB 以下の場合にのみ、同期認識の content
フィールドでデータを直接送信できます。content
フィールド内の音声データは base64 形式である必要があります。このページでは、音声をバイナリ ファイルから base64 エンコード データに変換する方法について説明します。
60 秒または 10 MB を超える音声データを送信して認識を行うには、データを Google Cloud Storage バケットに保存する必要があります。base64 形式に変換せずに非同期で分析することもできます。詳細については、非同期認識のドキュメントをご覧ください。
Base64 エンコード音声の埋め込み
音声データはバイナリデータです。gRPC リクエスト内に単純にバイナリデータを書き込むことができますが、REST リクエストを行う際には、JSON が使われます。JSON はバイナリデータを直接サポートしていないテキスト形式であるため、それらのバイナリデータは Base64 エンコードを使用して、テキストに変換する必要があります。
音声ファイルを base64 エンコードするには:
Linux
- base64 コマンドライン ツールを使用して、音声ファイルをエンコードし、
-w 0
フラグを使用して、行の折り返しを防ぎます。
$ base64 source_audio_file -w 0 > dest_audio_file
2.リクエストの content
フィールド内に base64 エンコードされた音声ファイルをインラインで挿入して、JSON リクエスト ファイルを作成します。
{ "config": { "encoding":"FLAC", "sampleRateHertz":16000, "languageCode":"en-US" }, "audio": { "content": "ZkxhQwAAACIQABAAAAUJABtAA+gA8AB+W8FZndQvQAyjv..." } }
Mac OSX
- base64 コマンドライン ツールを使用して、音声ファイルをエンコードします。
$ base64 source_audio_file > dest_audio_file
2.リクエストの content
フィールド内に base64 エンコードされた音声ファイルをインラインで挿入して、JSON リクエスト ファイルを作成します。
{ "config": { "encoding":"FLAC", "sampleRateHertz":16000, "languageCode":"en-US" }, "audio": { "content": "ZkxhQwAAACIQABAAAAUJABtAA+gA8AB+W8FZndQvQAyjv..." } }
Windows
- Base64.exe ツールを使用して音声ファイルをエンコードします。
C:> Base64.exe -e source_audio_file > dest_audio_file
2.リクエストの content
フィールド内に base64 エンコードされた音声ファイルをインラインで挿入して、JSON リクエスト ファイルを作成します。
{ "config": { "encoding":"FLAC", "sampleRateHertz":16000, "languageCode":"en-US" }, "audio": { "content": "ZkxhQwAAACIQABAAAAUJABtAA+gA8AB+W8FZndQvQAyjv..." } }
音声コンテンツをプログラムで埋め込む
テキスト エディタを使ってリクエストに音声バイナリデータを埋め込むことは実用性に欠け、また望ましくありません。実際には、クライアント コード内に base64 エンコード ファイルを埋め込みます。サポートされるすべてのプログラミング言語には、base64 エンコード コンテンツの組み込みメカニズムがあります。
Python
Python では、次のように音声ファイルを base64 エンコードします。
# Import the base64 encoding library.
import base64
# Pass the audio data to an encoding function.
def encode_audio(audio):
audio_content = audio.read()
return base64.b64encode(audio_content)
Node.js
Node.js では、次のように音声ファイルを base64 エンコードします。ここで audioFile
はバイナリ エンコードの音声ファイルです。
Java
Java では、org.apache.commons.codec.binary.Base64
内で encodeBase64
静的メソッドを使用して、バイナリ ファイルを Base64 でエンコードします。
// Import the Base64 encoding library.
import org.apache.commons.codec.binary.Base64;
// Encode the speech.
byte[] encodedAudio = Base64.encodeBase64(audio.getBytes());