Gemini 3.5 Transcribe 是 Google 的一款模型,可通过 Agent Platform 将多种语言的语音转换为文本。基于 Gemini 的音频理解功能,它提供低延迟、准确的转写,并支持基于话语的语言检测、讲话人区分、字词级时间戳、智能转写和自定义词汇语音纠偏。
Gemini 3.5 Transcribe 是主要的音频转写工具,可弥合深度推理多模态模型与高度优化的语音转文字工作流之间的差距。
如需开始使用,请查看 Gemini 3.5 Transcribe 的入门笔记本。
它支持两种主要的操作方法:
- 流式(实时)转写:使用
gemini-3.5-transcribe-live-preview模型流式传输音频并以增量方式实时接收转写结果。 - 同步转写:使用
gemini-3.5-transcribe-preview模型,通过一次请求即可转写完整的预录音频文件。
功能支持和限制
Gemini 3.5 Transcribe 在其两个端点上支持以下功能:
| 功能 | 直播 (gemini-3.5-transcribe-live-preview) |
音频文件处理 (gemini-3.5-transcribe-preview) |
发布阶段 | 备注 / 限制 |
|---|---|---|---|---|
| 语言自动检测 | 支持(85 种以上的语言) | 支持(85 种以上的语言) | 预览 | 包括会话中代码混合。 |
| 话语级时间戳 | 支持 | 不支持 | 预览 | |
| 字词级时间戳 | 不支持 | 支持 | 实验性 | 降低转写准确率。 |
| 自定义词汇偏向 | 支持(最多 1,000 个字词) | 支持(最多 1,000 个字词) | 预览 | 客户通常在添加不超过 100 个字词时获得最佳效果。 |
| 智能听写和格式设置 | 支持 | 支持 | 实验性 | 包括填充词移除和意图感知型字母数字格式设置。 |
| 讲话人区分 | 不支持 | 支持(最多 8 个扬声器) | 实验性 | 3 个或更多音箱的归因功能目前处于实验阶段。 |
| 音频时长上限 | 最多 10 分钟 | 最长 15 分钟 | 预览 | 启用说话人区分或时间戳等功能时,文件处理时间限制为 15 分钟。 |
直播转写
在您向模型流式传输小块音频并逐步接收转写结果时,BidiGenerateContent (Live) API 会保持打开状态。此功能用于近乎实时地添加字幕或转写麦克风输入内容。
如需在不编写任何代码的情况下试用流式转写,请在 Agent Studio 的 Gemini Live API 页面上打开 gemini-3.5-transcribe-live-preview,然后录制或上传音频,并观看转写内容流式返回。
在 Agent Studio 中试用 Gemini 3.5 Transcribe
如需转写流式音频,请构建 LiveConnectConfig 并将 response_modalities 设置为 ["TEXT"],同时设置 input_audio_transcription 配置。
import asyncio
from google import genai
from google.genai import types
client = genai.Client(enterprise=True, project=PROJECT_ID, location=LOCATION)
config = types.LiveConnectConfig(
response_modalities=["TEXT"],
input_audio_transcription=types.AudioTranscriptionConfig(
language_codes=["it-IT", "en-US"],
),
)
async def streaming_main(audio_file, config):
# Connect to the Live API session
async with client.aio.live.connect(model="gemini-3.5-transcribe-live-preview", config=config) as session:
# In a complete implementation, you would chunk the audio and send via:
# await session.send_realtime_input(audio=types.Blob(data=data, mime_type="audio/pcm;rate=16000"))
# await session.send_realtime_input(audio_stream_end=True)
async for message in session.receive():
if message.server_content:
server_content = message.server_content
# Track the active interim segment
interim = server_content.interim_input_transcription
if interim and interim.text:
print(f"Interim: {interim.text}")
# Save final transcript and clear the interim
final = server_content.input_transcription
if final and final.text:
print(f"Final: {final.text}")
同步转写
您可以使用标准 generate_content 方法来转写已录制完毕的完整音频文件。通过在 GenerateContentConfig 内构建 AudioTranscriptionConfig 来配置参数。
字词级时间戳
设置 word_timestamp=True 会返回字词级时间信息。响应的 audio_transcription.words 列表包含每个已识别的字词及其 start_offset 和 end_offset。
from google import genai
from google.genai import types
# Initialize the client for Vertex AI / Agent Platform
client = genai.Client(enterprise=True, project=PROJECT_ID, location=LOCATION)
with open("input.wav", "rb") as f:
audio_bytes = f.read()
response = client.models.generate_content(
model="gemini-3.5-transcribe-preview",
contents=[
types.Part.from_bytes(
data=audio_bytes,
mime_type="audio/wav",
),
],
config=types.GenerateContentConfig(
audio_transcription_config=types.AudioTranscriptionConfig(
word_timestamp=True,
),
),
)
parts = getattr(response, "parts", []) or []
if parts and (audio_tx := getattr(parts[0], "audio_transcription", None)):
for w in getattr(audio_tx, "words", []) or []:
print(f"[{w.start_offset} - {w.end_offset}] {w.word}")
if text := "".join(p.text for p in parts if getattr(p, "text", None)):
print(f"**{text}**")
讲话人区分和自定义词汇
将 diarization 设置为 True 会要求模型识别并标记各个发言者。您还可以提供 custom_vocabulary 字段,其中包含一个短语列表,用于引导 Gemini 3.5 Transcribe 识别特定字词。如果还使用 language_codes 指定了语言,模型通常会更可靠地遵循自定义词汇指令。
response = client.models.generate_content(
model="gemini-3.5-transcribe-preview",
contents=[
types.Part.from_uri(
file_uri="gs://cloud-samples-data/generative-ai/audio/coffee_order.wav",
mime_type="audio/wav",
),
],
config=types.GenerateContentConfig(
audio_transcription_config=types.AudioTranscriptionConfig(
diarization=True,
language_codes=["en-US"],
custom_vocabulary=["oatmilk", "oz"],
),
),
)
parts = getattr(response, "parts", []) or []
for p in parts:
audio_tx = getattr(p, "audio_transcription", None)
speaker = getattr(audio_tx, "speaker_label", "UNKNOWN") if audio_tx else "UNKNOWN"
text = getattr(p, "text", "") or (getattr(audio_tx, "text", "") if audio_tx else "")
if text:
print(f"**{speaker}**: {text}")
语言支持
Gemini 3.5 Transcribe 支持以下语言和 BCP-47 语言代码:
| 语言 | BCP-47 代码 | 准备状态 | 语言 | BCP-47 代码 | 准备状态 |
|---|---|---|---|---|---|
| 南非荷兰语 | af-ZA |
实验性 | 日语 | ja-JP |
支持 |
| 阿姆哈拉语 | am-ET |
实验性 | 爪哇语 | jv-ID |
实验性 |
| 阿拉伯语(埃及) | ar-EG |
实验性 | Kabuverdianu | kea-CV |
实验性 |
| 亚美尼亚语 | hy-AM |
实验性 | 卡纳达语 | kn-IN |
实验性 |
| 阿萨姆语 | as-IN |
实验性 | 哈萨克语 | kk-KZ |
实验性 |
| 阿塞拜疆语 | az-AZ |
实验性 | 韩语 | ko-KR |
支持 |
| 白俄罗斯语 | be-BY |
实验性 | 吉尔吉斯语 | ky-KG |
实验性 |
| 孟加拉语(孟加拉) | bn-BD |
实验性 | 拉脱维亚语 | lv-LV |
实验性 |
| 孟加拉语(印度) | bn-IN |
实验性 | 林加拉语 | ln-CD |
实验性 |
| 波斯尼亚语 | bs-BA |
实验性 | 立陶宛语 | lt-LT |
实验性 |
| 保加利亚语 | bg-BG |
实验性 | 马其顿语 | mk-MK |
实验性 |
| 保加利亚语(阿罗马尼亚语) | rup-BG |
实验性 | 马来人 | ms-MY |
实验性 |
| 缅甸语 | my-MM |
实验性 | 马拉雅拉姆语 | ml-IN |
实验性 |
| 粤语(繁体) | yue-Hant-HK |
实验性 | 马耳他语 | mt-MT |
实验性 |
| 加泰罗尼亚语 | ca-ES |
支持 | 普通话(简体) | cmn-Hans-CN |
支持 |
| 宿务语 | ceb |
实验性 | 马拉地语 | mr-IN |
实验性 |
| 中部高棉语 | km-KH |
实验性 | 蒙古语 | mn-MN |
实验性 |
| 克罗地亚语 | hr-HR |
支持 | 尼泊尔语 | ne-NP |
实验性 |
| 捷克语 | cs-CZ |
实验性 | 挪威语 | nb-NO |
实验性 |
| 丹麦语 | da-DK |
支持 | 奥里亚语 | or-IN |
实验性 |
| 荷兰语 | nl-NL |
支持 | 波兰语 | pl-PL |
支持 |
| 英语(澳大利亚) | en-AU |
支持 | 葡萄牙语(巴西) | pt-BR |
支持 |
| 英语(英国) | en-GB |
支持 | 葡萄牙语(葡萄牙) | pt-PT |
支持 |
| 英语(印度) | en-IN |
支持 | 旁遮普语 | pa-IN |
实验性 |
| 英语(美国) | en-US |
支持 | 旁遮普语(果鲁穆奇文) | pa-Guru-IN |
实验性 |
| 爱沙尼亚语 | et-EE |
实验性 | 罗马尼亚语 | ro-RO |
支持 |
| 波斯语 | fa-IR |
实验性 | 俄语 | ru-RU |
支持 |
| 菲律宾语 | fil-PH |
实验性 | 塞尔维亚语 | sr-RS |
实验性 |
| 芬兰语 | fi-FI |
支持 | 信德语(阿拉伯文字) | sd-Arab-IN |
实验性 |
| 法语 | fr-FR |
支持 | 斯洛伐克语 | sk-SK |
实验性 |
| 法语(加拿大) | fr-CA |
支持 | 斯洛维尼亚语 | sl-SI |
实验性 |
| 加利西亚语 | gl-ES |
实验性 | 西班牙语(拉丁美洲) | es-419 |
实验性 |
| 格鲁吉亚语 | ka-GE |
实验性 | 西班牙语(西班牙) | es-ES |
支持 |
| 德语 | de-DE |
支持 | 西班牙语(美国) | es-US |
支持 |
| 希腊语 | el-GR |
支持 | 斯瓦希里语(肯尼亚) | sw-KE |
实验性 |
| 古吉拉特语 | gu-IN |
实验性 | 瑞典语 | sv-SE |
支持 |
| 豪萨语 | ha-NG |
实验性 | 塔吉克语 | tg-TJ |
实验性 |
| 希伯来语 | he-IL |
实验性 | 泰卢固语 | te-IN |
实验性 |
| 印地语 | hi-IN |
支持 | 泰语 | th-TH |
实验性 |
| 匈牙利语 | hu-HU |
实验性 | 土耳其语 | tr-TR |
支持 |
| 冰岛语 | is-IS |
实验性 | 乌克兰语 | uk-UA |
支持 |
| 印度尼西亚语 | id-ID |
实验性 | 乌兹别克语 | uz-UZ |
实验性 |
| 意大利语 | it-IT |
支持 | 越南语 | vi-VN |
支持 |
区域级可用性
Gemini 3.5 Transcribe 可在以下 Google Cloud 位置使用,即将支持单区域和多区域:
| 端点 | Google Cloud 位置 | 发布就绪情况 |
|---|---|---|
gemini-3.5-transcribe-preview |
global |
预览版 |
gemini-3.5-transcribe-live-preview |
global |
预览 |
最佳做法
- 提供清晰的音频:确保音频录制具有清晰的人声分离度,并避免严重剪辑。
- 在已知音频语言的情况下提供语言提示:如果您提前知道音频语言,请指定
language_codes以尽可能提高准确性。 - 以自定义词汇为目标:在
custom_vocabulary中仅包含独特的领域术语、品牌名称或专有名词,而不是常见的日常用语。
| 模型 ID | ['gemini-3.5-transcribe-preview', 'gemini-3.5-transcribe-live-preview'] |
|
|---|---|---|
| 模态 |
|
|
| 功能 | ||
| 工具 | ||
| 使用选项 |
|
|
| 支持的区域 |
|
|
| 版本 |
|
|