Текущие заметки Tacotron2

алгоритм

Это первый день моего участия в ноябрьском испытании обновлений, подробности о мероприятии:Вызов последнего обновления 2021 г.

адрес проектаNVIDIA/tacotron2, сначала клонируйте

git clone https://github.com/NVIDIA/tacotron2

Среда конфигурации

Моя экспериментальная среда (ubuntu):

python==3.6.12
numpy==1.17.0
matplotlib==2.1.0
scipy==1.0.0
numba==0.48.0
librosa==0.6.0
tensorflow==1.15.2
pytorch==1.1.0
torchvision==0.3.0
inflect==0.2.5
Unidecode==1.0.22

Поскольку версия cuda нашего лабораторного сервера — 9.0, мы можем использовать только PyTorch версии 1.1.0, иначе нельзя будет использовать GPU. Однако некоторые новые функции PyTorch 1.3 и выше используются в исходном коде этого проекта, поэтому сначала мне нужно изменить часть исходного кода (если ваша версия Pytorch больше или равна 1.3, вы можете пропустить эту часть)

Первый способ изменитьсяutils.pyстрока 9

# mask = (ids < lengths.unsqueeze(1)).bool()
mask = (ids < lengths.unsqueeze(1)).to(torch.bool)

Второе место для измененияmodel.pyСтроки 401 и 488

# memory, mask=~get_mask_from_lengths(memory_lengths)
memory, mask = get_mask_from_lengths(memory_lengths) <= 0

# mask=~get_mask_from_lengths(output_lengths)
mask = get_mask_from_lengths(output_lengths) <= 0

Выше перечислены изменения, которые необходимо внести нескольким людям, а упомянутые ниже изменения — это изменения, которые необходимо внести всем.filelists/Измените содержимое трех файлов в каталоге соответствующим образом.

В каждом файле есть два столбца, первый столбец — это расположение голосовых данных, а второй столбец — это текст, соответствующий голосу.

Что мы хотим изменить, так это первый столбец, в основном на основе того, что вы скачали.LJSpeech Datasetпуть хранения. например я будуLJSpeech-1.1/положи этоtacotron2/под каталогом, сtacotron2/train.pyтот же уровень, то мой путь должен быть изменен на

начать обучение

один графический процессор

Если у вас только один графический процессор, выполните следующую команду, чтобы начать обучение.

python train.py --output_directory=outdir --log_directory=logdir

Несколько графических процессоров

Обучение работе с несколькими графическими процессорами, первая установкаApex

git clone https://github.com/NVIDIA/apex
cd apex
pip install -v --no-cache-dir ./

Затем вручную создайте новый каталогmkdir tacotron2/logs

Наконец, выполните следующую команду

python -m multiproc train.py --output_directory=outdir --log_directory=logdir --hparams=distributed_run=True,fp16_run=True

контрольная работа

Был предоставлен тестовый код, т.е.inference.ipyndдокумент

Прежде всего, мы заметили, что в оригинальном проекте папка waveglow пуста, нам нужно сначала клонировать код waveglow, иначе при импорте шумоподавителя будет сообщение об ошибке

git clone https://github.com/NVIDIA/waveglow.git

Затем вам нужно убедиться, что версия tensorflow 1.x, если она 2, будет сообщено об ошибке, если вам будет предложено, что нет библиотеки unidecode, пожалуйста, сделайте пип

Выше приведены некоторые ямки, возникающие при запуске программы, а ниже приведены некоторые части кода, которые необходимо изменить.

Сначала в модели загрузки с контрольной точки,checkpoint_pathВы можете использовать собственную обученную модель вместо официальной предварительно обученной модели. Модели, обученные сами по себе, хранятся вoutdir/, можно выбрать подходящий, например, я выбралoutdir/checkpoint_59000

Затем в Load WaveGlow для синтеза mel2audio и шумоподавления нужноwaveglow_256channels_universal_v5.ptэтот файл, пожалуйста, скачайтеWaveGlow model

После выполнения вышеуказанных шагов вы можете запустить

Решения распространенных ошибок во время обучения

  1. CUDA out of memory,будетhparams.pyсерединаbatch_sizeЗначение параметра можно изменить на меньшее значение
  2. No module named numba.decorators, сначала удалите numbapip uninstall numba, а затем установите версию 0.48.0pip install numba==0.48.0
  3. numpy.core.multiarray failed to import, убедитесь, что установленная вами версия numpy меньше 1.19 и больше 1.15