Изучите передовые многоязычные функции последней модели автоматического распознавания речи (ASR) Meta.

Введение

Massively Multilingual Speech (MMS)¹ — это последний выпуск Meta AI (всего несколько дней назад). Он раздвигает границы речевых технологий, расширяя охват с примерно 100 языков до более чем 1000. Это было достигнуто за счет построения единой многоязычной модели распознавания речи. Модель также может идентифицировать более 4000 языков, что в 40 раз превышает возможности предыдущих версий.

Проект MMS направлен на то, чтобы облегчить людям доступ к информации и использование устройств на предпочитаемом ими языке. Он распространяет технологии преобразования текста в речь и речи в текст на малообслуживаемые языки, продолжая снижать языковые барьеры в нашем глобальном мире. Существующие приложения теперь могут включать более широкий спектр языков, например, виртуальные помощники или устройства с голосовым управлением. В то же время появляются новые варианты использования в межкультурной коммуникации, например, в мессенджерах или виртуальной и дополненной реальности.

В этой статье мы рассмотрим использование MMS для ASR на английском и португальском языках и предоставим пошаговое руководство по настройке среды для запуска модели.

Эта статья относится к новой еженедельной серии статей «Хроники больших языковых моделей: Навигация по границам НЛП», в которых рассказывается, как использовать возможности больших моделей для различных задач НЛП. Погружаясь в эти передовые технологии, мы стремимся дать разработчикам, исследователям и энтузиастам возможность использовать потенциал НЛП и открывать новые возможности.

Статьи, опубликованные на данный момент:

  1. Подведение итогов последних выпусков Spotify с ChatGPT
  2. Мастер семантического поиска в масштабе: индексируйте миллионы документов с молниеносным временем вывода с использованием FAISS и преобразователей предложений
  3. Раскройте потенциал аудиоданных: расширенная транскрипция и диаризация с помощью Whisper, WhisperX и PyAnnotate
  4. Whisper JAX против PyTorch: раскрытие правды о производительности ASR на графических процессорах
  5. Vosk для эффективного распознавания речи корпоративного уровня: руководство по оценке и внедрению

Как всегда, код доступен на моем Github.

Подход к построению модели массовой многоязычной речи

Мета использовал религиозные тексты, такие как Библия, чтобы построить модель, охватывающую этот широкий спектр языков. Эти тексты имеют несколько интересных составляющих: во-первых, они переведены на многие языки, а во-вторых, в открытом доступе есть аудиозаписи людей, читающих эти тексты на разных языках. Таким образом, основным набором данных, в котором обучалась эта модель, был Новый Завет, который исследовательская группа смогла собрать для более чем 1100 языков и предоставила более 32 часов данных для каждого языка. Они пошли еще дальше, чтобы заставить его распознавать 4000 языков. Это было сделано с использованием немаркированных записей различных других христианских религиозных чтений. Судя по результатам экспериментов, даже если данные относятся к определенной области, их можно хорошо обобщить.

Это не единственный вклад в работу. Они создали новую модель предварительной обработки и выравнивания, которая может обрабатывать длинные записи. Это использовалось для обработки звука, и смещенные данные были удалены с помощью заключительного шага фильтрации перекрестной проверки. Вспомним из одной из наших предыдущих статей, что мы видели, что одной из проблем Whisper была неспособность правильно выровнять транскрипцию. Еще одним важным шагом в этом подходе было использование wav2vec 2.0, самоконтролируемой модели обучения, для обучения их системы на огромном количестве речевых данных (около 500 000 часов) на более чем 1400 языках. Размеченного набора данных, который мы обсуждали ранее, недостаточно для обучения модели размером с MMS, поэтому был использован wav2vec 2.0, чтобы уменьшить потребность в размеченных данных. Наконец, полученные модели были затем настроены для конкретной речевой задачи, такой как распознавание многоязычной речи или идентификация языка.

Несколько дней назад Meta открыла исходный код моделей MMS и сделала их доступными в репозитории Fairseq. В следующем разделе мы расскажем, что такое Fairseq и как мы можем протестировать эти новые модели от Meta.

Обзор репозитория Fairseq: мощный набор инструментов для последовательного обучения

Fairseq — это набор инструментов для преобразования последовательности в последовательность с открытым исходным кодом, разработанный Facebook AI Research, также известный как FAIR. Он предоставляет эталонные реализации различных алгоритмов моделирования последовательностей, включая сверточные и рекуррентные нейронные сети, преобразователи и другие архитектуры.

