Действительно хорошая модель с открытым исходным кодом для многоязычного преобразования речи в текст.

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!