FunASR + speech_ngram_lm_zh-cn 语音识别实战|附WebUI部署指南
1. 背景与技术选型
1.1 为什么选择 FunASR?
在当前中文语音识别领域,FunASR是由阿里云推出的一套功能完整、支持端到端推理的开源语音识别工具包。它不仅支持离线和在线模式下的高精度 ASR(自动语音识别),还集成了 VAD(语音活动检测)、PUNC(标点恢复)、ITN(文本正则化)等关键模块,适用于工业级应用。
尤其值得一提的是,FunASR 支持ONNX 模型部署,可在 CPU/GPU 上高效运行,并提供基于 WebSocket 的流式服务接口,非常适合嵌入 Web 应用或对接 FreeSWITCH 等通信系统。
1.2 引入 n-gram 语言模型提升准确率
虽然现代 ASR 多采用神经网络语言模型(如 CTC + Attention),但在特定场景下(如专业术语、固定话术、低资源环境),传统n-gram 语言模型依然具有不可替代的优势:
- 推理速度快,内存占用小
- 对高频短语建模能力强
- 可有效纠正同音错误(如“公式” vs “公事”)
本文重点使用的speech_ngram_lm_zh-cn-ai-wesp-fst模型正是一个经过优化的中文 FST(有限状态转录器)格式 n-gram 语言模型,能够显著提升识别准确率,尤其是在电话客服、会议记录等结构化语境中表现优异。
2. 镜像环境介绍与启动
2.1 镜像基本信息
| 字段 | 内容 |
|---|---|
| 镜像名称 | FunASR 语音识别基于speech_ngram_lm_zh-cn 二次开发构建by科哥 |
| 基础框架 | FunASR Runtime SDK (ONNX 版本) |
| 核心模型 | Paraformer-Large + SenseVoice-Small |
| 语言模型 | speech_ngram_lm_zh-cn-ai-wesp-fst |
| UI 层 | 自研 WebUI(Gradio 实现) |
| 开发者 | 科哥(微信:312088415) |
该镜像已预集成以下组件: - ONNX Runtime 推理引擎 - Paraformer 大模型(高精度) - SenseVoice 小模型(低延迟) - PUNC 标点恢复模型 - VAD 语音断句模型 - ITN 文本正则化模型 - N-gram FST 语言模型 - Gradio WebUI 界面
2.2 启动容器并访问 WebUI
# 创建模型存储目录 mkdir -p ./funasr-runtime-resources/models # 拉取官方镜像(CPU 版) sudo docker pull registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-online-cpu-0.1.12 # 运行容器并挂载模型目录 sudo docker run -p 7860:7860 -p 10096:10095 -it --privileged=true \ -v $PWD/funasr-runtime-resources/models:/workspace/models \ registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-online-cpu-0.1.12💡 注意:若使用 GPU,请替换为
-gpu结尾的镜像版本,并添加--gpus all参数。
进入容器后启动服务:
cd /workspace/FunASR/runtime nohup bash run_server_2pass.sh \ --download-model-dir /workspace/models \ --vad-dir damo/speech_fsmn_vad_zh-cn-16k-common-onnx \ --model-dir damo/speech_paraformer-large-vad-punc_asr_nat-zh-cn-16k-common-vocab8404-onnx \ --online-model-dir damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-online-onnx \ --punc-dir damo/punc_ct-transformer_zh-cn-common-vad_realtime-vocab272727-onnx \ --lm-dir damo/speech_ngram_lm_zh-cn-ai-wesp-fst \ --itn-dir thuduj12/fst_itn_zh \ --hotword /workspace/models/hotwords.txt > log.txt 2>&1 &服务启动成功后,在浏览器访问:
http://<服务器IP>:7860即可打开 WebUI 界面。
3. WebUI 功能详解与使用流程
3.1 界面布局概览
整个 WebUI 分为两大区域:
- 左侧控制面板:模型选择、设备设置、功能开关
- 右侧主操作区:上传/录音、识别结果展示、下载按钮
控制面板核心功能
| 功能项 | 说明 |
|---|---|
| 模型选择 | 支持切换Paraformer-Large(高精度)与SenseVoice-Small(低延迟) |
| 设备选择 | CUDA(GPU加速)或CPU模式 |
| 启用PUNC | 是否开启标点符号自动添加 |
| 启用VAD | 是否启用语音活动检测(自动切分语句) |
| 输出时间戳 | 返回每句话的时间区间信息 |
3.2 使用方式一:上传音频文件识别
步骤 1:准备音频文件
支持格式包括: - WAV (.wav) - MP3 (.mp3) - M4A (.m4a) - FLAC (.flac) - OGG (.ogg) - PCM (.pcm)
推荐采样率:16kHz
⚠️ 提示:非标准采样率可能导致识别失败或性能下降。
步骤 2:上传并配置参数
- 在 "ASR 语音识别" 区域点击"上传音频"
- 设置批量大小(默认 300 秒,最大支持 5 分钟)
- 选择识别语言:
auto:自动检测(推荐)zh:强制中文en:英文yue:粤语ja:日语ko:韩语
步骤 3:开始识别
点击"开始识别",等待处理完成。
步骤 4:查看结果
识别结果分为三个标签页:
- 文本结果:纯文本输出,可直接复制
- 详细信息:JSON 格式,含置信度、时间戳等元数据
- 时间戳:按词/句划分的时间范围列表
3.3 使用方式二:浏览器实时录音识别
步骤 1:授权麦克风权限
点击"麦克风录音"按钮,浏览器会弹出权限请求,点击允许。
步骤 2:录制语音
- 录音过程中可随时点击"停止录音"
- 录音内容将临时保存为 WAV 文件
步骤 3:开始识别
与上传文件一致,点击"开始识别"即可。
步骤 4:查看结果
结果展示方式与上传文件完全相同。
3.4 输出结果导出功能
识别完成后,可通过以下按钮下载不同格式的结果:
| 下载按钮 | 文件格式 | 用途 |
|---|---|---|
| 下载文本 | .txt | 纯文本,便于编辑 |
| 下载 JSON | .json | 完整结构化数据 |
| 下载 SRT | .srt | 视频字幕制作 |
所有输出文件统一保存在:
outputs/outputs_YYYYMMDDHHMMSS/例如:
outputs/outputs_20260104123456/ ├── audio_001.wav ├── result_001.json ├── text_001.txt └── subtitle_001.srt4. 高级配置与调优建议
4.1 批量大小调整策略
| 批量大小(秒) | 适用场景 |
|---|---|
| 60~120 | 实时性要求高,响应快 |
| 300(默认) | 平衡速度与稳定性 |
| 600 | 长音频批处理(需足够内存) |
📌 建议:对于超过 5 分钟的长音频,建议先分段再处理。
4.2 语言模型融合机制解析
FunASR 支持浅层融合(Shallow Fusion)方式将 n-gram LM 注入解码过程:
# 解码时权重配置示例(run_server_2pass.sh 中可调) --lm-weight 0.3 \ --decoder-beam-size 10 \ --nbest 5其中: -lm-weight:n-gram LM 的影响权重(0~1) - 权重过高 → 过度依赖词典,灵活性差 - 权重过低 → LM 几乎不起作用
📌 经验值:0.2 ~ 0.4之间效果最佳。
4.3 性能优化技巧
| 问题现象 | 优化方案 |
|---|---|
| 识别慢(CPU 模式) | 切换至 CUDA 模式(如有 GPU) |
| 长音频卡顿 | 减小 batch size 或分段处理 |
| 背景噪音干扰大 | 启用 VAD + 后期降噪预处理 |
| 同音错别字多 | 调整lm-weight或添加热词 |
| 实时性差 | 改用SenseVoice-Small模型 |
4.4 热词增强(Hotword Boosting)
可通过编辑/workspace/models/hotwords.txt添加自定义热词:
人工智能 大模型 语音识别 科哥出品重启服务后,这些词汇会被优先匹配,特别适合行业术语、人名地名等专有名词识别。
5. 常见问题与解决方案
Q1:识别结果不准确怎么办?
✅解决方法:1. 检查是否选择了正确的语言(中文 →zh) 2. 确保音频清晰无杂音 3. 尝试提高音量或进行降噪处理 4. 添加相关热词到hotwords.txt5. 调整lm-weight参数以增强语言模型作用
Q2:识别速度太慢?
✅可能原因及对策:- 使用了 CPU 模式 → 改用 CUDA 加速 - 音频过长 → 分段处理或减小 batch size - 模型过大 → 切换为SenseVoice-Small模型
Q3:无法上传音频文件?
✅检查项:1. 文件格式是否支持(推荐 MP3/WAV) 2. 文件大小是否超过限制(建议 < 100MB) 3. 浏览器兼容性(Chrome/Firefox 最佳)
Q4:录音没有声音?
✅排查步骤:1. 浏览器是否授予麦克风权限 2. 系统麦克风是否正常工作 3. 麦克风输入音量是否开启
Q5:结果出现乱码?
✅解决方案:1. 确认音频编码格式正确 2. 检查语言设置是否匹配 3. 尝试重新转换为标准 WAV 格式
Q6:如何进一步提升准确率?
✅综合建议:1. 使用高质量音频(16kHz 采样率) 2. 减少背景噪音(可用 Audacity 降噪) 3. 清晰发音,避免过快语速 4. 合理配置 n-gram LM 和热词 5. 定期更新模型版本
6. 总结
本文围绕FunASR + speech_ngram_lm_zh-cn构建了一套完整的中文语音识别实战方案,并结合开发者“科哥”提供的 WebUI 镜像,实现了从部署到使用的全流程指导。
我们重点讲解了以下几个方面:
- 技术优势:FunASR 支持 ONNX 部署、流式识别、多模型切换;
- 语言模型增强:通过引入
speech_ngram_lm_zh-cn-ai-wesp-fst显著提升识别准确率; - WebUI 实践:提供了图形化界面,支持上传、录音、导出字幕等功能;
- 工程调优:涵盖性能优化、热词增强、参数调节等实用技巧;
- 常见问题应对:针对典型问题给出可落地的解决方案。
这套方案已在实际项目中验证,适用于会议转录、客服质检、教育录播等多种场景,具备良好的扩展性和稳定性。
未来可进一步探索: - 对接 FreeSWITCH 实现电话 ASR - 集成 Whisper 实现多语言混合识别 - 构建私有化训练 pipeline 微调模型
💡获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。