From 6cba42f999866b614c0d70b09b603c175fbdbc4d Mon Sep 17 00:00:00 2001
From: Jean-Marc Valin <jmvalin@amazon.com>
Date: Fri, 4 Aug 2023 16:16:58 -0400
Subject: [PATCH] Add fwgan_load_model()

---
 dnn/fwgan.c | 11 +++++++++++
 dnn/fwgan.h |  1 +
 2 files changed, 12 insertions(+)

diff --git a/dnn/fwgan.c b/dnn/fwgan.c
index b349fe208..562ffe93a 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 b7fe28c0d..acb7014d7 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);
 
-- 
GitLab