diff --git a/dnn/fwgan.c b/dnn/fwgan.c index b349fe20843338f64fde0d2f2011aa34d25c144e..562ffe93aa4247b84c5d0a0c6b3720cf76d42724 100644 --- a/dnn/fwgan.c +++ b/dnn/fwgan.c @@ -35,6 +35,7 @@ #include "lpcnet.h" #include "pitch.h" #include "nnet.h" +#include "lpcnet_private.h" #define FEAT_IN_SIZE (BFCC_WITH_CORR_UPSAMPLER_FC_OUT_SIZE/4 + FWGAN_FRAME_SIZE/2) @@ -269,6 +270,16 @@ void fwgan_init(FWGANState *st) /* FIXME: perform arch detection. */ } +int fwgan_load_model(FWGANState *st, const unsigned char *data, int len) { + WeightArray *list; + int ret; + parse_weights(&list, data, len); + ret = init_fwgan(&st->model, list); + free(list); + if (ret == 0) return 0; + else return -1; +} + static void fwgan_synthesize_impl(FWGANState *st, float *pcm, const float *lpc, const float *features) { int subframe; diff --git a/dnn/fwgan.h b/dnn/fwgan.h index b7fe28c0d48870adcd65e38778dd3eb5163ec813..acb7014d7c165d73ac30c2e52fe8f34725a4f7d6 100644 --- a/dnn/fwgan.h +++ b/dnn/fwgan.h @@ -72,6 +72,7 @@ typedef struct { } FWGANState; void fwgan_init(FWGANState *st); +int fwgan_load_model(FWGANState *st, const unsigned char *data, int len); void fwgan_cont(FWGANState *st, const float *pcm0, const float *features0);