详细介绍:whisper-large-v3部署详细步骤,包括cpu和gpu方式,跟着做一次成功

news/2025/9/28 22:45:38/文章来源:https://www.cnblogs.com/tlnshuju/p/19117773

详细介绍:whisper-large-v3部署详细步骤,包括cpu和gpu方式,跟着做一次成功

2025-09-28 22:42  tlnshuju  阅读(0)  评论(0)    收藏  举报

部署背景

whisper就是一个语音识别的项目,具体细节自行百度了解即可。我这次部署的主要目的是简单测试粤语歌曲的歌词识别效果,之后再抽空做二次开发。讲实话,这些ai模型项目的部署文档大部分就是一坨屎,依赖模块只给出几个,其他模块要在运行代码时出错再一个个修复安装。更痛苦的是,有些是依赖于特定版本模块的,安装错了版本直接各种神奇报错,要一个个版本去试,或者到相应的github issues上面看看。

这里我直接把自己跑通代码时用到的具体依赖模块和对应版本贴出来,避免大家继续做填坑这种无意义的体力劳动。

Demo代码

测试代码如下(主要改篇自这里给出的demo:whisper-large-v3 · 模型库),将该代码保存为test.py

import torch
from modelscope import AutoModelForSpeechSeq2Seq, AutoProcessor, pipeline
from datasets import load_dataset
from datetime import datetime
start_time = datetime.now()
device = "cuda:0" if torch.cuda.is_available() else "cpu"
torch_dtype = torch.float16 if torch.cuda.is_available() else torch.float32
# device = 'cpu'
# torch_dtype = torch.float32
model_id = "AI-ModelScope/whisper-large-v3"
model = AutoModelForSpeechSeq2Seq.from_pretrained(model_id, dtype=torch_dtype, low_cpu_mem_usage=True, use_safetensors=True
)
model.to(device)
processor = AutoProcessor.from_pretrained(model_id)
pipe = pipeline("automatic-speech-recognition",model=model,tokenizer=processor.tokenizer,feature_extractor=processor.feature_extractor,dtype=torch_dtype,device=device,
)
result = pipe("test_3.mp3", generate_kwargs={"language": "cantonese"})
# dataset = load_dataset("distil-whisper/librispeech_long", "clean", split="validation")
# sample = dataset[0]["audio"]
# result = pipe(sample)
print(result["text"])
end_time = datetime.now()
print(f'start time: {start_time}, end time: {end_time}, elapsed time: {end_time - start_time}')

上述代码中的test_3.mp3是一首粤语歌曲中片段(叶倩文的祝福),generate_kwargs中的cantonese指定为粤语识别。

系统环境说明

由于我windows系统没有显卡,只有一张显卡在ubuntu系统上。所以我将在windows系统上部署cpu版本的whisper, ubuntu系统上部署cuda版本的whisper。

系统具体信息如下:

windows:以hyper-v虚拟机方式安装 windows 11 24h2工作站专业版,分配16G内存,16核(cpu为xeon d1581)

ubuntu:以hyper-v虚拟方式安装ubuntu server 22.04,分配了24G内存,20核(pu为xeon d1581),以dda方式直通了p104-100显卡(8G显存)

具体步骤(windows篇)

安装miniconda

(直接参考官方文档即可:Installing Miniconda - Anaconda)

备注:这里我推荐使用conda环境,如果直接使用python自带的虚拟环境,大可能会因为的ffmpeg依赖问题无法正常运行

创建虚拟环境

打开Anaconda PowerShell Prompt,输入以下代码

conda create -n whisper_demo python=3.11

激活虚拟环境

conda activate whisper_demo

安装pytorch相关模块

以cpu方式运行,所以安装这个

pip install torch==2.8.0 torchvision torchaudio==2.8.0 --index-url https://download.pytorch.org/whl/cpu

安装其他依赖模块

pip install modelscope datasets==3.6.0 transformers accelerate addict simplejson sortedcontainers

安装ffmpeg

conda install ffmpeg

注:ffmpeg安装这一步我试了很多其他的方法,包括手动下载相应版本ffmpeg.exe,并设置系统环境变量,都出错了。只有通过conda来安装ffmpeg才成功。

运行代码

先进入到test.py所在目录,请自行修改为正确的目录

