音频课程文档
使用流水线进行自动语音识别
并获得增强的文档体验
开始入门
使用流水线进行自动语音识别
自动语音识别 (ASR) 是一项将语音音频记录转录为文本的任务。此任务有许多实际应用,从为视频创建隐藏式字幕到为 Siri 和 Alexa 等虚拟助手启用语音命令。
在本节中,我们将使用 automatic-speech-recognition
流水线来转录音频记录,该记录是一个人使用与之前相同的 MINDS-14 数据集询问有关支付账单的问题。
首先,加载数据集并将其上采样到 16kHz,如 使用流水线进行音频分类 中所述,如果您尚未执行此操作。
为了转录音频记录,我们可以使用 🤗 Transformers 的 automatic-speech-recognition
流水线。让我们实例化该流水线
from transformers import pipeline
asr = pipeline("automatic-speech-recognition")
接下来,我们将从数据集中取一个示例,并将其原始数据传递给流水线
example = minds[0]
asr(example["audio"]["array"])
输出
{"text": "I WOULD LIKE TO PAY MY ELECTRICITY BILL USING MY COD CAN YOU PLEASE ASSIST"}
让我们将此输出与此示例的实际转录进行比较
example["english_transcription"]
输出
"I would like to pay my electricity bill using my card can you please assist"
该模型在转录音频方面似乎做得相当不错!与原始转录相比,它只错了一个词(“card”),考虑到说话者带有澳大利亚口音,其中字母“r”通常是沉默的,这已经相当不错了。话虽如此,我不建议尝试用鱼来支付你的下一次电费账单!
默认情况下,此流水线使用为英语自动语音识别训练的模型,在本示例中这很好。如果您想尝试转录不同语言的 MINDS-14 的其他子集,您可以在 🤗 Hub 上找到预训练的 ASR 模型 。您可以先按任务,然后按语言过滤模型列表。找到您喜欢的模型后,将其名称作为 model
参数传递给流水线。
让我们在 MINDS-14 的德语拆分上尝试一下。加载 “de-DE” 子集
from datasets import load_dataset
from datasets import Audio
minds = load_dataset("PolyAI/minds14", name="de-DE", split="train")
minds = minds.cast_column("audio", Audio(sampling_rate=16_000))
获取一个示例,看看应该是什么转录
example = minds[0]
example["transcription"]
输出
"ich möchte gerne Geld auf mein Konto einzahlen"
在 🤗 Hub 上找到德语的预训练 ASR 模型,实例化一个流水线,并转录该示例
from transformers import pipeline
asr = pipeline("automatic-speech-recognition", model="maxidl/wav2vec2-large-xlsr-german")
asr(example["audio"]["array"])
输出
{"text": "ich möchte gerne geld auf mein konto einzallen"}
Also, stimmt’s!
当您致力于解决自己的任务时,从像我们在本单元中展示的简单流水线开始是一个有价值的工具,它提供了以下几个好处
- 可能存在一个预训练模型,它已经很好地解决了您的任务,从而为您节省大量时间
pipeline()
为您处理所有预处理/后处理,因此您不必担心将数据转换为适合模型的正确格式- 如果结果不理想,这仍然为您未来的微调提供了一个快速基线
- 一旦您在自定义数据上微调模型并在 Hub 上共享它,整个社区将能够通过
pipeline()
方法快速轻松地使用它,从而使 AI 更容易访问。