Speech-to-Text on an AMD GPU with Whisper — ROCm Blogs
2024年4月16日,作者:Clint Greene.
介绍
Whisper是由 OpenAI 开发的高级自动语音识别(ASR)系统。它采用了一个简单的编码器-解码器 Transformer 架构,其中输入的音频被分割成 30 秒的段落,然后被输入到编码器中。解码器可以通过特殊的标记进行提示,以指导模型执行诸如语言识别、转录和翻译等任务。
在这篇博客中,我们将向您展示如何在 AMD GPU 上使用 Hugging Face 和 OpenAI 的官方 Whisper 版本将语音转换为文本。
测试的 GPU 硬件: MI210 / MI250
前提条件: 确保已安装 ROCm 5.7+ 和 PyTorch 2.2.1+。
我们建议用户安装最新版本的 PyTorch 和 TorchAudio,因为我们不断发布优化解决方案和新功能。
入门指南
首先,让我们安装必要的库.
pip install datasets ipywidgets transformers numba openai-whisper -q
sudo apt update && sudo apt install ffmpeg
安装完必要的库之后,让我们下载一段美国宪法序言的示例音频文件,之后将用于转录。
wget https://www2.cs.uic.edu/~i101/SoundFiles/preamble.wav
现在,我们已经准备好使用Hugging Face Transformers和OpenAI的Whisper代码库将语音转换为文本。
Hugging Face Transformers
让我们导入必要的库.
import torch from transformers import pipeline
然后,我们设置用于转录的设备和管道。在这里,我们将下载并使用OpenAI发布的Whisper medium模型的权重来进行英语转录。
device = "cuda:0" if torch.cuda.is_available() else "cpu" pipe = pipeline( "automatic-speech-recognition", model="openai/whisper-medium.en", chunk_length_s=30, device=device, )
为了将语音转换为文本,我们将音频文件的路径传递给管道:
transcription = pipe("preamble.wav")['text'] print(transcription)
输出:
We, the people of the United States, in order to form a more perfect union, establish justice, ensure domestic tranquility, provide for the common defense, promote the general welfare, and secure the blessings of liberty to ourselves and our posterity, to ordain and establish this Constitution for the United States of America.
这是美国宪法序言的正确转录。
OpenAI’s Whisper
同样地,我们也可以使用OpenAI的官方Whisper发布版来进行转录。首先,我们下载中等英文模型权重。然后,为了进行转录,我们再次将音频文件的路径传递给模型。
import whisper model = whisper.load_model("medium.en") transcription = model.transcribe("preamble.wav")['text'] print(transcription)
输出:
We, the people of the United States, in order to form a more perfect union, establish justice, ensure domestic tranquility, provide for the common defense, promote the general welfare, and secure the blessings of liberty to ourselves and our posterity, to ordain and establish this Constitution for the United States of America.
结论
我们已经演示了如何使用Hugging Face Transformers库中的Whisper模型以及OpenAI的官方代码发布来转录单个音频文件。如果你计划批量转录文件,我们推荐使用Hugging Face的实现,因为它支持批量解码。关于如何转录批量文件或如何使用Hugging Face数据集的更多示例,请参见官方教程:pipeline tutorial.