当前位置: 首页 > news >正文

开箱即用的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
在这里插入图片描述

相关文章:

  • ccf3501密码
  • 重生之我在学Vue--第15天 Vue 3 动画与过渡实战指南
  • [IP]UART
  • HTML深度解读
  • [特殊字符] 轻松掌握JavaScript DOM:从入门到实战 [特殊字符]
  • Centos内核升级
  • C#的字符串之String类与StringBuilder类区别于适用场景
  • 基于物联网的幼儿看护辅助系统设计方案
  • [leetcode] 面试经典 150 题——篇3:滑动窗口
  • Excel(函数篇):IF函数、FREQUNCY函数、截取函数、文本处理函数、日期函数、常用函数详解
  • C# 异常处理‌的核心概念
  • Ubuntu服务器安装JupyterNotebook,以便通过浏览器访问Jupyter
  • 头歌-软件测试-黑盒测试用例
  • 自然语言处理(NLP)核心技术深度解析
  • 结构型模式之外观模式:让复杂系统变简单的利器
  • Stable Diffusion API /sdapi/v1/txt2img的完整参数列表及其说明
  • uniapp 实现的步进指示器组件
  • 基于阿里云函数计算(FC)x 云原生 API 网关构建生产级别 LLM Chat 应用方案最佳实践
  • 关于修改 Ollama 及其模型默认路径、迁移已安装的 Ollama 程序和模型以及重启 Ollama 的操作指南
  • 深入解析 item_get_video 接口:获取小红书笔记详情的高效工具
  • 兴业证券:下半年A股指数稳、结构牛,中国资产重估刚刚开始
  • 凤阳县鼓楼四周连夜搭起围挡,安徽省文物局已介入调查
  • 述评:赖清德当局上台一年恶行累累
  • 复旦兼职教授高纪凡首秀,勉励学子“看三十年才能看见使命”
  • 2025年上海科技节开幕,人形机器人首次登上科学红毯
  • 体坛联播|热刺追平单赛季输球纪录,世俱杯或创收20亿美元