背景与问题

语音交互正在从“通信工具”变成“AI 入口”。一方面,KOOK、YY语音等公开资料显示,语音房间、多端互通、低延迟连麦早已是成熟需求;另一方面,NowVoice、Airvoz 等在线 TTS 工具让文本转语音在配音、有声内容、无障碍场景中快速普及。对开发者来说,真正的挑战不是单独做一个 ASR 或 TTS Demo,而是把语音输入、大模型推理、语音输出组成一条稳定、低延迟、可打断的实时对话链路。

观山静思
观山静思

常见痛点包括:用户说完后系统迟迟不回答;AI 正在说话时被背景人声误打断;ASR 识别错导致模型答非所问;TTS 音色自然但首包太慢;网络抖动导致音频断续。这些问题都需要从链路设计层面解决。

核心概念:一条实时语音对话链路

1. 音频采集与前处理

客户端采集 PCM 或 Opus 音频后,通常要经过回声消除、降噪、自动增益和静音检测。若 AI 正在播放语音,用户突然插话,回声消除会直接影响 ASR 是否会把 AI 自己的声音误识别成用户输入。

2. VAD 与端点检测

VAD 用于判断用户是否在说话,端点检测用于决定何时把这段语音交给 ASR。实时对话不能等用户停顿很久才提交,也不能在正常停顿时过早截断。

3. ASR 流式识别

ASR 将语音转成文本。实时链路一般通过 WebSocket 或 gRPC 流式上传音频,并持续接收中间结果与最终结果。工程上要关注采样率、编码格式、热词、时间戳和断句策略。

4. 大模型对话编排

LLM 根据上下文生成回复。语音场景更适合流式输出:先拿到首 token,再逐步生成句子。若涉及工具调用、知识检索或安全审核,需要在编排层明确超时和降级策略。

5. TTS 流式合成

TTS 将文本转成语音。公开资料中,NowVoice、Airvoz 等产品通常强调多音色、自然语气、语速调节等能力;但在实时对话中,更要关注首包延迟、流式返回、文本清洗和长句切分。

6. 播放、打断与状态机

对话系统需要明确状态:空闲、聆听、思考、说话、被打断。用户有效插话时,应立即停止播放、取消未消费音频,并切回聆听状态。

实践步骤与检查清单

第一步:定义延迟预算

例如将端到端目标设为 800 毫秒到 1.5 秒,并拆分到采集、网络、ASR、LLM 首 token、TTS 首包、播放缓冲等环节。具体数值会因服务商和部署方式不同而变化,请以官方文档为准。

第二步:全部改为流式

  • ASR:支持边说边识别,返回增量文本。
  • LLM:开启流式生成,避免等待完整回复。
  • TTS:支持按句子或片段合成,边生成边播放。

第三步:设计 TTS 分片策略

不要等整段回复完成再合成。可按标点、语义和最小长度切分,避免片段过碎导致机械感。

def split_for_tts(text):
    parts = []
    buf = ''
    for ch in text:
        buf += ch
        if ch in '。!?;,,!?;':
            if len(buf) >= 8:
                parts.append(buf)
                buf = ''
    if buf:
        parts.append(buf)
    return parts

这段示例用于把 LLM 输出切成适合 TTS 的片段。实际系统还可结合完整语义、最大字符数和停顿控制。

第四步:做可靠的打断控制

检测到用户有效语音后,停止播放并取消排队中的 TTS 任务。为减少误打断,可加入能量阈值、VAD 置信度、最短说话时长等判断。

第五步:建立监控指标

  • 用户停止说话到 ASR 最终文本的时间。
  • LLM 首 token 延迟。
  • TTS 首包音频延迟。
  • 端到端响应延迟。
  • 误打断率、打断成功率、重连率。

常见坑与建议

坑一:只追求音色,忽略延迟

高音质音色适合离线配音,但实时对话更在意“有没有及时回应”。建议先用低延迟音色上线,再根据用户反馈优化音质。

坑二:把模型完整回复一次性送 TTS

这会显著增加等待时间。正确做法是模型生成一句、TTS 合成一句、播放器缓冲一句。

坑三:忽视语音化提示词

语音回复应短、口语化,避免长列表、代码块和复杂表格。可在系统提示中约束输出。

SYSTEM_PROMPT = (
    '你是一个语音助手。回答要口语化、简短,'
    '避免列表和代码。若不确定,请说明需要确认。'
)

该示例用于让 LLM 生成更适合朗读的回复。

坑四:没有文本归一化

数字、日期、英文缩写、表情符号都要转换或过滤,否则 TTS 可能读错。比如“10:30”应读成时间,“AI”可根据业务读成英文字母或中文。

坑五:缺少端到端回放

建议记录音频、ASR 文本、LLM 回复、TTS 音频和状态事件。复盘时才能判断问题出在识别、理解、生成还是合成。

延伸阅读方向

  • 流式 ASR 与 VAD:了解 WebRTC、Silero VAD、RNNoise 等公开方案。
  • 语音大模型架构:比较级联式 ASR+LLM+TTS 与端到端语音模型,请以官方文档为准。
  • TTS 控制:关注 SSML、韵律、停顿、情绪音色和多说话人合成。
  • 实时传输:WebSocket、WebRTC、Opus、Jitter Buffer 和丢包恢复。
  • 体验评测:WER、MOS、首包延迟、任务完成率和打断自然度。

总体来说,语音与大模型的结合不是简单拼接三个 API,而是音频工程、模型服务、产品交互和监控体系的共同优化。先把链路跑通,再围绕延迟、打断、音色和上下文记忆持续迭代,才能做出真正可用的实时语音 AI 产品。

参考来源

免责声明:本文内容整理自公开网络资料,仅供学习交流参考,不代表观山书院立场。如涉及版权侵权,请联系我们删除。

联系邮箱:chenxj.g@gmail.com