Gemini 可以回答有关音频的提示。您可以向 Gemini 请求添加音频,以便执行涉及理解所含音频内容的任务。例如,Gemini 可以执行以下操作:
- 描述、总结音频内容或回答与音频内容相关的问题。
- 提供音频的转写内容。
- 提供有关音频特定片段的答案或转写内容。
音频理解是 Gemini 的一种多模态输入,可将文本与媒体文件相结合。
如需详细了解如何使用 Gemini 进行音频理解,以及发送 API 请求的分步说明,请参阅发送多模态提示。
含音频的提示的规范
您可以向 Gemini 发送的请求中添加音频文件。单个提示中支持的音频数据长度上限为 15 分钟或最多 32,000 个 token。Gemini 不会限制单个提示中的音频文件数量,但单个提示中所有音频文件的总时长不得超过 15 分钟。
Gemini 可以理解语音,用于音频摘要、转写和翻译。
音频必须采用以下音频格式 MIME 类型之一:
- AAC:
audio/aac - AIF:
audio/aiff - FLAC:
audio/flac - MP3:
audio/mp3 - OGG:
audio/ogg - WAV:
audio/wav
Gemini 对音频施加以下规则:
- 将每秒音频表示为 25 个词元。例如,1 分钟的音频表示为 1,500 个令牌。
- 仅推断对英语语音的回答。
- 分析非语音组件,例如鸟鸣或警报声。
- 将音频文件采样为 16 Kbps 的数据分辨率。如果音频源包含多个声道,Gemini 会将它们合并为一个声道。
您可以使用 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。
理解提示中的音频
以下示例展示了 Gemini Chat Completions API 请求,该请求使用 OpenAI 的官方 Python SDK 或 curl 从文本和音频输入生成文本。您可以将音频作为内嵌数据发送,也可以在请求中提供音频网址。
发送内嵌数据请求
以内嵌数据的形式向提示请求提供音频,数据来自 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}"。
在请求中发送音频网址
上传音频文件到存储桶,然后发出提示请求。API 请求包含存储分区中音频文件的 audio_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:存储桶中音频网址的路径。 音频网址必须指向存储在 GDC 存储桶中的音频文件。如需了解详情,请参阅存储数据。