1. FunASR语音识别系统概述
FunASR是由阿里巴巴达摩院开源的一款高性能语音识别系统,基于Paraformer模型架构,支持流式和非流式两种识别模式。该系统在中文语音识别任务中表现出色,尤其适合实时语音转写、会议记录等场景。相比传统ASR系统,FunASR具有以下优势:
- 识别准确率高:在多个公开测试集上达到SOTA水平
- 支持热词定制:可通过hotwords.txt文件注入领域术语
- 轻量级部署:提供CPU版本镜像,无需GPU也能运行
- 端到端一体化:包含语音活动检测(VAD)、语音识别(ASR)、标点恢复(PUNC)全流程
2. 外网环境部署流程
2.1 基础环境准备
部署前需确保宿主机满足以下条件:
- 操作系统:Linux (推荐Ubuntu 18.04+)
- Docker版本:20.10.0+
- 磁盘空间:至少20GB可用空间
- 内存:建议8GB以上
注意:虽然FunASR提供CPU版本镜像,但实际运行时会自动下载多个模型文件,请确保网络连接稳定且具有足够的下载带宽。
2.2 Docker镜像获取与运行
执行以下命令拉取官方镜像:
bash复制sudo docker pull registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-online-cpu-0.1.4
启动容器时需特别注意端口映射和目录挂载:
bash复制sudo docker run -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.4
参数说明:
-p 10096:10095:将容器内10095端口映射到宿主机10096端口--privileged=true:赋予容器特权模式,解决某些设备访问问题-v参数:将宿主机目录挂载到容器内,用于持久化模型文件
2.3 服务启动与配置
进入容器后,切换到runtime目录执行启动脚本:
bash复制cd 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_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 \
--itn-dir thuduj12/fst_itn_zh \
--hotword /workspace/models/hotwords.txt \
--certfile 0 > log.out 2>&1 &
关键参数解析:
--download-model-dir:模型下载存储路径--vad-dir:语音活动检测模型路径--model-dir:离线ASR模型路径--online-model-dir:在线ASR模型路径--punc-dir:标点恢复模型路径--itn-dir:逆文本规范化模型路径--certfile 0:禁用SSL加密(仅限测试环境)
2.4 服务验证与测试
查看服务启动日志:
bash复制tail -f /workspace/FunASR/runtime/log.out
当看到"asr model init finished.listen on port:10095"日志时,表示服务已正常启动。
下载测试客户端:
bash复制curl -O https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/sample/funasr_samples.tar.gz
tar -zxvf funasr_samples.tar.gz
客户端配置要点:
- 服务地址:ws://宿主机IP:10096
- 音频格式:支持wav、pcm等常见格式
- 采样率:16kHz(与模型匹配)
3. 内网环境部署方案
3.1 外网准备工作
在内网部署前,需先在外网环境完成资源准备:
- 保存Docker镜像:
bash复制docker save -o funasr-runtime-sdk-online-cpu-0.1.4.tar \
registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-online-cpu-0.1.4
- 打包模型文件:
bash复制# Linux系统默认路径
zip -r modelscope.zip /root/.cache/modelscope/hub/models
# Windows系统默认路径
# 压缩 C:\Users\<用户名>\.cache\modelscope\hub\models 目录
3.2 内网服务器部署
将外网准备的资源文件传输到内网服务器后:
- 加载Docker镜像:
bash复制docker load -i funasr-runtime-sdk-online-cpu-0.1.4.tar
- 解压模型文件:
bash复制mkdir -p /home/asr/
unzip modelscope.zip -d /home/asr/models
- 启动容器(关键区别在于直接使用本地模型):
bash复制docker run -p 10096:10095 -it --privileged=true \
-v /home/asr/models:/workspace/models \
registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-online-cpu-0.1.4
- 启动服务时指定本地模型路径:
bash复制cd FunASR/runtime
nohup bash run_server_2pass.sh \
--download-model-dir /workspace/models \
--vad-dir /workspace/models/damo/speech_fsmn_vad_zh-cn-16k-common-onnx \
--model-dir /workspace/models/damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-onnx \
--online-model-dir /workspace/models/damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-online-onnx \
--punc-dir /workspace/models/damo/punc_ct-transformer_zh-cn-common-vad_realtime-vocab272727-onnx \
--itn-dir /workspace/models/thuduj12/fst_itn_zh \
--hotword /workspace/models/hotwords.txt \
--certfile 0 > log.out 2>&1 &
4. 常见问题与解决方案
4.1 模型下载失败
现象:长时间卡在模型下载阶段
解决方案:
- 检查网络连接是否正常
- 尝试手动下载模型后放入指定目录
- 对于内网环境,务必使用本地模型路径
4.2 端口冲突
现象:启动时报端口占用错误
解决方案:
- 修改docker run命令中的-p参数,如改为
-p 10097:10095 - 检查宿主机端口使用情况:
netstat -tulnp | grep 10096
4.3 容器启动失败
现象:docker run后立即退出
解决方案:
- 检查镜像是否完整:
docker images | grep funasr - 增加内存资源:
docker run --memory=8g ... - 查看详细日志:
docker logs <容器ID>
4.4 客户端连接问题
现象:客户端无法连接到服务
解决方案:
- 检查防火墙设置:
iptables -L -n - 验证服务是否监听:
netstat -an | grep 10095 - 确认客户端配置的IP和端口正确
5. 性能优化建议
5.1 资源配置调整
根据实际负载情况调整容器资源:
bash复制docker run -p 10096:10095 -it \
--cpus=4 \
--memory=8g \
--privileged=true \
-v /path/to/models:/workspace/models \
registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-online-cpu-0.1.4
5.2 模型选择策略
针对不同场景可调整模型配置:
- 高精度场景:使用large模型
- 实时性要求高:使用online模型
- 标点要求严格:启用punc模型
5.3 热词优化技巧
热词文件示例格式:
code复制阿里巴巴 10
达摩院 8
FunASR 5
使用建议:
- 每行一个热词+权重(1-10)
- 定期更新领域相关术语
- 权重不宜设置过高(避免过度偏向)
6. 实际应用案例
6.1 会议记录系统
集成方案:
- 通过WebSocket接入实时音频流
- 使用VAD分割语音段落
- 结合热词注入会议专用术语
- 输出带标点的完整文本
6.2 客服质检平台
实现功能:
- 批量处理录音文件
- 关键词命中统计
- 语速、静音分析
- 自动生成质检报告
6.3 教育场景应用
特色功能:
- 课堂语音实时转写
- 重点内容标记
- 多说话人分离(需额外配置)
- 术语自动高亮
我在实际部署中发现,对于教育领域的专业课程录音,通过精心设计的热词列表可以将识别准确率提升15%-20%。特别是在处理专业术语时,建议提前收集课程大纲中的关键词汇加入到hotwords.txt中。另外,对于长时间运行的场景,建议定期重启服务(如每天一次)以避免内存泄漏问题。