本文說明如何在 Gemini Live API 中設定合成語音回應和語音活動偵測功能。您可以設定以各種 HD 語音和語言回覆,也可以設定語音活動偵測設定,允許使用者中斷模型。
設定語言和聲音
gemini-live-2.5-flash-native-audio 等原生音訊模型可在對話期間自然切換語言。你也可以在系統指令中指定語言,限制 Gemini 說話時使用的語言。
如果是 gemini-live-2.5-flash 等非原生音訊模型,您可以在 speech_config.language_code 中設定語言。
所有模型的語音都是在 voice_name 欄位中設定。
下列程式碼範例說明如何設定語言和語音。
from google.genai.types import LiveConnectConfig, SpeechConfig, VoiceConfig, PrebuiltVoiceConfig config = LiveConnectConfig( response_modalities=["AUDIO"], speech_config=SpeechConfig( voice_config=VoiceConfig( prebuilt_voice_config=PrebuiltVoiceConfig( voice_name=voice_name, ) ), language_code="en-US", ), )
支援的語音
Gemini Live API 在 voice_name 欄位中支援下列 30 個語音選項:
|
Zephyr - 明亮 Kore - 堅定 Orus - 堅定 Autonoe - 明亮 Umbriel - 輕鬆 Erinome - 清晰 Laomedeia - 歡快 Schedar - 平穩 Achird - 友善 Sadachbia - 活潑 |
Puck:活潑 Fenrir:興奮 Aoede:輕快 Enceladus:輕柔 Algieba:柔和 Algenib:沙啞 Achernar:溫柔 Gacrux:成熟 Zubenelgenubi:隨和 Sadaltager:博學 |
Charon - 資訊豐富 Leda - 年輕 Callirrhoe - 輕鬆 Iapetus - 清晰 Despina - 柔和 Rasalgethi - 資訊豐富 Alnilam - 堅定 Pulcherrima - 積極 Vindemiatrix - 溫柔 Sulafat - 溫暖 |
支援的語言
Gemini Live API 支援下列語言:
| 語言 | BCP-47 代碼 |
|---|---|
| 阿拉伯文 (埃及) | ar-EG |
| 孟加拉文 (孟加拉) | bn-BD |
| 荷蘭文 (荷蘭) | nl-NL |
| 英文 (印度) | en-IN 和 hi-IN 套裝組合 |
| 英文 (美國) | en-US |
| 法文 (法國) | fr-FR |
| 德文 (德國) | de-DE |
| 北印度文 (印度) | hi-IN |
| 印尼文 (印尼) | id-ID |
| 義大利文 (義大利) | it-IT |
| 日文 (日本) | ja-JP |
| 韓文 (韓國) | ko-KR |
| 馬拉地文 (印度) | mr-IN |
| 波蘭文 (波蘭) | pl-PL |
| 葡萄牙文 (巴西) | pt-BR |
| 羅馬尼亞文 (羅馬尼亞) | ro-RO |
| 俄文 (俄羅斯) | ru-RU |
| 西班牙文 (美國) | es-US |
| 泰米爾文 (印度) | ta-IN |
| 泰盧固文 (印度) | te-IN |
| 泰文 (泰國) | th-TH |
| 土耳其文 (土耳其) | tr-TR |
| 烏克蘭文 (烏克蘭) | uk-UA |
| 越南文 (越南) | vi-VN |
設定語音活動偵測功能
語音活動偵測 (VAD) 可讓模型辨識使用者何時說話。這對建立自然對話至關重要,因為使用者隨時可以中斷模型。
當 VAD 偵測到中斷時,系統會取消並捨棄正在進行的生成作業。只有已傳送給用戶端的資訊會保留在工作階段記錄中。接著,伺服器會傳送BidiGenerateContentServerContent訊息,回報中斷情形。接著,伺服器會捨棄所有待處理的函式呼叫,並傳送 BidiGenerateContentServerContent 訊息,其中包含已取消呼叫的 ID。
Python
config = { "response_modalities": ["audio"], "realtime_input_config": { "automatic_activity_detection": { "disabled": False, # default "start_of_speech_sensitivity": "low", "end_of_speech_sensitivity": "low", "prefix_padding_ms": 20, "silence_duration_ms": 100, } } }