开箱即用的whisper-service服务

安装须知

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

相关推荐
Python数据分析与机器学习14 天前
基于fast-whisper模型的语音识别工具的设计与实现
大数据·人工智能·python·搜索引擎·whisper·语音识别·课程设计
不喝可乐_23 天前
在win11 中 whisper-large-v3-turbo 的简单使用
whisper
毛毛的毛毛1 个月前
如何使用OPENAI的Whisper功能进行音频字母提取功能
whisper
Secede.1 个月前
Whisper+T5-translate实现python实时语音翻译
开发语言·python·whisper
烤鸭的世界我们不懂1 个月前
Python + WhisperX:解锁语音识别的高效新姿势
python·whisper·语音识别
落杉丶2 个月前
[ASR]faster-whisper报错Could not locate cudnn_ops64_9.dll
python·whisper
drebander2 个月前
Whisper-Medium 模型:音频转文本的原理、实践与硬件推荐
whisper·音视频
drebander2 个月前
Whisper-Tiny 模型:音频转文本的原理与实践
whisper·音视频
大模型之路2 个月前
OpenAI Whisper:语音识别技术的革新者—深入架构与参数
人工智能·whisper·语音识别