Google上周甩出Gemini 3.1 Flash Live Preview,语音响应延迟压到300毫秒以内。这个数字什么概念?人类对话的自然停顿也就200-400毫秒——AI终于追上了真人聊天的节奏感。
更狠的是,它不搞"语音→文字→语音"的转译套路,直接音频进音频出。VideoSDK顺势更新了Python套件,把接入流程打包成 pip install 一句话的事。本文按官方文档走一遍完整搭建,从空文件夹到能说话的Agent,全程约15分钟。
为什么"音频原生"是个分水岭
传统语音助手的工作流像同声传译:先听写、再理解、再生成回复、最后合成语音。四个环节串下来,延迟奔着1-2秒去,情绪语气全丢在文字转换里。
Gemini 3.1 Flash Live的架构完全不同。输入端直接处理原始音频波形,输出端也是合成音频直出,中间没有文字中间态。Google官方数据:端到端延迟比上一代降低40%,情感识别准确率提升35%。
对开发者来说,这意味着你不用再调两个模型(ASR+TTS)的接缝问题。一个API管听、管想、管说,错误排查从"排查整个链路"变成"看一个模型的日志"。
环境搭建:三条命令的事
VideoSDK的封装足够厚,厚到你可以忽略WebRTC信令、音频编解码、房间管理这些脏活。核心依赖只有两组:videosdk-agents 本体,加上 google 插件。
先隔离环境,避免依赖污染:
python3 -m venv venv source venv/bin/activate # Windows用 venv\Scripts\activate
看到终端前缀变成 (venv) 就算成功。然后写.env文件,填两个密钥:
VIDEOSDK_AUTH_TOKEN=你的VideoSDK令牌 GOOGLE_API_KEY=你的Google密钥
VideoSDK令牌从官网控制台复制,Google密钥在 AI Studio 生成。注意:环境变量里设了 GOOGLE_API_KEY 之后,代码里不要再传 api_key 参数,SDK会自动读取——传了反而可能触发权限冲突。
最后装包:
pip install "videosdk-agents[google]"
方括号里的 google 是可选依赖组,会把 Gemini 相关的客户端库一并拉下来。
50行代码:从类定义到能说话
新建 main.py,核心结构是一个继承自 Agent 的类,外加一个启动函数。VideoSDK用异步模型,所有交互方法都要加 async。
Agent类的骨架长这样:
class MyVoiceAgent(Agent): def __init__(self): super().__init__( instructions="你是VideoSDK的语音助手,可以回答问题、执行任务", )
instructions 就是系统提示词,直接决定Agent的性格边界。这里可以写得很细,比如"用简短句子回答""遇到技术问题先确认用户版本号"——模型会全程遵守。
两个生命周期钩子最重要:
async def on_enter(self) -> None: await self.session.say("Hello, how can I help you today?") async def on_exit(self) -> None: await self.session.say("Goodbye!")
on_enter 在用户接入房间时触发,on_exit 在断开时触发。session.say() 会把文字转成语音推流,不需要你操心TTS服务商。
启动函数负责把Agent和Gemini模型挂接:
async def start_session(ctx: JobContext): agent = MyVoiceAgent() gemini_config = GeminiLiveConfig( model="models/gemini-3.1-flash-live-preview", voice="Puck", # 可选:Puck/Charon/Fenrir/Kore ) llm = GeminiRealtime(config=gemini_config) session = AgentSession( agent=agent, pipeline=Pipeline([llm]), room=ctx.room, ) await session.start()
Pipeline 是VideoSDK的设计亮点。你可以把多个模型串成链,比如先过一个意图分类小模型,再进Gemini做深度回复。单模型场景就写 Pipeline([llm]) 就行。
voice 参数目前有四个选项,Puck偏中性沉稳,Charon更活泼。Google文档没细说训练数据来源,但听感测试里Fenrir的低频响应明显更适合播客类场景。
跑起来之后测什么
代码写完后,python main.py 启动Worker。VideoSDK会自动分配一个房间URL,你用手机或浏览器打开就能对话。
建议优先测三个场景:
打断响应——说话过程中突然提问,看Agent能不能放弃当前生成、立即处理新输入。Gemini 3.1 Flash Live支持"双工打断",但具体灵敏度要在GeminiLiveConfig里调 interruption_threshold 参数。
长上下文记忆——连续聊5分钟以上,突然问"我三分钟前提到的那个方案呢",测模型有没有真的在跟踪对话历史。
噪音鲁棒性——背景放电视或键盘敲击声,看语音识别有没有明显漂移。这是端到端音频模型的传统弱项,Google官方推荐输入音频信噪比不低于15dB。
VideoSDK的日志默认开INFO级别,能看到每一轮对话的延迟指标。如果端到端超过500毫秒,检查是不是把 GOOGLE_API_KEY 同时写进了代码和环境变量——这种重复认证会让每次请求多绕一圈。
目前Gemini 3.1 Flash Live还在Preview阶段,Google没说正式版时间表,也没公布定价。VideoSDK的封装层已经稳定,但底层模型版本号带preview,生产环境建议先压测再放量。
热门跟贴