基于 Gemini 2.0 Multimodal Live API 构建实时语音翻译助手实操指南
语音转文字 -> 文本翻译 -> 文字转语音 这种三段式链路,而是直接在模型内部处理音频流。我试着用 Python 跑通了一个实时语音翻译助手,最核心的突破在于利用 WebSockets 维持双向流式传输。
核心配置技巧
要实现低延迟翻译,不能用简单的对话模式,必须配置 speech_config。在初始化连接时,要把 response_modalities 设为 ["AUDIO"],这样模型才会直接吐出音频二进制流。
实操代码片段
首先安装 Google 的生成式 AI SDK:
pip install -U google-generativeai核心连接逻辑如下:
import os
import asyncio
from google import genai
async def live_translate():
client = genai.Client(api_key="YOUR_API_KEY", http_options={'api_version': 'v1alpha'})
# 关键点:在 config 中定义翻译角色,避免模型开始跟你闲聊
config = {
"system_instruction": "You are a real-time translator. Translate the incoming audio from English to Chinese immediately. Only output the translation, no preamble.",
"generation_config": {"response_modalities": ["AUDIO"]}
}
async with client.aio.live.connect(model="gemini-2.0-flash-exp", config=config) as session:
# 这里的 loop 需要接入 PyAudio 或 WebRTC 获取麦克风流
while True:
user_audio = await get_mic_stream() # 伪代码:获取实时音频采样
await session.send(user_audio, end_of_turn=False)
async for message in session.receive():
if message.data:
# 直接将返回的二进制音频流推送到扬声器
play_audio(message.data)踩过的坑与效率提升
1. VAD(语音活动检测)的误判:默认的端点检测有时太灵敏,话没说完就截断了。建议在提示词里明确要求 Wait for a natural pause before translating,或者在前端自己写一个简单的能量阈值判断,手动控制 end_of_turn 参数。
2. 音频采样率对齐:Gemini Live API 对输入音频格式要求极严。如果你用 PyAudio 采集,必须确保采样率是 16kHz 单声道 PCM 格式,否则模型听起来像是在快进,翻译结果完全是乱码。
3. 提示词压制:如果直接说“帮我翻译”,模型偶尔会输出“Sure, here is the translation: xxx”。为了极致的实时感,必须在 system_instruction 里加上 Only output the translation, no preamble,强行压制它的社交辞令。
性能实测
在 5G 环境下,从我说完英文到听到中文翻译,体感延迟在 800ms-1.2s 左右。比起之前调用 Whisper + GPT-4 + TTS 的 3-5 秒链路,这种原生的多模态方案在对话流畅度上完全是两个量级。
全部回复 (0)
还没有回复,来发第一条吧!
