音频课程文档

使用流水线进行自动语音识别

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始入门

使用流水线进行自动语音识别

自动语音识别 (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 更容易访问。
< > 在 GitHub 上更新