-mamah Thanks for your replay.To answer your question
1. I've trained the wavenet model and try to synthesize from the same version of the repo
2. I followed the following steps to reproduce the issue. To reproduce the issue I've made changes before running training program.
- It should be noted that when I clone the repository, head commit of master branch was @this commit
- I am using tensorflow version 1.8.0
- I've placed LJ dataset inside project folder
- I've created test.txt file and placed a single sentence("Hello world!"), for evaluation.
STEP - 1 Makeing some changes.
I will explain why I made each change.
I've made some changes to hparam.py (To deal with low memory gpu). If you want to see the changes I may post it here.
I've changed the
--tacotron_train_steps`` and ``--wavenet_train_steps values of train.py to 200, to reproduce the issue quickly.
I was getting
AttributeError: 'tuple' object has no attribute '_uses_learning_phase' error message for calling functions which return tuple. So I changed tuple return values of some functions [ResidualConv1DGLU.call,CausalConv1D.call] to lists.
After completing this I was getting another error message.
TypeError: This Layer takes aninputs
argument to call(), and only theinputs
argument may be specified as a positional argument. Pass everything else as a keyword argument (those arguments will not be tracked as inputs to the Layer).. To fix this I've changed some lines to call methods with keyword arguments.[ResidualConv1DGLU.incremental_step,WaveNet.step]
info argument name of
plot.plot_alignment method call with
title argument [tacotron.Synthesizer.synthesize(1,2,3)] (This is because the method definition does not have
wavenet_vocoder.modules.CausalConv1D.call method when
convolution_queue is None, I was getting error message
AttributeError: 'NoneType' object has no attribute '_keras_mask'. To fix this issue I've changed the following code.
return tf.reshape(output, [batch_size, 1, self.layer.filters]), convolution_queue
if convolution_queue is None:
return tf.reshape(output, [batch_size, 1, self.layer.filters])
return [tf.reshape(output, [batch_size, 1, self.layer.filters]), convolution_queue]
STEP - 2 running preprocessor.py
STEP - 3 Training Tacotron model
python train.py --model "Tacotron"
STEP - 4 Synthesis training data for wavenet using Tacotron model
python synthesize.py --model Tacotron --GTA True --mode synthesis
STEP - 5 Training WaveNet model
python train.py --model "WaveNet"
STEP-6 Synthesizing mels with Tacotron for evaluation
python synthesize.py --model Tacotron --GTA False --mode eval --text_list test.txt
STEP-7 Synthsizing audio with wavenet model.
python synthesize.py --model WaveNet --mode eval
After this the program throws the error message.