ref: 022f2b7ebc603a02a1bba75a64a5cf25d4dab420
parent: f7ee7137425729b4759d868b64ca3d18f2ab0f95
author: Jean-Marc Valin <jmvalin@amazon.com>
date: Fri Aug 4 10:34:09 EDT 2023
int version for convenience
--- a/dnn/fwgan.c
+++ b/dnn/fwgan.c
@@ -301,3 +301,11 @@
OPUS_COPY(&pcm[FWGAN_FRAME_SIZE-SUBFRAME_SIZE], new_pcm, SUBFRAME_SIZE);
OPUS_COPY(st->pcm_buf, &new_pcm[SUBFRAME_SIZE], FWGAN_FRAME_SIZE-SUBFRAME_SIZE);
}
+
+void fwgan_synthesize_int(FWGANState *st, opus_int16 *pcm, const float *features)
+{
+ int i;
+ float fpcm[FWGAN_FRAME_SIZE];
+ fwgan_synthesize(st, fpcm, features);
+ for (i=0;i<LPCNET_FRAME_SIZE;i++) pcm[i] = (int)floor(.5 + MIN32(32767, MAX32(-32767, 32768.f*fpcm[i])));
+}
--- a/dnn/fwgan.h
+++ b/dnn/fwgan.h
@@ -76,6 +76,7 @@
void fwgan_cont(FWGANState *st, const float *pcm0, const float *features0);
void fwgan_synthesize(FWGANState *st, float *pcm, const float *features);
+void fwgan_synthesize_int(FWGANState *st, opus_int16 *pcm, const float *features);
#endif /* FWGAN_H */
--
⑨