Gemini は音声に関するプロンプトに応答できます。Gemini リクエストに音声を追加して、含まれる音声の内容を理解するタスクを実行できます。たとえば、Gemini は次のことができます。
- 音声コンテンツの説明、要約、質問への回答を行う。
- 音声の文字起こしを提供します。
- 音声の特定のセグメントに関する回答または文字起こしを提供します。
音声理解は、テキストとメディア ファイルを組み合わせた Gemini のマルチモーダル入力の 1 つです。
Gemini を使用した音声理解の詳細と、API リクエストを送信する手順については、マルチモーダル プロンプトを送信するをご覧ください。
音声付きプロンプトの仕様
Gemini へのリクエストに音声ファイルを追加できます。1 つのプロンプトでサポートされる音声データの最大長は 15 分または最大 32,000 トークンです。Gemini では、1 つのプロンプトに含まれる音声ファイルの数に制限はありませんが、1 つのプロンプトに含まれるすべての音声ファイルの合計長は 15 分を超えてはなりません。
Gemini は、音声の要約、文字起こし、翻訳のために音声を理解できます。
音声は、次のいずれかの音声フォーマット MIME タイプである必要があります。
- AAC:
audio/aac - AIF:
audio/aiff - FLAC:
audio/flac - MP3:
audio/mp3 - OGG:
audio/ogg - WAV:
audio/wav
Gemini は音声に次のルールを適用します。
- オーディオの 1 秒を 25 個のトークンとして表します。たとえば、1 分間の音声は 1,500 トークンとして表されます。
- 英語の音声に対するレスポンスのみを推論します。
- 鳥の鳴き声やサイレンなどの音声以外のコンポーネントを分析します。
- 音声ファイルを 16 Kbps のデータ解像度にサンプリングします。音声ソースに複数のチャンネルが含まれている場合、Gemini はそれらを 1 つのチャンネルに結合します。
REST API の Chat Completions エンドポイントを使用し、HTTP クライアントまたは OpenAI の Python 用公式 SDK を使用できます。音声は、base64 でエンコードされたファイルとしてプロンプト リクエストにインライン データとして提供するか、プロンプト リクエストを行う前にストレージ バケットに音声ファイルをアップロードできます。
音声の制限事項については、 Google Cloud ドキュメントをご覧ください。
OpenAI と、Gemini が Google Distributed Cloud(GDC)エアギャップで実装する Chat Completions エンドポイントの詳細については、https://platform.openai.com/docs/api-reference/chat をご覧ください。
プロンプトから音声を理解する
次の例は、OpenAI の Python または curl 用の公式 SDK を使用して、テキストと音声の入力からテキストを生成する Gemini Chat Completions API リクエストを示しています。音声はインライン データとして送信することも、リクエストで音声 URL を指定することもできます。
インライン データ リクエストを送信する
Base64 エンコードされたファイルから、プロンプト リクエストにインライン データとして音声を提供します。API リクエストには、Base64 エンコードされた音声の input_audio フィールドが含まれています。次のサンプルは、base64 でエンコードされた音声リクエストを送信する方法を示しています。
Python
import openai
client = openai.OpenAI()
model_response = client.chat.completions.create(
model = "MODEL_ID",
messages = [
{
"role": "user",
"content": "Show me the lyrics of this song."
},
{
"role": "user",
"content": [
{
"type": "input_audio",
"input_audio": {
"data": BASE64_DATA,
# Valid formats are aac, aiff, flac, mp3, ogg, or wav
"format": "mp3"
}
}
]
}
]
)
print(model_response)
次のように置き換えます。
MODEL_ID: レスポンスを生成するモデルのエンドポイント ID。BASE64_DATA: 音声ファイルの Base64 エンコード データ。Base64 エンコードされたデータには、データ URI スキーム(RFC 2397)の接頭辞を付ける必要があります。したがって、base64 でエンコードされたデータのdataフィールドの形式は、たとえば"data": f"data:audio/mp3;base64,{base64_audio}"です。
curl
curl \
-X POST "https://ENDPOINT:443/v1/projects/PROJECT/locations/PROJECT/chat/completions" \
-H "Content-Type: application/json; charset=utf-8" \
-H "Authorization: Bearer $(gdcloud auth print-identity-token)" \
-d '{
"model_id": "MODEL_ID",
"messages": [
{
"role": "user",
"content": "Show me the lyrics of this song."
},
{
"role": "user",
"content": [
{
"type": "input_audio",
"input_audio": {
"data": BASE64_DATA,
# Valid formats are aac, aiff, flac, mp3, ogg, or wav
"format": "mp3"
}
}
]
}
],
}'
次のように置き換えます。
ENDPOINT: 組織で使用する API エンドポイント。PROJECT: プロジェクト ID。MODEL_ID: レスポンスを生成するモデルのエンドポイント ID。BASE64_DATA: 音声ファイルの Base64 エンコード データ。Base64 エンコードされたデータには、データ URI スキーム(RFC 2397)の接頭辞を付ける必要があります。したがって、base64 でエンコードされたデータのdataフィールドの形式は、たとえば"data": f"data:audio/mp3;base64,{base64_audio}"です。
リクエストで音声 URL を送信する
プロンプト リクエストを行う前に、音声ファイルをストレージ バケットにアップロードします。API リクエストには、ストレージ バケット内の音声ファイルの audio_url フィールドが含まれています。次のサンプルは、音声 URL リクエストを送信する方法を示しています。
curl \
-X POST "https://ENDPOINT:443/v1/projects/PROJECT/locations/PROJECT/chat/completions" \
-H "Content-Type: application/json; charset=utf-8" \
-H "Authorization: Bearer $(gdcloud auth print-identity-token)" \
-d '{
"model_id": "MODEL_ID",
"messages": [
{
"role": "user",
"content": "Show me the lyrics of this song."
},
{
"role": "user",
"content": [
{
"type": "audio_url",
"audio_url": {
"url": "AUDIO_URL",
}
}
]
}
],
}'
次のように置き換えます。
ENDPOINT: 組織で使用する API エンドポイント。PROJECT: プロジェクト ID。MODEL_ID: レスポンスを生成するモデルのエンドポイント ID。AUDIO_URL: ストレージ バケット内の音声 URL のパス。音声 URL は、GDC ストレージ バケットに保存されている音声ファイルを参照する必要があります。詳細については、データを保存するをご覧ください。