AI智能体项目实战记录(16):进阶学习 —— 添加语音识别功能,实现快速提问
2026/10/23 5:00:54
网站建设
项目流程
AI智能体项目实战记录(16):进阶学习 —— 添加语音识别功能,实现快速提问
1. 引言
1.1 为什么给问答系统加语音
前 15 篇我们完成了多智能体编排、技能选择、调用日志等能力,交互方式一直是"打字提问"。但在真实场景里:
- 移动端打字慢,语音更自然;
- 用户问题较长时,说话比输入快;
- 客服/巡检等场景需要"说完即问"。
所以这一篇给系统补上语音提问:按住麦克风 → 说话 → 松开 → 自动识别成文字并发送给主管智能体。
1.2 方案选型风暴
在动手前,先把可选方案摆出来对比:
| 方案 | 优点 | 缺点 | 适用 |
|---|
| 浏览器 Web Speech API | 零依赖、接入最快 | 多数浏览器实际走云端、离线不可用、各端行为不一致 | 快速验证 |
| 云端 ASR(讯飞/阿里/腾讯等) | 识别率高、模型维护成本低 | 按量计费、依赖网络、音频出内网有合规风险 | 对准确率要求极高 |
| 本地模型(SenseVoiceSmall + sherpa-onnx) | 离线、免费、数据不出内网、CPU 可跑 | 首次加载模型占内存、需要自己准备模型文件 | 私有化/内网项目 |
本项目选择本地 SenseVoiceSmall + sherpa-onnx,原因:
- 系统本身已经私有化部署,音频不适合出内网;
- SenseVoiceSmall 支持中/英/日/韩/粤语,覆盖主要场景;
- sherpa-onnx 提供现成的 ONNX 推理封装,CPU 上 int8 模型速度可接受;
- 不引入新的云服务账号与费用。
1.3 几个名词先说明
- ONNX:一种跨框架的模型格式,PyTorch/训练框架导出的模型可以用 ONNX Runtime 推理;
- sherpa-onnx:基于 ONNX Runtime 的语音识别/合成工具库,封装了流式与非流式识别器;
- SenseVoiceSmall:多语言语音识别模型,输出带标点的文本;
- ITN(Inverse Text Normalization):把口语化的数字/单位转成书面形式,例如"一百二十"→"120";
- PCM:未压缩的音频采样数据;本项目统一转成16kHz、单声道、float32([-1, 1])。
1.4 端到端链路