設定語言和語音

本文說明如何在 Gemini Live API 中設定合成語音回覆和語音活動偵測功能。您可以設定以各種 HD 語音和語言回覆,也可以設定語音活動偵測設定,允許使用者中斷模型。

設定語言和語音

即時音訊模型 (例如 gemini-3.8-live) 可在對話期間自然切換語言。你也可以在系統指令中指定語言,限制 Gemini 說話時使用的語言。

所有模型的語音都是在 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 會以你指示的語音回覆。例如「用帶有法文口音的正面開朗語氣說英文」。

支援的語音

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

使用自訂聲音

您可以提供一段短錄音,讓 Gemini Live API 複製語音,並用於合成語音回覆,不必使用預建語音。自訂語音是在 voice_config 的 replicated_voice_config 欄位中,為每個工作階段設定。不需要事先上傳或訓練。

語音樣本規定

語音樣本必須符合下列規格:

  • 音訊格式:PCM 音訊 s16le,取樣率可變動,例如 audio/pcm;rate=24000

  • 時間長度:10 到 20 秒。

錄製自訂語音

錄製語音樣本時,建議您參考下列提示,確保語音品質最佳:

  1. 自然說話:除非希望虛擬化身聽起來像廣播員,否則請勿使用「廣播腔」或過度咬字清晰。請像跟朋友說話一樣,一字不漏地朗讀腳本。

  2. 減少背景噪音:盡可能減少背景噪音,例如關閉風扇、空調和任何開啟的窗戶。

  3. 稍微微笑:錄製時微笑有助於在錄音中加入溫暖的感覺,而複製的聲音也會帶有這種感覺。

建議使用下列任一腳本錄製自訂聲音:

  • 語音標準,最適合整體品質:「當陽光照射到空氣中的雨滴時,雨滴會像稜鏡一樣形成彩虹。彩虹就是白色的光被發散出各種絢爛的色彩。這些拱門呈長圓弧形。」

  • 說故事,最適合捕捉情緒和動態範圍:「我打開這本塵封已久的舊書時,簡直不敢相信自己的眼睛。一小把金鑰掉到木質地板上,「這是從哪裡來的?」我對自己輕聲說道,突然感到一陣興奮。一切即將改變。」

設定自訂聲音

在透過 WebSocket 連線傳送的初始 setup 酬載中,設定自訂聲音:

import base64
import json
import websockets

# Load custom voice audio (PCM s16le, e.g., 24kHz)
with open("/path/to/your/audio_sample.wav", "rb") as f:
    wav_b64 = base64.b64encode(f.read()).decode("utf-8")

# Setup generation config with custom voice
GENERATION_CONFIG = {
    "response_modalities": ["AUDIO"],
    "speech_config": {
        "voice_config": {
            "replicated_voice_config": {
                "voice_sample_audio": "VOICE_SAMPLE",
                "mime_type": "VOICE_MIME_TYPEaudio/pcm;rate=24000",
            }
        }
    },
}

# Session setup message
SETUP_MESSAGE = {
    "setup": {
        "model": "gemini-3.8-live",
        "generation_config": GENERATION_CONFIG,
        "system_instruction": {
            "parts": [{"text": "Your system instruction here"}]
        },
        "input_audio_transcription": {},
        "output_audio_transcription": {},
    }
}

更改下列內容:

  • VOICE_SAMPLE:以 base64 編碼的 PCM 音訊字串 (10 到 20 秒的樣本)。

  • VOICE_MIME_TYPE:PCM 音訊的 MIME 類型,例如 "audio/pcm;rate=24000"。

你可以將自訂語音與預建或自訂虛擬化身配對。詳情請參閱「設定即時虛擬人偶」。

設定語音活動偵測

語音活動偵測 (VAD) 可讓模型辨識使用者何時說話。這項功能對於建立自然對話至關重要,因為使用者隨時可以中斷模型。

VAD 偵測到中斷時,系統會取消並捨棄正在進行的生成作業。工作階段記錄只會保留已傳送給用戶端的資訊。伺服器接著會傳送訊息,回報中斷情形。BidiGenerateContentServerContent伺服器接著會捨棄所有待處理的函式呼叫,並傳送含有已取消呼叫 ID 的 BidiGenerateContentServerContent 訊息。

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,
        }
    }
}
      

後續步驟