前文回溯,之前一篇:含辞未吐,声若幽兰,史上最强免费人工智能AI语音合成TTS服务微软Azure(Python3.10接入)[1],利用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最新版:
随后运行安装命令:
安装成功后,在终端里验证PyTorch-MPS的状态:
返回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可以在不改变模型结构的情况下,通过分布式训练来加速模型的训练速度。
现在我们来做一个简单测试:
首先创建一个大小为 50000000 的全为1的张量 x,并将其设置为在cpu上运算。最后使用 timeit.timeit 函数来测量在 CPU 上执行 x 乘以一个随机整数的时间。 number=1表示只运行一次。这段代码的作用是在cpu上测量运算一个张量的时间。
运行结果:
随后换成MPS模式:
程序返回:
也就是说MPS的运行速度比CPU提升了7倍左右。
Whisper语音识别
安装好了PyTorch,我们安装Whisper:
安装好之后进行验证:
随后安装ffmpeg:
然后编写语音识别代码:
这里导入音频后,通过whisper.log_mel_spectrogram方法自动检测语言,然后输出文本:
这里使用的small模型,也可以用更大的模型比如:medium、large。模型越大,效果越好。
如果想使用MPS的方式,需要改写一下Whisper源码,将load_model方法的参数改为mps即可:
代码在第18行。
随后运行脚本也改成mps:
这回切换为medium模型,程序返回:
效率和精准度提升了不少,但medium模型的体积也更大,达到了1.42g。
结语
Whisper作为一个开源的语音识别库,支持多种语言,并且使用双向循环神经网络(bi-directional RNNs)来识别语音并将其转换为文本,支持自定义模型,可以用于实现在线语音识别,并且具有高级的语音识别功能,支持语音识别中的语音活动检测和语音识别中的语音转文本,在PyTorch的MPS加成下,更是猛虎添翼,绝世好库,值得拥有。
引用链接
含辞未吐,声若幽兰,史上最强免费人工智能AI语音合成TTS服务微软Azure(Python3.10接入):https://v3u.cn/a_id_260
领取专属 10元无门槛券
私享最新 技术干货