FunASR 部署 SenseVoice:Docker 三步跑通离线语音识别,新手不踩坑
2026/9/7 18:36:34 网站建设 项目流程

FunASR 部署 SenseVoice:Docker 三步跑通离线语音识别,新手不踩坑

【免费下载链接】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 提供 SenseVoice 部署方案:一个多语种(中/英/日/韩/粤等)离线语音识别模型,跑在 Docker 容器里,一条命令起服务,客户端通过 HTTP 或 WebSocket 把音频丢进去、文字拿出来。整条链路在你自己的机器上闭环,这就是 FunASR Docker 部署想帮你做的事。

先判断:适不适合你

动手前先对一下这张清单,有一条不满足就先解决它,别急着拉镜像:

  • Docker 引擎:20.10 以上,docker run不带--gpus也能跑通,说明基础安装没问题。
  • 内存:可用内存 ≥ 16GB,推荐 32GB。SenseVoice 本身不大,但容器内模型加载 + 音频缓冲会吃内存,8GB 机器上很容易中途被 OOM 杀掉。
  • 磁盘:预留 5GB 给镜像和模型权重,别在剩余空间不足 1GB 的分区上跑。
  • GPU(可选,不是必须):有 NVIDIA 显卡 + NVIDIA Container Toolkit 只是提速,CPU 完全能跑,只是慢。判断标准很简单:CPU 单条音频的耗时你能接受,就别折腾 GPU。
  • 网络:机器能访问镜像仓库和模型下载源(ModelScope 或 Hugging Face 二选一取快的)。下载慢、卡一半,十有八九是网络问题,不是代码问题。

✅ 五项都过,往下走。有一条不过,先修哪条从哪条入手。

最短路径:四步把服务跑起来

下面每步只有一条必须敲的命令,细节文字说清。

第 1 步:拉镜像。在宿主机上拉取预构建镜像:

docker pull modelscope/funasr:latest

第 2 步:起容器,挂载模型目录。本地建一个空目录(比如~/funasr_models)用来放模型权重,然后启动容器。GPU 和 CPU 只差一个参数:

# GPU:有显卡就加 --gpus all docker run -it -d --name funasr -p 10095:10095 -v ~/funasr_models:/models modelscope/funasr:latest # CPU:去掉 --gpus all 即可 docker run -it -d --name funasr -p 10095:10095 -v ~/funasr_models:/models modelscope/funasr:latest

这里的-v是"挂载":把宿主机的~/funasr_models目录挂进容器/models,模型下在里面,重启容器也不丢。-p 10095:10095把容器端口映射到宿主机,客户端就访问宿主机 10095 端口。

第 3 步:下载模型。进容器,用模型下载工具把 SenseVoiceSmall 权重拉到挂载目录:

docker exec -it funasr bash -c "python -c \"from modelscope import snapshot_download; snapshot_download('iic/SenseVoiceSmall', local_dir='/models/SenseVoiceSmall')\""

下载慢或被掐断,换 Hugging Face 源重试同一个模型名即可,权重内容一致。

第 4 步:启动识别服务。在容器内指向模型目录起服务,设备按你的硬件选:

docker exec -it funasr bash -c "funasr-server --model /models/SenseVoiceSmall --device cuda --port 10095"

CPU 机器把--device cuda改成--device cpu。服务起来后,另开一个终端发一条音频验证(完整验证脚本见 examples/openai_api/smoke_test.py):

curl http://localhost:10095/health

返回健康状态、音频接口能出文字,就算跑通了。装 Docker 的更细步骤(各发行版命令、停容器)在 docs/installation/docker_zh.md 里有现成的,直接抄。

生产级调优:四个旋钮,每个都有判据

服务跑起来只是及格线。上量之后,用下面四个旋钮各调一次,每次只动一个,记录数字再动下一个。

🔧旋钮一:吞吐(批处理大小)。把 batch size 从 1 往上加,每次加 1~2。判据:吞吐(条/分钟)明显上升、且单条耗时没有翻倍,就是还有余量;单条耗时开始随 batch 线性变差,说明到顶了,退回上一档。

旋钮二:延迟(单请求排队时间)。压测时固定并发数,看 p95 延迟而不是平均值。判据:p95 稳定在你业务的 SLA 内(比如 10 秒音频 3 秒内出结果)就合格;p95 突然跳高而 p50 正常,通常是被个别长音频拖的,把长音频切段或单独排队,别全局加大 batch。

旋钮三:显存(防 OOM)。先跑 30 分钟压测,用nvidia-smi记录显存峰值。判据:峰值低于显存总量 80% 才算安全,留 20% 给突发长音频。超过就先降 batch,其次考虑量化(FP16/INT8)——量化后再量一次,吞吐不降才保留,降了就回退。

旋钮四:利用率(别让钱烧在空转上)。GPU 长期低于 50% 利用率,多数是请求没喂饱,而不是模型不够快:检查是不是并发开太低、音频是不是没攒够就一条一条发。判据:压测窗口内 GPU 利用率能稳定在 60% 以上且延迟达标,配置才算定型;利用率上不去又非要榨,才考虑换更大 batch 或多实例。

按现象排错:先看现象,再对表

出问题时别从头翻日志,先按现象分类,再决定先查什么:

现象先查什么常见原因
容器起不来,docker run报错错误最后几行,重点找 "gpus" 和 "permission"没装 NVIDIA Container Toolkit 却带了--gpus all;普通用户没权限,加sudo
服务无响应,curl 不通docker ps确认容器还活着,再查端口映射端口冲突:10095 被占用(端口冲突怎么查:ss -lntp | grep 10095),把-p两侧一起改个空端口
模型加载失败容器内/models下文件是否齐全、能否ls挂载路径写错、下载中断只有一半、目录权限容器内用户读不到
识别结果质量差先拿一条干净 16kHz 单声道音频复现输入格式不对(要 16kHz、16bit、单声道);音频压缩过狠;别急着怀疑模型
显存不足 / OOM 崩溃nvidia-smi当时的峰值显存batch 开太大;同机还跑着别的占卡任务

更细的服务端报错(比如 FastAPI 依赖缺失、换端口启动)在 docs/reference/FQA.md 里都有现成答案,直接搜关键词。

进阶玩法:先做这两件,收益最大

剩下两个方向里,投入产出比最高的是领域微调和热词增强。

领域微调:模型在你的行业术语上反复错,靠热词是救不回来的,拿 1000~5000 条脱敏后的高质量音频做 LoRA 微调,通常比堆热词见效快。切 2–12 秒片段、按"逐字转写"标注、留 15%–20% 独立测试集,这些坑在 docs/vehicle_plate_finetuning_zh.md 里有完整写法,思路完全通用。

热词增强:不改权重、上线最快的手段。把业务词(产品名、人名、地名)整理成每行一个词的热词文件,在请求里带hotwords或启动时挂热词列表(WebSocket 侧见 docs/vllm_guide_zh.md 的--hotword-file用法)。判据:同一批音频,开热词前后各跑一遍,目标词的正确率提升才算生效;它是"偏置",不是"纠错器",不会保证 100% 命中。

流式实时识别、说话人分离这些玩法 FunASR 也支持,但先把上面两件落地,再按需加,别一上来就全开。

一句话收尾

FunASR + SenseVoice 的 Docker 部署,对新手就两条标准:四步命令能把离线语音识别服务拉起来,四个旋钮能把吞吐、延迟、显存、利用率调到可验证的数字。能跑起来、能调优,这套方案就可以进生产了。

【免费下载链接】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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询