Какие? Открытый исходный код синтеза речи не запустится, следуйте за мной!

искусственный интеллект Нейронные сети

Аннотация: Структура модели глубокой нейронной сети, описанной в этой статье: синтез 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模型结构图

Рисунок 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

  • r9y9/wavenet_vocoder

  • keithito/tacotron

Если вы хотите узнать больше о технологии искусственного интеллекта, добро пожаловать в зону искусственного интеллекта HUAWEI CLOUD.В настоящее время существует программирование искусственного интеллекта Python и т. д.Шесть боевых лагерейБесплатное обучение для всех.

Нажмите «Подписаться», чтобы впервые узнать о новых технологиях HUAWEI CLOUD~