安装须知
Whisper官方网址
https://github.com/openai/whisper
Whisper 镜像站
https://docker.aityp.com/r/docker.io/onerahmet
本次提供的环境镜像为:docker.io/onerahmet/openai-whisper-asr-webservice:v1.6.0-gpu
运行环境要求
服务器架构
服务器架构要求x86_64,或x64,或amd64。

CUDA版本
使用nvidia-smi指令检查CUDA version是不是≥11.6
bash
nvidia-smi
检查显卡驱动是否满足要求
此处示例显示12.4≥11.6,满足需求
目录文件说明
运行镜像
1.通过网络下载
bash
docker pull onerahmet/openai-whisper-asr-webservice:v1.6.0-gpu
2.离线部署
whisper_v160.tar
模型权重文件
whisper_model 目录下的所有.pt文件为不同size的whisper模型权重
模型性能benchmark
Size | Parameters | English-only model | Multilingual model | Required VRAM | Relative speed |
---|---|---|---|---|---|
tiny | 39 M | tiny.en | tiny | ~1 GB | ~10x |
base | 74 M | base.en | base | ~1 GB | ~7x |
small | 244 M | small.en | small | ~2 GB | ~4x |
medium | 769 M | medium.en | medium | ~5 GB | ~2x |
large | 1550 M | N/A | large | ~10 GB | 1x |
turbo | 809 M | N/A | turbo | ~6 GB | ~8x |
服务安装
1. 导入基础镜像
通过docker pull的不需要这一步
docker load -i whisper_v160.tar

2. 拷贝模型权重
使用任意指令拷贝到你管理下的目录
下述启动指令的/home/baijs/myway/whisper_model
路径需要替换为你的服务器路径
3. Whisper 容器启动命令集
参考启动指令
启动 large 模型服务
映射宿主机9004端口到容器内部9000端口,使用数据卷映射服务器/home/baijs/myway/whisper_model的路径到内部:/root/.cache/whisper,
模型使用large,容器名为whisper_l
bash
docker run -d -p 9004:9000 -v /home/baijs/myway/whisper_model:/root/.cache/whisper -e ASR_MODEL=large --name=whisper_l onerahmet/openai-whisper-asr-webservice:v1.6.0-gpu
启动 turbo 模型服务
映射宿主机9001端口到容器内部9000端口,使用相同的数据卷映射,模型使用turbo,容器名为whisper_turbo
bash
docker run -d -p 9001:9000 -v /home/baijs/myway/whisper_model:/root/.cache/whisper -e ASR_MODEL=turbo --name=whisper_turbo onerahmet/openai-whisper-asr-webservice:v1.6.0-gpu
启动 medium 模型服务
映射宿主机9000端口到容器内部9000端口,使用相同的数据卷映射,模型使用medium,容器名为whisper_m
bash
docker run -d -p 9000:9000 -v /home/baijs/myway/whisper_model:/root/.cache/whisper -e ASR_MODEL=medium --name=whisper_m onerahmet/openai-whisper-asr-webservice:v1.6.0-gpu
启动 small 模型服务
映射宿主机8999端口到容器内部9000端口,使用相同的数据卷映射,模型使用small,容器名为whisper_s
bash
docker run -d -p 8999:9000 -v /home/baijs/myway/whisper_model:/root/.cache/whisper -e ASR_MODEL=small --name=whisper_s onerahmet/openai-whisper-asr-webservice:v1.6.0-gpu
启动 base 模型服务
映射宿主机8998端口到容器内部9000端口,使用相同的数据卷映射,模型使用base,容器名为whisper_base
bash
docker run -d -p 8998:9000 -v /home/baijs/myway/whisper_model:/root/.cache/whisper -e ASR_MODEL=base --name=whisper_base onerahmet/openai-whisper-asr-webservice:v1.6.0-gpu
启动 tiny 模型服务
映射宿主机8997端口到容器内部9000端口,使用相同的数据卷映射,模型使用tiny,容器名为whisper_tiny
bash
docker run -d -p 8997:9000 -v /home/baijs/myway/whisper_model:/root/.cache/whisper -e ASR_MODEL=tiny --name=whisper_tiny onerahmet/openai-whisper-asr-webservice:v1.6.0-gpu
4.跟踪容器日志
使用docker logs -f <容器名>或<容器ID>跟踪服务状态
例如此处我启动large模型,名称为whipser,容器id为688*,我跟踪容器日志:

可以看到日志显示超出显存,可以通过该方法排查问题
5.停止服务
docker stop <容器名>
示例:
bash
docker stop whisper_base

6.服务重新启动
docker start <容器名>
如果服务是通过stop停止的,可以通过 start来快速恢复服务
示例
bash
docker start whisper_tiny

可以看到服务快速就恢复了
服务使用
以medium模型为例,服务成功启动在宿主机9000端口后,访问<宿主机IP>:9000
示例地址:
http://192.168.10.60:9000/docs
示例效果:

这个服务提供了 2 个接口:
- /asr ,自动语音识别,上传语音或视频文件,输出文本。
- /detect-language ,检测语言,通过检测上传文件中前30s的音频,判断使用的语言。
1.自动语音识别

上传的test.mp3是一首名为《清空》的中文歌曲,可以看到正确识别了结果。

为什么李宗盛乱入了 = =
2.语言检测
使用方法同上