Репозиторий Fairseq основан на PyTorch, еще одном проекте с открытым исходным кодом, первоначально разработанном Meta, а теперь находящемся под эгидой Linux Foundation. Это очень мощная среда машинного обучения, которая предлагает высокую гибкость и скорость, особенно когда речь идет о глубоком обучении.

Реализации Fairseq предназначены для исследователей и разработчиков для обучения пользовательских моделей и поддерживают такие задачи, как перевод, обобщение, языковое моделирование и другие задачи генерации текста. Одной из ключевых особенностей Fairseq является то, что он поддерживает распределенное обучение, то есть может эффективно использовать несколько графических процессоров как на одной машине, так и на нескольких машинах. Это делает его хорошо подходящим для крупномасштабных задач машинного обучения.

Многоязычные речевые модели

Fairseq предоставляет для загрузки две предварительно обученные модели: MMS-300M и MMS-1B. У вас также есть доступ к точно настроенным моделям, доступным для разных языков и наборов данных. Для нашей цели мы тестируем модель MMS-1B, настроенную для 102 языков в наборе данных FLEURS, а также модель MMS-1B-all, настроенную для обработки 1162 языков (!), настроенную с использованием нескольких разных наборов данных. .

Внедрение автоматического распознавания речи с многоязычной речью

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

Во-первых, вам нужно настроить файл .env в корне вашего проекта, чтобы настроить переменные среды. Это должно выглядеть примерно так:

CURRENT_DIR=/path/to/current/dir
AUDIO_SAMPLES_DIR=/path/to/audio_samples
FAIRSEQ_DIR=/path/to/fairseq
VIDEO_FILE=/path/to/video/file
AUDIO_FILE=/path/to/audio/file
RESAMPLED_AUDIO_FILE=/path/to/resampled/audio/file
TMPDIR=/path/to/tmp
PYTHONPATH=.
PREFIX=INFER
HYDRA_FULL_ERROR=1
USER=micro
MODEL=/path/to/fairseq/models_new/mms1b_all.pt
LANG=eng

Далее вам нужно настроить файл YAML, расположенный по адресу fairseq/examples/mms/asr/config/infer_common.yaml. Этот файл содержит важные настройки и параметры, используемые скриптом.

В файле YAML используйте полный путь для поля checkpoint (если только вы не используете контейнерное приложение для запуска скрипта):

checkpoint: /path/to/checkpoint/${env:USER}/${env:PREFIX}/${common_eval.results_path}

Этот полный путь необходим, чтобы избежать потенциальных проблем с разрешениями, если вы не запускаете приложение в контейнере.

Если вы планируете использовать ЦП для вычислений вместо ГП, вам нужно будет добавить следующую директиву на верхний уровень файла YAML:

common:
  cpu: true

Этот параметр указывает сценарию использовать ЦП для вычислений.

Мы используем библиотеку dotevn python для загрузки этих переменных среды в наш скрипт Python. Поскольку мы перезаписываем некоторые системные переменные, нам нужно будет использовать хитрость, чтобы убедиться, что мы загружаем правильные переменные. Мы используем методdotevn_values и сохраняем результат в переменной. Это гарантирует, что мы получим переменные, хранящиеся в нашем .envfile, а не случайные системные переменные, даже если они имеют одинаковое имя.

config = dotenv_values(".env")

current_dir = config['CURRENT_DIR']
tmp_dir = config['TMPDIR']
fairseq_dir = config['FAIRSEQ_DIR']
video_file = config['VIDEO_FILE']
audio_file = config['AUDIO_FILE']
audio_file_resampled = config['RESAMPLED_AUDIO_FILE']
model_path = config['MODEL']
model_new_dir = config['MODELS_NEW']
lang = config['LANG']

Затем мы можем клонировать репозиторий Fairseq GitHub и установить его на нашу машину.

def git_clone(url, path):
    """
    Clones a git repository

    Parameters:
    url (str): The URL of the git repository
    path (str): The local path where the git repository will be cloned
    """
    if not os.path.exists(path):
        Repo.clone_from(url, path)

def install_requirements(requirements):
    """
    Installs pip packages

    Parameters:
    requirements (list): List of packages to install
    """
    subprocess.check_call(["pip", "install"] + requirements)


git_clone('https://github.com/facebookresearch/fairseq', 'fairseq')
install_requirements(['--editable', './'])

Мы уже обсуждали модели, которые используем в этой статье, поэтому давайте загрузим их в нашу локальную среду.

