Chopping silence from the training data

This commit is contained in:
Jean-Marc Valin 2018-12-01 14:38:27 -05:00
parent 407eec127c
commit f933725677
2 changed files with 22 additions and 4 deletions

View file

@ -633,6 +633,9 @@ int main(int argc, char **argv) {
signed char iexc[FRAME_SIZE]; signed char iexc[FRAME_SIZE];
short pred[FRAME_SIZE]; short pred[FRAME_SIZE];
short pcm[FRAME_SIZE]; short pcm[FRAME_SIZE];
short tmp[FRAME_SIZE] = {0};
float savedX[FRAME_SIZE] = {0};
int last_silent = 1;
DenoiseState *st; DenoiseState *st;
st = rnnoise_create(); st = rnnoise_create();
if (argc!=4) { if (argc!=4) {
@ -649,18 +652,33 @@ int main(int argc, char **argv) {
float Ln[NB_BANDS]; float Ln[NB_BANDS];
float features[NB_FEATURES]; float features[NB_FEATURES];
float g[NB_BANDS]; float g[NB_BANDS];
short tmp[FRAME_SIZE];
float E=0; float E=0;
int silent;
for (i=0;i<FRAME_SIZE;i++) x[i] = tmp[i];
fread(tmp, sizeof(short), FRAME_SIZE, f1); fread(tmp, sizeof(short), FRAME_SIZE, f1);
if (feof(f1)) { if (feof(f1)) {
return 0; return 0;
} }
for (i=0;i<FRAME_SIZE;i++) x[i] = tmp[i];
for (i=0;i<FRAME_SIZE;i++) x[i] += rand()/(float)RAND_MAX - .5;
for (i=0;i<FRAME_SIZE;i++) E += tmp[i]*(float)tmp[i]; for (i=0;i<FRAME_SIZE;i++) E += tmp[i]*(float)tmp[i];
silent = E < 5000 || (last_silent && E < 20000);
if (!last_silent && silent) {
for (i=0;i<FRAME_SIZE;i++) savedX[i] = x[i];
}
if (last_silent && !silent) {
for (i=0;i<FRAME_SIZE;i++) {
float f = (float)i/FRAME_SIZE;
tmp[i] = (int)floor(.5 + f*tmp[i] + (1-f)*savedX[i]);
}
}
if (last_silent) {
last_silent = silent;
continue;
}
last_silent = silent;
biquad(x, mem_hp_x, x, b_hp, a_hp, FRAME_SIZE); biquad(x, mem_hp_x, x, b_hp, a_hp, FRAME_SIZE);
preemphasis(x, &mem_preemph, x, PREEMPHASIS, FRAME_SIZE); preemphasis(x, &mem_preemph, x, PREEMPHASIS, FRAME_SIZE);
for (i=0;i<FRAME_SIZE;i++) x[i] += rand()/(float)RAND_MAX - .5;
compute_frame_features(st, iexc, pred, pcm, X, P, Ex, Ep, Exp, features, x); compute_frame_features(st, iexc, pred, pcm, X, P, Ex, Ep, Exp, features, x);
fwrite(features, sizeof(float), NB_FEATURES, ffeat); fwrite(features, sizeof(float), NB_FEATURES, ffeat);
fwrite(pcm, sizeof(short), FRAME_SIZE, fpcm); fwrite(pcm, sizeof(short), FRAME_SIZE, fpcm);

View file

@ -136,7 +136,7 @@ periods = (50*features[:,:,36:37]+100).astype('int16')
in_data = np.concatenate([in_data, pred], axis=-1) in_data = np.concatenate([in_data, pred], axis=-1)
# dump models to disk as we go # dump models to disk as we go
checkpoint = ModelCheckpoint('lpcnet9b_384_10_G16_{epoch:02d}.h5') checkpoint = ModelCheckpoint('lpcnet9c_384_10_G16_{epoch:02d}.h5')
#model.load_weights('wavenet4f2_30.h5') #model.load_weights('wavenet4f2_30.h5')
model.compile(optimizer=Adam(0.001, amsgrad=True, decay=5e-5), loss='sparse_categorical_crossentropy', metrics=['sparse_categorical_accuracy']) model.compile(optimizer=Adam(0.001, amsgrad=True, decay=5e-5), loss='sparse_categorical_crossentropy', metrics=['sparse_categorical_accuracy'])