服务参数说明
1.自动语音识别服务 /asr
encode
- 类型: 布尔值 (查询参数)
- 默认值: true
- 说明: 决定是否在处理前通过ffmpeg对音频进行编码处理。设置为true时,服务会先用ffmpeg处理上传的音频文件,使其符合Whisper模型的输入要求。若您的音频已经是正确格式,可设为false跳过此步骤。
task
-
类型: 字符串 (查询参数)
-
默认值: transcribe
-
可选值
transcribe
: 将音频转录为原始语言的文本translate
: 将音频转录并翻译为英语
-
说明: 指定处理任务的类型,保持原语言或翻译为英语
language
- 类型: 字符串 (查询参数)
- 可选值: 多种语言代码 (af, am, ar, 等...)
language
: 主动声明音频是什么语言,默认不指定,模型可以自动识别。以下是Whisper ASR支持的语言代码及其对应的语言名称:
代码 | 语言名称 | 代码 | 语言名称 | 代码 | 语言名称 |
---|---|---|---|---|---|
af | 南非荷兰语 | am | 阿姆哈拉语 | ar | 阿拉伯语 |
as | 阿萨姆语 | az | 阿塞拜疆语 | ba | 巴什基尔语 |
be | 白俄罗斯语 | bg | 保加利亚语 | bn | 孟加拉语 |
bo | 藏语 | br | 布列塔尼语 | bs | 波斯尼亚语 |
ca | 加泰罗尼亚语 | cs | 捷克语 | cy | 威尔士语 |
da | 丹麦语 | de | 德语 | el | 希腊语 |
en | 英语 | es | 西班牙语 | et | 爱沙尼亚语 |
eu | 巴斯克语 | fa | 波斯语 | fi | 芬兰语 |
fo | 法罗语 | fr | 法语 | gl | 加利西亚语 |
gu | 古吉拉特语 | ha | 豪萨语 | haw | 夏威夷语 |
he | 希伯来语 | hi | 印地语 | hr | 克罗地亚语 |
ht | 海地克里奥尔语 | hu | 匈牙利语 | hy | 亚美尼亚语 |
id | 印度尼西亚语 | is | 冰岛语 | it | 意大利语 |
ja | 日语 | jw | 爪哇语 | ka | 格鲁吉亚语 |
kk | 哈萨克语 | km | 高棉语 | kn | 卡纳达语 |
ko | 韩语 | la | 拉丁语 | lb | 卢森堡语 |
ln | 林加拉语 | lo | 老挝语 | lt | 立陶宛语 |
lv | 拉脱维亚语 | mg | 马达加斯加语 | mi | 毛利语 |
mk | 马其顿语 | ml | 马拉雅拉姆语 | mn | 蒙古语 |
mr | 马拉地语 | ms | 马来语 | mt | 马耳他语 |
my | 缅甸语 | ne | 尼泊尔语 | nl | 荷兰语 |
nn | 新挪威语 | no | 挪威语 | oc | 奥克语 |
pa | 旁遮普语 | pl | 波兰语 | ps | 普什图语 |
pt | 葡萄牙语 | ro | 罗马尼亚语 | ru | 俄语 |
sa | 梵语 | sd | 信德语 | si | 僧伽罗语 |
sk | 斯洛伐克语 | sl | 斯洛文尼亚语 | sn | 绍纳语 |
so | 索马里语 | sq | 阿尔巴尼亚语 | sr | 塞尔维亚语 |
su | 巽他语 | sv | 瑞典语 | sw | 斯瓦希里语 |
ta | 泰米尔语 | te | 泰卢固语 | tg | 塔吉克语 |
th | 泰语 | tk | 土库曼语 | tl | 塔加洛语 |
tr | 土耳其语 | tt | 鞑靼语 | uk | 乌克兰语 |
ur | 乌尔都语 | uz | 乌兹别克语 | vi | 越南语 |
yi | 意第绪语 | yo | 约鲁巴语 | yue | 粤语 |
zh | 中文 |
- 说明: 指定音频中使用的语言,有助于提高转录准确性。若不提供,系统会自动检测语言。
initial_prompt
- 类型: 字符串 (查询参数)
- 说明: 为转录提供上下文提示。这可以帮助模型更好地理解特定领域术语或预期的转录内容,特别是对于包含专业术语的音频很有帮助。
word_timestamps
- 类型: 布尔值 (查询参数)
- 默认值: false
- 说明: 启用后将生成单词级别的时间戳,标记每个单词在音频中的开始和结束时间。这对于创建精确的字幕或音频索引非常有用,但可能会增加处理时间。
output
-
类型: 字符串 (查询参数)
-
默认值: txt
-
可选值
txt
: 纯文本格式vtt
: Web Video Text Tracks格式 (用于HTML5视频字幕)srt
: SubRip字幕格式 (常用字幕格式)tsv
: 制表符分隔值 (包含时间戳和段落的表格格式)json
: JSON格式 (包含完整的元数据,如置信度分数、时间戳等)
-
说明: 指定转录结果的输出格式。不同格式适用于不同用途,如简单文本、视频字幕或需要详细元数据的应用。
这些参数可以根据您的具体需求组合使用,以获得最佳的转录结果和格式。
2.语言检测/detect-language
- encode (布尔值, 默认: true): 是否在处理前通过ffmpeg对音频进行编码
- audio_file (必需): 要检测语言的音频文件
百度云链接
我把离线的运行环境.tar和模型都下载下来了

通过网盘分享的文件:whisper
链接: https://pan.baidu.com/s/1D0MRGUsIjaQy0baVO7EzkA?pwd=1117
提取码: 1117