diff options
author | Haibo Huang <hhb@google.com> | 2021-02-10 21:15:07 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2021-02-10 21:15:07 +0000 |
commit | 6089c0cca8a99b63404effe27648134ca6dc70bf (patch) | |
tree | 1a8fb98aaf1613de239cdf1bf3fa5f69c6e65d9e | |
parent | 8ac3b9e918733fcc24540c890f278f35b34836dd (diff) | |
parent | 65f7b9f4daaa666a63e6fb0b9c91278059a4821d (diff) | |
download | rnnoise-6089c0cca8a99b63404effe27648134ca6dc70bf.tar.gz |
Upgrade rnnoise to 1cbdbcf1283499bbb2230a6b0f126eb9b236defd am: 1713531765 am: ac740d3c4f am: 314439c193 am: 65f7b9f4da
Original change: https://android-review.googlesource.com/c/platform/external/rnnoise/+/1582213
MUST ONLY BE SUBMITTED BY AUTOMERGER
Change-Id: Id58ae8232e4966ae49908e6bb0e63b4452cf218d
-rw-r--r-- | METADATA | 6 | ||||
-rw-r--r-- | README | 2 | ||||
-rw-r--r-- | include/rnnoise.h | 42 | ||||
-rw-r--r-- | src/denoise.c | 4 | ||||
-rw-r--r-- | src/rnn.h | 2 |
5 files changed, 51 insertions, 5 deletions
@@ -9,11 +9,11 @@ third_party { type: GIT value: "https://github.com/xiph/rnnoise.git" } - version: "125d8a56e0049728c86c9a575dab348fc9523e96" + version: "1cbdbcf1283499bbb2230a6b0f126eb9b236defd" license_type: NOTICE last_upgrade_date { year: 2021 - month: 1 - day: 18 + month: 2 + day: 9 } } @@ -12,7 +12,7 @@ While it is meant to be used as a library, a simple command-line tool is provided as an example. It operates on RAW 16-bit (machine endian) mono PCM files sampled at 48 kHz. It can be used as: -./examples/rnnoise_demo <number of channels> <maximum attenuation> < input.raw > output.raw +./examples/rnnoise_demo <noisy speech> <output denoised> The output is also a 16-bit raw PCM file. diff --git a/include/rnnoise.h b/include/rnnoise.h index 511a976..c4215d9 100644 --- a/include/rnnoise.h +++ b/include/rnnoise.h @@ -51,18 +51,60 @@ extern "C" { typedef struct DenoiseState DenoiseState; typedef struct RNNModel RNNModel; +/** + * Return the size of DenoiseState + */ RNNOISE_EXPORT int rnnoise_get_size(); +/** + * Return the number of samples processed by rnnoise_process_frame at a time + */ +RNNOISE_EXPORT int rnnoise_get_frame_size(); + +/** + * Initializes a pre-allocated DenoiseState + * + * If model is NULL the default model is used. + * + * See: rnnoise_create() and rnnoise_model_from_file() + */ RNNOISE_EXPORT int rnnoise_init(DenoiseState *st, RNNModel *model); +/** + * Allocate and initialize a DenoiseState + * + * If model is NULL the default model is used. + * + * The returned pointer MUST be freed with rnnoise_destroy(). + */ RNNOISE_EXPORT DenoiseState *rnnoise_create(RNNModel *model); +/** + * Free a DenoiseState produced by rnnoise_create. + * + * The optional custom model must be freed by rnnoise_model_free() after. + */ RNNOISE_EXPORT void rnnoise_destroy(DenoiseState *st); +/** + * Denoise a frame of samples + * + * in and out must be at least rnnoise_get_frame_size() large. + */ RNNOISE_EXPORT float rnnoise_process_frame(DenoiseState *st, float *out, const float *in); +/** + * Load a model from a file + * + * It must be deallocated with rnnoise_model_free() + */ RNNOISE_EXPORT RNNModel *rnnoise_model_from_file(FILE *f); +/** + * Free a custom model + * + * It must be called after all the DenoiseStates referring to it are freed. + */ RNNOISE_EXPORT void rnnoise_model_free(RNNModel *model); #ifdef __cplusplus diff --git a/src/denoise.c b/src/denoise.c index d1c21dc..5a62844 100644 --- a/src/denoise.c +++ b/src/denoise.c @@ -257,6 +257,10 @@ int rnnoise_get_size() { return sizeof(DenoiseState); } +int rnnoise_get_frame_size() { + return FRAME_SIZE; +} + int rnnoise_init(DenoiseState *st, RNNModel *model) { memset(st, 0, sizeof(*st)); if (model) @@ -66,4 +66,4 @@ void compute_gru(const GRULayer *gru, float *state, const float *input); void compute_rnn(RNNState *rnn, float *gains, float *vad, const float *input); -#endif /* _MLP_H_ */ +#endif /* RNN_H_ */ |