从零部署中文语音识别系统|FunASR + speech_ngram_lm_zh-cn实操教程
1. 引言
随着语音交互技术的普及,中文语音识别(ASR)在智能客服、会议记录、字幕生成等场景中展现出巨大价值。然而,搭建一个高精度、低延迟的本地化语音识别系统对开发者而言仍具挑战。
本文将带你基于FunASR框架与speech_ngram_lm_zh-cn语言模型,从零开始部署一套支持 WebUI 的中文语音识别系统。我们使用的镜像由社区开发者“科哥”二次开发构建,集成了 Paraformer-Large 和 SenseVoice-Small 双模型、标点恢复、VAD 检测、时间戳输出等实用功能,并提供直观的图形界面,极大降低使用门槛。
通过本教程,你将掌握: - FunASR 核心组件与工作原理 - 镜像环境的快速部署与配置 - WebUI 界面的完整使用流程 - 常见问题排查与性能优化建议
无需深度学习背景,只需基础 Linux 操作能力,即可完成整套系统的搭建与应用。
2. 技术架构与核心组件解析
2.1 FunASR 框架概述
FunASR 是由 ModelScope(魔搭)推出的开源语音识别工具包,支持多种工业级预训练模型的推理与微调。其核心优势在于:
- 多模型支持:涵盖 Paraformer、SenseVoice、UniASR 等主流 ASR 架构
- 端到端流水线:集成 VAD(语音活动检测)、ASR(语音识别)、PUNC(标点恢复)、ITN(文本正则化)
- 跨平台部署:支持 CPU/GPU 推理,提供 ONNX、TorchScript 等导出格式
- 实时流式识别:适用于会议转录、直播字幕等低延迟场景
本系统基于funasr-runtime-sdk-online运行时环境构建,采用 WebSocket 协议实现前后端通信,确保长音频处理稳定性。
2.2 关键模型详解
Paraformer-Large
- 类型:非自回归 Transformer 模型
- 特点:高准确率,适合对识别质量要求高的场景
- 输入采样率:16kHz
- 支持语言:中文(zh)、英文(en)、粤语(yue)、日语(ja)、韩语(ko)
SenseVoice-Small
- 类型:轻量级多语言语音理解模型
- 特点:响应速度快,资源占用低,适合移动端或边缘设备
- 支持情感与语种识别(如
<|zh|><|NEUTRAL|>)
speech_ngram_lm_zh-cn
- 类型:N-Gram 语言模型
- 作用:提升中文语义连贯性,减少同音词误识别(如“公式” vs “攻势”)
- 集成方式:作为 FST(有限状态转换器)嵌入解码器
其他核心模块
| 模块 | 功能 |
|---|---|
speech_fsmn_vad_zh-cn-16k-common-onnx | 语音端点检测,自动切分静音段 |
punc_ct-transformer_zh-cn-common-vad_realtime-vocab272727-onnx | 实时标点恢复 |
fst_itn_zh | 数字、日期、单位等文本标准化 |
3. 系统部署与环境配置
3.1 前置条件
确保服务器满足以下要求:
- 操作系统:Ubuntu 18.04/20.04/22.04 或 CentOS 7+
- 硬件配置:
- CPU:Intel i5 及以上(推荐 i7 或更高)
- 内存:≥ 8GB(建议 16GB)
- GPU(可选):NVIDIA 显卡 + CUDA 11.7+(显著提升识别速度)
- 软件依赖:
- Docker ≥ 20.10
- NVIDIA Container Toolkit(若使用 GPU)
提示:可通过
docker --version和nvidia-smi验证安装状态。
3.2 启动镜像服务
使用如下命令拉取并运行已封装好的镜像:
# 创建模型存储目录 mkdir -p ./funasr-models # 启动容器(CPU模式) docker run -d \ --name funasr-webui \ -p 7860:7860 \ -v $PWD/funasr-models:/workspace/models \ registry.cn-hangzhou.aliyuncs.com/kge_share/funasr_speech_ngram_lm:latest若需启用 GPU 加速,请添加
--gpus all参数:
bash docker run -d --gpus all ...
3.3 访问 WebUI 界面
服务启动后,在浏览器中访问:
http://<服务器IP>:7860首次加载可能需要 1–2 分钟(模型初始化)。成功后将显示如下界面:
- 标题:FunASR 语音识别 WebUI
- 控制面板包含模型选择、设备切换、功能开关等选项
- 底部版权信息标注“webUI二次开发 by 科哥”
4. WebUI 使用全流程指南
4.1 界面功能详解
左侧控制面板
| 组件 | 说明 |
|---|---|
| 模型选择 | 切换Paraformer-Large(高精度)或SenseVoice-Small(高速度) |
| 设备选择 | CUDA(GPU加速)或CPU(通用兼容) |
| 功能开关 | 启用/禁用 PUNC(标点)、VAD(语音检测)、时间戳 |
| 模型状态 | 显示当前模型是否已加载(✓/✗) |
| 操作按钮 | 手动加载模型、刷新状态 |
主识别区域
- 上传音频:支持 WAV、MP3、M4A、FLAC、OGG、PCM 格式
- 麦克风录音:浏览器原生录音功能,支持实时识别
- 批量大小:设置每次处理的音频长度(默认 300 秒,即 5 分钟)
- 识别语言:支持
auto(自动)、zh(中文)、en(英文)等
4.2 方式一:上传音频文件识别
步骤 1:准备音频
- 推荐格式:WAV 或 MP3
- 采样率:16kHz(最佳兼容性)
- 文件大小:建议 < 100MB
步骤 2:上传并配置参数
- 点击“上传音频”,选择本地文件
- 设置“批量大小”为合理值(长音频可设为 600)
- 选择语言为
zh(纯中文)或auto(混合语种)
步骤 3:开始识别
点击“开始识别”按钮,等待处理完成。进度条会实时更新。
步骤 4:查看结果
识别结果分为三个标签页:
- 文本结果:纯净文本输出,可直接复制使用
- 详细信息:JSON 格式,含每句话的置信度、时间戳
- 时间戳:按词/句划分的时间区间,便于后期编辑
4.3 方式二:浏览器实时录音识别
步骤 1:授权麦克风
点击“麦克风录音”,浏览器弹出权限请求 → 点击“允许”。
步骤 2:录制语音
- 对着麦克风清晰说话
- 点击“停止录音”结束录制
步骤 3:识别与导出
点击“开始识别” → 查看结果 → 下载所需格式文件
注意:录音质量受环境噪音影响较大,建议在安静环境下操作。
5. 结果导出与高级设置
5.1 多格式结果下载
识别完成后,可通过以下按钮导出不同格式的结果:
| 按钮 | 输出格式 | 适用场景 |
|---|---|---|
| 下载文本 | .txt | 文档整理、内容提取 |
| 下载 JSON | .json | 程序解析、二次开发 |
| 下载 SRT | .srt | 视频字幕制作、剪辑定位 |
所有文件保存路径为:
outputs/outputs_YYYYMMDDHHMMSS/ ├── audio_001.wav ├── result_001.json ├── text_001.txt └── subtitle_001.srt每次识别生成独立时间戳目录,避免覆盖冲突。
5.2 高级参数调优
批量大小(Batch Size)
- 范围:60 ~ 600 秒
- 建议:
- 短音频(<5分钟):保持默认 300
- 长录音(讲座/会议):设为 600,分段处理更稳定
语言识别策略
| 场景 | 推荐设置 |
|---|---|
| 纯中文演讲 | zh |
| 中英混合对话 | auto |
| 英文播客 | en |
| 粤语访谈 | yue |
时间戳输出
启用后可在 JSON 和 SRT 文件中获取精确到毫秒的时间标记,适用于:
- 自动生成视频字幕
- 语音内容剪辑定位
- 课堂讲义同步标注
6. 常见问题与解决方案
Q1:识别结果不准确?
排查方向:1. 检查音频质量是否清晰,是否存在背景噪音 2. 确认语言设置正确(中文内容应选zh) 3. 尝试更换模型(Paraformer-Large 更精准) 4. 若为专业术语较多的内容,可尝试添加热词(需修改镜像内部配置)
建议:提前使用 Audacity 等工具进行降噪处理。
Q2:识别速度慢?
原因分析:- 当前运行在 CPU 模式 - 使用了 Paraformer-Large 大模型 - 音频过长未分段
优化建议:1. 安装 NVIDIA 驱动并启用 CUDA 模式 2. 切换至 SenseVoice-Small 模型测试速度差异 3. 将超过 10 分钟的音频拆分为多个片段处理
Q3:无法上传音频文件?
检查项:- 文件格式是否在支持列表内(优先使用 WAV/MP3) - 文件大小是否超过浏览器限制(通常 ≤ 200MB) - 网络连接是否稳定(大文件上传易中断)
解决方案:转换为 16kHz 单声道 WAV 格式再上传。
Q4:录音无声音或识别失败?
常见原因:- 浏览器未授予麦克风权限 - 系统麦克风被其他程序占用 - 麦克风输入音量过低
解决方法:1. 刷新页面并重新授权 2. 检查系统录音设备设置 3. 在系统设置中提高麦克风增益
Q5:如何提高整体识别准确率?
综合建议:1. 使用高质量录音设备,采样率统一为 16kHz 2. 减少环境噪音干扰(关闭风扇、空调) 3. 发音清晰,避免过快语速 4. 在控制面板中开启“标点恢复”和“VAD” 5. 对特定领域词汇(如人名、品牌),考虑定制热词表
7. 总结
本文详细介绍了如何基于FunASR与speech_ngram_lm_zh-cn构建一套完整的中文语音识别系统。通过社区优化的镜像,我们实现了:
- 零代码部署:Docker 一键启动,无需手动安装依赖
- 可视化操作:WebUI 界面友好,支持上传与实时录音双模式
- 多功能集成:VAD、PUNC、时间戳、多语言识别一体化
- 灵活输出:TXT、JSON、SRT 多格式导出,适配各类下游任务
该系统已在实际项目中验证可用于会议纪要生成、教学视频字幕制作、电话录音分析等场景,具备良好的工程实用性。
未来可进一步探索方向包括: - 集成自定义热词以提升专业术语识别率 - 结合 Whisper.cpp 实现跨平台离线部署 - 开发 REST API 接口供第三方系统调用
无论你是 AI 初学者还是企业开发者,这套方案都能帮助你快速落地语音识别能力。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。