xiph / rnnoise

Recurrent neural network for audio noise reduction
BSD 3-Clause "New" or "Revised" License
3.98k stars 890 forks source link

Reload my own trained model failure #74

Open momo1986 opened 5 years ago

momo1986 commented 5 years ago

I have my own data of speech and noise.

My reproducing step:

1) ./rnnoise/src/denoise_training speech_only.raw noise_only.raw 5000000 > output.f32 2) python ./rnnoise/training/bin2hdf5.py output.f32 500000 87 training.h5 3) python ./rnnoise/training/rnn_train.py (Input: training.h5; Output: weights.hdf5) 4) python ./rnnoise/training/dump_rnn.py weights.hdf5 rnn_data.c rnn_data record 5) cd rnnoise; ./autogen.sh 6) ./configure 7) make clean 8) make.

Failure in step 8) with the following log:

rm -f stamp-h1 touch config.h.in cd . && /bin/bash ./config.status config.h config.status: creating config.h config.status: config.h is unchanged make all-am make[1]: Entering directory '/slow/junyan/NoiseSupression/rnnoise' CC src/denoise.lo In file included from src/denoise.c:42: src/rnn_data.h:1:8: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘attribute’ before ‘-’ token rnnoise-nu model file version 1 ^ src/denoise.c:97:12: error: field ‘rnn’ has incomplete type RNNState rnn; ^~~ src/denoise.c: In function ‘rnnoise_init’: src/denoise.c:265:22: error: ‘rnnoise_model_orig’ undeclared (first use in this function); did you mean ‘rnnoise_model_free’? st->rnn.model = &rnnoise_model_orig; ^~~~~~ rnnoise_model_free src/denoise.c:265:22: note: each undeclared identifier is reported only once for each function it appears in Makefile:578: recipe for target 'src/denoise.lo' failed make[1]: [src/denoise.lo] Error 1 make[1]: Leaving directory '/slow/junyan/NoiseSupression/rnnoise' Makefile:412: recipe for target 'all' failed make: [all] Error 2

Hello, @GregorR and @jmvalin , how can I do some job to fix and resolve this problem?

Thanks & Regards! Momo

bourbonkk commented 5 years ago

Maybe if I'm in a similar situation,

Additional rnn_data.c

#include "rnn_data.h"

rnn_data.h Change Source Code

#ifndef RNN_DATA_H
#define RNN_DATA_H

#include "rnn.h"

struct RNNModel {
  int input_dense_size;
  const DenseLayer *input_dense;

  int vad_gru_size;
  const GRULayer *vad_gru;

  int noise_gru_size;
  const GRULayer *noise_gru;

  int denoise_gru_size;
  const GRULayer *denoise_gru;

  int denoise_output_size;
  const DenseLayer *denoise_output;

  int vad_output_size;
  const DenseLayer *vad_output;
  struct RNNModel *rnnoise_model_orig;
};

struct RNNState {
  const RNNModel *model;
  float *vad_gru_state;
  float *noise_gru_state;
  float *denoise_gru_state;
};

#endif
24suixinsuoyu commented 3 years ago

I have my own data of speech and noise.

My reproducing step:

  1. ./rnnoise/src/denoise_training speech_only.raw noise_only.raw 5000000 > output.f32
  2. python ./rnnoise/training/bin2hdf5.py output.f32 500000 87 training.h5
  3. python ./rnnoise/training/rnn_train.py (Input: training.h5; Output: weights.hdf5)
  4. python ./rnnoise/training/dump_rnn.py weights.hdf5 rnn_data.c rnn_data record
  5. cd rnnoise; ./autogen.sh
  6. ./configure
  7. make clean
  8. make.

Failure in step 8) with the following log:

rm -f stamp-h1 touch config.h.in cd . && /bin/bash ./config.status config.h config.status: creating config.h config.status: config.h is unchanged make all-am make[1]: Entering directory '/slow/junyan/NoiseSupression/rnnoise' CC src/denoise.lo In file included from src/denoise.c:42: src/rnn_data.h:1:8: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘attribute’ before ‘-’ token rnnoise-nu model file version 1 ^ src/denoise.c:97:12: error: field ‘rnn’ has incomplete type RNNState rnn; ^~~ src/denoise.c: In function ‘rnnoise_init’: src/denoise.c:265:22: error: ‘rnnoise_model_orig’ undeclared (first use in this function); did you mean ‘rnnoise_model_free’? st->rnn.model = &rnnoise_model_orig; ^~~~~~ rnnoise_model_free src/denoise.c:265:22: note: each undeclared identifier is reported only once for each function it appears in Makefile:578: recipe for target 'src/denoise.lo' failed make[1]: [src/denoise.lo] Error 1 make[1]: Leaving directory '/slow/junyan/NoiseSupression/rnnoise' Makefile:412: recipe for target 'all' failed make: [all] Error 2

Hello, @GregorR and @jmvalin , how can I do some job to fix and resolve this problem?

Thanks & Regards! Momo

I have met the same problem. Have you fixed it?

24suixinsuoyu commented 3 years ago

Maybe if I'm in a similar situation,

Additional rnn_data.c

#include "rnn_data.h"

rnn_data.h Change Source Code

#ifndef RNN_DATA_H
#define RNN_DATA_H

#include "rnn.h"

struct RNNModel {
  int input_dense_size;
  const DenseLayer *input_dense;

  int vad_gru_size;
  const GRULayer *vad_gru;

  int noise_gru_size;
  const GRULayer *noise_gru;

  int denoise_gru_size;
  const GRULayer *denoise_gru;

  int denoise_output_size;
  const DenseLayer *denoise_output;

  int vad_output_size;
  const DenseLayer *vad_output;
  struct RNNModel *rnnoise_model_orig;
};

struct RNNState {
  const RNNModel *model;
  float *vad_gru_state;
  float *noise_gru_state;
  float *denoise_gru_state;
};

#endif

It works for me. And refer to this link: https://github.com/xiph/rnnoise/issues/76#issuecomment-768208511