FunASR本地部署教程:三步跑通Windows离线语音转写服务
【免费下载链接】FunASROpen-source speech recognition toolkit for training, inference, streaming ASR, VAD, punctuation, speaker diarization pipelines, and OpenAI-compatible/MCP serving.项目地址: https://gitcode.com/GitHub_Trending/fun/FunASR
会议录音里带客户姓名,内部同步里带未发布信息——这类音频没法上传给任何云端转写服务。FunASR本地部署就是为了解决这件事:这个由达摩院语音实验室推出的开源语音识别工具包,覆盖语音识别(ASR)、语音活动检测(VAD)、标点恢复(PUNC)全链路,Windows SDK 2.0版本在纯CPU上就能做中文/英文离线转写,无需GPU,音频不出机器。性能方面,16核CPU服务器可支撑64路并发转写请求,实时率(RTF,即转写1秒音频所耗时间)低至0.0076;它集成FFmpeg,wav/mp3/mp4等常见音视频格式可直接转写,还支持热词与逆文本规范化(ITN)扩展。
三种日常转写方式
先倒着讲——看看服务跑起来之后,最常用的三种转写方式,再回头部署。
单文件转写
进入runtime/python/websocket目录,用funasr_wss_client.py客户端指向本机10095端口、--mode offline,再用--audio_in指定音频(wav/mp3/mp4或网络URL均可)。两个值得常开的参数:--use_itn 1打开数字规范化,例如把"123"转成"一百二十三";--hotword指定热词文件,提升专业术语准确率。
用wav.scp批量转写
录音文件多时,建一个wav.scp清单,每行按"编号 路径"写一条,再用--audio_in传入清单路径、--output_dir指定输出目录,客户端会逐条处理。
零代码网页
浏览器直接打开runtime/html5/static/index.html,上传文件、点击连接和开始即可,适合演示和非技术同事。
离线转写服务三步上线
第一步:克隆源码
git clone https://gitcode.com/GitHub_Trending/fun/FunASR cd FunASR/runtime/deploy_tools第二步:运行一键部署
双击funasr-runtime-deploy-offline-cpu-zh.bat,按提示做三个选择:
- 模型类型:1=基础转写模型,2=带时间戳转写模型,3=热词增强模型
- 服务端口:默认10095,可自定义
- 工作目录:建议选D盘等非系统盘,避免权限问题
第三步:验证服务
浏览器打开http://localhost:10095,看到状态页即成功;也可以在命令行执行:
curl http://localhost:10095/health预期返回{"status":"healthy","version":"2.0"}。
机器够不够:软硬件环境核对
上面三步一次通过可以跳过本节;卡住了就先核对下面两张清单。
软件依赖
- 操作系统:Windows 10/11(64位,专业版优先)
- 运行时:.NET Framework 4.8 或更高版本
- 容器:Docker Desktop for Windows,并启用WSL2后端
⚠️ Docker是在"轻量虚拟机"里跑服务的工具,WSL2是Windows的Linux兼容层。家庭版系统需先开启WSL2功能(步骤见微软官方文档);部署时若报 "docker: command not found",说明Docker Desktop尚未安装,装好后重启电脑再试。
硬件参考
| 部署档位 | CPU | 内存 | 并发上限 | 适合谁 |
|---|---|---|---|---|
| 基础档 | 4核 | 8GB | 32路 | 个人/小团队 |
| 标准档 | 16核 | 32GB | 64路 | 部门级应用 |
| 企业档 | 64核 | 128GB | 200路 | 大规模集群 |
一段音频进服务后经历了什么
一段音频不靠单个模型完成识别,服务内部依次走四步:先由语音端点检测(VAD)切出人声、丢掉静音与背景噪音;接着声学模型Paraformer解码输出文本流;然后标点预测补上停顿、句号和问号;最后**逆文本规范化(ITN)**把结果整理成标准可读形式。语言模型和热词也在解码阶段参与进来——这正是--hotword参数生效的位置。
调优与行业模型替换
- 线程数:经验公式是解码线程≈CPU核心数÷2、IO线程≈核心数÷4,例如16核机器在部署脚本后追加
update --decode_thread_num 8 --io_thread_num 4 - 超长音频:超过1小时的录音追加
--max_single_audio_length 3600启用分片 - 行业模型:用
update命令替换,如医疗damo/speech_paraformer-large_asr_nat-zh-cn-16k-medical-vocab5000-pytorch、金融damo/speech_paraformer-large_asr_nat-zh-cn-16k-financial-vocab8404-pytorch
💡 超过1小时的超长音频,务必先开启分片再转写,否则处理过程可能中途失败。
三类高频问题排查
端口冲突:日志出现 "port is already allocated" 时,用netstat -ano | findstr :10095找到占端口的进程ID,再执行taskkill /PID <进程ID> /F强制结束,重新部署。
转写准确率一般:三招——①到model_zoo/modelscope_models.md查看并更换更新的模型;②在workspace/hotwords.txt按"热词 权重"逐行添加行业词汇;③用Audacity等工具先把音频预处理为16kHz采样率。
防火墙拦截:局域网内其他设备连不上服务时,执行netsh advfirewall firewall add rule name="FunASR" dir=in action=allow protocol=TCP localport=10095添加入站规则放行10095端口。
服务日常运维
在funasr-runtime-deploy-offline-cpu-zh.bat后追加参数即可完成日常管理:start启动、stop停止、restart重启、status查看状态。排查问题先看workspace/logs目录下的日志文件;CPU与内存占用可挂Windows性能监视器跟踪;更细节的内容参考runtime/docs/SDK_advanced_guide_offline.md。
语音识别私有化部署适合哪些人
"数据不出内网"的方案尤其适合:金融客服质检与合规录音分析、医疗语音电子病历与医患沟通记录、司法庭审录音转写、教育课堂录音转文字与课程字幕生成。完成FunASR本地部署后遇到疑问,docs/ 里有详细指南(含FAQ),examples/ 目录则提供了各场景的现成示例。
【免费下载链接】FunASROpen-source speech recognition toolkit for training, inference, streaming ASR, VAD, punctuation, speaker diarization pipelines, and OpenAI-compatible/MCP serving.项目地址: https://gitcode.com/GitHub_Trending/fun/FunASR
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考