FunASR 本地部署指南:在自己机器上完成全离线语音转写
【免费下载链接】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 是达摩院开源的语音识别工具包,解决的核心问题是"音频不能出内网"。读完这篇,你会在自己的机器上部署好一个语音转写服务,并把一条客服录音转成带标点的文本,全程不碰任何云端接口。
适不适合你
- 如果你的录音涉及会议、客服、庭审,绝不能上传任何云端服务,选它。
- 如果你只想转几条文件、不想养一个常驻服务,就不用本文这套部署方式,examples/ 目录里的纯 Python 脚本直接跑就行。
- 如果你需要给非技术同事演示,这个服务自带浏览器页面(后文会讲),部署一次就能反复用。
📋 动手前的准备清单
- 系统:Windows 用 Docker Desktop 并开启 WSL2 后端;Linux 服务器装原生 Docker 即可
- Python:3.8 以上,只在客户端机器上需要
- 磁盘:至少预留 10GB,要装一个镜像加三个模型
- 网络:安装期间机器要能访问外网,镜像和模型由脚本自行下载
- 耗时:视下载速度约 10~30 分钟
从 0 到服务可用的最短路径
整条路径分三个里程碑:拿源码、装起来、验证连通。
里程碑一,拿到源码。打开终端执行:
git clone https://gitcode.com/GitHub_Trending/fun/FunASR cd FunASR/runtime/deploy_tools里程碑二,安装并启动。执行这一行:
sudo bash funasr-runtime-deploy-offline-cpu-zh.sh install拉镜像、下载 ASR(声学识别)、VAD(判断哪段在说话)、标点三个模型、起容器,全部由脚本代办,终端全程有进度条。看到下面这行就装好了:
The service has been started.此时服务对外开放的端口是 10095。
里程碑三,验证连通。在客户端机器执行:
curl -k https://127.0.0.1:10095能拿到HTTP/1.1 200或 WebSocket 握手响应,说明端口通了。
容器内部,端点检测、识别、标点预测已经串好。你丢进去的是音频,拿回来的就是文本,中间过程不用管。
🎙 三种用法,挑一种开始
先做选择:
- 只有一个文件:命令行客户端,最省事的试手方式
- 有一堆文件排队:wav.scp 批量,一行一个路径,客户端按顺序逐个处理
- 不想碰终端:浏览器页面,上传即转
客户端在runtime/python/websocket目录,先执行pip install -r requirements_client.txt装依赖。最常用的转写命令:
python funasr_wss_client.py --host 127.0.0.1 --port 10095 \ --mode offline --audio_in ./meeting.wav --output_dir ./out--mode的取值对应三种策略:offline整段识别,online流式,2pass流式先出一遍草稿再由整段识别修正,原理见下图。
选批量时,把--audio_in指向一个 wav.scp 文件,每行写成标签 路径的格式。选网页端时,把runtime/html5/static/index.html拷到浏览器能打开的位置,填上服务地址和端口,就能上传音频或按麦克风转写。
🛠 踩坑与排查
- 证书告警:服务默认开着 SSL 且用自签证书,浏览器或 curl 报证书警告属正常现象,curl 加
-k跳过校验即可。内网环境想关加密,安装脚本带--ssl 0参数。 - 客户端连了没反应:先跑安装脚本的
--show子命令核对当前配置,确认端口和客户端--port一致;容器停了就用start拉起,stop、restart用于日常管理。 - mp3、m4a 转不了:客户端自身不解码非 wav 格式,需要自备 FFmpeg,Windows 执行
winget install ffmpeg,Linux 用对应包管理器。 - 吞吐量不够:先
stop,再用update子命令改--decode_thread_num和--io_thread_num,然后restart。16 核机器从 8/4 起步压测调整;配置改动只对重启后的容器生效。 - 专业词总写错:维护一份 hotwords.txt,每行一个词加权重,客户端用
--hotword传入。 - 数字全是汉字:默认开着数字归一化("一百二十三"→"123"),要保留原样就在客户端加
--use_itn 0。
接下来去哪
- 换模型:用安装脚本
update --asr_model指向其他模型 ID 或本地路径,候选清单在 model_zoo/modelscope_models.md - 查参数:从 runtime/quick_start.md 入手,SDK 细节继续读 docs/
- 想训自己的模型:FunASR 的训练侧也在同一仓库,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),仅供参考