Audio Course documentation

Автоматическое распознавание речи с помощью конвейера

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Автоматическое распознавание речи с помощью конвейера

Автоматическое распознавание речи (ASR от “Automatic Speech Recognition”) - это задача транскрибации (преобразование аудиозаписи речи в текст). Эта задача имеет множество практических применений - от создания субтитров для видео до обеспечения голосовых команд для таких виртуальных помощников, как Siri и Alexa.

В этом разделе мы используем конвейер automatic-speech-recognition для транскрибации аудиозаписи человека, задающего вопрос об оплате счета, используя тот же набор данных MINDS-14, что и ранее.

Для начала загрузите набор данных и повысьте его частоту до 16 кГц, как описано в Классификация аудио с помощью конвейера, если вы еще не сделали этого.

Для транскрибации аудиозаписи мы можем использовать конвейер automatic-speech-recognition из 🤗 Transformers. Давайте инстанцируем конвейер:

from transformers import pipeline

asr = pipeline("automatic-speech-recognition")

Далее мы возьмем пример из набора данных и передадим его исходные данные в конвейер:

example = minds[0]
asr(example["audio"]["array"])

Output:

{"text": "I WOULD LIKE TO PAY MY ELECTRICITY BILL USING MY COD CAN YOU PLEASE ASSIST"}

Сравним этот вывод с реальной транскрипцией для данного примера:

example["english_transcription"]

Output:

"I would like to pay my electricity bill using my card can you please assist"

Похоже, что модель неплохо справилась с транскрибацией аудиозаписи! По сравнению с оригинальной транскрипцией она ошиблась только в одном слове (“card”), что довольно хорошо, учитывая австралийский акцент диктора, в котором буква “r” часто не произносится. Тем не менее, я бы не рекомендовал пытаться оплатить свой следующий счет за электричество рыбой (cod в переводе с английского - “треска”)!

По умолчанию в этом конвейере используется модель, обученная автоматическому распознаванию речи для английского языка, что вполне подходит для данного примера. Если вы хотите попробовать транскрибировать другие подмножества MINDS-14 на другом языке, вы можете найти предварительно обученную ASR-модель на 🤗 Hugging Face Hub. Список моделей можно отфильтровать сначала по задаче, затем по языку. Найдя нужную модель, передайте ее имя в качестве аргумента 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"]

Output:

"ich möchte gerne Geld auf mein Konto einzahlen"

Найдите на 🤗 Hugging Face Hub предварительно обученную ASR-модель для немецкого языка, инстанцируйте конвейер и транскрибируйте пример:

from transformers import pipeline

asr = pipeline("automatic-speech-recognition", model="maxidl/wav2vec2-large-xlsr-german")
asr(example["audio"]["array"])

Output:

{"text": "ich möchte gerne geld auf mein konto einzallen"}

При работе над решением собственной задачи начать с простого конвейера, подобного тем, что мы показали в этом блоке, это ценный инструмент, дающий ряд преимуществ:

  • может существовать предварительно обученная модель, которая уже очень хорошо решает вашу задачу, экономя ваше время;
  • pipeline() берет на себя всю предварительную и последующую обработку, так что вам не нужно беспокоиться о том, чтобы привести данные в нужный формат для модели;
  • если результат не идеален, это все равно дает возможность быстро получить baseline для последующего дообучения модели;
  • после того как вы дообучите модель на своих пользовательских данных и разместите ее на Hugging Face Hub, все сообщество сможет быстро и легко использовать ее с помощью метода pipeline(), делая ИИ более доступным.