cd C:\Users\ken\Desktop\backup_data\code\whisper_demo

然后执行以下代码

python test.py

第一次运行时,会从modelscope下载非常多的模型文件,慢慢等吧

运行结果 

上面也运行出结果,但由于第一次运行,把下载时间也统计进去了,所以这里再重新执行python test.py运行一遍

如下图所示

全部依赖模块版本

(whisper_demo) PS C:\Users\ken\Desktop\backup_data\code\whisper_demo> pip list
Package            Version
------------------ -----------
accelerate         1.10.1
addict             2.4.0
aiohappyeyeballs   2.6.1
aiohttp            3.12.15
aiosignal          1.4.0
attrs              25.3.0
certifi            2025.8.3
charset-normalizer 3.4.3
colorama           0.4.6
datasets           3.6.0
dill               0.3.8
filelock           3.13.1
frozenlist         1.7.0
fsspec             2024.6.1
huggingface-hub    0.35.1
idna               3.10
Jinja2             3.1.4
MarkupSafe         2.1.5
modelscope         1.30.0
mpmath             1.3.0
multidict          6.6.4
multiprocess       0.70.16
networkx           3.3
numpy              2.1.2
packaging          25.0
pandas             2.3.2
pillow             11.0.0
pip                25.2
propcache          0.3.2
psutil             7.1.0
pyarrow            21.0.0
python-dateutil    2.9.0.post0
pytz               2025.2
PyYAML             6.0.3
regex              2025.9.18
requests           2.32.5
safetensors        0.6.2
setuptools         78.1.1
simplejson         3.20.2
six                1.17.0
sortedcontainers   2.4.0
sympy              1.13.3
tokenizers         0.22.1
torch              2.8.0+cpu
torchaudio         2.8.0+cpu
torchvision        0.23.0+cpu
tqdm               4.67.1
transformers       4.56.2
typing_extensions  4.12.2
tzdata             2025.2
urllib3            2.5.0
wheel              0.45.1
xxhash             3.5.0
yarl               1.20.1

 具体步骤(ubuntu篇)

安装miniconda

(直接参考官方文档即可:Installing Miniconda - Anaconda)

创建虚拟环境

conda create -n whisper_demo python=3.11

激活虚拟环境

conda activate whisper_demo

安装pytorch相关模块

以cuda方式运行,所以安装这个

pip install torch==2.6.0 torchvision==0.21.0 torchaudio==2.6.0 --index-url https://download.pytorch.org/whl/cu124

注:因为我的显卡比较老,所以最高支持到cuda12.4,如果你的显卡支持该cuda版本,这些torch相关的模块版本可能都要做相应的修改了。

安装其他依赖模块

pip install modelscope datasets==3.6.0 transformers accelerate addict simplejson sortedcontainers

安装ffmpeg

conda install ffmpeg

运行代码

先进入到test.py所在目录,请自行修改为正确的目录

cd ~/whisper_demo

然后执行以下代码

python test.py

与前面的windows部署一样,第一次运行时,会从modelscope下载非常多的模型文件,所以也得慢慢等。

运行结果 

执行python test.py运行一遍

如下图所示

全部依赖模块版本

