使用管道进行自动语音识别
自动语音识别 (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 更易于访问。