使用 AMD GPU 上的 Whisper 进行语音转文字

news/2024/11/15 12:56:40/

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 whispermodel = 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.


http://www.ppmy.cn/news/1547205.html

相关文章

windows C#-LINQ查询

查询是一种从数据源检索数据的表达式。 不同的数据源具有不同的原生查询语言,例如,用于关系数据库的 SQL 和用于 XML 的 XQuery。 开发人员对于他们必须支持的每种数据源或数据格式,都必须学习一种新的查询语言。 LINQ 通过为各种数据源和数据…

Linux的进程,线程;FreeRTOS的任务

Linux 进程与线程 进程 (Process) 定义:进程是操作系统进行资源分配和调度的基本单位。每个进程都有独立的地址空间,包括代码段、数据段、堆栈等。资源:每个进程拥有独立的内存空间、文件描述符、环境变量等。创建:通常通过 fork 系统调用创建新进程,子进程继承父进程的大…

Word VBA如何间隔选中多个(非连续)段落

实例需求:Word文档中的有多个段落,段落总数量不确定,现在需要先选中所有基数段落,即:段落1,段落3 … ,然后一次性设置粗体格式。 也许有的读者会认为这个无厘头的需求,循环遍历遍历文…

linux startup.sh shutdown.sh (kkFileView)

linux启动脚本和关闭脚本startup.sh shutdown.sh (kkFileView) startup.sh DIR_HOME("/opt/openoffice.org3" "/opt/libreoffice" "/opt/libreoffice6.1" "/opt/libreoffice7.0" "/opt/libreoffice7.1&q…

Zabbix使用

1.Zabbix术语 术语名称术语解释主机(Host)一台你想监控的网络设备,用 IP 或域名表示监控项(Item)接收的主机的特定数据,一个度量数据触发器(Trigger)一个被用于定义问题阈值和“评估”监控项接收到的数据的…

HBase理论_HBase架构组件介绍

近来有些空闲时间,正好最近也在开发HBase相关内容,借此整理一下学习和对HBase组件的架构的记录和个人感受,付出了老夫不少心血啊,主要介绍的就是HBase的架构设计以及我的拓展内容。内容如有不当或有其他理解 matirx70163.com HB…

计算机网络学习

1.2 因特网概述_哔哩哔哩_bilibili 在以上视频进行学习 1. 网络、互联网和因特网 网络是由若干节点和连接这些节点的链路组成 多个网络可以通过路由器互联起来,构成一个覆盖范围更大的网络,即互联网。因此互联网是“网络中的网络” 因特网是世界上最…

CSS样式实现3D效果

CSS 3D效果是通过CSS3中的transform和perspective等属性来实现的。这些属性允许你创建具有深度感和三维外观的网页元素。以下是一些常见的CSS 3D效果及其实现方法: 1. 3D旋转(Rotate) 使用transform: rotateX(), rotateY(), rotateZ()来分别…