(whisper_demo) ken@ubuntugpu:~/whisper_demo$ pip list
Package                  Version
------------------------ ------------
accelerate               1.10.1
addict                   2.4.0
aiohappyeyeballs         2.6.1
aiohttp                  3.12.15
aiosignal                1.4.0
attrs                    25.3.0
certifi                  2025.8.3
charset-normalizer       3.4.3
datasets                 3.6.0
dill                     0.3.8
filelock                 3.13.1
frozenlist               1.7.0
fsspec                   2024.6.1
hf-xet                   1.1.10
huggingface-hub          0.35.1
idna                     3.10
Jinja2                   3.1.4
MarkupSafe               2.1.5
modelscope               1.30.0
mpmath                   1.3.0
multidict                6.6.4
multiprocess             0.70.16
networkx                 3.3
numpy                    2.1.2
nvidia-cublas-cu12       12.4.5.8
nvidia-cuda-cupti-cu12   12.4.127
nvidia-cuda-nvrtc-cu12   12.4.127
nvidia-cuda-runtime-cu12 12.4.127
nvidia-cudnn-cu12        9.1.0.70
nvidia-cufft-cu12        11.2.1.3
nvidia-curand-cu12       10.3.5.147
nvidia-cusolver-cu12     11.6.1.9
nvidia-cusparse-cu12     12.3.1.170
nvidia-cusparselt-cu12   0.6.2
nvidia-nccl-cu12         2.21.5
nvidia-nvjitlink-cu12    12.4.127
nvidia-nvtx-cu12         12.4.127
packaging                25.0
pandas                   2.3.2
pillow                   11.0.0
pip                      25.2
propcache                0.3.2
psutil                   7.1.0
pyarrow                  21.0.0
python-dateutil          2.9.0.post0
pytz                     2025.2
PyYAML                   6.0.3
regex                    2025.9.18
requests                 2.32.5
safetensors              0.6.2
setuptools               78.1.1
simplejson               3.20.2
six                      1.17.0
sortedcontainers         2.4.0
sympy                    1.13.1
tokenizers               0.22.1
torch                    2.6.0+cu124
torchaudio               2.6.0+cu124
torchvision              0.21.0+cu124
tqdm                     4.67.1
transformers             4.56.2
triton                   3.2.0
typing_extensions        4.12.2
tzdata                   2025.2
urllib3                  2.5.0
wheel                    0.45.1
xxhash                   3.5.0
yarl                     1.20.1

一些有用的ffmpeg命令

剪切最后20秒的音频

.\ffmpeg -sseof -20 -i test.mp3 -c copy test_2.mp3

剪切第40秒到65秒之间的音频

.\ffmpeg -i "test.mp3" -ss 00:00:40 -to 00:01:05 -c copy test_3.mp3

一些坑备注

(1) 使用python自带虚拟环境时,运行出错torchcodec(ffmpeg)的错误:

RuntimeError: Could not load libtorchcodec. Likely causes: 1. FFmpeg is not properly installed in your environment

如下图所示:

解决办法:改用conda来创建虚拟环境,并使用conda来安装ffmpeg, 前面已提到过。

(2) 如果使用链接中的样例代码,即可能遇到datasets下载不了数据的问题,这是版本原因造成的,可根据我前面pip指令中指定的版本来安装即可。

参考:modelscope下载数据集datasets版本问题_importerror: cannot import name 'largelist' from '-CSDN博客

一些待解决的问题

(1) 上述的test_3.mp3有28秒的长度,但只输出了最后几秒的歌曲,留待之后再解决,目前关注点在于跑通代码

(2) 换用其他的粤语音频时(例如2岁小孩唱的儿歌,客观上咬字没那么清晰,但人耳能分辨出来),识别效果完全不行,这个也留待之后分析

一些可能有用的链接

Whisper语音识别-多语言-large-v3 · 模型库

whisper-large-v3 · 模型库

ChenChenyu/whisper-large-v3-turbo-finetuned · Hugging Face

whisper-large-v2-cantonese开源粤语语音识别模型 - 精准识别,低字错率!

使用Whisper本地部署实现香港版粤语+英语混合语音转文字方案 - 技术栈

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/921229.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle_19c_ru_ojvm_upgrade.sh一键升级脚本分享

oracle_19c_ru_ojvm_upgrade.sh一键升级脚本分享2025-09-28 22:43 潇湘隐者 阅读(0) 评论(0) 收藏 举报oracle_19c_ru_ojvm_upgrade.sh脚本的初始版本来源于IT邦德的分享,使用原脚本时发现有一些bug,在我的环境中…

域名不变 网站改版如何知道网站开发语言

2019独角兽企业重金招聘Python工程师标准>>> 前景 Python在编程领域的占有率一直处于稳步上升之中,根据最新的数据,Python排名第六。前五名分别是 Java、C、PHP、C 和 VB. 作为一个很年轻的语言,Python的位置已经相当令人振奋了。…

数据类型-列表

列表 (可变类型):info= ["guohan",1,"222","xxx"] 公共功能:1.索引:  info[0]>>>"guohan"2.切片:  info[1;3]>>>[1,"222"]3步长:  …

2025/9/28

2025/9/28今日:1.学习离散数学 2.继续学习算法

网站内容页怎么设计网络优化行业怎么样

