从零开始:Docker部署Qwen3-ASR-0.6B语音识别,支持中英文多方言
从零开始:Docker部署Qwen3-ASR-0.6B语音识别,支持中英文多方言
1. 项目介绍与准备工作
1.1 Qwen3-ASR-0.6B简介
Qwen3-ASR-0.6B是一款强大的语音识别模型,支持52种语言和方言的识别能力。这个0.6B版本在精度与效率之间取得了良好平衡,特别适合需要实时响应的应用场景。
主要特点包括:
- 支持30种语言和22种中文方言
- 能够处理多种英语口音
- 提供流式/离线推理能力
- 支持长音频转录
- 在128并发时吞吐量可达2000倍
1.2 为什么选择Docker部署
使用Docker部署语音识别模型有几个明显优势:
- 环境隔离:不会影响宿主机环境
- 一致性:在任何机器上运行效果相同
- 便捷性:一键部署,无需复杂配置
- 可扩展性:轻松实现多实例负载均衡
1.3 系统要求检查
在开始前,请确保你的系统满足以下要求:
# 查看CPU和内存信息 lscpu | grep -E "Model name|CPU\(s\)" free -h # 查看磁盘空间 df -h建议配置:
- CPU:4核以上
- 内存:至少8GB
- 存储:20GB以上可用空间
- 系统:Linux/macOS/Windows(WSL2)
2. 环境准备与Docker安装
2.1 Docker环境准备
如果你的系统尚未安装Docker,可以按以下步骤安装:
# Ubuntu/Debian系统 sudo apt update sudo apt install docker.io docker-compose -y # CentOS/RHEL系统 sudo yum install docker docker-compose -y # 启动Docker服务 sudo systemctl start docker sudo systemctl enable docker # 验证安装 docker --version docker-compose --version2.2 配置用户权限
为避免每次使用docker命令都需要sudo,可以将当前用户加入docker组:
sudo usermod -aG docker $USER newgrp docker3. 构建Qwen3-ASR-0.6B镜像
3.1 创建项目目录结构
首先建立项目文件夹并创建必要的文件:
mkdir qwen3-asr-docker cd qwen3-asr-docker mkdir -p app models data目录结构如下:
qwen3-asr-docker/ ├── Dockerfile ├── docker-compose.yml ├── requirements.txt ├── app/ │ ├── main.py │ ├── config.py │ └── utils.py ├── models/ └── data/3.2 编写Dockerfile
创建Dockerfile文件,内容如下:
FROM python:3.10-slim WORKDIR /app RUN apt-get update && apt-get install -y \ git wget curl ffmpeg libsndfile1 \ && rm -rf /var/lib/apt/lists/* COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt \ && pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu COPY app/ ./app/ RUN mkdir -p /app/models /app/data ENV PYTHONPATH=/app ENV MODEL_PATH=/app/models ENV DATA_PATH=/app/data ENV PORT=8000 EXPOSE 8000 HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \ CMD curl -f http://localhost:8000/health || exit 1 CMD ["python", "app/main.py"]3.3 准备Python依赖
创建requirements.txt文件:
fastapi==0.104.1 uvicorn[standard]==0.24.0 pydantic==2.5.0 loguru==0.7.2 librosa==0.10.1 soundfile==0.12.1 pydub==0.25.1 transformers==4.36.0 accelerate==0.25.0 sentencepiece==0.1.993.4 编写核心应用代码
创建app/main.py文件:
from fastapi import FastAPI, UploadFile, File, HTTPException from fastapi.responses import JSONResponse import uvicorn import os from .utils import load_model, transcribe_audio app = FastAPI(title="Qwen3-ASR-0.6B API") model = None processor = None @app.on_event("startup") async def startup_event(): global model, processor model, processor = load_model() @app.get("/health") async def health_check(): if model is None: raise HTTPException(status_code=503, detail="Model not loaded") return {"status": "healthy"} @app.post("/transcribe") async def transcribe(audio: UploadFile = File(...), language: str = None): if model is None: raise HTTPException(status_code=503, detail="Model not ready") with tempfile.NamedTemporaryFile(delete=False, suffix=".wav") as tmp_file: content = await audio.read() tmp_file.write(content) tmp_path = tmp_file.name try: result = transcribe_audio(model, processor, tmp_path, language) return JSONResponse(content={ "text": result["text"], "language": result.get("language", "auto") }) finally: if os.path.exists(tmp_path): os.unlink(tmp_path)4. 构建与运行容器
4.1 构建Docker镜像
在项目根目录执行:
docker build -t qwen3-asr:0.6b .4.2 运行容器
使用以下命令启动容器:
docker run -d \ --name qwen3-asr \ -p 8000:8000 \ -v $(pwd)/models:/app/models \ -v $(pwd)/data:/app/data \ qwen3-asr:0.6b4.3 测试服务
检查服务是否正常运行:
curl http://localhost:8000/health上传音频文件进行测试:
curl -X POST -F "audio=@test.wav" http://localhost:8000/transcribe5. 使用Docker Compose编排
5.1 创建docker-compose.yml
version: '3.8' services: qwen3-asr: image: qwen3-asr:0.6b build: . ports: - "8000:8000" volumes: - ./models:/app/models - ./data:/app/data environment: - MODEL_PATH=/app/models - DATA_PATH=/app/data healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8000/health"] interval: 30s timeout: 10s retries: 35.2 启动服务
docker-compose up -d6. 高级配置与优化
6.1 GPU加速支持
如需使用GPU加速,修改Dockerfile:
FROM nvidia/cuda:12.1.0-runtime-ubuntu22.04 RUN apt-get update && apt-get install -y \ python3.10 python3-pip \ && ln -s /usr/bin/python3.10 /usr/bin/python运行容器时添加--gpus参数:
docker run --gpus all -p 8000:8000 qwen3-asr:0.6b-gpu6.2 负载均衡配置
扩展多个实例并配置Nginx负载均衡:
# docker-compose.yml services: qwen3-asr: image: qwen3-asr:0.6b deploy: replicas: 37. 实际应用建议
- 对于生产环境,建议配置日志轮转和监控
- 长音频处理时注意内存使用情况
- 中文方言识别需要明确指定语言参数
- 定期更新基础镜像以获得安全补丁
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
