В нашей статье мы предлагаем Daft-Exprt, многопрофильную акустическую модель, продвигающую современную перенос просодий в любом тексту. Это одна из самых сложных и редко рассматриваемой задачи в синтезе речи, особенно для высокопроизводительных данных. Daft-Exprt использует слои кондиционирования пленки для стратегического введения различной просодической информации во всех частях архитектуры. Модель явно кодирует традиционные низкоуровневые просодии, такие как высота, громкость и продолжительность, а также просодическая информация более высокого уровня, которая помогает генерировать убедительные голоса в очень выразительных стилях. Личность докладчика и просодическая информация распутываются в рамках стратегии тренировки состязания, которая обеспечивает точную передачу просодии между спикерами. Результаты эксперимента показывают, что DAFT-EXPRT значительно превосходит сильные базовые показатели по межстепенному перекрестно-динамическому передаче задач просодии, при этом давая естественность, сопоставимую с современными выразительными моделями. Более того, результаты показывают, что модель отбрасывает информацию о личности динамика из представления просодии и последовательно генерирует речь с желаемым голосом. Посетите нашу демо -страницу для образцов аудио, связанных с бумажными экспериментами.
Полное раскрытие : модель, представленная в этом репозитории, не то же самое, что при оценке бумаги. Модель статьи была обучена проприетарным данным, которые мешают нам публично выпускать их.
Мы предварительно готовим Daft-Exprt в комбинацию набора данных речи LJ и набора данных эмоциональной речи (ESD) от Zhou et al.
Посетите выпуск этого репозитория, чтобы загрузить предварительно обученную модель и прослушать примеры передачи просодии, используя эту же модель.
Требования:
Мы рекомендуем использовать Conda для управления средой Python, например, загрузить и установить Miniconda.
Создайте свою среду Python и установите зависимости, используя Makefile:
conda create -n daft_exprt python=3.8 -yconda activate daft_exprtcd environmentmakeВсе зависимости Linux/Conda/PIP будут установлены MakeFile, а репозиторий будет установлен в качестве пакета PIP в редактируемом режиме.
Требования:
Создайте изображение Docker, используя связанный DockerFile:
docker build -f environment/Dockerfile -t daft_exprt . Это руководство быстрого начала проиллюстрирует, как использовать различные сценарии этого репозитория для:
Все сценарии расположены в каталоге сценариев.
Исходный код DAFT-EXPRT расположен в каталоге DAFT_EXPRT.
Параметры конфигурации, используемые в сценариях, инстаценьуют в hparams.py.
В качестве примера быстрого начала мы рассмотрим использование набора данных речи 22 кГц и набора данных эмоциональной речи 16 кГц (ESD) от Zhou et al.
Это сочетает в себе 11 динамиков. Все наборы датчиков должны быть в одном и том же корневом каталоге. Например:
/data_dir
LJ_Speech
ESD
spk_1
...
spk_N
В этом примере мы используем изображение Docker, встроенное в предыдущем разделе:
docker run -it --gpus all -v /path/to/data_dir:/workdir/data_dir -v path/to/repo_dir:/workdir/repo_dir IMAGE_ID
Исходный код ожидает конкретную структуру дерева для каждого набора данных динамика:
/speaker_dir
metadata.csv
/wavs
wav_file_name_1.wav
...
wav_file_name_N.wav
Metadata.csv должен быть отформатирован следующим образом:
wav_file_name_1|text_1
...
wav_file_name_N|text_N
Учитывая, что каждый набор данных имеет свою собственную номенклатуру, этот проект не предоставляет готовый универсальный сценарий.
Тем не менее, сценарий format_dataset.py уже предлагает код форматировать LJ и ESD:
python format_dataset.py
--data_set_dir /workdir/data_dir/LJ_Speech
LJ
python format_dataset.py
--data_set_dir /workdir/data_dir/ESD
ESD
--language english
В этом разделе код будет:
Чтобы предварительно обработать все доступные форматированные данные (то есть LJ и ESD в этом примере):
python training.py
--experiment_name EXPERIMENT_NAME
--data_set_dir /workdir/data_dir
pre_process
Это будет предварительно обработать данные с использованием гиперпараметров по умолчанию, которые установлены на 22 кГц аудионов.
Все выходы, связанные с экспериментом, будут храниться в /workdir/repo_dir/trainings/EXPERIMENT_NAME .
Вы также можете ориентироваться на конкретные динамики для предварительной обработки данных. Например, чтобы рассмотреть только динамики ESD:
python training.py
--experiment_name EXPERIMENT_NAME
--speakers ESD/spk_1 ... ESD/spk_N
--data_set_dir /workdir/data_dir
pre_process
Функция предварительной обработки принимает несколько аргументов:
--features_dir : абсолютный путь, где будут сохранены предварительно обработанные данные. По умолчанию /workdir/repo_dir/datasets--proportion_validation : доля примеров, которые будут в наборе валидации. По умолчанию до 0.1 % на динамик.--nb_jobs : количество ядер для использования для многопроцессы Python. Если установлено на max , все ядра процессора используются. По умолчанию до 6 . Обратите внимание, что если вы впервые предварительно обрабатываете данные, этот шаг займет несколько часов.
Вы можете уменьшить время вычисления, увеличив параметр --nb_jobs .
После завершения предварительной обработки, обучение запуска. Тренироваться на всех предварительно обработанных данных:
python training.py
--experiment_name EXPERIMENT_NAME
--data_set_dir /workdir/data_dir
train
Или если вы нацелились на конкретные динамики во время предварительной обработки (например, динамики ESD):
python training.py
--experiment_name EXPERIMENT_NAME
--speakers ESD/spk_1 ... ESD/spk_N
--data_set_dir /workdir/data_dir
train
Все выходы, связанные с экспериментом, будут храниться в /workdir/repo_dir/trainings/EXPERIMENT_NAME .
Функция поезда принимает несколько аргументов:
--checkpoint : абсолютный путь контрольной точки Daft-Exprt. По умолчанию ""--no_multiprocessing_distributed : отключить распределенное обучение Pytorch. По умолчанию в False--world_size : количество узлов для распределенного обучения. По умолчанию до 1 .--rank : узел ранга для распределенного обучения. По умолчанию до 0 .--master : URL используется для настройки распределенного обучения. По умолчанию в tcp://localhost:54321 . Эти значения по умолчанию запустит новое обучение, начиная с итерации 0, используя все доступные графические процессоры на машине.
Код предполагает, что на машине доступно только 1 графический процессор.
Размер партии по умолчанию и накопление градиента Гиперпараметры устанавливаются на значения для воспроизведения размера партии 48 из бумаги.
Код также поддерживает журнал Tensorboard. Чтобы отобразить выходы журнала:
tensorboard --logdir_spec=EXPERIMENT_NAME:/workdir/repo_dir/trainings/EXPERIMENT_NAME/logs
После завершения обучения вы можете создать набор данных для точной настройки Vocoder:
python training.py
--experiment_name EXPERIMENT_NAME
--data_set_dir /workdir/data_dir
fine_tune
--checkpoint CHECKPOINT_PATH
Или если вы нацелились на конкретные ораторы во время предварительной обработки и обучения (например, динамики ESD):
python training.py
--experiment_name EXPERIMENT_NAME
--speakers ESD/spk_1 ... ESD/spk_N
--data_set_dir /workdir/data_dir
fine_tune
--checkpoint CHECKPOINT_PATH
Набор данных с тонкой настройкой будет храниться в /workdir/repo_dir/trainings/EXPERIMENT_NAME/fine_tuning_dataset .
Для примера того, как использовать DAFT-EXPRT для синтеза TTS, запустите Script Synthesize.py.
python synthesize.py
--output_dir OUTPUT_DIR
--checkpoint CHECKPOINT
Предложения по умолчанию и справочные высказывания используются в сценарии.
Сценарий также дает возможность:
--batch_size : параллельно процесса предложений--real_time_factor : оценить производительность фактора в реальном времени DAFT-EXPRT, учитывая выбранный размер партии--control : выполнить локальную просодию контроль @article{Zaidi2021,
abstract = {},
journal = {arXiv},
arxivId = {2108.02271},
author = {Za{"{i}}di, Julian and Seut{'{e}}, Hugo and van Niekerk, Benjamin and Carbonneau, Marc-Andr{'{e}}},
eprint = {2108.02271},
title = {{Daft-Exprt: Robust Prosody Transfer Across Speakers for Expressive Speech Synthesis}},
url = {https://arxiv.org/pdf/2108.02271.pdf},
year = {2021}
}
Любой вклад в этот репозиторий более чем приветствуется!
Если у вас есть какие -либо отзывы, отправьте его на [email protected].
© [2021] Ubisoft Entertainment. Все права защищены