// file: signal_model.h // // Make sure this file is only included once // #ifndef __ISIP_SIGNAL_MODEL #define __ISIP_SIGNAL_MODEL // isip include files // #ifndef __ISIP_INTEGRAL #include #endif // function prototypes // // function to get the command line parameters // logical get_parameter_cc(int argc, char** argv, unichar* window_type, logical& apply_pre_emphasis, double& pre_emph_coeff, logical& apply_liftering, double& lifter_coeff, double& frame_dur, double& window_dur, double& sample_freq, long& num_chans, long& chan_num, logical& swap_byte, unichar* input_file, long* num_coeffs, logical& delta, logical& delta_delta, long& delta_win, long& plot_scale, long& num_fbanks, long& lp_order, logical& normalize, long& debug_mode); // function to pre-emphasize the data // logical pre_emphasize_data_cc(double* data, double coeff, long num_samples); // function to apply a hamming window to the data // //logical window_hamming_cc(double* data, long num_samples); // algorithms to run on the data // logical compute_mean_cc(double* outvec, double* data, long num_samples); logical compute_fba_cc(double* outvec, long num_coeffs, double* data, long num_samples); logical compute_fft_mfcc_cc(double* outvec, long num_coeffs, long num_fbanks, logical use_liftering, double lifter_coeff, double* data, long num_samples); logical compute_fft_fba_cc(double* outvec, long num_coeffs, double* data, long num_samples); logical compute_lpc_mfcc_cc(double* outvec, long num_coeffs, long lp_order, long num_fbanks, logical use_liftering, double lifter_coeff, double* data, long num_samples); logical compute_lpc_fba_cc(double* outvec, long num_coeffs, long lp_order, double* data, long num_samples); logical compute_plp_mfcc_cc(double* outvec, long num_coeffs, long plp_order, long num_fbanks, logical use_liftering, double lifter_coeff, double* data, long num_samples); logical compute_plp_fba_cc(double* outvec, long num_coeffs, long plp_order, double* data, long num_samples); // wrapper functions for fft, lpc, and plp // logical func_fft_cc(double* output, double* input, long num_samples); logical func_lpc_cc(double* output, double& lp_gain, long lp_order, double* input, long num_samples); logical func_plp_cc(double* output, double& plp_gain,long num_coeffs, double* input, long num_samples); logical func_lp_spectrum_cc(double* output, long num_samples, double* lp_coeffs, long lp_order, double lp_gain); logical func_plp_spectrum_cc(double* output, long num_samples, double* plp_coeffs, long plp_order, double plp_gain); logical func_fbank_cc(double* coeffs, long num_coeffs, double* data, long num_samples); logical func_mfbank_cc(double* coeffs, long num_coeffs, double* data, long num_samples); logical func_lifter_cc(double* cepstrum, long num_coeffs, double lifter_coeff); logical func_lpc_spec_cc(double* out, long num, double* in); logical func_plp_spec_cc(double* out, long num, double* in); logical func_aud_weight_cc(long npoint,long& nfilt,double* cb, double* eql, long* ibegen); logical func_cosf_cc(long temp,long nfilt,double* wcos); // get the next largest power of 2 // inline long power_of_2(long size) { long i; for (i = 1; i < size; i <<= 1); return i; } // output method // logical write_cc(FILE* fp, double** vectors, long vec_size, long num_frames, long plot_scale); // normalize method // logical normalize_cc(double** vectors, long vec_size, long num_frames); // MFCC support functions // logical print_it_cc(double* data, long size, unichar* file); logical print_asc_cc(double* data, long size, unichar* file); logical compute_mel_cc(int num, double* mel); logical compute_cenf_cc(int num_coeff, int num, double* cenf, double* mel); // delta functions // logical compute_delta_cc(double** model_vectors, long num_frames, long vector_start_pos, long num_coeffs, long dw_a); logical compute_delta_cc(double** model_vectors, long num_frames, long vector_start_pos, long num_coeffs); // end of file // #endif