AI智能体项目实战记录(16):进阶学习 —— 添加语音识别功能,实现快速提问
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 端到端链路LangGraphasr_serviceFastAPI浏览器用户LangGraphasr_serviceFastAPI浏览器用户按住麦克风,开始说话MediaRecorder 收集 audioChunks松开,结束录音