基于PyTorch(mps)的人工智能本地语音识别库Whisper(Python3.10)
off999 2024-12-10 19:12 13 浏览 0 评论
前文回溯,之前一篇:含辞未吐,声若幽兰,史上最强免费人工智能AI语音合成TTS服务微软Azure(Python3.10接入),利用AI技术将文本合成语音,现在反过来,利用开源库Whisper再将语音转回文字,所谓闻其声而知雅意。
Whisper 是一个开源的语音识别库,它是由Facebook AI Research (FAIR)开发的,支持多种语言的语音识别。它使用了双向循环神经网络(bi-directional RNNs)来识别语音并将其转换为文本。 Whisper支持自定义模型,可以用于实现在线语音识别,并且具有高级的语音识别功能,支持语音识别中的语音活动检测和语音识别中的语音转文本。它是使用PyTorch进行开发,可以使用Python API来调用语音识别,并且提供了一系列的预训练模型和数据集来帮助用户开始使用。
PyTorch基于MPS的安装
我们知道PyTorch一直以来在M芯片的MacOs系统中都不支持cuda模式,而现在,新的MPS后端扩展了PyTorch生态系统并提供了现有的脚本功能来在 GPU上设置和运行操作。
截止本文发布,PyTorch与Python 3.11不兼容,所以我们将使用最新的 3.10.x 版本。
确保安装Python3.10最新版:
? transformers git:(stable) python3
Python 3.10.9 (main, Dec 15 2022, 17:11:09) [Clang 14.0.0 (clang-1400.0.29.202)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>随后运行安装命令:
pip3 install --pre torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/nightly/cpu安装成功后,在终端里验证PyTorch-MPS的状态:
? transformers git:(stable) python3
Python 3.10.9 (main, Dec 15 2022, 17:11:09) [Clang 14.0.0 (clang-1400.0.29.202)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> torch.backends.mps.is_available()
True
>>>返回True即可。
PyTorch MPS (Multi-Process Service)性能测试
PyTorch MPS (Multi-Process Service)是 PyTorch 中的一种分布式训练方式。它是基于Apple的MPS(Metal Performance Shaders) 框架开发的。MPS可以在多核的苹果设备上加速tensor的运算。MPS使用了多个设备上的多个核心来加速模型的训练。它可以将模型的计算过程分配到多个核心上,并且可以在多个设备上进行训练,从而提高训练速度。
PyTorch MPS 可以在 Apple 的设备(如 iPhone 和 iPad)上加速模型训练,也可以在 Mac 上使用。可以使用MPS来加速卷积神经网络(CNNs)、循环神经网络(RNNs)和其他类型的神经网络。使用MPS可以在不改变模型结构的情况下,通过分布式训练来加速模型的训练速度。
现在我们来做一个简单测试:
import torch
import timeit
import random
x = torch.ones(50000000,device='cpu')
print(timeit.timeit(lambda:x*random.randint(0,100),number=1))首先创建一个大小为 50000000 的全为1的张量 x,并将其设置为在cpu上运算。最后使用 timeit.timeit 函数来测量在 CPU 上执行 x 乘以一个随机整数的时间。 number=1表示只运行一次。这段代码的作用是在cpu上测量运算一个张量的时间。
运行结果:
? nlp_chinese /opt/homebrew/bin/python3.10 "/Users/liuyue/wodfan/work/nlp_chinese/mps_test.py"
0.020812375005334616在10核M1pro的cpu芯片加持下,运行时间为:0.020812375005334616
随后换成MPS模式:
import torch
import timeit
import random
x = torch.ones(50000000,device='mps')
print(timeit.timeit(lambda:x*random.randint(0,100),number=1))程序返回:
? nlp_chinese /opt/homebrew/bin/python3.10 "/Users/liuyue/wodfan/work/nlp_chinese/mps_test.py"
0.00305804191157221816核的GPU仅用时:0.003058041911572218
也就是说MPS的运行速度比CPU提升了7倍左右。
Whisper语音识别
安装好了PyTorch,我们安装Whisper:
pip install --upgrade --no-deps --force-reinstall git+https://github.com/openai/whisper.git安装好之后进行验证:
? transformers git:(stable) whisper
usage: whisper [-h] [--model {tiny.en,tiny,base.en,base,small.en,small,medium.en,medium,large}] [--model_dir MODEL_DIR]
[--device DEVICE] [--output_dir OUTPUT_DIR] [--verbose VERBOSE] [--task {transcribe,translate}]
[--language {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,hi,hr,ht,hu,hy,id,is,it,iw,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,zh,Afrikaans,Albanian,Amharic,Arabic,Armenian,Assamese,Azerbaijani,Bashkir,Basque,Belarusian,Bengali,Bosnian,Breton,Bulgarian,Burmese,Castilian,Catalan,Chinese,Croatian,Czech,Danish,Dutch,English,Estonian,Faroese,Finnish,Flemish,French,Galician,Georgian,German,Greek,Gujarati,Haitian,Haitian Creole,Hausa,Hawaiian,Hebrew,Hindi,Hungarian,Icelandic,Indonesian,Italian,Japanese,Javanese,Kannada,Kazakh,Khmer,Korean,Lao,Latin,Latvian,Letzeburgesch,Lingala,Lithuanian,Luxembourgish,Macedonian,Malagasy,Malay,Malayalam,Maltese,Maori,Marathi,Moldavian,Moldovan,Mongolian,Myanmar,Nepali,Norwegian,Nynorsk,Occitan,Panjabi,Pashto,Persian,Polish,Portuguese,Punjabi,Pushto,Romanian,Russian,Sanskrit,Serbian,Shona,Sindhi,Sinhala,Sinhalese,Slovak,Slovenian,Somali,Spanish,Sundanese,Swahili,Swedish,Tagalog,Tajik,Tamil,Tatar,Telugu,Thai,Tibetan,Turkish,Turkmen,Ukrainian,Urdu,Uzbek,Valencian,Vietnamese,Welsh,Yiddish,Yoruba}]随后安装ffmpeg:
brew install ffmpeg然后编写语音识别代码:
import whisper
model = whisper.load_model("small")
# load audio and pad/trim it to fit 30 seconds
audio = whisper.load_audio("/Users/liuyue/wodfan/work/mydemo/b1.wav")
audio = whisper.pad_or_trim(audio)
# make log-Mel spectrogram and move to the same device as the model
mel = whisper.log_mel_spectrogram(audio).to("cpu")
# detect the spoken language
_, probs = model.detect_language(mel)
print(f"Detected language: {max(probs, key=probs.get)}")
# decode the audio
options = whisper.DecodingOptions(fp16 = False)
result = whisper.decode(model, mel, options)
# print the recognized text
print(result.text)这里导入音频后,通过whisper.log_mel_spectrogram方法自动检测语言,然后输出文本:
? minGPT git:(master) ? /opt/homebrew/bin/python3.10 "/Users/liuyue/wodfan/work/minGPT/wisper_test.py"
Detected language: zh
Hello大家好,这里是刘悦的技术博客,众神殿内,高朋满座,圣有如云,VMware,Virtual Box,UPM等虚拟机大神群英汇翠,指见位于C位王座上的Parallels唱网抬头,缓缓群寻,屁腻群小,目光到处,无人敢抬头对视。是的,如果说虚拟机领域有一位王者,非Parallels不能领袖群伦,毕竟大厂背书,功能满格,美中不足之处就是价格略高,这里使用的small模型,也可以用更大的模型比如:medium、large。模型越大,效果越好。
如果想使用MPS的方式,需要改写一下Whisper源码,将load_model方法的参数改为mps即可:
def load_model(name: str, device: Optional[Union[str, torch.device]] = None, download_root: str = None, in_memory: bool = False) -> Whisper:
"""
Load a Whisper ASR model
Parameters
----------
name : str
one of the official model names listed by `whisper.available_models()`, or
path to a model checkpoint containing the model dimensions and the model state_dict.
device : Union[str, torch.device]
the PyTorch device to put the model into
download_root: str
path to download the model files; by default, it uses "~/.cache/whisper"
in_memory: bool
whether to preload the model weights into host memory
Returns
-------
model : Whisper
The Whisper ASR model instance
"""
if device is None:
device = "cuda" if torch.cuda.is_available() else "mps"代码在第18行。
随后运行脚本也改成mps:
import whisper
model = whisper.load_model("medium")
# load audio and pad/trim it to fit 30 seconds
audio = whisper.load_audio("/Users/liuyue/wodfan/work/mydemo/b1.wav")
audio = whisper.pad_or_trim(audio)
# make log-Mel spectrogram and move to the same device as the model
mel = whisper.log_mel_spectrogram(audio).to("mps")
# detect the spoken language
_, probs = model.detect_language(mel)
print(f"Detected language: {max(probs, key=probs.get)}")
# decode the audio
options = whisper.DecodingOptions(fp16 = False)
result = whisper.decode(model, mel, options)
# print the recognized text
print(result.text)这回切换为medium模型,程序返回:
? minGPT git:(master) ? /opt/homebrew/bin/python3.10 "/Users/liuyue/wodfan/work/minGPT/wisper_test.py"
100%|█████████████████████████████████████| 1.42G/1.42G [02:34<00:00, 9.90MiB/s]
Detected language: zh
Hello 大家好,这里是刘悦的技术博客,众神殿内,高朋满座,圣有如云,VMware,Virtualbox,UTM等虚拟机大神群音惠翠,只见位于C位王座上的Parallels唱往抬头,缓缓轻寻,屁逆群小,目光到处,无人敢抬头对视。效率和精准度提升了不少,但medium模型的体积也更大,达到了1.42g。
结语
Whisper作为一个开源的语音识别库,支持多种语言,并且使用双向循环神经网络(bi-directional RNNs)来识别语音并将其转换为文本,支持自定义模型,可以用于实现在线语音识别,并且具有高级的语音识别功能,支持语音识别中的语音活动检测和语音识别中的语音转文本,在PyTorch的MPS加成下,更是猛虎添翼,绝世好库,值得拥有。
相关推荐
- windows7家庭版官网下载(原版win7家庭版)
-
家用电脑提供的下载是微软发布的正式版本的原版ISOnbsp;镜像,可以保障是没有病毒和任何修改的原版系统。至于你所说的是不是正版,正版并不是指一张光盘,而是指安装的系统是否有微软的正版授权,简单说也就...
-
- 电脑怎么下载word官方免费版
-
可以从官网或者360软件管家下载,还有激活使用。MicrosoftWord是微软公司的一个文字处理器应用程序。它最初是由RichardBrodie为了运行DOS的IBM计算机而在1983年编写的。随后的版本可运行于AppleMacin...
-
2025-11-07 21:51 off999
- 电脑网络已连接但无法访问互联网
-
因为网络配置有问题造成的,解决的方法也很简单,可以直接进入win7系统的“控制面板”—“网络”中,然后将除开拨号适配器以外的全部选项全部删除掉,然后重新启动计算机后再添加microsoft的“TCP/...
- win7隐藏文件怎么显示(win7中显示隐藏文件)
-
要在Win7中显示隐藏文件,需依次打开“我的电脑”或“计算机”→点击“工具”→选择“文件夹选项”→在弹出的“文件夹选项”窗口中点击“查看”标签→在“隐藏文件和文件夹”选项中选择“显示隐藏的文件、文件夹...
-
- 邮箱163注册怎么注册(邮箱163如何注册)
-
1.打开浏览器,搜索163邮箱,进入登录页面,点击去注册2.进入163邮箱注册页面后,输入想要的邮箱地址,输入密码,手机号,点击立即注册选项,就可以申请注册163邮箱了。操作方法01登陆163邮箱的官方网站,点击“注册”02可通过手机...
-
2025-11-07 20:03 off999
- 音频设备有哪些(音频设备有哪些类型)
-
用录音机,MP3,手机之类的,通常需采用话筒,麦克风等设备,现在自然声音的收集方式主要是用麦克风等声音采集设备捕捉声波,将声波的振动转化为模拟信号,然后用磁带将模拟信号记录下来,或者用电脑将模拟信号记...
- 华硕笔记本电脑不显示wifi列表
-
您好!可以在启动项处,右键,属性,选择自定义通知图标,查看声音和电池图标,选择显示或总是显示。确定。然后重启机器尝试。如果还是没有反应,则可能是相关的文件出现错误。比如使用了驱动软件更新系统的补丁或驱...
- 电脑自动关机怎么解除(电脑自动关机解除方法)
-
要取消电脑关机后的还原,首先尝试迅速按下键盘上的Ctrl+Alt+Delete组合键,然后选择任务管理器以打开它。在任务管理器中,点击"文件"菜单,选择"新任务"选项。...
- 苹果笔记本电脑重装系统教程
-
苹果笔记本电脑系统可以通过以下步骤进行重装:1.备份数据:在开始重装前,需要备份你的重要数据。你可以将数据存储到外部硬盘、云存储或其他可靠的设备中。2.下载安装器:从AppStore中下载macOS...
- win7和win8系统哪个好用些(win7和win8.1哪个好用)
-
iqoo7用的是OriginOS系统。OriginOS系统给人的感觉还是相当耳目一新的。除了基本的设置、应用商店、i主题、闹钟、天气这些外,还多出了控制台、交互池、变形器、镜头包等。一加八出厂预装的...
- 电脑摄像头万能驱动(电脑摄像头驱动程序)
-
清理一下垃圾,点一下设置设置一下就可以了
- qq下载官方下载(qq下载官网2020安卓版)
-
建议关闭杀毒软件,但是也不要轻易下载QQ群文件、陌生QQ邮件的附件以及陌生人发送的文件,很可能是病毒,如果提示有病毒,千万不要下载,避免电脑中毒。如果真的需要下载就暂时关闭杀毒软件。最终还是希望通过正...
-
- 台式电脑主机开不了机是什么原因
-
重新接下VGA线,电源线,重新接插下,打开显示器开关。不行的话拨下显卡,清灰并检查显卡元件外观,电容鼓起的话,则显卡烧坏,换同型号电容即可。同样的内存也插拔下,擦拭下触点的位置换件检查,把主机输出接在电视上,检查,内存调换,显卡临时替换...
-
2025-11-07 15:51 off999
- tp路由器无线桥接怎么设置(tp路由器如何桥接设置)
-
1、路由器接通电源,打开路由器并链接。2、弹出的界面中,设置管理员密码后跳过引导。3、在应用管理”中找到无线桥接”选项。4、点击开始设置”,找到要连接的无线网络,输入密码后点击下一步”。5、输入无线密...
- 笔记本电脑处理器怎么选(笔记本电脑处理器怎么选2020)
-
从科普与测试中可以看出笔记本CPU的各方面性能差异还是比较大的,可以总结为,在购买笔记本电脑时应优先选择最新一代中的更高端型号CPU,需求性能较高的用户可以选够标压且核心更多的CPU,需求高续航和低功...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
python入门到脱坑 输入与输出—str()函数
-
宝塔面板如何添加免费waf防火墙?(宝塔面板开启https)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
慕ke 前端工程师2024「完整」
-
失业程序员复习python笔记——条件与循环
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
