Действительно хорошая модель с открытым исходным кодом для многоязычного преобразования речи в текст.
OpenAI недавно открыл исходный код Whisper, нейронной сети, которая приближается по надежности и точности к человеческому уровню при распознавании речи на нескольких языках.
Модель была обучена на 680 000 часов многоязычных и многозадачных контролируемых данных, собранных из Интернета. Использование такого большого и разнообразного набора данных приводит к повышению устойчивости к акцентам, фоновому шуму и техническому языку.
Специфика модели описана в статье Надежное распознавание речи с помощью крупномасштабного слабого наблюдения.
Шепот архитектуры
Архитектура Whisper представляет собой простой преобразователь кодер-декодер.
Входной звук разбивается на 30-секундные фрагменты, преобразуется в логарифмическую спектрограмму Мела и передается в кодировщик. Затем декодер обучается предсказывать соответствующий текстовый заголовок.
Обучение шепоту
Модель обучена выполнению различных задач, таких как идентификация языка, временные метки на уровне фраз, транскрипция многоязычной речи и перевод речи на английский язык. Задачу для выполнения можно указать, предоставив декодеру определенные специальные токены.
Другие существующие подходы обычно используют меньшие, более тесно связанные наборы данных для обучения аудио-тексту или широкие, но неконтролируемые аудиоданные.
Однако Whisper обучался на большом и разнообразном наборе данных и не настраивался на какой-то конкретный. Как следствие:
- Whisper не превосходит модели, специализирующиеся на производительности LibriSpeech (т. е. известного конкурентного эталона распознавания речи, коллекции примерно из 1000 часов аудиокниг).
- При измерении производительности нулевого выстрела Whisper по множеству разнообразных наборов данных он гораздо более надежен и допускает на 50 % меньше ошибок, чем другие модели.
Как использовать шепот в Python
OpenAI опубликовал код и веса Whisper на GitHub. Существует пять доступных размеров моделей (более крупные модели имеют лучшую производительность, но требуют больше ресурсов и работают медленнее).
В этой небольшой демонстрации мы загрузим аудио из видео с YouTube и воспользуемся Whisper для их расшифровки.
Во-первых, давайте установим Whisper из его репозитория и pytube
, библиотеку Python для загрузки контента с YouTube.
Давайте импортируем в наш код как whisper
, так и pytube
.
Теперь скачиваем аудио из видео «ИИ учится отслеживать людей в видео» с YouTube-канала Two Minute Papers (отличный канал, на котором обобщаются исследовательские работы о машинном обучении и компьютерной графике). Загруженный звук сохраняется в файле audio_english.mp3
.
Затем мы загружаем модель Whisper. В этом примере мы загружаем лучшую (и самую большую) доступную модель, то есть модель large
.
Наконец, мы вызываем метод transcribe
для расшифровки звука из сохраненного файла audio_english.mp3
. Как видите, результаты очень хорошие!
Давайте попробуем Whisper также на аудио на других языках, например на итальянском. Скачиваем аудио из видео «Nuovi Ministri, Crosetto e Santanché hanno un conflitto d'interestesse?» с YouTube-канала Breaking Italy (отличный итальянский канал, который обобщает новости дня из Италии и мир). Загруженный звук сохраняется в файле audio_italian.mp3
.
Опять же, мы вызываем метод transcribe
для расшифровки звука из сохраненного файла audio_italian.mp3
. Результаты очень хорошие и по итальянскому языку.
Вот WER (т.е. частота ошибок в словах) модели large
в наборе данных FLEURS.
В итальянском действительно очень низкий процент ошибок в словах, даже ниже, чем в английском.
Спасибо за чтение! Если вы хотите узнать больше о НЛП, не забудьте подписаться на NLPlanet — вы можете найти нас на Medium, LinkedIn, Twitter и на нашем новом Discord server!