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

03-10
<think>好的,我现在要帮助用户解决关于FunASR的安装、配置和使用问题。首先,我需要回忆用户提供的引用内容。根据引用[1],用户提到了在Windows 10上安装FunASR并运行离线时间戳模型的步骤,特别是提到打开funasr_samples\samples\html\static文件夹,使用网页运行index.html。这可能涉及到安装后的示例运行步骤。 接下来,我需要整理安装FunASR的一般流程。通常,这类工具需要Python环境,可能需要使用pip安装。用户可能是在Windows系统下操作,所以需要指导如何在Windows上安装依赖,比如FFmpeg或者其他的库。然后,配置环境变量,确保命令行可以找到必要的工具。 然后,配置部分可能需要下载预训练模型,或者调整配置文件。用户提到的离线时间戳模型,可能需要从特定的位置下载模型文件,并放置到正确的目录中。运行示例时,可能需要通过命令行执行Python脚本,或者像引用中提到的,通过网页界面来运行,这可能涉及到启动一个本地服务器,或者打开HTML文件。 用户的问题可能包括安装过程中的常见错误,比如依赖冲突、缺少库文件,或者模型文件路径不正确。需要提前预想这些问题,并在指南中给出解决方法。例如,安装时提示缺少某些模块,可能需要通过pip单独安装,或者安装特定版本的库。 另外,引用[2]提到了Whisper的使用,虽然用户现在关注的是FunASR,但可能需要简要比较两者的区别,或者说明FunASR的特定优势,比如离线运行、时间戳功能等。但用户主要需求是安装和使用,所以这部分可能放在应用场景或相关问题里。 在生成使用教程时,需要分步骤说明:安装依赖、克隆仓库、安装FunASR、下载模型、运行示例。代码块需要正确显示命令,例如pip install命令和运行Python脚本的命令。同时,注意用户可能对命令行操作不熟悉,需要给出具体的示例,如cd到特定目录。 最后,根据用户要求生成相关问题,可能涉及性能优化、模型训练、与其他工具的比较等。需要确保问题相关且有参考价值,帮助用户进一步探索。 现在需要检查是否所有步骤都覆盖到了,并且符合用户提供的引用内容。特别是确保提到了运行index.html的步骤,以及模型下载的路径是否正确。如果有遗漏,可能需要补充细节,比如如何解决路径错误,或者如何处理浏览器安全限制导致网页无法运行的情况。</think>以下为FunASR使用指南,包含安装、配置及运行教程: ### 一、安装步骤(Windows 10) 1. **安装前置依赖** ```bash conda create -n funasr python=3.8 conda activate funasr pip install torch torchaudio pip install funasr modelscope ``` 2. **下载离线时间戳模型** ```python from modelscope.hub.snapshot_download import snapshot_download snapshot_download('damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch', cache_dir="./model") ``` ### 二、配置验证 1. **检查音频处理依赖** ```bash ffmpeg -version # 需确认返回版本号≥4.0[^1] ``` 2. **环境变量设置** ```bash set PATH=%PATH%;C:\ffmpeg\bin # 若使用自定义FFmpeg路径 ``` ### 三、运行离线时间戳示例 1. **执行语音识别** ```python from funasr import AutoModel model = AutoModel(model="paraformer-zh", model_revision="v2.0.4") res = model.generate(input="audio.wav", batch_size_s=300) print(res[0]["text"]) # 输出带时间戳的识别结果 ``` 2. **网页端可视化** ```bash cd funasr_samples\samples\html\static start index.html # 双击打开网页上传音频测试[^1] ``` ### 四、常见问题解决 | 问题现象 | 解决方案 | |---------|----------| | 缺少libssl.dll | 安装VC++ Redistributable | | 网页无法加载音频 | 使用Chrome浏览器并允许本地文件访问 | | 模型下载失败 | 手动从ModelScope仓库下载模型至./model目录 |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值