Gemini 3.5 Transcribe 是 Google 的模型,可將多種語言的語音轉文字,可透過 Agent Platform 使用。這項技術採用 Gemini 的音訊理解功能,可提供低延遲、準確的轉錄稿,並具備語音語言偵測、說話者分段標記、字詞層級時間戳記、智慧轉錄和自訂詞彙語音偏誤等功能。
Gemini 3.5 Transcribe 是主要的音訊轉錄工具,可彌補深度推論多模態模型與高度最佳化語音轉文字工作流程之間的差距。
如要開始使用,請參閱 Gemini 3.5 Transcribe 的簡介筆記本。
支援兩種主要作業方式:
- 串流 (即時) 轉錄:使用
gemini-3.5-transcribe-live模型串流音訊,並即時接收轉錄結果。 - 同步轉錄:使用
gemini-3.5-transcribe模型,在單一要求中轉錄完整的預錄音訊檔案。
功能支援與限制
Gemini 3.5 Transcribe 的兩個端點支援下列功能:
| 功能 | 直播 (gemini-3.5-transcribe-live) |
音訊檔案處理 (gemini-3.5-transcribe) |
推出階段 | 注意事項 / 限制 |
|---|---|---|---|---|
| 自動偵測語言 | 支援 (超過 85 種語言) | 支援 (超過 85 種語言) | 支援 | 包括在對話中切換語言。 |
| 語句層級時間戳記 | 支援 | 不支援 | 支援 | |
| 字詞層級時間戳記 | 不支援 | 支援 | 實驗功能 | 降低語音轉錄準確度。 |
| 自訂詞彙偏誤 | 支援 (最多 1000 個字詞) | 支援 (最多 1000 個字詞) | 支援 | 客戶通常會在最多 100 個字詞時看到最佳結果。 |
| 智慧語音輸入和格式設定 | 支援 (需手動設定端點) | 支援 | 實驗功能 | 包括移除填充詞,以及根據意圖調整英數字元格式。如要直播,請搭配手動端點偵測。 |
| Speaker Diarization | 不支援 | 支援 (最多 8 位講者) | 實驗功能 | 3 位以上講者的歸因功能仍在實驗階段。 |
| 音訊長度上限 | 最長 10 分鐘 | 最多 15 分鐘 | 支援 | 啟用說話者辨識或時間戳記等功能時,檔案處理時間上限為 15 分鐘。 |
直播語音轉錄
BidiGenerateContent (Live) API 會保持開啟,您可將一小段音訊串流至模型,並在轉錄結果產生後逐步接收。用於近乎即時地為麥克風輸入內容加上字幕或轉錄。
如要試用串流轉錄功能,不必編寫任何程式碼,只要在 Agent Studio 的 Gemini Live API 頁面開啟 gemini-3.5-transcribe-live,然後錄製或上傳音訊,即可查看轉錄稿串流。
在 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", 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",
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",
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 支援兩種語音轉錄模式,可透過 AudioTranscriptionConfig 中的 mode 參數設定:
VERBATIM(預設):逐字轉錄所有語音內容,保留原始填充詞 (「嗯」、「呃」、「像」、「你知道」)、重複、停頓和假性開始。SMART(智慧轉錄):套用智慧後置處理,將轉錄稿調整為最適合閱讀的狀態:- 贅字移除:移除對話中的填充詞、口吃和錯誤開頭。
- 內嵌自我修正:直接修正口語內容 (例如「我們週二見,不對,週三兩點見」會變成「我們週三下午 2:00 見」)。
- 自動結構化格式:自動將口述想法整理成段落、編號清單、項目符號、格式化日期、貨幣和數字。
- 文法修正:套用自然的標點符號、句子大小寫和語句流暢度。
| 語音音訊 | VERBATIM 個輸出 |
SMART (智慧轉錄) 輸出 |
|---|---|---|
| 「嗯,關於會議,我想我們應該邀請 Alice,不對,是 Bob 和 Carol。」 | 「嗯,關於會議,我想我們應該邀請 Alice,不對,是 Bob 和 Carol。」 | 「我認為應該邀請 Bob 和 Carol 參加會議。」 |
| 「第一項:審查預算;第二項:敲定時間軸;第三項:傳送摘要」 | 「第一項:審查預算;第二項:敲定時間軸;第三項:傳送摘要」 | 「1. 查看預算 2. 敲定時間表 3. 傳送摘要」 |
使用 SMART 模式同步轉錄
response = client.models.generate_content(
model="gemini-3.5-transcribe",
contents=[
types.Part.from_bytes(
data=audio_bytes,
mime_type="audio/wav",
),
],
config=types.GenerateContentConfig(
audio_transcription_config=types.AudioTranscriptionConfig(
mode="SMART",
),
),
)
使用 SMART 模式和手動端點偵測功能即時轉錄
使用 SMART 模式搭配直播語音轉錄 (gemini-3.5-transcribe-live) 時,請使用手動端點偵測 (手動語音活動偵測),而非自動 VAD。由於 SMART 模式會套用語句層級的後置處理,例如解析內嵌自我修正,以及結構化清單或段落,因此自動 VAD 可能會在自然停頓期間,過早分割使用者的想法。
如要設定手動端點偵測,請停用 RealtimeInputConfig 中的 automatic_activity_detection,並使用 activity_start 和 activity_end 明確標示使用者語音回合的開頭和結尾:
config = types.LiveConnectConfig(
response_modalities=["TEXT"],
realtime_input_config=types.RealtimeInputConfig(
automatic_activity_detection=types.AutomaticActivityDetection(
disabled=True,
),
),
input_audio_transcription=types.AudioTranscriptionConfig(
mode="SMART",
),
)
async with client.aio.live.connect(
model="gemini-3.5-transcribe-live", config=config
) as session:
# Signal start of speech turn
await session.send_realtime_input(activity_start=types.ActivityStart())
# Stream audio chunks...
await session.send_realtime_input(
audio=types.Blob(data=audio_bytes, mime_type="audio/pcm;rate=16000")
)
# Signal end of speech turn so SMART mode can process the complete utterance
await session.send_realtime_input(activity_end=types.ActivityEnd())
語言支援
Gemini 3.5 Transcribe 支援下列語言和 BCP-47 語言代碼:
| 語言 | BCP-47 代碼 | 準備度 | 語言 | BCP-47 代碼 | 準備度 |
|---|---|---|---|---|---|
| 南非荷蘭文 | af-ZA |
實驗功能 | 日文 | ja-JP |
支援 |
| 阿姆哈拉文 | am-ET |
實驗功能 | 爪哇文 | jv-ID |
實驗功能 |
| 阿拉伯文 (埃及) | ar-EG |
實驗功能 | 維德角克里奧爾文 | 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 適用於下列 Cloud de Confiance by S3NS 位置:
| 端點 | Cloud de Confiance by S3NS 位置 | 發布準備完成度 |
|---|---|---|
gemini-3.5-transcribe |
global |
支援 |
gemini-3.5-transcribe |
us |
支援 |
gemini-3.5-transcribe |
eu |
支援 |
gemini-3.5-transcribe-live |
global |
支援 |
gemini-3.5-transcribe-live |
us |
支援 |
gemini-3.5-transcribe-live |
eu |
支援 |
最佳做法
- 提供清晰人聲:確保音訊錄音中的語音清晰可辨,並避免嚴重削波。
- 提供已知語言提示:如果預先知道音訊語言,請指定
language_codes,盡可能提高準確度。 - 指定自訂詞彙:在
custom_vocabulary中只加入獨特的領域術語、品牌名稱或專有名詞,而非一般日常用語。 - 在即時轉錄中使用手動端點偵測和
SMART模式:停用自動 VAD (automatic_activity_detection),並明確傳送activity_start和activity_end信號,讓模型能對完整語句套用贅字移除、自我修正和格式設定。
| 模型 ID | ['gemini-3.5-transcribe', 'gemini-3.5-transcribe-live'] |
|
|---|---|---|
| 形式 |
|
|
| 功能 | ||
| 工具 | ||
| API |
|
|
| 用量方案 |
|
|
| 支援的地區 |
|
|
|
||
| 版本 |
|
|