一、项目结构准备
funasr-docker/
├── Dockerfile
├── requirements.txt
├── models/ # 预下载模型目录(可选)
├── config/ # 自定义配置文件
│ └── server_config.py
└── run.sh # 服务启动脚本
二、核心文件配置
- Dockerfile(综合网页5/7/13)
# 基础镜像选择Python 3.8
FROM python:3.8-slim# 设置环境变量
ENV MODEL_CACHE_PATH=/usr/src/app/model_cache
ENV DEBIAN_FRONTEND=noninteractive# 安装系统依赖
RUN apt-get update && \apt-get install -y ffmpeg git && \rm -rf /var/lib/apt/lists/*# 创建工作目录
WORKDIR /usr/src/app# 复制项目文件
COPY requirements.txt .
COPY run.sh .
COPY config/ ./config/# 安装Python依赖
RUN pip install --no-cache-dir -r requirements.txt \&& pip install "modelscope[audio]" -f https://modelscope.oss-cn-beijing.aliyuncs.com/releases/repo.html# 暴露服务端口
EXPOSE 10095# 启动服务
ENTRYPOINT ["/bin/bash", "run.sh"]
- requirements.txt(参考网页12/13)
funasr==0.8.4
modelscope==1.11.0
uvicorn==0.23.2
fastapi==0.103.2
python-multipart==0.0.6
- run.sh 启动脚本(适配网页13)
#!/bin/bash# 预下载模型(如果未预先打包)
if [ ! -d "$MODEL_CACHE_PATH" ]; thenpython -m funasr.utils.runtime_utils \--model-name damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-online \--export-dir $MODEL_CACHE_PATH
fi# 启动HTTP服务
exec python -m funasr.http_server \--model_path $MODEL_CACHE_PATH \--config_path /usr/src/app/config/server_config.py \--host 0.0.0.0 \--port 10095
三、构建与运行
- 镜像构建(网页1/3/7)
docker build -t funasr-http:1.0 .
- 容器运行(网页13/14)
docker run -d \-p 10095:10095 \-v ./model_cache:/usr/src/app/model_cache \--name funasr-service \funasr-http:1.0
四、服务验证
- 查看运行日志
docker logs -f funasr-service
- 发送测试请求(网页14)
curl -X POST "http://localhost:10095/recognition" \-H "Content-Type: multipart/form-data" \-F "audio_file=@test.wav"
五、高级配置建议
- 模型预下载优化(网页13)
# server_config.py
runtime_conf = {"vad_model": "damo/speech_fsmn_vad_zh-cn-16k-common-onnx","model": "damo/speech_paraformer-large-vad-punc_asr_nat-zh-cn-16k-common-vocab8404-onnx","punc_model": "damo/punc_ct-transformer_zh-cn-common-vad_realtime-vocab272727-onnx"
}
- 多阶段构建优化(网页8)
# 构建阶段
FROM python:3.8 as builder
RUN pip install --user modelscope
COPY models/ /models/
RUN python -m funasr.utils.runtime_utils --model-path /models# 最终镜像
FROM python:3.8-slim
COPY --from=builder /root/.cache/modelscope/hub /usr/src/app/model_cache
...
六、排错指南
- 常见问题处理(网页3/7)
• 模型下载失败:检查modelscope的版本兼容性,建议锁定特定版本
• 端口冲突:确认10095端口未被占用,或修改EXPOSE/PORT参数
• GPU支持:需要nvidia-docker运行时和CUDA基础镜像
该方案综合了FunASR官方部署文档和Docker最佳实践,实现了:
• 预置中文语音识别模型
• HTTP API服务接口
• 模型缓存机制
• 可扩展配置架构
完整实现代码可参考FunASR官方runtime示例:https://github.com/modelscope/FunASR/tree/main/runtime/python/http