Docker部署whisper转写模型
部署 whisper-asr-webservice 指南
whisper-asr-webservice 是一个将 Whisper 模型封装为 HTTP API 服务的项目,以下是详细的部署方法:
- 准备工作
确保你的系统已安装:
Docker 和 Docker Compose
NVIDIA 驱动和 nvidia-docker(如需 GPU 加速)
2. 快速部署(使用 Docker)
方法一:直接使用预构建镜像
docker run -d --gpus all \-p 9000:9000 \-e ASR_MODEL=medium \-v ~/whisper_models:/root/.cache/whisper \onerahmet/openai-whisper-asr-webservice:latest
方法二:使用 Docker Compose
创建 docker-compose.yml 文件:
version: '3.8'services:whisper-api:image: onerahmet/openai-whisper-asr-webservice:latestdeploy:resources:reservations:devices:- driver: nvidiacount: 1capabilities: [gpu]ports:- "9000:9000"environment:- ASR_MODEL=medium # 可选: tiny, base, small, medium, large- ASR_LANGUAGE=zh # 可选: 指定默认语言volumes:- whisper_cache:/root/.cache/whispervolumes:whisper_cache:
然后运行:
docker-compose up -d
- 从源码构建部署
如果你想自定义构建:
git clone https://github.com/ahmetoner/whisper-asr-webservice.git
cd whisper-asr-webservice
构建镜像
docker build -t whisper-service .
运行
docker run -d --gpus all -p 9000:9000 -e ASR_MODEL=large whisper-servicegit clone https://github.com/ahmetoner/whisper-asr-webservice.git
cd whisper-asr-webservice# 构建镜像
docker build -t whisper-service .# 运行
docker run -d --gpus all -p 9000:9000 -e ASR_MODEL=large whisper-service# 报错则换命令执行(显卡驱动限制导致)docker run -d --runtime=nvidia -p 9000:9000 -e ASR_MODEL=large whisper-service
- 使用 API
服务启动后提供以下端点:
POST /asr - 语音识别
curl -X POST -F "audio_file=@audio.mp3" http://localhost:9000/asr
-
GET /models - 获取可用模型
-
GET /languages - 获取支持语言
示例 Python 调用:
import requestsurl = "http://localhost:9000/asr"
files = {"audio_file": open("audio.mp3", "rb")}
response = requests.post(url, files=files)print(response.json())
- 高级配置
可以通过环境变量配置:
变量名 说明 默认值
ASR_MODEL 模型大小 (tiny,base,small,medium,large) small
ASR_LANGUAGE 默认语言代码 (如 zh, en) auto
ASR_DEVICE 计算设备 (cuda 或 cpu) cuda
ASR_COMPUTE_TYPE 计算类型 (int8, float16 等) 根据设备自动选择
6. 注意事项
首次运行会自动下载模型文件,medium/large 模型较大需要耐心等待
中文识别建议使用 medium 或 large 模型
对于生产环境,建议:
添加认证中间件
使用 Nginx 反向代理
设置资源限制
7. 扩展部署
对于 Kubernetes 部署,可以使用类似的配置,确保正确配置 GPU 资源请求。
如需更复杂的部署方案,可以 fork 项目并根据需要修改代码,特别是 app/main.py 中的 API 逻辑。