Как учат нас майские, шашлык сам себя не пожарит…но это лишь до поры до времени и не далек тот час, когда ИИ автоматизация наверняка придет и сюда! Но пока светлое будущее еще не наступило, поэтому давайте поговорим … о котиках о лошадках ?

Слышали ли вы, как скачет конь по монгольской степи? Если нет, то в этой статье мы исправим это упущение и расскажем, как за 'недорого' натренировать облегчённую TTS (Text-to-speech) модель для воспроизведения речи на low-resource языке. Для примера мы опять оседлаем тему Монголии и проведем эксперимент на монгольском языке, очень непривычно звучащем для русского уха и практически непроизносимом для языка ?

Тыг-дык-тыг-дык… тыг-дык-тыг-дык…ИИ-го-го … Примерно такого аудио ряда мы ждем на выходе у нашего эксперимента... Чтобы узнать, как мы дошли до такой жизни, что у нас в итого получилось и насколько оно бьется с ожиданиями, поскакали под кат! ??

Вводная

Читатели нашего блога знают, что Al-команда Рафт уже довольно давно и успешно работает с заточенными под STT (Speech-to-Text) моделями, активно развивая собственный продукт AudioInsights, помогающий оптимизировать работу колл-центров, отделов продаж, отделов клиентского сервиса у наших клиентов в России и за ее пределами. Другим значимым направлением для нас является разработка и внедрение чат-ботов на базе коммерческих и ореn-sоurce-ных LLM, и логичным шагом здесь выглядит попытка скрестить этих ужа с ежом, тем самым дав пользователям дополнительный голосовой интерфейс для взаимодействия с полюбившимся чат-ботом.

Связующим мостиком здесь как раз-таки и выступает TTS синтез. Если говорить про широко распространенные языки вроде английского, китайского, русского, то эта задача уже хорошо решается с помощью RNN моделей, например, популярного Tacotron 2.

Менее радужно все обстоит для малораспространенных или, так называемых, low-resource языков - армянского, грузинского, киргизского, монгольского и многих других. При этом уровень цифровизации в странах, где этот язык является основным, неуклонно растет и на фоне разворачивающегося в индустрии торнадо высок спрос на Al-автоматизацию, в том числе на создание голосовых ассистентов. Соответственно возникает множество различных AI-стартапов, вынужденных решать задачу синтеза речи на low-resource языках, - какие сложности поджидают на этом пути и как их можно преодолеть - об этом ниже.

Цели и задачи эксперимента

Перефразируя одно из нетленных выражений вождя народов, можно сказать, что в сфере машинного обучения “данные решают все”. В случае low-resource языков, в частности, монгольского, для которого мы и будем проводить наш эксперимент, одной из основных проблем является дефицит качественных данных для обучения моделей – подходить к решению этой проблемы можно по-разному в зависимости от целей и задач проекта, возможностей команды, перед которой эта проблема стоит, и ряда других факторов.

Так, например, если вы условный Хаан-банк – энтерпрайз организация, обладающая достаточным объемом ресурсов, для которой потенциальная ценность решения данной проблемы несопоставимо выше требуемых затрат, то вы можете подойти к решению с организационной точки зрения, наняв группу специалистов, которая сгенерирует большие объемы аудиоданных, и ML-инженеров, преобразующих их в необходимый датасет.

Мы же в нашем эксперименте рассмотрим кейс без приставки “дорого-богато” – если вы стартап ранней стадии, который хочет отвалидировать продуктовую гипотезу, то жесты неслыханной щедрости не для вас, и вам вероятнее всего как минимум на фазе прототипа придется довольствоваться данными, находящимися в публичном доступе на просторах сети.

Кроме затрат на подготовку датасета нас также могут подстерегать потенциально высокие затраты на обучение самой модели. Так, если полагаться на хорошо зарекомендовавшие себя в синтезе речи RRN модели, то для обучения понадобятся высокопроизводительные GPU и продолжительное время – те затраты, что средний стартап зачастую не хочет и не может нести.

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

Запрягаем и едем

Датасет

