
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/FunASRFunASR 是开源语音识别工具包其 SenseVoice 模型提供中、英、日、韩、粤五语的离线转写接口可同时输出情感与音频事件标签。本文用仓库里自带的现成镜像把它变成一个 OpenAI 兼容的转写服务目标是十分钟跑通、十分钟定位问题。先回答为什么用容器直接pip install funasr常卡在 CUDA 版本与依赖冲突上多台机器环境不一致让我这边能跑变成排查黑洞。内网无公网的机器还有离线部署这一硬需求。容器把系统依赖、Python 依赖、启动参数固化成一个镜像这三类差异同时消失。部署前对照这张清单检查项达标线备注Docker Engine≥ 20.10docker compose命令直接可用安装方式见 Docker 安装指南GPU 容器支持--gpus all进容器后能认卡NVIDIA 驱动 Container Toolkit纯 CPU 环境可跳过内存16GB 可用32GB 更稳推理本身不占大头模型加载与缓存占磁盘至少 5GB 空闲含模型权重与/root/.cache缓存网络首次启动需拉取iic/SenseVoiceSmall离线环境预导出缓存卷再挂载进容器三步跑通镜像、启动、就绪第一步构建 FunASR 服务镜像仓库的 examples/openai_api/ 目录自带 Dockerfile基于 python:3.10-slimfunasr、fastapi、uvicorn 依赖全部装好直接构建即可cd examples/openai_api cp .env.example .env docker compose up --build默认按 CPU 模式启动。建议先用这个姿势把冒烟测试跑完别一开始就和 GPU 问题纠缠。第二步启动容器GPU 与 CPU 两套命令冒烟通过后再按设备跑正式服务docker build -t funasr-api . docker run --rm --gpus all -p 8000:8000 \ -e FUNASR_DEVICEcuda -e FUNASR_MODELsensevoice funasr-api # CPU去掉 --gpus all改为 -e FUNASR_DEVICEcpu第三步模型自动下载服务自动就绪容器启动后运行server.py首次会从 ModelScope 拉取iic/SenseVoiceSmall权重到容器内/root/.cache并预加载 sensevoice 别名。compose 部署默认挂载funasr-cache卷二次启动不再重复下载离线机器挂载预先准备好的缓存卷即可。下面命令能返回模型列表服务即就绪curl http://localhost:8000/health验证一次真实转写再动手调参先确认可用再谈优化curl http://localhost:8000/v1/audio/transcriptions \ -F filesample.wav -F modelsensevoice更省事的方式是直接跑仓库自带的 smoke_test它一次覆盖健康检查与转写请求bash smoke_test.sh # 不依赖 curl 的跨平台方式 python smoke_test.py --base-url http://localhost:8000返回文本符合预期链路就通了。调优看四个位置批处理SenseVoice 的动态批用batch_size_s按总秒数凑批示例代码取 60 秒短音频30s任务直接设batch_size64更快。显存利用率长期低于 50%先把批翻倍再考虑加卡。量化CPU 链路可导出 ONNX 并开启quantizeTrueINT8吞吐明显上升精度差在可接受范围内时优先做。线程CPU 推理线程数与物理核数对齐容器内用nproc核对top中%us %sy长期低于 50% 时优先加批而不是加线程。实时率SenseVoice 在 GPU 上约 170 倍实时官方口径。实测 RTF 明显偏离这个量级先确认 CUDA 真正生效nvidia-smi有显存占用为准再查批大小。 故障速查现象 → 排查方向现象排查方向启动即报 CUDA 不可用先切FUNASR_DEVICEcpu确认服务本身能跑再查 Container Toolkit 是否安装、容器内nvidia-smi是否可用8000 端口被占用改-p 9000:8000与--port 9000冒烟测试同步改BASE_URLhttp://localhost:9000首次启动长时间无响应正在下载权重观察/root/.cache体积变化内网机器换挂载预置缓存卷响应里缺 segments 字段请求追加-F response_formatverbose_json其他容器里访问 localhost 失败用 compose service 名或 k8s service 名这类运行时可达的主机名识别效果下降确认音频为 16kHz 单声道languageauto是否误判语种固定误识别词优先做热词后处理别急着换模型部署之后有领域词表时先做热词后处理或换用 nn 热词模型长尾错误再用 SenseVoice 微调脚本 拿自有数据做持续微调多语言能力不丢。CPU 高并发场景可评估 部署选型表 里的 C runtime 路径。服务本身已是 OpenAI 兼容接口现有 OpenAI 客户端改一下 base_url 就能接入。【免费下载链接】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),仅供参考