AI Agent 中级 20分钟

语音交互助手

端到端语音交互系统,支持语音唤醒、连续对话、语音合成,可嵌入硬件设备。

WhisperGPT-4ElevenLabsWebRTCPython

项目概述

语音交互是人机交互最自然的方式之一。从智能音箱到车载助手,从客服热线到无障碍辅助,语音交互场景广泛但实现复杂。

本案例构建了一个端到端的语音交互助手系统。支持语音唤醒(离线)、连续对话、多音色合成,端到端延迟控制在 2 秒以内。

关键指标

< 2s
端到端延迟
98%
唤醒成功率
95%
ASR 准确率
70%
用户留存(周)

系统架构

系统采用「语音活动检测 → ASR → LLM 对话 → TTS」的四步流水线。

(diagram)

实现细节

1

语音前端

语音唤醒

本地运行唤醒词检测(Porcupine),无需联网。支持自定义唤醒词。

VAD 检测

WebRTC VAD 模块检测说话人是否在发言。连续静音超过 1.5 秒自动结束录音。

噪音抑制

RNNoise 深度学习降噪模型处理麦克风输入,大幅削减背景噪音。

2

语音理解与对话

ASR 转写

Whisper large-v3 将语音转为文本。支持中英文混合、流式处理。

LLM 对话

GPT-4o 处理转写文本。上下文管理支持多轮对话,自动维护最近 10 轮对话历史。

意图路由

对指定意图(查天气、设闹钟、控制设备)路由到专用函数,非路由场景走自由对话。

3

语音合成

TTS 引擎

ElevenLabs 提供高保真语音合成,支持多种音色和情感调节。延迟约 300-500ms。

流式播放

TTS 结果边生成边播放。用户无需等待完整文本生成完毕即可听到声音。

打断机制

用户可以在 TTS 播放时说话打断。VAD 检测到新语音后立即停止播放并开始新的 ASR 循环。

语音助手核心循环

class VoiceAssistant:
    def __init__(self):
        self.vad = webrtcvad.Vad(2)
        self.asr = whisper.load_model("large-v3")
        self.llm = ChatOpenAI(model="gpt-4o")

    async def conversation_loop(self):
        while True:
            audio = await self.record_until_silence()
            text = self.asr.transcribe(audio)["text"]
            response = self.llm.invoke([{"role": "user", "content": text}])
            audio = generate(text=response.content, voice="Rachel")
            play(audio)

经验教训

  • 端到端延迟最大的瓶颈在 LLM 推理
  • 打断机制的体验决定了用户是否愿意持续使用
  • 噪音环境下的语音识别是最大挑战
  • 唤醒词误触发会严重破坏体验

更多案例

查看其他 AI 工程化落地案例

返回案例库