shithub: opus

Download patch

ref: db7569c3daa50c3664b70b08a9c0af3b6f0ddd49
parent: 5ff58fa1171143b9b15fc694e2c2fad9c184fef5
author: Jean-Marc Valin <jmvalin@jmvalin.ca>
date: Wed Oct 24 10:57:34 EDT 2018

moving hyper-parameters to new_lpcnet_model() arguments

more cleaning up too

--- a/dnn/lpcnet.py
+++ b/dnn/lpcnet.py
@@ -11,12 +11,9 @@
 import h5py
 import sys
 
-rnn_units1=384
-rnn_units2=16
 pcm_bits = 8
 embed_size = 128
 pcm_levels = 2**pcm_bits
-nb_used_features = 38
 
 class Sparsify(Callback):
     def __init__(self, t_start, t_end, interval, density):
@@ -88,7 +85,7 @@
             'seed': self.seed
         }
 
-def new_wavernn_model():
+def new_lpcnet_model(rnn_units1=384, rnn_units2=16, nb_used_features = 38):
     pcm = Input(shape=(None, 2))
     exc = Input(shape=(None, 1))
     feat = Input(shape=(None, nb_used_features))
@@ -127,6 +124,10 @@
     ulaw_prob = md(gru_out2)
     
     model = Model([pcm, exc, feat, pitch], ulaw_prob)
+    model.rnn_units1 = rnn_units1
+    model.rnn_units2 = rnn_units2
+    model.nb_used_features = nb_used_features
+
     encoder = Model([feat, pitch], cfeat)
     
     dec_rnn_in = Concatenate()([cpcm, cexc, dec_feat])
--- a/dnn/test_lpcnet.py
+++ b/dnn/test_lpcnet.py
@@ -15,12 +15,8 @@
 config.gpu_options.per_process_gpu_memory_fraction = 0.2
 set_session(tf.Session(config=config))
 
-nb_epochs = 40
-batch_size = 64
+model, enc, dec = lpcnet.new_lpcnet_model()
 
-#model = wavenet.new_wavenet_model(fftnet=True)
-model, enc, dec = lpcnet.new_wavernn_model()
-
 model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['sparse_categorical_accuracy'])
 #model.summary()
 
@@ -27,7 +23,7 @@
 feature_file = sys.argv[1]
 frame_size = 160
 nb_features = 55
-nb_used_features = lpcnet.nb_used_features
+nb_used_features = model.nb_used_features
 
 features = np.fromfile(feature_file, dtype='float32')
 features = np.resize(features, (-1, nb_features))
@@ -48,8 +44,8 @@
 pcm = np.zeros((nb_frames*pcm_chunk_size, ))
 fexc = np.zeros((1, 1, 2), dtype='float32')
 iexc = np.zeros((1, 1, 1), dtype='int16')
-state1 = np.zeros((1, lpcnet.rnn_units1), dtype='float32')
-state2 = np.zeros((1, lpcnet.rnn_units2), dtype='float32')
+state1 = np.zeros((1, model.rnn_units1), dtype='float32')
+state2 = np.zeros((1, model.rnn_units2), dtype='float32')
 
 mem = 0
 coef = 0.85
--- a/dnn/train_lpcnet.py
+++ b/dnn/train_lpcnet.py
@@ -28,8 +28,7 @@
 # Try reducing batch_size if you run out of memory on your GPU
 batch_size = 64
 
-# Note we are creating a LPCNet model
-model, _, _ = lpcnet.new_wavernn_model()
+model, _, _ = lpcnet.new_lpcnet_model()
 
 model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['sparse_categorical_accuracy'])
 model.summary()
@@ -40,7 +39,7 @@
 pcm_file = sys.argv[4]     # 16 bit unsigned short PCM samples
 frame_size = 160
 nb_features = 55
-nb_used_features = lpcnet.nb_used_features
+nb_used_features = model.nb_used_features
 feature_chunk_size = 15
 pcm_chunk_size = frame_size*feature_chunk_size
 
--