配置语言和语音

本文档介绍了如何在 Gemini Live API 中配置合成语音回答和语音活动检测。您可以配置各种高清语音和语言的回答,还可以配置语音活动检测设置,以允许用户打断模型。

设置语言和语音

gemini-3.8-live 等实时音频模型可以在对话过程中自然地切换语言。您还可以在系统指令中指定语言,以限制其使用的语言。

所有模型的语音都在 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 捆绑包
English (US) 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. 微微一笑:录制时微笑往往会使录制的声音更具温暖感,而这种温暖感随后会添加到复制的语音中。

我们建议您使用以下任一脚本来录制自定义声音:

  • 音标标准,最适合追求整体质量:“When the sunlight strikes raindrops in the air, they act like a prism and form a rainbow. 彩虹是白光分解成多种美丽色彩的现象。这些拱门呈长圆形。”

  • 故事讲述者,最适合捕捉情感和动态范围:“当我打开这本布满灰尘的旧书时,简直不敢相信自己的眼睛。一把小小的金色钥匙 叮当一声掉到了木地板上。“这是从哪里来的?”我对自己低语道,突然感到一阵兴奋。一切都将改变。”

设置自定义语音

在您通过 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 消息来报告中断情况。然后,服务器会舍弃所有待处理的函数调用,并发送一条 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,
        }
    }
}
      

后续步骤