В этой статье мы представляем Styletts 2, модель текста в речь (TTS), которая использует диффузию в стиле и тренировку состязания с большими моделями речевого языка (SLM) для достижения синтеза TTS на уровне человека. Styletts 2 отличается от своего предшественника, моделируя стили как скрытую случайную величину с помощью диффузионных моделей, чтобы генерировать наиболее подходящий стиль для текста, не требуя эталонной речи, достигая эффективной скрытой диффузии, получая выгоду от разнообразного синтеза речи, предлагаемых диффузионными моделями. Кроме того, мы используем большие предварительно обученные SLM, такие как Wavlm, в качестве дискриминаторов с нашим новым моделированием дифференцируемой продолжительности для сквозного обучения, что приводит к улучшению естественности речи. Styletts 2 превосходит человеческие записи в наборе данных LJSPEECH с одним дивикере и соответствует им в наборе данных VCTK Multipeaker, который оценивается носителями английского языка. Более того, при обучении набору данных Libritts наша модель превосходит предыдущие общедоступные модели для адаптации с нулевым выстрелом. Эта работа достигает первого синтеза TTS на уровне человека как в одном, так и на наборах данных с мультиспикерами, демонстрируя потенциал диффузии стиля и тренировки состязания с большими SLM.
Бумага: https://arxiv.org/abs/2306.07691
Образцы аудио: https://styletts2.github.io/
Онлайн -демонстрация: обнимаю лицо (спасибо @fakerybakery за замечательную онлайн -демонстрацию)
train_second.py (я пробовал все, что мог, чтобы исправить это, но не имел успеха, поэтому, если вы готовы помочь, см. #7) git clone https://github.com/yl4579/StyleTTS2.git
cd StyleTTS2pip install -r requirements.txtВ окнах добавить:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 -UТакже установите Phonemizer и Espeak, если вы хотите запустить демонстрацию:
pip install phonemizer
sudo apt-get install espeak-ngОбучение первого этапа:
accelerate launch train_first.py --config_path ./Configs/config.ymlУчебное поведение второго этапа (версия DDP не работает, поэтому в текущей версии используется DP, снова см. #7, если вы хотите помочь) :
python train_second.py --config_path ./Configs/config.yml Вы можете запустить оба последовательно, и это будет обучать как первое, так и второе этапы. Модель будет сохранена в формате "EPOCH_1ST_%05D.PTH" и "EPOCH_2ND_%05D.PTH". Контрольные точки и журналы Tensorboard будут сохранены на log_dir .
Формат списка данных должен быть filename.wav|transcription|speaker , см. Val_list.txt в качестве примера. Метки динамиков необходимы для моделей с несколькими динамиками, потому что нам нужно попробовать ссылочный аудио для обучения модели диффузии стиля.
В config.yml есть несколько важных конфигураций, о которых нужно позаботиться:
OOD_data : Путь для выездных текстов для состязательного обучения SLM. Формат должен быть text|anything .min_length : минимальная длина текстов OOD для обучения. Это должно убедиться, что синтезированная речь имеет минимальную длину.max_len : максимальная длина аудио для обучения. Устройство - кадр. Поскольку размер хмеля по умолчанию составляет 300, одна рама составляет приблизительно 300 / 24000 (0,0125) второй. Снижение этого, если вы столкнетесь с проблемой вне памяти.multispeaker : установите True, если вы хотите тренировать модель Multipeaker. Это необходимо, потому что архитектура Denoiser отличается для однократных и мультиспикерских моделей.batch_percentage : Это должно убедиться, что во время тренировки состязания SLM нет проблем вне памяти (OOM). Если вы столкнетесь с проблемой OOM, пожалуйста, установите для этого более низкий номер.В папке Utils есть три предварительно обученные модели:
batch_size или max_len . Вы можете обратиться к выпуску № 10 для получения дополнительной информации. Скрипт изменен из train_second.py , который использует dp, так как DDP не работает для train_second.py . Пожалуйста, смотрите раздел «жирный жирный» выше, если вы готовы помочь с этой проблемой.
python train_finetune.py --config_path ./Configs/config_ft.yml Пожалуйста, убедитесь, что у вас загружена контрольная точка Libritts и рассчитана на папку. Конфигурация конфигурации по умолчанию config_ft.yml menetunes на LJSpeech с 1 часом данных речи (около 1 тыс. Образцов) для 50 эпох. Это заняло около 4 часов, чтобы закончить на четырех NVIDIA A100. Качество немного хуже (похоже на Naturalspeech на LJSPEECH), чем модель LJSPEECH, обученная с нуля с 24 часами речевых данных, которые заняли около 2,5 дней, чтобы закончить на четырех A100. Образцы можно найти в #65 (комментарий).
Если вы используете один графический процессор (потому что сценарий не работает с DDP) и хотите сохранить скорость обучения и VRAM, вы можете сделать (спасибо @korakoe за создание сценария на #100):
accelerate launch --mixed_precision=fp16 --num_processes=1 train_finetune_accelerate.py --config_path ./Configs/config_ft.yml@Kreevoz сделал подробные заметки по общим вопросам в сфере финала, с предложениями по максимизации качества звука: #81. Некоторые из них также применяются к тренировкам с нуля. @Iieleven11 также сделал руководство для точной настройки: #128.
joint_epoch : это, вероятно, потому, что ваша оперативная память GPU недостаточно велика для тренировок SLM. Вы можете пропустить это, но качество может быть хуже. Установка joint_epoch большее число, чем epochs могли бы пропустить обучение SLM -рекомендации. Пожалуйста, см. Для Libritts вам также нужно будет загрузить reference_audio.zip и расстегнуть его под demo , прежде чем запустить демонстрацию.
Предварительные стилеты 2 на корпусе LJSPEECH в 24 кГц можно загрузить по адресу https://huggingface.co/yl4579/styletts2-ljspeech/tree/main.
Модель предварительно предварительному Styletts 2 на Libritts может быть загружена по адресу https://huggingface.co/yl4579/styletts2-libritts/tree/main.
Вы можете импортировать стилеты 2 и запустить его в своем собственном коде. Тем не менее, вывод зависит от GPL-лицензированного пакета, поэтому он не включен непосредственно в этот репозиторий. Вилка, лицензированная на GPL, имеет импортируемый сценарий, а также экспериментальный потоковой API и т. Д. Также доступен полностью лицензированный пакет MIT, в котором также используется Gruut (хотя и более низкое качество из-за несоответствия между фонемийзером и Gruut).
Перед использованием этих предварительно обученных моделей вы соглашаетесь информировать слушателей, что речевые образцы синтезируются предварительно обученными моделями, если у вас нет разрешения использовать голос, который вы синтезируете. То есть вы соглашаетесь использовать только голоса, ораторы которых предоставляют разрешение на клонировать свой голос, либо напрямую, либо по лицензии, прежде чем публиковать синтезированные голоса, или вы должны публично объявить, что эти голоса синтезируются, если у вас нет разрешения на использование этих голосов.
Код: лицензия MIT
Предварительно обученные модели. Перед использованием этих предварительно обученных моделей вы соглашаетесь информировать слушателей, что речевые образцы синтезируются предварительно обученными моделями, если у вас нет разрешения на использование голоса, который вы синтезируете. То есть вы соглашаетесь использовать только голоса, ораторы которых предоставляют разрешение на клонировать свой голос, либо напрямую, либо по лицензии, прежде чем публиковать синтезированные голоса, или вы должны публично объявить, что эти голоса синтезируются, если у вас нет разрешения на использование этих голосов.