diff --git a/dnn/fwgan.c b/dnn/fwgan.c new file mode 100644 index 0000000000000000000000000000000000000000..bce3670aaa807aa9dedc10244267473173bb2131 --- /dev/null +++ b/dnn/fwgan.c @@ -0,0 +1,51 @@ +/* Copyright (c) 2023 Amazon */ +/* + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "fwgan.h" +#include "os_support.h" +#include "freq.h" + +void fwgan_init(FWGANState *st, const float *pcm) +{ + OPUS_CLEAR(st, 1); +} + +static void run_fwgan(FWGANState *st, float *pcm, const float *input) +{ + +} + +void fwgan_synthesize(FWGANState *st, float *pcm, const float *features) +{ + float lpc[LPC_ORDER]; + lpc_from_cepstrum(lpc, features); + run_fwgan(st, pcm, features); + /* Run LPC filter. */ +} diff --git a/dnn/fwgan.h b/dnn/fwgan.h new file mode 100644 index 0000000000000000000000000000000000000000..84749176c13808d9a01c8097101621113b1b4dae --- /dev/null +++ b/dnn/fwgan.h @@ -0,0 +1,44 @@ +/* Copyright (c) 2023 Amazon */ +/* + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#ifndef FWGAN_H +#define FWGAN_H + +#include "freq.h" + +#define FWGAN_CONT_SAMPLES 320 + +typedef struct { + float syn_mem[LPC_ORDER]; +} FWGANState; + +void fwgan_init(FWGANState *st, const float *pcm); + + +void fwgan_synthesize(FWGANState *st, float *pcm, const float *features); + + +#endif /* FWGAN_H */ diff --git a/lpcnet_headers.mk b/lpcnet_headers.mk index dc44429f709c64b2811637991cd81122bab6e9a3..93ca74fbf181780eedc7ecc34dd4d6d85d9ae42f 100644 --- a/lpcnet_headers.mk +++ b/lpcnet_headers.mk @@ -8,6 +8,7 @@ dnn/lpcnet.h \ dnn/burg.h \ dnn/common.h \ dnn/freq.h \ +dnn/fwgan.h \ dnn/kiss99.h \ dnn/lpcnet_private.h \ dnn/nnet_data.h \ diff --git a/lpcnet_sources.mk b/lpcnet_sources.mk index adad6dec15f99eba3476b234ba903b37cf113484..4c6e73f32f53b89fabde0cb9242b4c582f480745 100644 --- a/lpcnet_sources.mk +++ b/lpcnet_sources.mk @@ -1,6 +1,7 @@ LPCNET_SOURCES = \ dnn/burg.c \ dnn/freq.c \ +dnn/fwgan.c \ dnn/kiss99.c \ dnn/lpcnet.c \ dnn/lpcnet_enc.c \