def download_file(url, path):
    """
    Downloads a file

    Parameters:
    url (str): URL of the file to be downloaded
    path (str): The path where the file will be saved
    """
    subprocess.check_call(["wget", "-P", path, url])

download_file('https://dl.fbaipublicfiles.com/mms/asr/mms1b_fl102.pt', model_new_dir)

Есть одно дополнительное ограничение, связанное с вводом модели MMS, частота дискретизации аудиоданных должна быть 16000 Гц. В нашем случае мы определили два способа создания этих файлов: один преобразует видео в аудио, а другой пересэмплирует аудиофайлы для правильной частоты дискретизации.

def convert_video_to_audio(video_path, audio_path):
    """
    Converts a video file to an audio file

    Parameters:
    video_path (str): Path to the video file
    audio_path (str): Path to the output audio file
    """
    subprocess.check_call(["ffmpeg", "-i", video_path, "-ar", "16000", audio_path])

def resample_audio(audio_path, new_audio_path, new_sample_rate):
    """
    Resamples an audio file

    Parameters:
    audio_path (str): Path to the current audio file
    new_audio_path (str): Path to the output audio file
    new_sample_rate (int): New sample rate in Hz
    """
    audio = AudioSegment.from_file(audio_path)
    audio = audio.set_frame_rate(new_sample_rate)
    audio.export(new_audio_path, format='wav')

Теперь мы готовы запустить процесс логического вывода, используя нашу модель MMS-1B-all, которая поддерживает 1162 языка.

def run_inference(model, lang, audio):
    """
    Runs the MMS ASR inference

    Parameters:
    model (str): Path to the model file
    lang (str): Language of the audio file
    audio (str): Path to the audio file
    """
    subprocess.check_call(
        [
            "python",
            "examples/mms/asr/infer/mms_infer.py",
            "--model",
            model,
            "--lang",
            lang,
            "--audio",
            audio,
        ]
    )

run_inference(model_path, lang, audio_file_resampled)

Результаты автоматического распознавания речи с помощью Fairseq

В этом разделе мы опишем нашу экспериментальную установку и обсудим результаты. Мы выполнили ASR с использованием двух разных моделей от Fairseq, MMS-1B-all и MMS-1B-FL102, на английском и португальском языках. Вы можете найти аудиофайлы в моем репозитории GitHub. Это файлы, которые я создал сам только для целей тестирования.

Начнем с модели MMS-1B-all. Вот ввод и вывод для аудио сэмплов на английском и португальском языках:

Русский: нужен небольшой ролик, чтобы понять, действительно ли новая модель исследования Facebook работает на

Por: ora bem só agravar aqui um instanceo pa tentar perceber se de facto om novo modelo da facebook research realmente funciona ou não vamos estar

С MMS-1B-FL102 генерируемая речь была значительно хуже. Давайте посмотрим на тот же пример для английского языка:

Eng: просто повторите небольшой ролик, чтобы понять, действительно ли новая исследовательская модель Facebuok справляется с задачами распознавания скорости, давайте посмотрим

Хотя сгенерированная речь не очень впечатляет по сравнению со стандартными моделями, которые у нас есть сегодня, мы должны рассматривать эти результаты с точки зрения того, что эти модели открывают ASR для гораздо более широкого круга населения мира.

Заключение

Модель Massively Multilingual Speech, разработанная Meta, представляет собой еще один шаг к развитию глобальной коммуникации и расширению возможностей языковых технологий с использованием ИИ. Его способность понимать более 4000 языков и эффективно работать на 1162 из них повышает доступность многих языков, которые традиционно недостаточно обслуживались.

Наше тестирование моделей MMS продемонстрировало возможности и ограничения технологии на ее нынешнем этапе. Хотя речь, генерируемая моделью MMS-1B-FL102, была не столь впечатляющей, как ожидалось, модель MMS-1B-all дала многообещающие результаты, продемонстрировав свою способность транскрибировать речь как на английском, так и на португальском языках. Португальский был одним из тех языков, которые недостаточно обслуживались, особенно если учесть португальский язык из Португалии.

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

Оставайтесь на связи: LinkedIn

Рекомендации

[1] - Пратап, В., Тяндра, А., Ши, Б., Томаселло, П., Бабу, А., Кунду, С., Элкахки, А., Ни, З., Вьяс, А., Фазель-Заранди, М., Баевски, А., Ади, Ю., Чжан, X., Хсу, В.-Н., Конно, А., и Аули, М. (2023). Масштабирование речевых технологий до 1000+ языков. arXiv.