一、查看开机自启项1.Centos7自启项查看方式从Centos6的chkconfig改为:systemctl list-unit-files2.用grep过滤查看,比如:查看启动项:systemctl list-unit-files | grep enable查看sshd服务自启动情况:systemctl list-…

智表 ZCELL:纯前端 Excel 导入导出的高效解决方案,让数据处理更轻松

在当今数字化时代,数据处理已成为各行各业日常工作的重要组成部分,而 Excel 作为常用的数据处理工具,其导入导出功能的高效性和便捷性直接影响着工作效率。传统的 Excel 导入导出往往需要依赖后端服务,不仅流程繁琐…

采用IOT-Tree消息流MQTT模块节点实现监测数据推送功能

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

【MySQL 高阶】MySQL 架构与存储引擎全面详解 - 实践

【MySQL 高阶】MySQL 架构与存储引擎全面详解 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&quo…

两学一做网站进不去织梦物流公司网站模板简洁大气

图文:udb311主题:MSSQL内网渗透案例分析发表:黑白前线描述:对于内网渗透技术一直感觉很神秘,手中正巧有一个webshell是内网服务器。借此机会练习下内网入侵渗透技术!本文敏感信息以屏蔽!密码都以…

ISO 雨晨 26200.6588 Windows 11 企业版 LTSC 25H2 自用 edge 140.0.3485.81 - 教程

ISO 雨晨 26200.6588 Windows 11 企业版 LTSC 25H2 自用 edge 140.0.3485.81 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; fo…

做淘宝美工图片网站常用的行业管理系统

一、概念: ①类似于仓库,空间内存储代码,需要用到时调用②也为防止名字冲突提供了更加可控的机制二、命名空间的定义 定义的基本格式如下:namespace 命名空间名 { //一系列声明与定义 };三、命名空间的注意事项 命名空间定义时最后的分号可有可无只要出现在全局作用域中的…

网站推广营销效果网站制作协议

建议对ionic和AnjularJs有一定了解的人可以用到,很多时候我们要用到选择省份、城市、区县的功能,现在就跟着我来实现这个功能吧,用很少的代码(我这里是根据客户的要求,只显示想要显示的部分省份和其相对应的城市、区县…

企业网站设计文档菏泽做网站优化的

近日,江苏省数字经济学会公布了2023年度江苏省数字经济学会科学技术奖获奖名单。本次在全省范围内共评选出科学技术进步奖、科学技术创新奖、优秀成果奖获奖项目共计19项。“聚合数据资产服务API平台”凭借其前沿的创新性和优秀的应用前景成功获得科学技术创新奖二等…

lc1039-多边形三角剖分的最低得分

难度:中等(温天仁是吧,压境界了)题目描述有一个凸的 n 边形,其每个顶点都有一个整数值 将其剖分为 n-2 个三角形 每个三角形的值都是其三个顶点值的乘积 返回剖分后可以得到的最低分示例输入:values = [3,7,4,5]…

Powershell 进阶语(三)

本篇介绍pwsh的管道用法,补充剩下的进阶语法。目录PowerShell 管道管道输出控制管道输出的格式设置Format-ListFormat-TableFormat-Wide管道选择、排序和度量对象排序和分组Sort-ObjectFormat 的 GroupBy分组度量管道…

随机函数

mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());

集合进阶-collection集合

细节: collection遍历方式1:迭代器 遍历时不可以删除或者添加元素 增强for遍历(用来简化迭代器书写): 直接数组名.for快速生成 lambda表达式遍历:

工装设计方案网站做网站什么都不懂 怎么做

此博客用于记录2020年9月25日每日分享, 大概讲讲团队里的分工合作那些事儿。 关于带宽啊,网速啊之类的一些事儿 日期:2020年9月25日 主题: 团队合作怎么合作?有什么人?一般用什么工具?诸如此类…

完整教程:前端学习-HTML

完整教程:前端学习-HTML2025-09-28 22:13 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; fo…

素数定理的初等证明

可能有错误,欢迎指出x零、基本介绍 此文中 \(\log\) 指代自然对数,记 \(p, q, r\) 为素数,分解 \(n = p_1^{\alpha_1}p_2^{\alpha_2} \cdots p_m^{\alpha_m}\)。 令 \(\displaystyle \pi(x) = \sum [0 \le p \le x]…