Аннотация: Структура модели глубокой нейронной сети, описанной в этой статье: синтез NaturalTTS путем обработки Wavenet предсказаниями спектрограммы MEL.
Эта статья опубликована в сообществе HUAWEI CLOUD."Какие? Открытый код синтеза речи не запустится, я научу вас запускать Tacotron2", Автор: Белая лошадь пересекает Пинчуань.
Такотрон-2
Энциклопедия статей TTS:GitHub.com/чувство жизни/SP…
Реализация Tensorflow Tacotron-2 от DeepMind. Структура модели глубокой нейронной сети, описанная в этой статье: Естественный синтез TTS путем обработки Wavenet предсказаниями MELspectogram. Адрес github:GitHub.com/новичок-Чен…
Есть и другие версии проекта с открытым исходным кодом Tacotron2:
Этот github содержит другие улучшения и попытки работы над статьей, поэтому мы используем файл paper_hparams.py, который содержит точные гиперпараметры для воспроизведения результатов работы без каких-либо дополнительных надстроек. Предлагаемый файл hparams.py, используемый по умолчанию, содержит гиперпараметры с дополнительными функциями, которые в большинстве случаев дают лучшие результаты. Не стесняйтесь изменять параметры по своему вкусу, и различия будут выделены в файле.
Repository Structure
Шаг (0): Получите набор данных, здесь я привел пример Ljspeech, en_US и en_UK (от M-AILABS).
Шаг (1): Предварительно обработайте ваши данные. Это даст вам папку training_data.
Шаг (2): Обучите свою модель Tacotron. Генерирует папку logs-Tacotron.
Шаг (3): Синтезируйте/оцените модель Tacotron. Дайте папку tacotron_output.
Шаг (4): Обучите свою модель Wavenet. Создает папку logs-Wavenet.
Шаг (5): Синтезируйте аудио, используя модель Wavenet. Дайте папку wavenet_output.
Уведомление:
-
Шаги 2, 3 и 4 можно выполнить простым запуском Tacotron и WaveNet (Tacotron-2, шаг(*)).
-
Предварительная обработка оригинального github поддерживает только Ljspeech и Ljspeech-подобные наборы данных (речевые данные M-AILABS)! Если вы храните набор данных по-другому, вам нужно будет создать собственный сценарий предварительной обработки.
-
Если две модели обучаются одновременно, структура параметров модели будет другой.
Некоторые предварительно обученные модели и демонстрации
ты сможешьздесь, Ознакомьтесь с некоторыми ключевыми сведениями о производительности модели (на этапе предварительной подготовки).
Архитектура модели
Рисунок 1: Структурная схема модели Tacotron2
Описанную авторами модель можно разделить на две части:
-
Сеть предсказания спектрограммы
-
Вокодер Wavenet
Подробное изучение архитектуры модели, процесса обучения и логики предварительной обработки см.Вики автора
С чего начать
Параметры среды: Во-первых, вам нужно установить python 3 вместе с Tensorflow.
Затем вам нужно установить некоторые зависимости Linux, чтобы убедиться, что аудио библиотека работает:
apt-get install-y libasound-dev portaudio19-dev libportaudio2 libportaudiocpp0 ffmpeglibav-tools
Наконец, вы можете установить файл requirements.txt. Если вы являетесь пользователем Anaconda: (Вы можете использоватьpip3заменятьpipи использоватьpython3заменятьpython)
pip install -rrequirements.txt
**Docker:** В качестве альтернативы можно создать образ Docker, чтобы гарантировать автоматическую настройку и использование проекта внутри контейнера Docker.
Dockerfile находится внутри папки «docker»
Образ докера можно создать с помощью:
docker build -ttacotron-2_image docker/
Затем контейнер может работать:
docker run -i--name new_container tacotron-2_image
набор данных
Этот github протестировал приведенный выше код на наборе данных ljspeech, который содержит почти 24 часа помеченных записей одной актрисы. (Дополнительная информация о наборе данных доступна в файле README после загрузки)
Github также проводит текущие тесты нового набора речевых данных M-AILABS, который содержит более 700 речей (более 80 ГБ данных) на более чем 10 языках.
После загрузки набора данных разархивируйте сжатый файл и поместите папку в клонированныйgithubвнутри.
Настройки Hparams
Прежде чем продолжить, вы должны выбрать гиперпараметры, которые лучше всего соответствуют вашим потребностям. Хотя можно изменить гиперпараметры из командной строки во время предварительной обработки/обучения, я все же рекомендую внести изменения непосредственно в файл hparams.py раз и навсегда.
Чтобы выбрать наилучшие параметры БПФ, я создал блокнот griffin_lim_synchronous_tool, который вы можете использовать для инвертирования фактической извлеченной меловой/линейной спектрограммы и выбора того, насколько хороша или плоха предварительная обработка. Все остальные параметры хорошо описаны в hparams.py и имеют понятные имена, чтобы вы могли их попробовать.
AWAIT DOCUMENTATION ON HPARAMS SHORTLY!!
предварительная обработка
Перед выполнением следующих шагов убедитесь, что вы находитесь в папке Tacotron-2.
cd Tacotron-2
Затем вы можете начать предварительную обработку с помощью:
python preprocess.py
можно использовать--набор данныхНабор данных выбора параметров. При использованииM-AILABSнабор данных, вам необходимо предоставитьlanguage, voice, reader, merge_books and book argumentsдля удовлетворения ваших пользовательских потребностей. По умолчаниюLjspeech.
Пример M-AILABS:
python preprocess.py --dataset='M-AILABS' --language='en_US' --voice='female' --reader='mary_ann' --merge_books=False --book='northandsouth'
Или, если вы хотите, чтобы спикер использовал все книги:
python preprocess.py --dataset='M-AILABS' --language='en_US' --voice='female' --reader='mary_ann' --merge_books=True
Это должно занять не более нескольких минут.
тренироваться
Обучите две модели по порядку:
python train.py --model='Tacotron-2'
Модель предсказания признаковTacotron-2Можно обучать отдельно, используя:
python train.py --model='Tacotron'
Записывается каждые 5000 шагов и сохраняется вlogs-Tacotronпод папку.
Конечно, тренировки в одиночкуwavenetделается:
python train.py --model='WaveNet'
logs will be storedinside logs-Wavenet.
Уведомление:
-
Если параметры модели не указаны, обучение по умолчанию будетTacotron-2Обучение модели. (отличается от структуры модели такотрона)
-
Параметры обучающей модели могут относиться кtrain.pyЕсть много вариантов на выбор
-
предварительная обработка для wavenet, возможно, придется использовать отдельноwavenet_proprocess.pyсценарий
синтез
Синтезированный звукотконцы с концами(текст в аудио) способ (обе модели работают одновременно):
python synthesize.py --model='Tacotron-2'
Для сети предсказания спектрограммы имеемтри типаПрогнозируемый результат спектрограммы мела:
-
проверка рассуждений(Всесторонний обзор пользовательских предложений). Это то, что мы обычно используем, когда у нас есть полная сквозная модель.
python synthesize.py --model='Tacotron'
-
Синтетика естественно(Пусть модель делает прогнозы индивидуально, передавая выходные данные последнего декодера на следующий временной шаг).
python synthesize.py --model='Tacotron' --mode='synthesis' --GTA=False
-
Эффективный синтез выравнивания(по умолчанию: модель принудительно обучается на действительных метках истинности). Когда для обучения используются прогнозыwavenetmel спектра при использовании этого метода синтеза (как описано в тексте, дает лучшие результаты).
python synthesize.py --model='Tacotron' --mode='synthesis' --GTA=True
Синтезируйте форму волны с ранее синтезированным спектром Mel:
python synthesize.py --model='WaveNet'
Уведомление:
-
Если параметр модели не указан, он используется по умолчанию.Tacotron-2Модельный синтез. (сквозной TTS)
-
Выбранные параметры синтеза, вы можете обратиться кsynthesize.py
Ссылки и исходный код
-
Natural TTS synthesis by conditioning Wavenet on MEL spectogrampredictions
-
Original tacotron paper
-
Attention-Based Models for Speech Recognition
-
Wavenet: A generative model for raw audio
-
Fast Wavenet
Если вы хотите узнать больше о технологии искусственного интеллекта, добро пожаловать в зону искусственного интеллекта HUAWEI CLOUD.В настоящее время существует программирование искусственного интеллекта Python и т. д.Шесть боевых лагерейБесплатное обучение для всех.
Нажмите «Подписаться», чтобы впервые узнать о новых технологиях HUAWEI CLOUD~