FE_common.h
上传用户:italyroyal
上传日期:2013-05-06
资源大小:473k
文件大小:5k
源码类别:

语音合成与识别

开发平台:

Visual C++

  1. ///////////////////////////////////////////////////////////////////////////////
  2. // This is a part of the Feature program.
  3. // Version: 1.0
  4. // Date: February 22, 2003
  5. // Programmer: Oh-Wook Kwon
  6. // Copyright(c) 2003 Oh-Wook Kwon. All rights reserved. owkwon@ucsd.edu
  7. ///////////////////////////////////////////////////////////////////////////////
  8. #ifndef _FE_COMMON_H_
  9. #define _FE_COMMON_H_
  10. #ifdef WIN32
  11. #include <windows.h>
  12. #endif
  13. #ifdef min
  14. #undef min
  15. #endif
  16. #ifdef max
  17. #undef max
  18. #endif
  19. #include <assert.h>
  20. #include <iostream>
  21. #include <cstdio>
  22. #include <cstdlib>
  23. #include <cstring>
  24. #include <cmath>
  25. #include <climits>
  26. #include <vector>
  27. #include <valarray>
  28. #include <string>
  29. using namespace std;
  30. #pragma warning(disable:4786)
  31. // FE_vector.h should be placed after "using namespace std;"
  32. #include "FE_vector.h"
  33. #include "FE_matrix.h"
  34. // Include definition for kWaves interface
  35. #ifdef MAIN_PROGRAM
  36. #include "FE_wave_feature.h"
  37. #else
  38. #include "../kWaves-0.95/Sources/WaveFeature.h"
  39. #endif
  40. #ifndef FLT_MAX
  41. #define FLT_MAX 1E37
  42. #endif
  43. #define LOG(x)       (((x)>0.) ? (float)log((double)(x)) : (float)(-FLT_MAX))
  44. #define EXP(x)       (exp(x))
  45. #define LOG10(x)     (((x)>0.) ? (float)log10((double)(x)) : (float)(-FLT_MAX))
  46. #define EXP10(x)     ((float)pow((double)10.0,(double)(x)))
  47. #ifndef M_PI
  48. #define M_PI 3.14159265358979323846
  49. #endif
  50. #ifndef TRUE
  51. #define TRUE 1
  52. #endif
  53. #ifndef FALSE
  54. #define FALSE 0
  55. #endif
  56. /*----------------------------------*/
  57. /* Common macros                    */
  58. /*----------------------------------*/
  59. #ifndef my_max
  60. #define my_max(a,b) (((a)>(b)) ? (a) : (b))
  61. #endif
  62. #ifndef my_min
  63. #define my_min(a,b) (((a)<(b)) ? (a) : (b))
  64. #endif
  65. #ifndef my_abs
  66. #define my_abs(x)   ((x>=0) ? (x) : (-(x)))
  67. #endif
  68. /*----------------------------------*/
  69. /* Definition for feature extractor */
  70. /*----------------------------------*/
  71. #define SAMPLING_FREQ_1           8  /* 8kHz */
  72. #define SAMPLING_FREQ_2          11  /* 11kHz */
  73. #define SAMPLING_FREQ_3          16  /* 16kHz */
  74. #define FRAME_LENGTH_1          200  /* 25ms */
  75. #define FRAME_LENGTH_2          256  /* 23.27ms */
  76. #define FRAME_LENGTH_3          400  /* 25ms */
  77. #define FRAME_SHIFT_1            80  /* 10ms */
  78. #define FRAME_SHIFT_2           110  /* 10ms */
  79. #define FRAME_SHIFT_3           160  /* 10ms */
  80. #define FFT_LENGTH_1            256
  81. #define FFT_LENGTH_2            256
  82. #define FFT_LENGTH_3            512
  83. /************************************************************************
  84. User-specific Constant Values
  85. ************************************************************************/
  86. #define DEFAULT_SAMPLING_RATE      16000 /* 16 kHz sampling */
  87. #define DEFAULT_SHIFT_SIZE_IN_MS      10 /* 10 ms */
  88. #define DEFAULT_WINDOW_SIZE_IN_MS     25 /* 25 ms */
  89. #define DEFAULT_FFT_SIZE             512 /* FFT size */
  90. /**************************************************************
  91.  *  default setting
  92.  **************************************************************/
  93. // Preemphasis
  94. #define FE_PRE_EMPH_FAC      0.97 /* Preemphasis factor */
  95. // LPC
  96. #define FE_LPC_ORDER    14 /* default LPC order */
  97. #define FE_LPC_ORDER_1    12 /* LPC order for 8 kHz sampling rate */
  98. #define FE_LPC_ORDER_2    14 /* LPC order for 16 kHz sampling rate */
  99. // Cepstrum
  100. #define FE_CEP_ORDER           12 /* Number of cepstral coefficients is CEPORDER+1 including c0 */
  101. // Dynamic features
  102. #define FE_DELTA                5 /* Order of delta coefficients */
  103. #define FE_DDELTA               3 /* Order of acceleration (delta-delta) coefficients */
  104. // Filter bank
  105. #define FE_NUM_CHANNELS        23 /* Number of bands in filter bank */
  106. #define FE_FBANK_FLOOR    (-50.0) /* Energy floor for filter bank coefficients */
  107. // Energy
  108. #define FE_MIN_ENERGY (1)
  109. #define FE_MIN_LOG_ENERGY (0)
  110. /*----------------------------------*/
  111. /* Data structures                  */
  112. /*----------------------------------*/
  113. #ifdef FeReturnCode
  114. #define FeReturnCode __FeReturnCode
  115. #endif
  116. enum FeReturnCode {    /* A starting number was added to avoid overlap with other enumerators. */
  117.     FE_NULL=100,           /* for null transition. non-speech or non-silence */
  118. FE_OK,                 /* successful, no error */
  119. FE_WAITING,            /* waiting for speech start */
  120. FE_SPEECH,             /* in the middle of speech */
  121. FE_PAUSE,              /* pause */
  122. FE_END_POINT,          /* endpoint detected */
  123. FE_NO_SPEECH,          /* no speech found */
  124. FE_EARLY_END,          /* end-of-file detected before endpoint detection */
  125. FE_EOF,                /* end-of-file detected */
  126. FE_AUDIO_OPEN_ERROR,   /* error in opening audio device */
  127. FE_WAVE_OPEN_ERROR,    /* error in opening wave file */
  128. FE_STOP,               /* stopped */
  129. FE_UNK_ERROR           /* unknown error */
  130. };
  131. #endif