С чего обычно все начинается? Вооружившись Audacity, мы нарезаем добытые в закоулках интернета аудио на монгольском языке на "чанки" по 5 секунд. Формируем для полученных аудиофайлов транскрипт, который затем записываем с помощью англоязычных символов и букв.

Сил потрачено много, а получившаяся кучка выглядит не такой уж и большой? Так бывает :) Но ничего страшного - будем справляться с тем, что есть.

Поработаем над улучшением данных:

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

Модель

Для целей нашего исследования мы используем sequence-to-sequence архитектуру, целиком базирующуюся на CNN ( и да, тут никаких breaking news, только Convolutional Neural Networks) – для ее построения воспользуемся идеей, описанной и опробированной здесь.

Предлагаемая модель состоит из трех модулей:

  • Text To Mel Spectrogram (TTMS)

  • Spectrogram Super-resolution Network (SSRN)

  • Guided Attention.

TTMS модуль состоит из четырех подмодулей TextEncoder, AudioEncoder, Attention и AudioDecoder-а и используется для генерации “черновой” спектрограммы, которая уже “скармливается” SSRN модулю для генерации полноценной спектрограммы.

Стоимость тренировки Attention модуля нам также удается снизить практически на порядок путем использования guided attention loss в предположении, что attention-матрица (A) в нашем случае является диагональной.

L_{att}(A)= E_{nt}[A_{nt}W{nt}],  где \\ W{nt}=1-exp \{-(n/N - t/T)^2/2g^2 \}, g = 0.2

Так, с применением guided attention loss функции для получения удовлетворительного результата в тренировке Attention-матрицы нам достаточно оказалось всего 5к итераций.

Выглядит как то, что мы и искали!

И куда мы такие красивые в итоге прискакали

Штош, подытожим:

Для тренировки нами использовалась GPU NVIDIA GeForce GTX 980 Ti с 6Gb памяти. Все модули системы мы тренировали независимо и асинхронно. Если сравнивать время тренировки, то для выбранной модели с 156M параметров оно составило чуть более 15 часов, тогда как, например, для упомянутой в начале статьи модели Tacotron2 + HifiGAN( 376M параметров) оно выходит за 60 часов.

Качество синтезированного голоса при этом остается в пределах удовлетворительного: рассчитанное значение MCD (Mel Cepstral Distortion) для тестируемой в рамках эксперимента модели и референсных данных составляет приличные 5.47.

А субъективную оценку получившегося результата мы оставим на суд истинных ценителей редких сортов тепличных баклажанов читателя ;)

Итак, минутка монгольского:

Hashaand өvs bajna, zүlgen deer tүlee bajna, hashaany zүlgen deer tүlee hagalzh bolohgүj -

вот такой вот получился в результате синтеза вольный перевод поговорки "На дворе трава, на ней все в дрова..." ( а нет, это меня куда-то опять в сторону майсксих шашлыков потянуло :) )

Похоже на обещанную лошадь в степи? ?

Комментарии (6)


  1. Squirrelfm
    07.05.2024 05:45

    Интересно, хм


    1. albonemo Автор
      07.05.2024 05:45

      ... и увлекательно! :)


  1. ainu
    07.05.2024 05:45

    Кмк, без носителя языка можно оценить "похожесть" подхода, сделав тот же процесс для русского. Желательно чтобы нарезал тот, кто язык не знает (индус на фрилансе например). И посмотреть уже.


    1. albonemo Автор
      07.05.2024 05:45
      +1

      Да, интересная идея! Тут правда важно, какие цели преследуются создателями решения - если evoluation для внутреннего использования производится, то креатив в угоду снижению стоимости всячески приветствуется, тогда как, если метрики нужны для того, чтобы хвастаться ими наружу, то тут придется все же идти с общепринятыми подходами и привлекать SME и нейтивов и считать тот же MOS.


  1. Danplot
    07.05.2024 05:45

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


    1. albonemo Автор
      07.05.2024 05:45

      Для русского языка довольно много уже готовых моделей, хорошо решающих эту задачу, но сама идея с точки зрения демонстрации подхода хорошая - постараемся выпустить follow-up статью, где проделаем то же упражнение на русском :)