ref: 8d62ba067e9a1cbc806f26a4616365a71a457a83
parent: c0e8f37c8bd2f9e6470979e210b5c2b61b9eedfd
author: Jean-Marc Valin <jmvalin@jmvalin.ca>
date: Mon Nov 26 10:39:06 EST 2018
...
--- a/dnn/lpcnet.c
+++ b/dnn/lpcnet.c
@@ -124,7 +124,11 @@
float condition[FEATURE_DENSE2_OUT_SIZE];
float lpc[LPC_ORDER];
float pdf[DUAL_FC_OUT_SIZE];
- int pitch = (int)floor(.5 + 50*features[36]+100);
+ int pitch;
+ float pitch_gain;
+ pitch = (int)floor(.5 + 50*features[36]+100);
+ /* FIXME: get the pitch gain from 2 frames in the past. */
+ pitch_gain = features[PITCH_GAIN_FEATURE];
run_frame_network(&lpcnet->nnet, condition, lpc, features, pitch);
for (i=0;i<N;i++)
{@@ -139,7 +143,7 @@
last_sig_ulaw = lin2ulaw(lpcnet->last_sig[0]);
pred_ulaw = lin2ulaw(pred);
run_sample_network(&lpcnet->nnet, pdf, condition, lpcnet->last_exc, last_sig_ulaw, pred_ulaw);
- exc = sample_from_pdf(pdf, DUAL_FC_OUT_SIZE, MAX16(0, 1.5f*features[PITCH_GAIN_FEATURE] - .5f), PDF_FLOOR);
+ exc = sample_from_pdf(pdf, DUAL_FC_OUT_SIZE, MAX16(0, 1.5f*pitch_gain - .5f), PDF_FLOOR);
output[i] = pred + ulaw2lin(exc);
RNN_MOVE(&lpcnet->last_sig[1], &lpcnet->last_sig[0], LPC_ORDER-1);
lpcnet->last_sig[0] = output[i];
--
⑨