Обзор технологий
Первый нейросетевой синтез хорошего качества был показан в статье про Tacotron 2. Трансформеры тогда ещё не захватили весь мир: это обычная для 2017 года encoder-decoder-attention генеративная модель на свертках и рекуррентках. Каждый модуль такотрона сам по себе довольно прост. Например, энкодер состоит из нескольких сверточных слоев по буквам и lstm-рекуррентки, которые получают представление каждой буквы или фонемы с учётом контекста.
Декодер является авторегрессионным: он принимает на вход предыдущее предсказание, а также вектор контекста. Вектор должен кодировать букву, которая синтезируется в текущий момент. Откуда он знает, что это за буква? За это отвечает механизм внимания (location sensitive attention), который спроектирован таким образом, чтобы обучиться восстанавливать соответствие между текущим моментом времени и буквой из обучающего примера. Когда спектрограмма сгенерировалась, она уточняется с помощью postnet, а затем озвучивается качественным, но очень медленным вокодером WaveNet.
Такой сетап позволил синтезировать речь, почти неотличимую от человеческой. Тут есть несколько важных оговорок:
- Модель всё равно иногда делает странные интонации.
- Скорость синтеза будет низкой, даже если заменить вокодер на быстрый.
- В приложениях хочется иметь инструмент по ручному управлению интонациями.
В приложениях хочется иметь инструмент по ручному управлению интонациями.
Дальнейшие исследования TTS‑сообщества были направлены на улучшение общего качества и ускорение моделей. Например, так родилось семейство не авторегрессионных акустических моделей Fastspeech. Их общая идея такая: особый модуль duration predictor предсказывает длительность звучания каждой фонемы, а затем декодер предсказывает нужное количество фреймов спектрограммы. Модель очень быстро за один проход синтезирует аудио целиком, но проблемы с качеством не решились, скорее наоборот. Мы пробовали такие модели, но в наших экспериментах речь стала менее «живой» на слух, а также проигрывала другим моделям по метрикам.
Про нашу модификацию такотрона — q‑taco — мы уже писали. Он работает так: до обучения для каждого слова в предложении считаются фичи — питч, громкость и скорость. Они кодируют то, как было произнесено каждое слово. Затем q‑taco учится с такими подсказками восстанавливать более сложные зависимости. На инференсе эти параметры предсказываются по смыслу отдельной нейронкой с помощью языковой модели. Потом q‑taco принимает их на вход и синтезирует звук.
— частота основного тона, он же f0, он же частота колебаний голосовых связок. Это не единственный, но важный орган речевого тракта человека. Они представляют собой натянутые мембраны, которые колеблются при прохождении через них воздушного потока. Частота, с которой они это делают, зависит от их натяжения, и в целом является очень важной характеристикой речи.
Другими словами, мы разбили сложную задачу синтеза на две попроще: «текст» -> «параметры речи» и «текст + параметры речи» -> «речь». Судя по нашим экспериментам, такое разделение обязанностей позволяет делать синтез более качественным.
Как ИИ использовать для написания sql запросов?
- 1 подписчик
- 02 мар.
- 767 просмотров
Больше данных — лучше сетки
Все люди разговаривают примерно одинаково. Я имею в виду, что паттерны питча и остальных фичей у разных людей, прочитавших один и тот же текст, очень похожи. То есть, существуют правила, по которым люди интонируют. Их сложно формализовать, поэтому здесь нам понадобится больше данных, чтобы модель для предсказания просодии была максимально точной.
Просодия — совокупность того, как было что-то произнесено. Это понятие сложно формализовать числами, поэтому как некоторое приближение мы выбрали несколько параметров — питч, громкость и скорость — и дискретизовали их, чтобы потом предсказывать NERC-like моделью. Но в реальности богатство человеческой речи не ограничивается этими фичами. Поэтому нужно провести более глубокий feature engineering — сегодня это одно из основных направлений нашей работы.
Подавляющее большинство TTS-моделей — singlespeaker. Они учатся воспроизводить ровно один голос, из которого состоял датасет. В этом случае одному конкретному диктору нужно провести безумное количество часов в студии. Нас это не устраивало, поэтому мы попробовали обучить multispeaker на тех данных, которые уже собрали. На тот момент это было 9 уникальных голосов, каждый в среднем по 80 часов студийных записей. Удивительно, но выросло не только качество предсказания просодии вспомогательной сеткой (в нашем случае — набора фичей для каждого слова), но и общее качество q-taco.
На качество разумно смотреть не в общем, а по каждому голосу отдельно. Мы заметили, что выигрыш тем больше, чем меньше данных для обучения. Другими словами, одна большая модель на много голосов подтягивает по качеству те голоса, у которых мало данных, до уровня тех голосов, у которых много данных. Мы пошли дальше и захотели выяснить, сколько вообще нужно данных, чтобы модель заговорила. Мы рассмотрели несколько важных субъективных характеристик синтеза: тембр, чёткость, богатство и естественность.
Таблица №1
|
Количество данных |
Тембр |
Четкость |
Богатство |
Естественность |
MOS |
PSER |
|
5 минут |
Да |
Иногда нет |
Нет |
Да |
4.12 |
17.8 |
|
10 минут |
Да |
Да |
Нет |
Да |
4.23 |
14.9 |
|
15 минут |
Да |
Да |
Частично |
Да |
4.46 |
12.8 |
|
30 минут |
Да |
Да |
Да |
Да |
4.44 |
12.6 |
Богатством синтеза я назвал воспроизведение индивидуальных особенностей спикера — в первую очередь широту экспрессии, но сюда же можно отнести, например, дефекты речи, эмоции или особенные привычки в интонациях. Другими словами, значение этой метрики «нет» говорит, что синтез получился скучный. Это самая важная метрика, показывающая качество нашего low‑resource синтеза. А остальные метрики являются скорее необходимым минимумом: синтез должен повторять голос прародителя, говорить без зажевываний и быть естественным. Табличку выше я заполнял субъективно, опираясь на свой слух, отслушав кучу голосов.
Отдельно расскажу про объективные метрики. Обычно в работе мы используем так называемый SBS — озвучиваем набор текстов двумя системами синтеза и спрашиваем асессоров, что им нравится больше, затем усредняем их ответы. Метрика показывает, что модель A пользователи предпочитают на X процентов чаще модели B. Это хорошая статистически мощная и интерпретируемая метрика, которая позволяет корректно сравнивать две похожие модели. Но для новых голосов она неприменима, потому что есть только один синтез этим голосом, который мы только что обучили. Поэтому мы используем mean opinion score (mos) и pronunciation sentence error rate (pser). Первая из них часто используется в статьях и показывает среднюю оценку от 1 до 5 для разных аудио. Вторая показывает, как часто синтез делает явные ошибки в интонациях, паузах и дикции. Кстати, у записей со студии значения mos и pser зависят от голоса и прыгают около 4.5 и 5–15% соответственно.
По табличке видно, что где‑то между 15 и 30 минутами происходит переход от скудного синтеза к богатому. Где именно он произойдет — зависит от голоса, а закономерность тут такая: чем более однообразная речь диктора, тем проще её синтезировать и тем меньше данных нужно. Интересно, а крик — это однообразная речь?
Оказывается да, потому что люди кричат примерно одинаково. Мы записали кричащего диктора и обучили такую же мультиспикер модельку, получилось круто. Ставь лайк, если хочешь, чтобы этот голос отвечал на звонки спамеров.
После такого эксперимента стало ясно, что мы можем обучать удивительные голоса. Мы собрали небольшой пантеон персонажей. Среди них есть упомянутый выше кричащий голос, а также злобный, геройский, рассказывающий сказки на ночь, а также эмоции, шёпот, детские голоса и другие.
Про шёпот хочется рассказать отдельно. Он отличается от обычной речи тем, что когда мы шепчем, у нас не работают голосовые связки — орган речевого тракта человека, отвечающий за тембр и интонации. Звук получается глухим, и на спектрограмме это видно невооружённым глазом.
Со стороны архитектуры модели мы сталкиваемся со сложностью: ванильный q‑taco принимает на вход три фичи, связанные с питчем, но для шёпота они не определены. В итоге пришлось чуть‑чуть упростить архитектуру модели, а также уменьшить количество голосов в обучении. Чтобы оставить общее качество на таком же уровне, пришлось записать больше данных с шёпотом, а ещё частично пропала возможность управлять интонацией вручную. Но в итоге получился приятный шёпот, который мы зарелизили вместе с нашими новыми умными колонками SberBoom и SberBoom Mini. Послушать его можно в СБОЛе и на наших умных устройствах.
Часто задаваемые вопросы о создании голосового двойка
Вопрос: Сколько аудиоданных нужно для обучения нейросети голосу?
Ответ: Для качественного результата обычно требуется от 30 минут до нескольких часов чистого, разнообразного голосового материала.
Вопрос: Можно ли обучить нейросеть голосу по короткой аудиозаписи?
Ответ: Современные модели (например, RVC) могут работать с относительно небольшими наборами данных, но качество и стабильность будут выше при большем объеме записей.
Вопрос: Нужны ли специальные навыки программирования?
Ответ: Многие популярные инструменты (как Tortoise-TTS или WebUI для RVC) имеют графический интерфейс, что упрощает процесс, но понимание основ помогает в настройке.
Вопрос: Какой микрофон лучше использовать для записи датасета?
Ответ: Важнее не дорогой микрофон, а тихое помещение без эха и фоновых шумов. Подойдет любой качественный USB-микрофон.
Вопрос: Что такое эпохи (epochs) и сколько их нужно?
Ответ: Эпоха — это один полный проход обучения по всем данным. Их количество зависит от модели и данных, обычно от 100 до 1000. Слишком много эпох может привести к переобучению.
Вопрос: В чем разница между TTS (синтез речи) и VC (конверсия голоса)?
Ответ: TTS генерирует речь «с нуля» на основе текста, а VC преобразует один голос в другой, сохраняя интонации и темп исходной записи.
Вопрос: Можно ли использовать обученную модель в реальном времени?
Ответ: Да, некоторые технологии (как RVC) позволяют проводить конверсию голоса в реальном времени с небольшой задержкой, что подходит для стриминга.
Вопрос: Насколько легально создавать и использовать голосовой двойник?
Ответ: Законность зависит от юрисдикции и цели использования. Всегда необходимо получать явное согласие человека на использование его голоса и не использовать технологию для мошенничества или введения в заблуждение.
Вопрос: Какое железо (ПК) требуется для обучения?
Ответ: Критически важна мощная видеокарта (NVIDIA с 6+ ГБ VRAM). Также желательны быстрый SSD, достаточный объем оперативной памяти (16+ ГБ) и производительный процессор.
Вопрос: Что делать, если результат обучения звучит неестественно или с артефактами?
Ответ: Нужно проверить качество и чистоту исходных аудиоданных, отрегулировать параметры обучения (скорость, количество эпох) и, возможно, увеличить объем тренировочного датасета.
Краткий чек-лист: путь к созданию голосовой модели
- Определите цель: для чего вам нужен синтезированный голос (TTS, конверсия, пение).
- Выберите подходящую технологию и инструмент (например, RVC, Tortoise-TTS, Coqui TTS).
- Подготовьте тихое помещение для записи без эха и фонового шума.
- Запишите не менее 30-60 минут чистого голосового материала в хорошем качестве.
- Очистите записи: обрежьте тишину, удалите лишние шумы и артефакты.
- Разметьте данные: при необходимости сегментируйте длинные записи на короткие фразы.
- Настройте параметры обучения модели (количество эпох, размер батча, скорость обучения).
- Запустите процесс обучения и отслеживайте лог-файлы на предмет ошибок.
- Проверьте сгенерированные примеры на разных этапах обучения, чтобы избежать переобучения.
- Протестируйте финальную модель на новом, незнакомом для нее тексте.
- Оптимизируйте модель для уменьшения размера файла и увеличения скорости инференса, если нужно.
- Изучите правовые аспекты использования созданного голоса в вашем регионе.
- Используйте модель этично, с уважением к правам и приватности других людей.




























