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

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.

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

统信UOS开发环境支持rust

集成了Rust编译器和包管理工具,支持系统级编程、网络应用等多场景,为开发者提供丰富的库支持。 文章目录 一、环境部署1. rust开发环境安装2. rust开发环境配置二、代码示例三、常见问题1. 借用和所有权问题2. 编译器错误和警告一、环境部署 1. rust开发环境安装 rust是一门…

上海沪尚茗居干货分享:码住这4步,投影仪不再吃灰

在追求高品质家庭娱乐的今天,投影仪已成为年轻人打造家庭影院的新宠。然而,面对市场上琳琅满目的投影仪品牌和型号,如何做出明智的选择呢?上海沪尚茗居为您精心整理了一份投影选择4步曲,助您轻松选购心仪的家庭投影仪。…

[NewStarCTF 2023 公开赛道]逃1

代码审计. 这段代码分为三部分:1.war函数,2.GetFlag类,3.GetFlag类对象的定义,waf过滤以及反序列化 . 很经典的的一道题,键值对逃逸,改变cmd的value,去获取flag. 而war就是我们的突破点&#xf…

基于微信小程序的电商平台+LW示例参考

1.项目介绍 系统角色:管理员、普通用户功能模块:管理员(用户管理、商品分类、商品管理、订单管理、系统管理等),普通用户(个人中心、收藏、我的订单、查看商品等)技术选型:SpringBo…

腾讯混元宣布大语言模型和3D模型正式开源

腾讯混元大模型正在加快开源步伐。 11月5日,腾讯混元宣布最新的MoE模型“混元Large“以及混元3D生成大模型“ Hunyuan3D-1.0”正式开源,支持企业及开发者精调、部署等不同场景的使用需求,可在HuggingFace、Github等技术社区直接下载&#xff…

力扣二叉树题解含思路(C++实现)

1.求二叉树的最近公共祖先: 原题链接:. - 力扣(LeetCode) 假设这题的p,q分别为7和8,而它们的最近公共祖先肯定是为3。 这题我们大致的思路为保存p,q的绝对路径,接着通过存储的绝对路…

K8S资源介绍之configmap

1 configmap介绍 是什么:是K8S内置的一种存储卷,数据存储在etcd数据库中 应用场景:主要是存储应用的配置,实现配置与应分离,可以实现类似配置配置中心的功能 由于镜像是只读的特性,如果想要修改需要重新…

数据结构与算法学习——背包问题总结

主要学习01背包和完全背包。 01 背包 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。 装满问题 二维: 一维: 组…

算法分析中的渐进符号

在算法分析中,渐进符号用于描述算法在输入规模趋于无穷大时的运行时间或空间增长速率。主要的渐进符号包括 O O O、 Ω \Omega Ω、 Θ \Theta Θ、 o o o 和 ω \omega ω。这些符号各自描述了不同的增长界限,本文给出详细的定义和区别。 渐进符号 1. 大 O O O 符号(B…

计算机毕业设计Python+大模型农产品价格预测 ARIMA自回归模型 农产品可视化 农产品爬虫 机器学习 深度学习 大数据毕业设计 Django Flask

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

sql专题 之 三大范式

文章目录 背景范式介绍第一范式:属性不可再分第二范式第三范式注意事项 为什么不遵循后续的范式数据库范式在实际应用中会遇到哪些挑战? 背景 数据库的范式(Normal Form)是一组规则,用于设计数据库表结构以 减少数据冗…

Linux下进程链接结构,命令行参数,环境变量

bash 是一种 shell。在 Linux 系统中,当我们在终端输入命令时,通常是在一个 shell 环境下进行的。如果这个 shell 是 bash,那么所有命令行执行的命令都是 bash 的子进程。 1.Linux下进程链接结构 进程链接补充知识: 所有进程都…

FPGA实现串口升级及MultiBoot(八)四样错误实例演示

本文目录索引 一个指令和三种方式二种位流和四样错误Golden位流工程Watchdog的原理1、打开自己使用的Vivado版本的TCL SHELL2、进入multiboot_address_table.tcl 文件所在目录3、运行 multiboot_address_table.tcl 文件4、按照需求输入参数启动地址确定MultiBoot位流工程验证ex…

信息安全工程师(84)UNIX/Linux操作系统安全分析与防护

前言 UNIX/Linux操作系统,尤其是Linux,以其开放性、稳定性和安全性在服务器、桌面、嵌入式设备和超级计算机中占据重要地位。然而,没有任何操作系统可以百分之百地保证安全,UNIX/Linux也不例外。 一、UNIX/Linux操作系统安全分析 …

day08(单片机)时钟系统+定时器+PWM

目录 时钟系统定时器PWM 时钟系统 时钟基本概念 时钟源 晶体振荡器(Crystal Oscillator) RC振荡器(Resistor-Capacitor Oscillator) ​​​​​​​STM32U5时钟源 HSI(High Speed Internal) HSE(High Speed External) LSI(Low Spe…

【JavaEE初阶 — 多线程】内存可见性问题 volatile

1. 内存可见性问题 内存可见性的概念 什么是内存可见性问题呢? 当一个线程对共享变量进行了修改,那么另外的线程都是立即可以看到修改后的最新值。在Java中,可以借助 synchronized、volatile 以及各种Lock 实现可见性。如果我们将变量声…

通用特效Shader

一、通用特效Shader介绍 1.1 什么是通用特效材质 Unity支持SRP Batcher后,使用UberShader的优势非常明显。所谓,UberShader,即一个超级Shader,覆盖一类功能,而不是多个分散的小Shader,比如一个通用特效Sh…

spark-本地模式的配置和简单使用

python环境的安装 在虚拟机中,只能安装一个python的版本,若想要安装别的版本,则需要卸载之前的版本——解决方式,安装Anaconda 通过百度网盘分享的文件:Anaconda3-2021.05-Linux-x86_64.sh 链接:https://…

分享三个python爬虫案例

一、爬取豆瓣电影排行榜Top250存储到Excel文件 近年来,Python在数据爬取和处理方面的应用越来越广泛。本文将介绍一个基于Python的爬虫程序,用于抓取豆瓣电影Top250的相关信息,并将其保存为Excel文件。 获取网页数据的函数,包括以…

PyQt5 详细安装与配置教程及使用

文章目录 Part1:安装 PyQt5Part2:配置 PyQt5 的依赖工具 QtDesigner 和 PyUICPart3:使用QtDesigner设计界面Part4:使用PyUIC将设计好的界面转换为.py文件Part5:通过代码显示ui界面 Part1:安装 PyQt5 需要安…