ref: 3f7756c53f30169abb3d7cadeffc20b886e51dce
parent: 144b7311bc84ff4985b692642a633fb29f990b81
author: Jean-Marc Valin <jmvalin@amazon.com>
date: Wed Oct 20 00:01:12 EDT 2021
Bring test_lpcnet.py up-to-date
--- a/dnn/training_tf2/lpcnet.py
+++ b/dnn/training_tf2/lpcnet.py
@@ -313,7 +313,7 @@
if not flag_e2e:
encoder = Model([feat, pitch], cfeat)
- dec_rnn_in = Concatenate()([cpcm, dec_feat])
+ dec_rnn_in = Concatenate()([cpcm_decoder, dec_feat])
else:
encoder = Model([feat, pitch], [cfeat,lpcoeffs])
dec_rnn_in = Concatenate()([cpcm_decoder, dec_feat])
@@ -324,5 +324,5 @@
if flag_e2e:
decoder = Model([dpcm, dec_feat, dec_state1, dec_state2], [dec_ulaw_prob, state1, state2])
else:
- decoder = Model([pcm, dec_feat, dec_state1, dec_state2, lpcoeffs], [dec_ulaw_prob, state1, state2])
+ decoder = Model([dpcm, dec_feat, dec_state1, dec_state2], [dec_ulaw_prob, state1, state2])
return model, encoder, decoder
--- a/dnn/training_tf2/test_lpcnet.py
+++ b/dnn/training_tf2/test_lpcnet.py
@@ -31,16 +31,22 @@
from ulaw import ulaw2lin, lin2ulaw
import h5py
-# Flag for synthesizing e2e (differentiable lpc) model
-flag_e2e = False
+filename = sys.argv[1]
+with h5py.File(filename, "r") as f:
+ units = min(f['model_weights']['gru_a']['gru_a']['recurrent_kernel:0'].shape)
+ units2 = min(f['model_weights']['gru_b']['gru_b']['recurrent_kernel:0'].shape)
+ cond_size = min(f['model_weights']['feature_dense1']['feature_dense1']['kernel:0'].shape)
+ e2e = 'rc2lpc' in f['model_weights']
-model, enc, dec = lpcnet.new_lpcnet_model(training = False, flag_e2e = flag_e2e)
+model, enc, dec = lpcnet.new_lpcnet_model(training = False, rnn_units1=units, rnn_units2=units2, flag_e2e = e2e, cond_size=cond_size, batch_size=1)
+
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['sparse_categorical_accuracy'])
#model.summary()
-feature_file = sys.argv[1]
-out_file = sys.argv[2]
+
+feature_file = sys.argv[2]
+out_file = sys.argv[3]
frame_size = model.frame_size
nb_features = 36
nb_used_features = model.nb_used_features
@@ -56,7 +62,7 @@
-model.load_weights('lpcnet38Sn_384_02.h5');
+model.load_weights(filename);
order = 16
@@ -72,13 +78,13 @@
skip = order + 1
for c in range(0, nb_frames):
- if not flag_e2e:
+ if not e2e:
cfeat = enc.predict([features[c:c+1, :, :nb_used_features], periods[c:c+1, :, :]])
else:
cfeat,lpcs = enc.predict([features[c:c+1, :, :nb_used_features], periods[c:c+1, :, :]])
for fr in range(0, feature_chunk_size):
f = c*feature_chunk_size + fr
- if not flag_e2e:
+ if not e2e:
a = features[c, fr, nb_features-order:]
else:
a = lpcs[c,fr]
--
⑨