配置语言和语音

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

设置语言和语音

如需设置回答语言和语音,请按如下方式进行配置:

控制台

  1. 依次打开 Vertex AI Studio > 实时流
  2. 输出扩展控件中,从语音下拉菜单中选择一种语音。
  3. 在同一扩展控件中,从语言下拉菜单中选择一种语言。
  4. 点击 启动会话以启动会话。

Python

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",
    ),
)
      

支持的语音

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 - 温暖舒适

支持的语言

Live API 支持以下 24 种语言:

语言 BCP-47 代码 语言 BCP-47 代码
阿拉伯语(埃及语) ar-EG 德语(德国) de-DE
英语(美国) en-US 西班牙语(美国) es-US
法语(法国) fr-FR 印地语(印度) hi-IN
印度尼西亚语(印度尼西亚) id-ID 意大利语(意大利) it-IT
日语(日本) ja-JP 韩语(韩国) ko-KR
葡萄牙语(巴西) pt-BR 俄语(俄罗斯) ru-RU
荷兰语(荷兰) nl-NL 波兰语(波兰) pl-PL
泰语(泰国) th-TH 土耳其语(土耳其) tr-TR
越南语(越南) vi-VN 罗马尼亚语(罗马尼亚) ro-RO
乌克兰语(乌克兰) uk-UA 孟加拉语(孟加拉) bn-BD
英语(印度) en-IN 和 hi-IN 软件包 马拉地语(印度) mr-IN
泰米尔语(印度) ta-IN 泰卢固语(印度) te-IN

配置语音活动检测

语音活动检测 (VAD) 可让模型识别用户何时在说话。这对于创建自然对话至关重要,因为这使用户可以随时中断模型。

模型会自动对连续的音频输入流执行语音活动检测 (VAD)。您可以使用设置消息realtimeInputConfig.automaticActivityDetection 字段配置 VAD 设置。当 VAD 检测到中断时,系统会取消并舍弃正在进行的生成操作。会话历史记录中仅保留已发送给客户端的信息。服务器随后会发送一条消息来报告中断情况。

如果音频流暂停超过 1 秒(例如,如果用户关闭麦克风),请发送 audioStreamEnd 事件以对所有缓存的音频执行 flush 操作。客户端可以随时恢复发送音频数据。

或者,在设置消息中将 realtimeInputConfig.automaticActivityDetection.disabled 设置为 true,以停用自动 VAD。使用此配置时,客户端会检测用户语音,并在适当的时间发送 activityStartactivityEnd 消息。不会发送 audioStreamEnd。中断以 activityEnd 进行标记。

Python

from pathlib import Path
from IPython.display import display, Markdown
from google.genai.types import LiveConnectConfig, RealtimeInputConfig, AutomaticActivityDetection, StartSensitivity, EndSensitivity, Blob

config = LiveConnectConfig(
    response_modalities=["TEXT"],
    realtime_input_config=RealtimeInputConfig(
        automatic_activity_detection=AutomaticActivityDetection(
            disabled=False,  # default
            start_of_speech_sensitivity=StartSensitivity.START_SENSITIVITY_LOW, # Either START_SENSITIVITY_LOW or START_SENSITIVITY_HIGH
            end_of_speech_sensitivity=EndSensitivity.END_SENSITIVITY_LOW, # Either END_SENSITIVITY_LOW or END_SENSITIVITY_HIGH
            prefix_padding_ms=20,
            silence_duration_ms=100,
        )
    ),
)

async with client.aio.live.connect(
    model=MODEL_ID,
    config=config,
) as session:
    audio_bytes = Path("sample.pcm").read_bytes()

    await session.send_realtime_input(
        media=Blob(data=audio_bytes, mime_type="audio/pcm;rate=16000")
    )

    # if stream gets paused, send:
    # await session.send_realtime_input(audio_stream_end=True)

    response = []
    async for message in session.receive():
        if message.server_content.interrupted is True:
            # The model generation was interrupted
            response.append("The session was interrupted")

        if message.text:
            response.append(message.text)

    display(Markdown(f"**Response >** {''.join(response)}"))
      

后续步骤