音频课程文档

使用管道进行自动语音识别

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"}

stimmt’s!

在解决您自己的任务时,从像我们本单元中展示的简单管道开始是一个宝贵的工具,它提供了几个好处

  • 可能存在一个预训练模型,它可以很好地解决您的任务,从而为您节省大量时间
  • pipeline() 会为您处理所有预处理/后处理,因此您无需担心将数据转换为适合模型的格式
  • 如果结果不理想,这仍然为您提供了未来微调的快速基准
  • 在您使用自定义数据微调模型并在 Hub 上共享它后,整个社区将能够通过 pipeline() 方法快速轻松地使用它,从而使 AI 更易于访问。