Gemini は、音声に関するプロンプトに応答できます。たとえば、Gemini は次のことを行えます。
- 音声コンテンツの説明、要約、質問への回答を行う。
- 音声の文字起こしを提供します。
- 音声の特定のセグメントに関する回答または文字変換を提供します。
このガイドでは、Gemini API を使用して音声ファイルと音声コンテンツを操作するさまざまな方法について説明します。
サポートされているオーディオ形式
Gemini は、次の音声形式の MIME タイプをサポートしています。
- WAV -
audio/wav
- MP3 -
audio/mp3
- AIFF -
audio/aiff
- AAC -
audio/aac
- OGG Vorbis -
audio/ogg
- FLAC -
audio/flac
オーディオに関する技術的な詳細
Gemini では、音声に対して次のルールが適用されます。
- Gemini では、音声の 1 秒は 32 個のトークンとして表されます。たとえば、1 分間の音声は 1,920 個のトークンとして表されます。
- Gemini は、英語の音声に対する回答のみを推測できます。
- Gemini は、鳥のさえずりやサイレンなど、音声以外のコンポーネントを「理解」できます。
- 1 つのプロンプトでサポートされる音声データの最大長は 9.5 時間です。Gemini では、1 つのプロンプト内の音声ファイルの数に制限はありませんが、1 つのプロンプト内のすべての音声ファイルの合計時間は 9.5 時間を超過できません。
- Gemini は、音声ファイルを 16 Kbps のデータ解像度にダウンサンプリングします。
- 音声ソースに複数のチャンネルが含まれている場合、Gemini はこれらのチャンネルを 1 つのチャンネルに統合します。
始める前に: プロジェクトと API キーを設定する
Gemini API を呼び出す前に、プロジェクトを設定し、API キーを構成する必要があります。
音声ファイルを Gemini で使用できるようにする
音声ファイルを Gemini で使用できるようにするには、次のいずれかの方法を使用します。
- プロンプト リクエストを送信する前に、音声ファイルをアップロードします。
- 音声ファイルをインライン データとしてプロンプト リクエストに指定します。
音声ファイルをアップロードしてコンテンツを生成する
File API を使用すると、任意のサイズの音声ファイルをアップロードできます。リクエストの合計サイズ(ファイル、テキスト プロンプト、システム インストラクションなど)が 20 MB を超える場合は、常に File API を使用してください。
media.upload
を呼び出して、File API を使用してファイルをアップロードします。次のコードは、音声ファイルをアップロードし、models.generateContent
の呼び出しでそのファイルを使用します。
MIME_TYPE=$(file -b --mime-type "${AUDIO_PATH}")
NUM_BYTES=$(wc -c < "${AUDIO_PATH}")
DISPLAY_NAME=AUDIO
tmp_header_file=upload-header.tmp
# Initial resumable request defining metadata.
# The upload url is in the response headers dump them to a file.
curl "${BASE_URL}/upload/v1beta/files?key=${GEMINI_API_KEY}" \
-D upload-header.tmp \
-H "X-Goog-Upload-Protocol: resumable" \
-H "X-Goog-Upload-Command: start" \
-H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \
-H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \
-H "Content-Type: application/json" \
-d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null
upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r")
rm "${tmp_header_file}"
# Upload the actual bytes.
curl "${upload_url}" \
-H "Content-Length: ${NUM_BYTES}" \
-H "X-Goog-Upload-Offset: 0" \
-H "X-Goog-Upload-Command: upload, finalize" \
--data-binary "@${AUDIO_PATH}" 2> /dev/null > file_info.json
file_uri=$(jq ".file.uri" file_info.json)
echo file_uri=$file_uri
# Now generate content using that file
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [{
"parts":[
{"text": "Describe this audio clip"},
{"file_data":{"mime_type": "audio/mp3", "file_uri": '$file_uri'}}]
}]
}' 2> /dev/null > response.json
cat response.json
echo
jq ".candidates[].content.parts[].text" response.json
ファイルのメタデータを取得する
API がアップロードされたファイルを正常に保存したことを確認するには、files.get
を呼び出してメタデータを取得します。
name=$(jq ".file.name" file_info.json)
# Get the file of interest to check state
curl https://generativelanguage.googleapis.com/v1beta/files/$name > file_info.json
# Print some information about the file you got
name=$(jq ".file.name" file_info.json)
echo name=$name
file_uri=$(jq ".file.uri" file_info.json)
echo file_uri=$file_uri
アップロードしたファイルを一覧表示する
複数の音声ファイル(および他の種類のファイル)をアップロードできます。次のコードは、アップロードされたすべてのファイルのリストを生成します。
echo "My files: "
curl "https://generativelanguage.googleapis.com/v1beta/files?key=$GEMINI_API_KEY"
アップロードしたファイルを削除する
ファイルは 48 時間後に自動的に削除されます。必要に応じて、アップロードしたファイルを手動で削除できます。次に例を示します。
curl --request "DELETE" https://generativelanguage.googleapis.com/v1beta/files/$name?key=$GEMINI_API_KEY
次のステップ
このガイドでは、File API を使用して音声ファイルをアップロードし、音声入力からテキスト出力を生成する方法について説明します。詳細については、次のリソースをご覧ください。
- ファイル プロンプト戦略: Gemini API は、テキスト、画像、音声、動画データによるプロンプト(マルチモーダル プロンプト)をサポートしています。
- システム指示: システム指示を使用すると、特定のニーズやユースケースに基づいてモデルの動作を制御できます。
- 安全性に関するガイダンス: 生成 AI モデルは、不正確な出力、偏見のある出力、不適切な出力など、予期しない出力を生成することがあります。このような出力による被害のリスクを軽減するには、後処理と人間による評価が不可欠です。