⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 extf_func_6.cc

📁 这是处理语音信号的程序
💻 CC
字号:
// file: extract_feature/extf_func_6.cc//// isip include files//#include "extract_feature.h"#include <string.h>#include <math.h>#include "extract_feature_constants.h"// method: func_vtln_cc//// arguments://  float_8* vector: (input/output) spectrum/normalized spectrum//  int_4 num_samples: (input) number of samples to operate upon in frequency//// This method is to perform some arogrithm upon the output of fourier// transform to warp the spectrum to normalized spectrum.//logical_1 Extract_feature::func_vtln_cc(float_8* vector_a,					int_4 num_samples_a) {  // define local variables  //  float_8* vec_out;    if (vtln_algo_d == EXTF_BILINEAR) {    // bilinear algorithm    //        // if VTLN factor equals 1.0, there is no warping    //    if (vtln_factor_d == 1.0) {      return ISIP_TRUE;    }        // compute the width of each spectral bin in radians    //    float_8 omiga_bin = 2 * M_PI / EXTF_FT_ORDER;    // compress or expand the frequency axis using the bilinear transform    //    vec_out = new float_8[num_samples_a];    vec_out[0] = vector_a[0];    for (int_4 k = 1; k < num_samples_a; k++) {      // omiga  = normalized frequency (2 * pi * (f/fs)) = (2 * pi * (k/N))      // omiga_alpha = the warped frequency       //      float_8 omiga = 2 * M_PI * k / EXTF_FT_ORDER;      // compute the warped frequency:      //      float_8 omiga_alpha = omiga +	2 * atan(((1 - vtln_factor_d) * sin(omiga)) /		 (1 - (1 - vtln_factor_d) * cos(omiga)));            // omiga_alpha_index: the index of bin that omiga_alpha falls in       //                    so this index could be no integer value      // omiga_l: the index of the bin that omiga_alpha falls in      // omiga_h: the index to the right of the bin that omiga_alpha  falls in      //      float_8 omiga_alpha_index = omiga_alpha / omiga_bin;      int_4 omiga_l = (int_4) floor(omiga_alpha_index);      int_4 omiga_h = omiga_l + 1;      // interpolate the frequency bins with simple linear interpolation.      // last paragraph of section 2.2 in the reference.      // rho: the distance between omiga_alpha and omiga_h      //      float_8 rho = omiga_h - omiga_alpha_index;      vec_out[k] = rho * vector_a[omiga_l] + (1 - rho) * vector_a[omiga_h];    }        // copy over the specified number of mfcc's onto the vector    //    memcpy(vector_a, vec_out, num_samples_a * sizeof(float_8));    // free memory    //    delete [] vec_out;      }  // exit gracefully  //  return ISIP_TRUE;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -