ref: f884d7bf1892904c4318e75cdb909e7485583ded
parent: fd9002e98e804e388e0a150b7e5617282b29e876
author: Jean-Marc Valin <jmvalin@jmvalin.ca>
date: Tue Jun 26 13:14:29 EDT 2018
add convolution
--- a/dnn/lpcnet.py
+++ b/dnn/lpcnet.py
@@ -16,15 +16,22 @@
def new_wavernn_model():
- pcm = Input(shape=(None, 2))
+ pcm = Input(shape=(None, 1))
+ pitch = Input(shape=(None, 1))
feat = Input(shape=(None, nb_used_features))
+ conv1 = Conv1D(16, 7, padding='causal')
+ pconv1 = Conv1D(16, 5, padding='same')
+ pconv2 = Conv1D(16, 5, padding='same')
+
+ cpcm = conv1(pcm)
+ cpitch = pconv2(pconv1(pitch))
rep = Lambda(lambda x: K.repeat_elements(x, 160, 1))
rnn = CuDNNGRU(rnn_units, return_sequences=True)
- rnn_in = Concatenate()([pcm, rep(feat)])
+ rnn_in = Concatenate()([cpcm, cpitch, rep(feat)])
md = MDense(pcm_levels, activation='softmax')
ulaw_prob = md(rnn(rnn_in))
- model = Model([pcm, feat], ulaw_prob)
+ model = Model([pcm, pitch, feat], ulaw_prob)
return model
--- a/dnn/train_lpcnet.py
+++ b/dnn/train_lpcnet.py
@@ -56,7 +56,7 @@
features = features[:, :, :nb_used_features]
-in_data = np.concatenate([in_data, in_pitch], axis=-1)
+#in_data = np.concatenate([in_data, in_pitch], axis=-1)
#with h5py.File('in_data.h5', 'w') as f: # f.create_dataset('data', data=in_data[:50000, :, :])@@ -66,4 +66,4 @@
#model.load_weights('wavernn1c_01.h5')model.compile(optimizer=Adam(0.002, amsgrad=True, decay=2e-4), loss='sparse_categorical_crossentropy', metrics=['sparse_categorical_accuracy'])
-model.fit([in_data, features], out_data, batch_size=batch_size, epochs=30, validation_split=0.2, callbacks=[checkpoint])
+model.fit([in_data, in_pitch, features], out_data, batch_size=batch_size, epochs=30, validation_split=0.2, callbacks=[checkpoint])
--
⑨