1. Введение
Pipeline (конвейер) — это минималистичный способ использования абстракции рассуждений больших моделей в библиотеке преобразователей Huggingface. Все большие модели делятся на аудио (Audio), компьютерное зрение (Computer Vision), обработку естественного языка (NLP), мультимодальные (Multimodal). ) и другие 4 основные категории, а также 28 малых категорий задач (задач), охватывающие в общей сложности 320 000 моделей.
Сегодня я представляю вторую статью «Аудио-аудио», автоматическое распознавание речи (автоматическое распознавание речи). Всего в библиотеке HuggingFace насчитывается 18 000 моделей классификации аудио.
Автоматическое распознавание речи (ASR), также известный как преобразование речи в текст (STT),должен быть предоставлен Аудиотранскрибируется кактекстиз Задача。Основные сценарии применения:Диалог человека и компьютера、Преобразование речи в текст, распознавание текстов, создание субтитровждать。
Автоматическое распознавание Основной принцип речи заключается в том, что после разрезания аудио на звуковой спектр длительностью 25–60 мс сеть прокатной машины используется для извлечения функций аудио, а затем преобразователь и другие сетевые структуры используются для согласования обучения с текстом. Более известен из Автоматическое распознавание речь определенно openaiizwhisper и метаизWav2vec 2.0。
Голосовая часть: Обучение на основе 680 000 часов аудиоданных, включая английский, другие языки, конвертированные в английский, неанглийские и другие языки. Аудиоданные преобразуются в мел-спектрограмму, а затем передаются в модель Transformer после двух сверточных слоев.
Текстовая часть: Текстовые токены включают 3 категории: специальные токены (токены меток), текстовые токены (текстовые токены) и токены временных меток (метки времени). На основе токенов отметок осуществляется управление началом и окончанием текста. время голоса соответствует тексту.
Количество параметров модели, многоязычная поддержка, требуемый существующий размер и скорость вывода разных размеров следующие:
Wav2vec 2.0 — это модель предварительной тренировки речи без учителя, опубликованная Meta в 2020 году. Его основная идея состоит в том, чтобы создать самостоятельно созданную контролируемую обучающую цель с помощью векторного квантования (VQ), замаскировать входные данные в больших количествах, а затем использовать функцию контрастных потерь обучения для обучения. Структура модели показана на рисунке. Экстрактор признаков на основе сверточной нейронной сети (CNN) кодирует исходный звук в последовательность признаков кадра и преобразует каждый признак кадра в дискретный признак Q через используемый модуль VQ. как самоконтролируемая цель. В то же время последовательность признаков кадра подвергается операции маскировки и затем попадает в модель Трансформатора [5] для получения контекстного представления C. Наконец, расстояние между контекстным представлением положения маски и соответствующим дискретным признаком q сокращается за счет сравнения функции потерь обучения, то есть пары положительных образцов.
pyctcdecode.BeamSearchDecoderCTC
,Необязательный)— BeamSearchDecoderCTC PyCTCDecode Может передаваться для расширенного декодирования языка Модель. Для получения дополнительной информации,ВидетьWav2Vec2ProcessorWithLM 。float
,Необязательный,По умолчанию 0) — за блокизвходитьдлина。еслиchunk_length_s = 0
Отключить фрагментирование(по умолчанию)。float
,Необязательный,По умолчаниюchunk_length_s / 6
) — Каждый блок слева и справа зависит от длины шага. Только с используются вместеchunk_length_s > 0
。Это делает МодельможетВидетьБольше контекста и выводить буквы лучше, чем без этого контекста,Но конвейер отбрасывает биты шага в конце.,Чтобы окончательная реконструкция была максимально идеальной.str
,Необязательный)— Использовать израмку,"pt"
Применимо к PyTorch или"tf"
TensorFlow。Должен быть установлен, чтобы указатьизрамка。еслине указанрамка,По умолчанию используется текущая установка. Если рамка не указана и установлены обе рамки,но По умолчанию израмкаmodel
,Если Модель не указана,По умолчанию используется изображение PyTorch.int
, torch.device
],Необязательный)— CPU/GPU поддерживатьизоборудованиесерийный номер。установлен наNone
будет использовать ЦП, для которого установлено положительное число, будет ассоциироваться с CUDA оборудование ID Запустите модель.int
, torch.dtype
],Необязательный) — Расчет по типу данных (dtype)。поставь этоустановлен наNone
буду использовать float32 Точность. установлен на torch.float16
илиtorch.bfloat16
будет в соответствующемиз dtype Используйте половинную точность.np.ndarray
илиbytes
илиstr
илиdict
) — входитьможет быть: str
то есть местный Аудиодокументиздокументимя,илискачать Аудиодокументизобщественный URL адрес. Файл будет читаться с правильной частотой дискретизации. ffmpegПолучить сигнал。Для этого требуется установка в системуffmpeg 。bytes
это должно быть Аудиодокументизсодержание,и с тем жеизмимоffmpeg объясняет.np.ndarray
Форма(n,)Типnp.float32
илиnp.float64
)Правильная частота дискретизацииизоригинальный Аудио(никаких дополнительных проверок)dict
Форму можно использовать для передачи произвольных образцовизоригинальный Аудиоsampling_rate
,и пусть этот конвейер выполнит повторную выборку。Словарь должен использовать{"sampling_rate": int, "raw": np.array}
Необязательный Формат"stride": (left: int, right: int)
,Вы можете попросить конвейер игнорировать первый при декодировании.left
образец и последнийright
образец(но используется при рассуждении,для Модель Предоставьте больше контекста)。только дляstride
CTC Модель。str
илиbool
)— Доступно только для чистого CTC Модель(Wav2Vec2、HuBERT и т. д.) и Whisper Модель. Не работает с другими последовательностями из последовательности Модель.
для CTC Модель, временная метка может быть в одном из двух форматов:
"char"
:Труба вернетсятексткаждый персонаж виз Временная метка。Например,еслиты получишь[{"text": "h", "timestamp": (0.5, 0.6)}, {"text": "i", "timestamp": (0.7, 0.9)}]
,то означает, что Модель предсказывает, что буква «h» находится в секунды спустя0.5
и 0.6
Сказал несколько секунд назадиз。"word"
:Труба вернетсятексткаждое слово виз Временная метка。Например,еслиты получишь[{"text": "hi ", "timestamp": (0.5, 0.9)}, {"text": "there", "timestamp": (1.0, 1.5)}]
,означает Модельпредсказывать слова“hi”находится в секунды спустя0.5
и0.9
Сказал несколько секунд назадиз。Для моделей Whisper временные метки могут быть в одном из двух форматов:
"word"
:То же, что и выше,Применяется к уровню шрифта CTC Временная метка。уровень шрифта Временная меткапроходитьДинамическое искажение времени (DTW)Алгоритмы делают прогнозы,Этот алгоритм аппроксимирует временные метки на уровне слов, исследуя веса перекрестного внимания.True
:Труба вернетсятекст Китайские словафрагментиз Временная метка。Например,еслиты получишь[{"text": " Hi there!", "timestamp": (0.5, 1.5)}]
,означает Модельпредсказывать“Hi there!” Фрагмент находится в секунды спустя0.5
и1.5
Сказал несколько секунд назадиз。пожалуйста, обрати внимание,фрагмент текста означает из представляет собой последовательность одного или нескольких слов из,Вместо одного слова, такого как временная метка на уровне слова.dict
,Необязательныйgenerate_config
)—используется для генерации звонковиз Временный параметризованный словарь。связанный generate извесь Обзор,пожалуйста, проверьтеСледующее руководство。int
,Необязательный)— Чтобы сгенерировать максимальное количество токенов, игнорируйте количество токенов в подсказке.str
):идентифицироватьизтекст。List[Dict]
)при использованииreturn_timestamps
,chunks
станетдлясписок,Содержит все различные текстовые блоки для идентификации модели.,Например* [{"text": "hi ", "timestamp": (0.5, 0.9)}, {"text": "there", "timestamp": (1.0, 1.5)}]
。проходить执行可以粗略地恢复оригинальныйполный текст "".join(chunk["text"] for chunk in output["chunks"])
。Модель конвейера по умолчанию для автоматического распознавания речи — facebook/wav2vec2-base-960h. Если при использовании конвейера вы зададите только параметр Task=automatic-Speech-recognition и не зададите модель, будет загружена и использована модель по умолчанию. .
import os
os.environ["HF_ENDPOINT"] = "https://hf-mirror.com"
os.environ["CUDA_VISIBLE_DEVICES"] = "2"
from transformers import pipeline
speech_file = "./output_video_enhanced.mp3"
pipe = pipeline(task="automatic-speech-recognition")
result = pipe(speech_file)
print(result)
Вы можете конвертировать аудио в формате .mp3 в текст:
{'text': "WELL TO DAY'S STORY MEETING IS OFFICIALLY STARTED SOMEONE SAID THAT YOU HAVE BEEN TELLING STORIES FOR TWO OR THREE YEARS FOR SUCH A LONG TIME AND YOU STILL HAVE A STORY MEETING TO TELL"}
Указываем модель openai/whisper-medium, конкретный код:
import os
os.environ["HF_ENDPOINT"] = "https://hf-mirror.com"
os.environ["CUDA_VISIBLE_DEVICES"] = "2"
from transformers import pipeline
speech_file = "./output_video_enhanced.mp3"
pipe = pipeline(task="automatic-speech-recognition", model="openai/whisper-medium")
result = pipe(speech_file)
print(result)
На входе — фрагмент речи в формате mp3, на выходе —
{'text': " Well, today's story meeting is officially started. Someone said that you have been telling stories for two or three years for such a long time, and you still have a story meeting to tell."}
По Huggingface фильтруем Автоматическое распознавание речи Модель,И отсортировано по объему загрузки от большего к меньшему:
В данной статье рассматривается конвейер трансформаторов. распознавание речи(automatic-speech-recognition)от Обзор、Технические принципы、параметры трубопровода、настоящий бой на трубопроводе, ранжирование модели и другие аспекты. Читатели могут использовать минималистичный код в статье для проведения Автоматического на основе конвейера. распознавание речьрассуждение, применяемое для распознавания речь, извлечение субтитров и другие бизнес-сценарии.