/* Auto generated from checkpoint bbwenet_v2.pth (sha1: d0cf1f15f0b755a519b90a9e2f3972f7e0a5ac30) */


#ifndef BBWENET_DATA_H
#define BBWENET_DATA_H

#include "nnet.h"


#define BBWENET_FEATURE_DIM 114
#define BBWENET_FRAME_SIZE16 80
#define BBWENET_COND_DIM 128

#define BBWENET_FNET_CONV1_OUT_SIZE 128

#define BBWENET_FNET_CONV1_IN_SIZE 114

#define BBWENET_FNET_CONV1_STATE_SIZE (114 * (2))

#define BBWENET_FNET_CONV2_OUT_SIZE 128

#define BBWENET_FNET_CONV2_IN_SIZE 128

#define BBWENET_FNET_CONV2_STATE_SIZE (128 * (2))

#define BBWENET_FNET_GRU_OUT_SIZE 128

#define BBWENET_FNET_GRU_STATE_SIZE 128

#define BBWENET_FNET_TCONV_KERNEL_SIZE 2

#define BBWENET_FNET_TCONV_STRIDE 2

#define BBWENET_FNET_TCONV_IN_CHANNELS 128

#define BBWENET_FNET_TCONV_OUT_CHANNELS 128

#define BBWENET_TDSHAPE1_FEATURE_DIM 128
#define BBWENET_TDSHAPE1_FRAME_SIZE 160
#define BBWENET_TDSHAPE1_AVG_POOL_K 8
#define BBWENET_TDSHAPE1_INNOVATE 0
#define BBWENET_TDSHAPE1_POOL_AFTER 0
#define BBWENET_TDSHAPE1_INTERPOLATE_K 2

#define BBWENET_TDSHAPE1_ALPHA1_F_OUT_SIZE 80

#define BBWENET_TDSHAPE1_ALPHA1_F_IN_SIZE 128

#define BBWENET_TDSHAPE1_ALPHA1_F_STATE_SIZE (128 * (1))

#define BBWENET_TDSHAPE1_ALPHA1_T_OUT_SIZE 80

#define BBWENET_TDSHAPE1_ALPHA1_T_IN_SIZE 21

#define BBWENET_TDSHAPE1_ALPHA1_T_STATE_SIZE (21 * (1))

#define BBWENET_TDSHAPE1_ALPHA2_OUT_SIZE 80

#define BBWENET_TDSHAPE1_ALPHA2_IN_SIZE 80

#define BBWENET_TDSHAPE1_ALPHA2_STATE_SIZE (80 * (1))

#define BBWENET_TDSHAPE2_FEATURE_DIM 128
#define BBWENET_TDSHAPE2_FRAME_SIZE 240
#define BBWENET_TDSHAPE2_AVG_POOL_K 12
#define BBWENET_TDSHAPE2_INNOVATE 0
#define BBWENET_TDSHAPE2_POOL_AFTER 0
#define BBWENET_TDSHAPE2_INTERPOLATE_K 2

#define BBWENET_TDSHAPE2_ALPHA1_F_OUT_SIZE 120

#define BBWENET_TDSHAPE2_ALPHA1_F_IN_SIZE 128

#define BBWENET_TDSHAPE2_ALPHA1_F_STATE_SIZE (128 * (1))

#define BBWENET_TDSHAPE2_ALPHA1_T_OUT_SIZE 120

#define BBWENET_TDSHAPE2_ALPHA1_T_IN_SIZE 21

#define BBWENET_TDSHAPE2_ALPHA1_T_STATE_SIZE (21 * (1))

#define BBWENET_TDSHAPE2_ALPHA2_OUT_SIZE 120

#define BBWENET_TDSHAPE2_ALPHA2_IN_SIZE 120

#define BBWENET_TDSHAPE2_ALPHA2_STATE_SIZE (120 * (1))

#define BBWENET_AF1_FILTER_GAIN_A 1.381551f
#define BBWENET_AF1_FILTER_GAIN_B 0.000000f
#define BBWENET_AF1_SHAPE_GAIN 1.000000f
#define BBWENET_AF1_KERNEL_SIZE 16
#define BBWENET_AF1_FRAME_SIZE 80
#define BBWENET_AF1_LEFT_PADDING 15
#define BBWENET_AF1_OVERLAP_SIZE 40
#define BBWENET_AF1_IN_CHANNELS 1
#define BBWENET_AF1_OUT_CHANNELS 3
#define BBWENET_AF1_NORM_P 2
#define BBWENET_AF1_FEATURE_DIM 128

#define BBWENET_AF1_KERNEL_OUT_SIZE 48

#define BBWENET_AF1_GAIN_OUT_SIZE 3

#define BBWENET_AF2_FILTER_GAIN_A 1.381551f
#define BBWENET_AF2_FILTER_GAIN_B 0.000000f
#define BBWENET_AF2_SHAPE_GAIN 1.000000f
#define BBWENET_AF2_KERNEL_SIZE 32
#define BBWENET_AF2_FRAME_SIZE 160
#define BBWENET_AF2_LEFT_PADDING 31
#define BBWENET_AF2_OVERLAP_SIZE 80
#define BBWENET_AF2_IN_CHANNELS 3
#define BBWENET_AF2_OUT_CHANNELS 3
#define BBWENET_AF2_NORM_P 2
#define BBWENET_AF2_FEATURE_DIM 128

#define BBWENET_AF2_KERNEL_OUT_SIZE 288

#define BBWENET_AF2_GAIN_OUT_SIZE 3

#define BBWENET_AF3_FILTER_GAIN_A 1.381551f
#define BBWENET_AF3_FILTER_GAIN_B 0.000000f
#define BBWENET_AF3_SHAPE_GAIN 1.000000f
#define BBWENET_AF3_KERNEL_SIZE 16
#define BBWENET_AF3_FRAME_SIZE 240
#define BBWENET_AF3_LEFT_PADDING 15
#define BBWENET_AF3_OVERLAP_SIZE 120
#define BBWENET_AF3_IN_CHANNELS 3
#define BBWENET_AF3_OUT_CHANNELS 1
#define BBWENET_AF3_NORM_P 2
#define BBWENET_AF3_FEATURE_DIM 128

#define BBWENET_AF3_KERNEL_OUT_SIZE 48

#define BBWENET_AF3_GAIN_OUT_SIZE 1

typedef struct {
    LinearLayer bbwenet_fnet_conv1;
    LinearLayer bbwenet_fnet_conv2;
    LinearLayer bbwenet_fnet_gru_input;
    LinearLayer bbwenet_fnet_gru_recurrent;
    LinearLayer bbwenet_fnet_tconv;
    LinearLayer bbwenet_tdshape1_alpha1_f;
    LinearLayer bbwenet_tdshape1_alpha1_t;
    LinearLayer bbwenet_tdshape1_alpha2;
    LinearLayer bbwenet_tdshape2_alpha1_f;
    LinearLayer bbwenet_tdshape2_alpha1_t;
    LinearLayer bbwenet_tdshape2_alpha2;
    LinearLayer bbwenet_af1_kernel;
    LinearLayer bbwenet_af1_gain;
    LinearLayer bbwenet_af2_kernel;
    LinearLayer bbwenet_af2_gain;
    LinearLayer bbwenet_af3_kernel;
    LinearLayer bbwenet_af3_gain;
} BBWENETLayers;

int init_bbwenetlayers(BBWENETLayers *model, const WeightArray *arrays);

#endif /* BBWENET_DATA_H */
