Media Translation の基本

このドキュメントでは、Media Translation の基本的な使い方を説明します。取り上げる内容は、Media Translation に対するリクエストの種類、リクエストの作成方法、リクエストに対するレスポンスの処理方法です。Media Translation を使用するすべてのユーザーに、実際に API を使用する前にこのガイドと関連チュートリアルのいずれかを参照することをおすすめします。

音声翻訳リクエスト

Media Translation では、これまでのところ音声翻訳を実行する方法は 1 つしかありません。

  • ストリーミング翻訳(gRPC のみ)は、gRPC 双方向ストリームで提供された音声データの翻訳を行います。ストリーミング リクエストは、マイクからのライブ音声のキャプチャなどのリアルタイムの翻訳を目的として設計されています。ストリーミング翻訳では、音声をキャプチャしながら暫定的な結果を生成して、結果を表示できます。たとえば、ユーザーがまだ話している間に結果を表示できます。ストリーミング翻訳リクエストは、時間が 5 分以下の音声データに制限されます。

リクエストには構成パラメータまたは音声データが含まれます。以下のセクションでは、このような種類の音声翻訳リクエスト、それが生成するレスポンス、そのレスポンスの処理方法について詳しく説明します。

ストリーミング音声翻訳リクエスト

ストリーミング Media Translation API リクエストは、音声翻訳の構成と音声データのいずれかです。構成リクエストの例を以下に示します。

{
    "audio_config": {
        "audio_encoding": "linear16",
        "sample_rate_hertz": 16000,
        "source_language_code": "en-US",
        "target_language_code": "zh",
        "model" : "google-provided-model/video",
    }
    "single_utterance" : False
}

音声データ リクエストの例を以下に示します。

{
    "audio_content " : "\366c\256\375jQ\r\312\205j\271\243%/u\216z\330\354\221\360\253KJ\005\"
}

最初の StreamingTranslateSpeechRequest には、音声を伴わない StreamingTranslateSpeechConfig 型の構成を含める必要があります。同じストリームで送信されるその後の StreamingTranslateSpeechRequest は、生の音声バイトの連続フレームで構成されます。

StreamingTranslateSpeechConfig には次のフィールドがあります。

  • audio_config -(必須)TranslateSpeechConfig 型の音声の構成情報を指定します。
  • single_utterance - (省略可、デフォルト false)音声が検出されなくなったらこのリクエストを自動的に終了するかどうかを示します。設定すると、Media Translation は一時停止、無音、スピーチ以外の音声を検出して、翻訳を終了するタイミングを判断します。設定しない場合、ストリームが直接閉じられるか、ストリームの制限長を超えるまで、ストリームは音声のリスニングと処理を続行します。single_utterancetrue に設定すると、音声コマンドの処理に役立ちます。

TranslateSpeechConfig には次のサブフィールドが含まれています。

  • audio_encoding - (必須)提供された音声(AudioEncoding 型)のエンコード スキームを指定します。コーデックを選択できる場合は、良好なパフォーマンスを得るために、FLACLINEAR16 などのロスレス エンコードをおすすめします。詳細については、音声エンコードをご覧ください。
  • sample_rate_hertz - (必須)提供された音声のサンプルレートを指定します(ヘルツ単位)。サンプルレートの詳細については、後述のサンプルレートをご覧ください。
  • source_language_code - (必須)提供された音声を認識する言語とリージョン / ロケールを指定します。言語コードは BCP-47 識別子である必要があります。言語コードは一般に第一言語タグと、言語が話される国を表す第二リージョン サブタグで構成されます(たとえば、前述の例の英語の「en」と米国の「US」など)。サポートされる言語については、サポートされる言語をご覧ください。
  • 'target_language_code' - (必須)提供された音声のテキスト翻訳に使用する言語を指定します。言語コードは BCP-47 識別子である必要があります。翻訳テキストでは方言が考慮されないため、通常、言語コードは第一言語タグのみで構成されます。ただし、「zh-CN」と「zh-TW」は別の翻訳テキストになります。サポートされる言語については、サポートされる言語をご覧ください。

音声は、StreamingTranslateSpeechRequest 型の audio_content フィールドを通して Media Translation に渡されます。audio_content フィールドには、リクエスト内に埋め込まれた評価対象の音声が格納されます。詳しくは、後述の音声コンテンツの埋め込みをご覧ください。

ストリーミング音声翻訳レスポンス

