Как учат нас майские, шашлык сам себя не пожарит…но это лишь до поры до времени и не далек тот час, когда ИИ автоматизация наверняка придет и сюда! Но пока светлое будущее еще не наступило, поэтому давайте поговорим … о котиках о лошадках ?
Слышали ли вы, как скачет конь по монгольской степи? Если нет, то в этой статье мы исправим это упущение и расскажем, как за 'недорого' натренировать облегчённую 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 секунд. Формируем для полученных аудиофайлов транскрипт, который затем записываем с помощью англоязычных символов и букв.
Сил потрачено много, а получившаяся кучка выглядит не такой уж и большой? Так бывает :) Но ничего страшного - будем справляться с тем, что есть.
Поработаем над улучшением данных:
используем подавление шумов с помощью DCCRN модели
применим Mel Spectrogram Augmentation
применим Spectrogram Resize Augmentation.
Данные преобразования в сумме позволят расширить итоговый датасет, повысить скорость обучения, т.к. в результате не потребуется дополнительного преобразования данных между данными сигнала и данными спектрограммы.
Модель
Для целей нашего исследования мы используем 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) в нашем случае является диагональной.
Так, с применением 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)
ainu
07.05.2024 05:45Кмк, без носителя языка можно оценить "похожесть" подхода, сделав тот же процесс для русского. Желательно чтобы нарезал тот, кто язык не знает (индус на фрилансе например). И посмотреть уже.
albonemo Автор
07.05.2024 05:45+1Да, интересная идея! Тут правда важно, какие цели преследуются создателями решения - если evoluation для внутреннего использования производится, то креатив в угоду снижению стоимости всячески приветствуется, тогда как, если метрики нужны для того, чтобы хвастаться ими наружу, то тут придется все же идти с общепринятыми подходами и привлекать SME и нейтивов и считать тот же MOS.
Danplot
07.05.2024 05:45Круто, правда очень мало людей знают татарский. Может сделаете такое же для русского, чтобы мы могли оценить эффективность этого подхода?
albonemo Автор
07.05.2024 05:45Для русского языка довольно много уже готовых моделей, хорошо решающих эту задачу, но сама идея с точки зрения демонстрации подхода хорошая - постараемся выпустить follow-up статью, где проделаем то же упражнение на русском :)
Squirrelfm
Интересно, хм
albonemo Автор
... и увлекательно! :)