当前位置: 首页 > article >正文

Docker系列——从零开始打包FunASR的Http服务

一、项目结构准备

funasr-docker/
├── Dockerfile
├── requirements.txt
├── models/               # 预下载模型目录(可选)
├── config/              # 自定义配置文件
│   └── server_config.py
└── run.sh               # 服务启动脚本

二、核心文件配置

  1. 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"]
  1. 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
  1. run.sh 启动脚本(适配网页13)
#!/bin/bash

# 预下载模型(如果未预先打包)
if [ ! -d "$MODEL_CACHE_PATH" ]; then
    python -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. 镜像构建(网页1/3/7)
docker build -t funasr-http:1.0 .
  1. 容器运行(网页13/14)
docker run -d \
    -p 10095:10095 \
    -v ./model_cache:/usr/src/app/model_cache \
    --name funasr-service \
    funasr-http:1.0

四、服务验证

  1. 查看运行日志
docker logs -f funasr-service
  1. 发送测试请求(网页14)
curl -X POST "http://localhost:10095/recognition" \
    -H "Content-Type: multipart/form-data" \
    -F "audio_file=@test.wav"

五、高级配置建议

  1. 模型预下载优化(网页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"
}
  1. 多阶段构建优化(网页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
...

六、排错指南

  1. 常见问题处理(网页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


http://www.kler.cn/a/589249.html

相关文章:

  • Nuxt3 使用 ElementUI Plus报错问题
  • Android之Sentry接入
  • 在 Windows 11 上使用 PyCharm 创建一个 Flask 项目,并使用 `pipenv` 进行虚拟环境管理
  • HarmonyOS NEXT 声明式UI语法学习笔记-创建自定义组件
  • 麒麟服务器操作系统QT系列软件工具手册
  • AD9850函数信号发生器制作(全套资料)
  • RK3568 android11 基于PN7160的NXP NFC移植
  • ASP.NET Webform和ASP.NET MVC 后台开发 大概80%常用技术
  • 操作系统的磁盘调度
  • 鸿蒙Next开发中的坑与问题总结
  • 五大基础算法——枚举算法
  • 从被动响应到主动预见:智能可观测性技术的变革与实践
  • Qt常见面试题合集
  • ⚡️Jolt -- 通过JSON配置来处理复杂数据转换的工具
  • Spring cloud Gateway中的GlobalFilter接口及其方法
  • Spring Boot 核心知识点精讲:助你快速上手与深度理解
  • Linux下部署前后端分离项目 —— Linux下安装nginx
  • oracle实例
  • ai智能语音机器人对我们生活有什么影响
  • Designing Dashboards with SAP Analytics Cloud