ec_constants.h
上传用户:lqyjxl
上传日期:2015-08-21
资源大小:14k
文件大小:5k
源码类别:

Audio

开发平台:

Visual C++

  1. // file: echoc_constants.h
  2. //
  3. // various constants used in the echo canceller code.
  4. //
  5. // make sure definitions are only made once
  6. //
  7. #ifndef __ECHOC_CONSTANTS
  8. #define __ECHOC_CONSTANTS
  9. //-----------------------------------------------------------------------------
  10. //
  11. // i/o related constants begin here
  12. //
  13. //-----------------------------------------------------------------------------
  14. // sampling frequency of input data
  15. //
  16. #define SAMPLE_FREQ 8000
  17. // the maximum magnitude of a speech sample (used to prevent overflow)
  18. // and a scaling factor to make signals exist in the range [-1,1]
  19. //
  20. #define AMPL_SCALE_1 3.0518509e-05
  21. #define AMPL_SCALE_2 32767.0
  22. #define MAX_AMPL 1.0
  23. //-----------------------------------------------------------------------------
  24. //
  25. // algorithm constants begin here
  26. //
  27. //-----------------------------------------------------------------------------
  28. // first-order high-pass filter
  29. //
  30. #define DEFAULT_GAMMA pow(2.0, -3.0)
  31. // the number of taps in the echo canceller (N)
  32. //
  33. #define DEFAULT_N   8 // 256
  34. // the number of samples used to update coefficients using the
  35. // the block update method (M)
  36. //
  37. #define DEFAULT_M  8 // 16
  38. // the adaptation speed (beta1) and max adaptation value
  39. // note that the max allowable adaptation value needs to be adjusted somewhat
  40. // depending on the block update interval (the less you update, the more
  41. // you must perturb the coefficients to keep up - but we shouldn't let
  42. // this get out of hand or the system goes unstable) It has also been
  43. // observed that there exits an inverse relationship between beta1 and the
  44. // filter length we choose. For example when the filter length was 128 a
  45. // beta1=pow(2.0, -11.0) sufficed to get convergence of the algorithm, but when
  46. // we used a filter length of 256 we had to lower beta1 to the present value.
  47. //  
  48. #define DEFAULT_BETA1 pow( 2.0, -10.0 )   // -11, -12 ar ok. 
  49. // constants for the reference and near-end power computation
  50. //
  51. #define DEFAULT_SIGMA_LU pow(2.0, -7.0)
  52. #define DEFAULT_SIGMA_LY pow(2.0, -7.0)
  53. #define DEFAULT_ALPHA_ST pow(2.0, -5.0)
  54. #define DEFAULT_ALPHA_YT pow(2.0, -5.0)
  55. #define DEFAULT_CUTOFF pow(2.0, -15.0)
  56. // define the near-end speech hangover counter: if near-end speech
  57. // is declared, hcntr is set equal to hangt (see pg. 432)
  58. //
  59. #define DEFAULT_HANGT  600
  60. // define the residual error suppression threshold
  61. //
  62. #define DEFAULT_SUPPR   ( 16 )
  63. //-----------------------------------------------------------------------------
  64. //
  65. // changes to the standard lms algorithm are documented here
  66. // we describe two changes useful for speech recognition research:
  67. //
  68. //  1. exponential damping of the adaptation gain
  69. //  2. residual error suppression based on the near-end speech energy
  70. //
  71. //-----------------------------------------------------------------------------
  72. //
  73. // in a departure from the standard lms algorithm, we add an
  74. // exponentially decaying weight to the adaptation constant. this
  75. // serves to slow the rate of adaptation the further into the file we get.
  76. //
  77. // the equation of this decay is:
  78. //
  79. //  beta_actual = max[beta * exp[-tau*(t - t0 - t_onset)]
  80. // u(t - t0 - t_onset), MIN_BETA]
  81. //
  82. // where tau is the decay constant, and t0 is measured from the first
  83. // onset of speech
  84. //
  85. // define the value of t0 in secs
  86. //
  87. #define DEFAULT_T0   5
  88. // define default value for tau
  89. //
  90. #define DEFAULT_TAU 1
  91. // we also need to define a threshold for which we decide that near-end
  92. // speech has begun. in a standard echo cancellation algorithm, we have an
  93. // outgoing signal that is typically larger than the echo. when the
  94. // outgoing speech is much larger than the echo, we declare this event the
  95. // onset of speech activity - this is t0. we need a threshold to
  96. // define this event. we use the ratio of the far-end speech to
  97. // near-end speech in db.
  98. //
  99. #define ONSET_THRESH  -20
  100. // constants for error suppression
  101. //
  102. // in a second departure, we calculate the residual error suppression
  103. // as a percentage of the reference signal energy level. the threshold
  104. // is defined in terms of dB below the reference signal.
  105. //
  106. #define RES_SUPR_FACTOR -20
  107. // we need a dynamic level of suppression varying with the ratio of the
  108. // power of the echo to the power of the reference signal
  109. // this is done so that we have a  smoother background. 
  110. // we have a higher suppression when the power ratio is closer to
  111. // suppr_ceil and reduces logarithmically as we approach suppr_floor.
  112. //
  113. #define SUPPR_FLOOR -64
  114. // #define SUPPR_CEIL -24
  115. #define SUPPR_CEIL -2
  116. // to avoid problems when the input data is zeroed out, we have a minimum
  117. // dB value specified for the ratio of the power of the echo to the power
  118. // of the reference signal
  119. //
  120. #define EC_MIN_DB_VALUE -70
  121. // end of include file
  122. #endif