Skip to content

【idea】关于从另一个项目调研来的语音模块建议 #279

Description

@hazy-cloudy

智能面试平台 + RAG 知识库 —— AI 语音技术全链路调研总结


一、项目背景与核心目标

本文围绕 《智能面试平台 + RAG 知识库》 展开,讲解AI 语音 Agent从 0 到 1 的工程化落地方法。
核心目标:让机器像真人面试官一样,与候选人进行自然、实时、可打断的语音对话,并结合 RAG 知识库提供准确回答。


二、核心技术概念(必背)

1. ASR(Automatic Speech Recognition)语音识别

  • 功能:把声音 → 文字
  • 关键能力:流式识别、端点检测(VAD)、热词支持、降噪
  • 选型:云端 API(OpenAI / 阿里云 / 腾讯云)、开源模型(Whisper、FunASR)

2. TTS(Text To Speech)语音合成

  • 功能:把文字 → 声音
  • 关键能力:流式合成、首包延迟低、音色自然、支持语速/情绪控制
  • 选型:云端实时 TTS、本地模型(Fish Speech、CosyVoice)

3. VAD(Voice Activity Detection)语音活动检测

  • 功能:判断“有没有人说话、说话开始/结束”
  • 地位:语音系统的守门人,直接决定打断、延迟、体验
  • 分类:端侧 VAD(浏览器)、服务端 VAD

4. RAG 知识库

  • 功能:让大模型基于私有文档/面试题库回答,不胡说
  • 作用:保证面试问题回答准确、可控、可追溯

5. 语音 Agent

  • 定义:能实时听、实时想、实时说、可打断的智能对话体
  • 核心:不是简单拼接 ASR+LLM+TTS,而是完整对话状态系统

三、语音交互的核心痛点(调研重点)

  1. 延迟高:语音对话对延迟极敏感,超过 600ms 就会明显卡顿
  2. 无法打断:AI 自顾自说话,用户插话无效
  3. 噪声干扰:环境噪音、回声导致识别错乱
  4. 端点不准:用户停顿就被误判为“说完了”
  5. 上下文丢失:只识别文本,丢失语气、情绪、打断状态
  6. 回声自激:AI 播放声音被麦克风拾回,导致自我打断

四、整体架构(标准工程架构)

前端(浏览器/React)

  • 音频采集:getUserMedia
  • 音频前处理:AEC 回声消除、NS 降噪、AGC 自动增益
  • 端侧 VAD:@ricky0123/vad-web(基于 ONNX)
  • 音频分块:AudioWorklet(低延迟、不卡 UI)
  • 流式播放:分块队列播放,支持立即停止
  • 状态管理:监听、思考、说话、打断

后端(Spring Boot)

  • WebSocket 全双工通信
  • 会话状态机管理
  • 流式 ASR 接入
  • LLM + RAG 推理
  • 流式 TTS 合成
  • 打断/取消/暂停控制

模型服务

  • ASR:阿里云通义实时 ASR
  • LLM:通义千问(支持 RAG)
  • TTS:阿里云实时流式 TTS

五、核心流程(一次完整语音面试)

  1. 用户开启面试,前端获取麦克风权限
  2. 音频前处理(降噪、消回声、增益)
  3. VAD 检测人声开始/结束
  4. 音频分块通过 WebSocket 发送到后端
  5. 后端流式 ASR 转写文字
  6. 文字送入 LLM + RAG 知识库检索
  7. LLM 流式输出句子
  8. 句子实时送入 TTS 生成音频
  9. 音频分块返回前端,边收边播
  10. 支持用户随时打断,停止播放并取消推理

六、关键技术实现(工程落地重点)

1. 前端音频处理

  • 使用 getUserMedia 开启麦克风
  • 开启 AEC/NS/AGC 提升识别率
  • 采样率 16kHz(ASR 标准)
  • AudioWorklet 分块采集(200ms/块)
  • 低延迟、不阻塞主线程

2. 端侧 VAD

  • 库:vad-web(基于 ONNX 运行在浏览器)
  • 作用:判断用户何时开始/停止说话
  • 优化:静音延迟 300–500ms 确认,避免误触发

3. WebSocket 全双工通信

  • 传输音频、字幕、控制指令
  • 支持:submit(提交)、cancel(取消)、pause(暂停)
  • 保证实时性与顺序性

4. 流式 ASR

  • 边说边识别,不等整段说完
  • 支持增量结果、最终结果
  • 服务端 VAD 判定结束点

5. LLM + RAG 知识库

  • 基于面试题库/文档做精准回答
  • 避免幻觉,保证答案专业可靠
  • 流式输出,降低首句响应时间

6. 流式 TTS

  • 句子级流式合成
  • 不用等全文生成,首包更快
  • 支持随时中断

7. 打断机制(Barge-in)

  • 用户说话 → 立即停止播放
  • 取消后端 LLM / TTS 任务
  • 只保留已播放内容进入上下文
  • 状态机安全切换

8. 会话状态机

  • idle(空闲)
  • listening(聆听)
  • thinking(思考)
  • speaking(回答)
  • paused(暂停)
  • completed(结束)
    保证系统行为稳定、不混乱

七、两种技术方案对比(调研必写)

方案A:级联方案(ASR → LLM → TTS)

interview-guide 采用此方案

  • 优点:可控、可审计、易调试、组件可替换
  • 缺点:链路长、延迟略高
  • 适用:企业应用、面试系统、客服、需要审计的场景

方案B:原生 Realtime 端到端语音模型

  • 代表:OpenAI Realtime API、Gemini Live、Qwen-Omni
  • 优点:延迟极低、语气自然、支持打断
  • 缺点:黑盒、贵、私有化难
  • 适用:C端语音助手、高实时场景

八、生产环境优化策略(高分要点)

  1. 减小音频分块(100–200ms)降低延迟
  2. LLM 优先输出短句,提升首响速度
  3. TTS 按句子切分,流式合成
  4. 上下文精简,只保留高信息内容
  5. 全链路监控:延迟、token、打断率、成功率
  6. 端云混合:端侧负责实时性,云端负责智能
  7. 降级策略:断网/超时自动切换方案

九、未来演进方向

  1. 端云协同:VAD/轻量ASR放前端,复杂推理放云端
  2. 本地模型私有化:Whisper + FishSpeech 本地部署
  3. 多模态扩展:语音 + 摄像头 + 屏幕共享
  4. 原生 Realtime API:接入 OpenAI / 阿里实时语音模型
  5. 更自然打断:AI 说话时可插话、不丢上下文

十、总结(可直接放在报告结尾)

AI 语音 Agent 并非简单的“ASR + LLM + TTS”拼接,而是一套高实时、强状态、可打断、可观测的完整对话系统。
本次《智能面试平台 + RAG 知识库》项目,完整实现了从音频采集、VAD 检测、流式 ASR、LLM+RAG 推理、流式 TTS 到前端播放与打断的全链路工程化方案。
通过状态机管理、全双工通信、流式处理、端侧优化,最终实现了低延迟、高稳定、自然流畅的 AI 语音面试交互体验,为企业智能面试、知识问答、语音客服等场景提供了可落地、可扩展的技术架构。


Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions