1*a58d3d2aSXin Li #ifndef PITCHDNN_H 2*a58d3d2aSXin Li #define PITCHDNN_H 3*a58d3d2aSXin Li 4*a58d3d2aSXin Li 5*a58d3d2aSXin Li typedef struct PitchDNN PitchDNN; 6*a58d3d2aSXin Li 7*a58d3d2aSXin Li #include "pitchdnn_data.h" 8*a58d3d2aSXin Li 9*a58d3d2aSXin Li #define PITCH_MIN_PERIOD 32 10*a58d3d2aSXin Li #define PITCH_MAX_PERIOD 256 11*a58d3d2aSXin Li 12*a58d3d2aSXin Li #define NB_XCORR_FEATURES (PITCH_MAX_PERIOD-PITCH_MIN_PERIOD) 13*a58d3d2aSXin Li 14*a58d3d2aSXin Li 15*a58d3d2aSXin Li typedef struct { 16*a58d3d2aSXin Li PitchDNN model; 17*a58d3d2aSXin Li float gru_state[GRU_1_STATE_SIZE]; 18*a58d3d2aSXin Li float xcorr_mem1[(NB_XCORR_FEATURES + 2)*2]; 19*a58d3d2aSXin Li float xcorr_mem2[(NB_XCORR_FEATURES + 2)*2*8]; 20*a58d3d2aSXin Li float xcorr_mem3[(NB_XCORR_FEATURES + 2)*2*8]; 21*a58d3d2aSXin Li } PitchDNNState; 22*a58d3d2aSXin Li 23*a58d3d2aSXin Li 24*a58d3d2aSXin Li void pitchdnn_init(PitchDNNState *st); 25*a58d3d2aSXin Li int pitchdnn_load_model(PitchDNNState *st, const void *data, int len); 26*a58d3d2aSXin Li 27*a58d3d2aSXin Li float compute_pitchdnn( 28*a58d3d2aSXin Li PitchDNNState *st, 29*a58d3d2aSXin Li const float *if_features, 30*a58d3d2aSXin Li const float *xcorr_features, 31*a58d3d2aSXin Li int arch 32*a58d3d2aSXin Li ); 33*a58d3d2aSXin Li 34*a58d3d2aSXin Li #endif 35