开箱即用的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

nvidia-smi

检查显卡驱动是否满足要求
在这里插入图片描述

此处示例显示12.4≥11.6,满足需求

目录文件说明

运行镜像

1.通过网络下载

docker pull onerahmet/openai-whisper-asr-webservice:v1.6.0-gpu

2.离线部署

whisper_v160.tar

模型权重文件

whisper_model 目录下的所有.pt文件为不同size的whisper模型权重

模型性能benchmark

SizeParametersEnglish-only modelMultilingual modelRequired VRAMRelative speed
tiny39 Mtiny.entiny~1 GB~10x
base74 Mbase.enbase~1 GB~7x
small244 Msmall.ensmall~2 GB~4x
medium769 Mmedium.enmedium~5 GB~2x
large1550 MN/Alarge~10 GB1x
turbo809 MN/Aturbo~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

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

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

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

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

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

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 <容器名>

示例:

docker stop whisper_base

在这里插入图片描述

6.服务重新启动

docker start <容器名>

如果服务是通过stop停止的,可以通过 start来快速恢复服务

示例

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
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值