Base64 エンコード音声コンテンツ

このページでは、音声をバイナリ ファイルから base64 エンコード データに変換する方法について説明します。

Speech API に音声を渡す場合、Google Cloud Storage にあるファイルの URI を渡すか、リクエストの content フィールド内に音声データを直接埋め込むことができます。

Base64 エンコード音声の埋め込み

音声データはバイナリデータです。gRPC リクエスト内に単純にバイナリデータを書き込むことができますが、REST リクエストを行う際には、JSON が使われます。JSON はバイナリデータを直接サポートしていないテキスト形式であるため、それらのバイナリデータは Base64 エンコードを使用して、テキストに変換する必要があります。

音声ファイルを base64 エンコードするには:

Linux

  1. 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

  1. 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

  1. 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 はバイナリ エンコードの音声ファイルです。

// Imports the Google Cloud client library
const fs = require('fs');
const speech = require('@google-cloud/speech');

// Creates a client
const client = new speech.SpeechClient();

/**
 * TODO(developer): Uncomment the following lines before running the sample.
 */
// const filename = 'Local path to audio file, e.g. /path/to/audio.raw';
// const encoding = 'Encoding of the audio file, e.g. LINEAR16';
// const sampleRateHertz = 16000;
// const languageCode = 'BCP-47 language code, e.g. en-US';

const config = {
  encoding: encoding,
  sampleRateHertz: sampleRateHertz,
  languageCode: languageCode,
};
const audio = {
  content: fs.readFileSync(filename).toString('base64'),
};

const request = {
  config: config,
  audio: audio,
};

// Detects speech in the audio file
const [response] = await client.recognize(request);
const transcription = response.results
  .map(result => result.alternatives[0].transcript)
  .join('\n');
console.log(`Transcription: `, transcription);

Java

Java では、encodeBase64 静的メソッドを org.apache.commons.codec.binary.Base64 内で使用して、バイナリ ファイルを base64 でエンコードします。

// Import the Base64 encoding library.
import org.apache.commons.codec.binary.Base64;

// Encode the speech.
byte[] encodedAudio = Base64.encodeBase64(audio.getBytes());
このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Cloud Speech-to-Text ドキュメント
ご不明な点がありましたら、Google のサポートページをご覧ください。