ref: 8e3ce6e839536a7ba785bbb0d4891fc7b93da948
parent: b2847687e08bfd3f1e03c132a42f14c90af58616
author: Jean-Marc Valin <jmvalin@amazon.com>
date: Wed Feb 9 09:14:23 EST 2022
Add no-blending version
--- a/dnn/lpcnet_plc.c
+++ b/dnn/lpcnet_plc.c
@@ -44,6 +44,7 @@
st->skip_analysis = 0;
st->blend = 0;
st->loss_count = 0;
+ st->enable_blending = 1;
}
LPCNET_EXPORT LPCNetPLCState *lpcnet_plc_create() {@@ -87,11 +88,16 @@
RNN_COPY(zeros, plc_features, 2*NB_BANDS);
zeros[2*NB_BANDS+NB_FEATURES] = 1;
compute_plc_pred(&st->plc_net, st->features, zeros);
- lpcnet_synthesize_impl(&st->lpcnet, &st->features[0], tmp, FRAME_SIZE-TRAINING_OFFSET, 0);
- for (i=0;i<FRAME_SIZE-TRAINING_OFFSET;i++) {- float w;
- w = .5 - .5*cos(M_PI*i/(FRAME_SIZE-TRAINING_OFFSET));
- pcm[i] = (int)floor(.5 + w*pcm[i] + (1-w)*tmp[i]);
+ if (st->enable_blending) {+ lpcnet_synthesize_impl(&st->lpcnet, &st->features[0], tmp, FRAME_SIZE-TRAINING_OFFSET, 0);
+ for (i=0;i<FRAME_SIZE-TRAINING_OFFSET;i++) {+ float w;
+ w = .5 - .5*cos(M_PI*i/(FRAME_SIZE-TRAINING_OFFSET));
+ pcm[i] = (int)floor(.5 + w*pcm[i] + (1-w)*tmp[i]);
+ }
+ } else {+ RNN_COPY(tmp, pcm, FRAME_SIZE-TRAINING_OFFSET);
+ lpcnet_synthesize_tail_impl(&st->lpcnet, tmp, FRAME_SIZE-TRAINING_OFFSET, FRAME_SIZE-TRAINING_OFFSET);
}
st->blend = 0;
RNN_COPY(st->pcm, &pcm[FRAME_SIZE-TRAINING_OFFSET], TRAINING_OFFSET);
--- a/dnn/lpcnet_private.h
+++ b/dnn/lpcnet_private.h
@@ -78,6 +78,7 @@
float features[NB_TOTAL_FEATURES];
int loss_count;
PLCNetState plc_net;
+ int enable_blending;
};
extern float ceps_codebook1[];
--
⑨