ref: d53531d0bd600e9d1d2400bb801cb381245321c4
parent: 0b75501270eef6477bd337987fd24d92ba80112f
author: Jean-Marc Valin <jmvalin@amazon.com>
date: Sun Oct 29 12:33:57 EDT 2023
Update blob loading code
--- a/dnn/fargan.c
+++ b/dnn/fargan.c
@@ -174,7 +174,11 @@
{int ret;
OPUS_CLEAR(st, 1);
+#ifndef USE_WEIGHTS_FILE
ret = init_fargan(&st->model, fargan_arrays);
+#else
+ ret = 0;
+#endif
celt_assert(ret == 0);
/* FIXME: perform arch detection. */
}
--- a/dnn/lpcnet.h
+++ b/dnn/lpcnet.h
@@ -94,6 +94,8 @@
*/
int lpcnet_encoder_init(LPCNetEncState *st);
+int lpcnet_encoder_load_model(LPCNetEncState *st, const unsigned char *data, int len);
+
/** Allocates and initializes an encoder state.
* @returns The newly created state
*/
--- a/dnn/lpcnet_demo.c
+++ b/dnn/lpcnet_demo.c
@@ -148,7 +148,7 @@
float zeros[320] = {0};fargan_init(&fargan);
#ifdef USE_WEIGHTS_FILE
- fargan_load_model(fwgan, data, len);
+ fargan_load_model(&fargan, data, len);
#endif
/* uncomment the following to align with Python code */
/*ret = fread(&in_features[0], sizeof(in_features[0]), NB_TOTAL_FEATURES, fin);*/
--- a/dnn/lpcnet_enc.c
+++ b/dnn/lpcnet_enc.c
@@ -56,6 +56,10 @@
return 0;
}
+int lpcnet_encoder_load_model(LPCNetEncState *st, const unsigned char *data, int len) {+ return pitchdnn_load_model(&st->pitchdnn, data, len);
+}
+
LPCNetEncState *lpcnet_encoder_create(void) {LPCNetEncState *st;
st = malloc(lpcnet_encoder_get_size());
--- a/dnn/lpcnet_plc.c
+++ b/dnn/lpcnet_plc.c
@@ -74,6 +74,9 @@
ret = init_plc_model(&st->model, list);
free(list);
if (ret == 0) {+ ret = lpcnet_encoder_load_model(&st->enc, data, len);
+ } else return -1;
+ if (ret == 0) {return fargan_load_model(&st->fargan, data, len);
}
else return -1;
--- a/dnn/pitchdnn.c
+++ b/dnn/pitchdnn.c
@@ -67,3 +67,13 @@
celt_assert(ret == 0);
/* FIXME: perform arch detection. */
}
+
+int pitchdnn_load_model(PitchDNNState *st, const unsigned char *data, int len) {+ WeightArray *list;
+ int ret;
+ parse_weights(&list, data, len);
+ ret = init_pitchdnn(&st->model, list);
+ free(list);
+ if (ret == 0) return 0;
+ else return -1;
+}
--- a/dnn/pitchdnn.h
+++ b/dnn/pitchdnn.h
@@ -22,6 +22,7 @@
void pitchdnn_init(PitchDNNState *st);
+int pitchdnn_load_model(PitchDNNState *st, const unsigned char *data, int len);
float compute_pitchdnn(
PitchDNNState *st,
--- a/silk/dred_encoder.c
+++ b/silk/dred_encoder.c
@@ -54,6 +54,9 @@
parse_weights(&list, data, len);
ret = init_rdovaeenc(&enc->model, list);
free(list);
+ if (ret == 0) {+ ret = lpcnet_encoder_load_model(&enc->lpcnet_enc_state, data, len);
+ }
return (ret == 0) ? OPUS_OK : OPUS_BAD_ARG;
}
--
⑨