ストリーミング音声翻訳結果は、StreamingTranslateSpeechResponse 型の一連のレスポンスで返されます。このようなレスポンスは次のフィールドから構成されます。

  • speech_event_type には SpeechEventType 型のイベントが格納されます。このイベントの値は、1 つの発言が完了したと判断されたタイミングを示します。音声イベントは、ストリームのレスポンス内のマーカーとして機能します。END_OF_SINGLE_UTTERANCE を受信したとき、ユーザーは残りの翻訳レスポンスの受信を待機しながら、リクエストの送信を停止する必要があります。
  • results には結果のリストが格納されます。これは、StreamingTranslateSpeechResult 型の中間結果か最終結果のいずれかです。results リストには次のサブフィールドが含まれます。
    • translation には翻訳テキストを指定します。
    • isFinal はこのリストエントリ内に取得された結果が中間結果か最終結果かを示します。

これらのリクエストおよびレスポンス パラメータの詳細については、以下で説明します。

サンプルレート

音声のサンプルレートは構成リクエストの sample_rate_hertz フィールドで指定し、関連する音声コンテンツまたはストリームのサンプルレートと一致している必要があります。Media Translation では、8,000 Hz から 48,000 Hz の間のサンプルレートがサポートされています。

ソース マテリアルのエンコード時に選択できる場合は、16,000 Hz のサンプルレートを使用して音声をキャプチャします。これより低い値では、結果として音声認識の精度を損なう可能性があるため、翻訳品質が低下します。また、サンプルレートを高くしても、音声認識の品質に明確な影響はなく、レイテンシが増加する可能性があります。

ただし、音声データがすでに 16,000 Hz 以外の既存のサンプルレートで録音されている場合は、音声を 16,000 Hz で再サンプリングしないでください。たとえば、以前のほとんどの電話音声では 8,000 Hz のサンプルレートが使われており、正確な結果が生成されないことがあります。そのような音声を使用する必要がある場合は、ネイティブ サンプルレートで音声を Media Translation API に渡します。

言語

Media Translation の認識 / 翻訳エンジンは、さまざまな言語 / 方言のペアをサポートしています。リクエスト構成の source_language_code フィールドと target_language_code フィールドで、BCP-47 識別子を使用して音声の言語(および国または地域方言)を指定します。

各機能でサポートされている言語の一覧については、言語サポートのページをご覧ください。

モデルの選択

Media Translation は、機械学習モデルのいずれか 1 つを使用して、音声ファイルの翻訳を行います。Google では、特定の音声タイプとソースに対して機械学習モデルをトレーニングしています。

Media Translation に音声翻訳リクエストを送信するときに、モデルを指定すると、翻訳結果を改善できます。これにより、Media Translation API ではその特定のタイプのソースからの音声を認識するようにトレーニングされた機械学習モデルを使用して音声ファイルを処理できます。

音声翻訳のモデルを指定するには、リクエストの TranslateSpeechConfig オブジェクトに model フィールドを含めて、使用するモデルを指定します。

Media Translation では、次のタイプの機械学習モデルを使用して音声ファイルを翻訳できます。

タイプ Name String 説明
動画 google-provided-model/video

このモデルは、動画クリップの音声を文字に変換する場合や、複数の話者の音声が含まれている場合に使用します。最良の結果を得るには、16,000 Hz 以上のサンプリング レートで録音された音声を使用してください。

注: これは、標準レートよりも費用の高いプレミアム モデルです。

通話 google-provided-model/(enhanced-)phone-call

このモデルは、通話の音声を文字に変換します。通常、電話の音声は 8,000 Hz のサンプリング レートで録音されます。

注: 拡張音声電話モデルは、標準レートよりも費用の高いプレミアム モデルです。

Media Translation: デフォルト google-provided-model/default

音声が上記のどのモデルにも適合しない場合は、このモデルを使用します。たとえば、話者が一人だけで、長時間録音された音声に使用します。16,000Hz 以上のサンプリング レートで録音されたハイファイ音声であることが理想的です。

音声コンテンツの埋め込み

ストリーミング リクエストに audio_content フィールドを渡すとき、ストリーミング音声翻訳リクエストに埋め込み音声が含まれます。gRPC リクエスト内のコンテンツとして渡される埋め込み音声の場合、その音声には Proto3 のシリアル化との互換性があり、バイナリデータとして渡す必要があります。

Google Cloud クライアント ライブラリを使用してリクエストを作成するときには、通常、このバイナリデータを audio_content フィールドに直接書き出します。

コードサンプルについては、ストリーミング音声翻訳をご覧ください。