diff --git a/dnn/dump_data.c b/dnn/dump_data.c
index 5367d53e836ea969027b825ae19f345975d3651b..b29bfaa5f4240604ab85f94a0eddf2c3322f5668 100644
--- a/dnn/dump_data.c
+++ b/dnn/dump_data.c
@@ -244,13 +244,14 @@ int main(int argc, char **argv) {
     if (training && ++gain_change_count > 2821) {
       float tmp, tmp2;
       speech_gain = pow(10., (-20+(rand()%40))/20.);
+      if (rand()&1) speech_gain = -speech_gain;
       if (rand()%20==0) speech_gain *= .01;
       if (rand()%100==0) speech_gain = 0;
       gain_change_count = 0;
       rand_resp(a_sig, b_sig);
       tmp = (float)rand()/RAND_MAX;
       tmp2 = (float)rand()/RAND_MAX;
-      noise_std = -log(tmp)-log(tmp2);
+      noise_std = ABS16(-1.5*log(1e-4+tmp)-.5*log(1e-4+tmp2));
     }
     biquad(x, mem_hp_x, x, b_hp, a_hp, FRAME_SIZE);
     biquad(x, mem_resp_x, x, b_sig, a_sig, FRAME_SIZE);
diff --git a/dnn/lpcnet_private.h b/dnn/lpcnet_private.h
index df9da32945378b52a0fa97af8aacbb7ae1dbb33c..2fa92d456e8a495d71d2a6e9adbca73083d9777b 100644
--- a/dnn/lpcnet_private.h
+++ b/dnn/lpcnet_private.h
@@ -1,6 +1,7 @@
 #ifndef LPCNET_PRIVATE_H
 #define LPCNET_PRIVATE_H
 
+#include <stdio.h>
 #include "common.h"
 #include "freq.h"
 #include "lpcnet.h"
@@ -74,4 +75,6 @@ void compute_frame_features(LPCNetEncState *st, const float *in);
 
 void decode_packet(float features[4][NB_TOTAL_FEATURES], float *vq_mem, const unsigned char buf[8]);
 
+void process_single_frame(LPCNetEncState *st, FILE *ffeat);
+
 #endif