音频课程文档

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

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

所以,没错!

当您尝试解决自己的任务时,从本单元中展示的简单流水线开始是一个有价值的工具,它具有以下几个优点:

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