Научпоп от дата-сайентиста Factory5 Кирилла Абросимова: рассказываем о том, как развиваются нейронные сети для синтеза звука, и какие ИИ-технологии применяются в этой сфере сегодня.
Что есть звук?
Все мы знаем, что звук представляет собой некоторую волну, или колебательное движение частиц упругой среды. В узком значении звук — это явление, которые живые организмы воспринимают с помощью специального органа чувств.
Любой звук можно представить во временной и частотных областях. Удобнее работать со вторым видом — спектрограммы отражают не только сами частоты, но и их изменение во времени. Чтобы увидеть это наглядно, можно заглянуть на сайт Spectrogram — сервис автоматически и в реальном времени рисует спектрограмму в зависимости от того, что слышит. Человеческую речь можно разложить на несколько форматов: частота основного тона, анатомические особенности звучания (хрип, сиплость и т.д.), эмоции.
Современный синтез речи, если по-простому, — это предсказание картинки-спектрограммы.
Нейронные сети для синтеза речи
Как мы знаем, нейронная сеть — это некоторая математическая модель, которая имеет множество параметров и пытается решить определенную задачу — классификационную или регрессионную. Рассмотрим четыре вида нейросетей — полносвязные, сверточные, рекуррентные и трансформерные.
1. Полносвязные нейронные сети
Основные слои нейронной сети:
- Входной слой принимает данные, которые нейросеть обрабатывает;
- Скрытые слои, которые занимаются непосредственно процессингом;
- Выходной слой: если у нас, например, классификация, то здесь бы получаем ответ, относится ли условный объект, представленный x-значением чисел, к определенному классу.
Обучение нейронных сетей можно представить как попытку решить огромную систему нелинейных уравнений, где одно уравнение — один пример из выборки, на которой обучается нейросеть. И наша цель — найти параметры в этой огромной системе уравнений так, чтобы ошибка оказалась минимальной.
2. Сверточные нейронные сети
Сверточные нейронные сети были предложены для обработки данных (например, изображений), в которых важны не только сами значения, но и их окружения т: если, например, это кот, то над носом должны быть глаза, по бокам — усы и так далее. Сверточная нейросеть проходит по исходной картинке неким фильтром и делает вывод , какой участок картинки подходит под этот обучаемый паттерн. Совместно с операцией свертки применяется операция пулинга, которая позволяет снизить размерность данных, оставив лишь самую важную информацию. Это особенно актуально сегодня, когда почти все изображения в формате HD.
Классическая архитектура сверточной нейронной сети выглядит примерно таким образом:
У нас есть определенные карты признаков. Если мы говорим про картинки, у нас есть три канала — красный, синий и зеленый. Мы можем обрабатывать их по отдельности, но чаще всего свертки смотрят сразу на все карты.
Постепенно, на основе сверток и операций макс-пуллинга мы в результате получаем определенное количество чисел в матрицах. Всё это мы разворачиваем в один вектор чисел, и этот вектор уже обрабатывается полносвязным нейронным слоем — одним, двумя, тремя или большим их количеством.
Сверточные сети изначально применялись к картинкам, но сегодня они хорошо дружат и с текстами и с звуками.
3. Рекуррентные нейронные сети
Рекуррентные нейросети позволяют обрабатывать последовательности. Эта разновидность нейронных сетей существует еще с прошлого столетия, но тогда было недостаточно вычислительных мощностей, чтобы задействовать их в полной мере.
На входе подается некоторый икс, он обрабатывается, а на следующем шаге к нему добавляется еще какая-то информация, которая совместно с предыдущей обрабатывается, потом еще и еще. Визуально мы можем представить это как лист бумаги, который мы постепенно комкаем, складывая в веер — пространство уменьшается, при этом, мы как будто на небольшом количестве пространства пишем самую главную информацию с листа, то есть в целом мы всё еще имеем весь написанныйтекст на листе, но в некотором сжатом виде. На основе этого «веера» — набора некоторых чисел и будет работать полносвязная нейросеть, которая сможет, например, классифицировать — спам это или нет.
Все рассмотренные нами нейронные сети можно рассматривать как элементы одного конструктора — условные блоки, которые мы будем соединять друг с другом и в итоге получать что-то интересное.
Одной из самых популярных архитектур является Энкодер-Декодер система, когда у нас изначальная информация кодируется с помощью разных слоев, например исходный текст на русском языке, и производит некоторые числовые значения. И эти значения потом применяются в декодерных блоках и, например, переводятся на английский язык.
Ограничение рекуррентных сетей заключается в том, что вы не можете обработать весь текст одновременно — нужно идти от начала в конец или с конца в начало. Но в 2017 году вышла культовая статья Attention is all you need, с которой началось развитие больших языковых моделей, в том числе всем известного чат-бота ChatGPT. Статья описывала механизм внимания — технику, которая сегодня используется в рекуррентных и сверточных нейросетях для поиска взаимосвязей между различными частями входных и выходных данных. А в дальнейшем был предложен и механизм самовнимания, который позволял значительно ускорить процесс обработки длинных последовательностей. Механизм внимания повлиял и на развитие технологий синтеза речи.
После того как мы совершили энкодинг, механизм внимания позволяет не смотреть на весь предыдущий текст, а акцентировать «внимание» на конкретном слове и его связями с другими.
Например, английский и французский языки различаются между собой порядком слов в предложениях. Благодаря механизму внимания в процессе перевода нейросеть будет понимать, что после перевода условного третьего слова в исходном предложении нужно переключить внимание на второе, и так далее. Таким образом, механизм внимания показывает, в какой момент на какие слова нужно смотреть нейросети.
Развитие механизма внимания в механизм самовнимания привел к развитию трансформерных нейронных сетей.
Ее плюс в том, что она обрабатывает информацию не последовательно, как рекуррентная сеть, а параллельно, поэтому работает быстрее. То есть мы уже не сжимаем наш бумажный лист в веер, а смотрим на него полностью — на символы, затем на слова, потом переходим на уровень предложений — и видим уже не символы, а «общую картину» . Механизм внимания позволяет отходить от базовых символов к полноценному контексту текста — без сжевывания и получения вектора, в котором что-то может потеряться.
Синтез речи
Задача синтеза речи — преобразовать заданный текст в звучащую речь, аудиофайл.
Классическая последовательность действий для решения этой задачи такая. Изначально решается задача лингвистики — преобразовать текст в формат, подходящий для синтеза, расшифровать цифры и аббревиатуры. Далее следует этап просодики — расстановка пауз, предсказание их длительности, определение главных слов. Этап фонетики отвечает за естественность звучания — чтобы условное слово «корова» читалось как [карова] и так далее. Соответственно, здесь буквы преобразуются в аллофоны. На основе информации о них и о длительности пауз реализуется задача акустики, когда, как правило, нейросеть пытается предсказать, как это в результате должно быть связаться между собой. И уже потом, на основе предсказанных акустических признаков вокодер восстанавливает сигнал, упрощенно говоря, воспроизводит речь.
Вокодер — большая отдельная система, которая также позволяет изменять звучащую речь. Поэтому специалисты и команды, занимающиеся синтезом речи, имеют четкое разделение по этим этапам — кто-то специализируется на акустических моделях, а кто-то на вокодерах. Существуют разные алгоритмы-вокодеры, но сейчас все более популярны нейросетевые.
В рамках акустики, как правило рассматривают два типа моделей. Первая — когда есть предзаписанные звуки, которые мы «склеиваем». Наверное, многие помнят первые образцы такого «робовойса» из нулевых, когда слова будто склеивались друг с другом и звучали практически без эмоций и логических пауз. Сейчас используется более современный параметрический подход, который уже предсказывает «картинку» в виде акустического признака. Именно его и рассмотрим подробнее.
Сложность здесь возникает в том, что на 20 условных символов, которые мы даем, системе нужно сгенерировать сотни тысяч, а то и миллионы значений в нашей спектрограмме. Но открытый в 2017 году «механизм внимания» позволяет нейросети лучше понимать, какую информацию нужно использовать в определенный момент синтеза.
Tacotron 2 – авторегрессионная модель, которая генерирует каждый следующий столбик, основываясь не только на исходном тексте, но и информации из предыдущего столбика.
У авторегрессионных моделей есть как плюсы, так и минусы. Их преимущество заключается в том, что мы можем транслировать в реальном времени полученные данные куда-то, а минус заключается в том, что всё происходит долго. И если один столбик имеет некоторый артефакт, то это отразится и на последующей генерации, наверняка вы слышали много таких забавных ляпов синтеза
Поэтому на смену авторегрессионным моделям сегодня приходят неавторегриссионные, например, популярную нейросетевую модель Fast Speech 2 в 2019 году представила компания Microsoft.
Это та же трансформерная нейросеть, но уже более усовершенствованная.
Здесь просодика имеет статус не просто предварительной обработкой, а выносится в отдельный блок. Для предсказания длительности аллофон и пауз применяется отдельная авторегрессионная нейронная сеть. Технология FastSpeech ускоряет синтез речи, сразу генерируя всю картинку целиком, с которой потом работает вокодер.
Но мы же хотим, чтобы наша система говорила не одним голосом, а несколькими? В современных речевых технологиях есть отдельная задача, которая называется «распознавание диктора» или «голосовая биометрия», когда мы хотим, чтобы система нас распознала по нашей речи и выдала какой-то условный доступ или что-то еще. Это тоже огромная область с большим количеством своеобразных архитектур.
В этой статье говорится о том, как можно применить наработки из голосовой биометрии к синтезу речи. Энкодер-система на сложных сверточных сетях дает набор чисел, на котором полносвязная нейронная сеть производит классификацию. А что, если мы будем брать этот набор чисел и «вставлять» его в синтез речи? То есть сначала параллельно происходит энкодинг фонем и энкодинг голоса с помощью нейронных сетей из задачи биометрии, затем — конкатенация этих векторов, и на основе полученных чисел декодер пытается понять, что ему нужно сказать и каким образом это нужно сказать.
Чтобы научиться добавлять к синтезируемому голосу эмоции, особенности звучания и другие признаки, в 2019 предложили токены стиля. Они похожи на мультиспикеры, когда у нас несколько речей, только здесь во время обучения нашей системы необходимо выделить характерные паттерны для спикера. Один набор чисел должен характеризовать спикера, а еще один набор — характеризовать стиль.
Оценка систем синтеза речи
Оценка систем TTS
MOS — субъективная метрика, которая изначально использовалась для оценки качества передачи информации по информационно-телекоммуникационным каналам, с помощью оценок экспертов от 1 до 5.
Однако, с развитием систем синтеза речи данная метрика стала основной для него, так как на данный момент не предложена ни одна объективная метрика, которая показывала бы реальное качество системы.
MOS вычисляется по формуле 1.
Где score1 — это оценка i-того эксперта, N — общее количество экспертов.
Но в некоторых ситуациях не получится получить MOS оценку, так как тяжело собрать экспертов, или сформировать четкие определения каждого балла. Для этого понадобится метрика SS [94], которая основывается на попарном сравнении двух фрагментов и относится к формату side-by-side evaluation. Данная метрика возвращает значение от 0.0 до 2.0, где 0.0 — отрывок А явно хуже, чем отрывок Б, 1.0 — отрывок А сопоставим по качеству отрывку Б, 2.0 — отрывок А явно лучше, чем отрывок Б. Причем, SS(А,Б) не равно SS(Б,А), но в сумме SS(А,Б) + SS(Б,А) = 2.0. SS считается согласно формуле 2.
Где N — количество оценок; kе — предлагаемое решение k относительно решения e, scаle — выбранная шкала в которой минимальная оценка равна 0.
Например, можно использовать шкалу от 0 до 4, следовательно формулу 2 можно переписать в формулу 3.
Когда мы решаем задачи классификации, регрессии, то нам хочется понимать, насколько хорошо система выполняет эту работу. На сегодняшний день синтез речи могут оценить исключительно люди.
Самый популярный метод — MOS-оценка, которая пришла к нам из телекоммуникаций. Ее разработали для того, чтобы понимать, насколько понятна речь по телефону. В рамках этого метода собирается группа экспертов, которая оценивает результат по шкале от 1 до 5.
Есть, конечно, и автоматические методы, но на сегодняшний день результаты такой обработки слишком далеки от правды. Поэтому пока что человечество вынуждено обращаться пусть к субъективной, но реалистичной оценке людьми.
________
Список литературы
Здесь также содержатся ссылки на материалы о синтезе певческого голоса и музыкальных инструментов.
1. Учебное пособие «Синтез речи» С.В. Рыбина, Университет ИТМО
2. Speech synthesizers by Chris Woodford
10. Streijl R. C., Winkler S., Hands D. S. Mean opinion score (MOS) revisited: methods and applications, limitations and alternatives //Multimedia Systems. – 2016 – Т. 22 – №. 2 – С. 213-227.
11. Абросимов К.И., Львутина Т.В., Суркова А.С. Метрики качества генеративных моделей // Труды международной конференции по компьютерной графики и зрению "ГрафиКон" [International Conference on Computer Graphics and Vision, GraphiCon] -2021. - № 31. - С. 124-130
entze
Спасибо за базу.
А что можете рассказать про уже имеющиеся сервисы генерирования, коих много?
И музыка есть, и голос включая клонирование и использование.
Каким модели и инструменты кажутся перспективными?
Из интересного например отметил для себя генерирование музыки in-browser с web-GPU
https://huggingface.co/spaces/enzostvs/ai-jukebox
30 секунд мелодии генерируют примерно 5 минут непосредственно в браузере с использованием WASM.
Еще некоторые инструменты OpenVoice, Melo, Parler, Bark можно погонять через https://pinokio.computer