mexcite.F
上传用户:szhypcb168
上传日期:2007-01-06
资源大小:2187k
文件大小:4k
源码类别:

语音压缩

开发平台:

Unix_Linux

  1. C==========================================================================
  2. C
  3. C ROUTINE
  4. C mexcite
  5. C
  6. C FUNCTION
  7. C Modify the stochastic code book excitation gain
  8. C
  9. C SYNOPSIS
  10. C               subroutine mexcite1(l)
  11. C               subroutine mexcite2(l)
  12. C               subroutine mexcite3(cgain)
  13. C
  14. C   formal 
  15. C
  16. C                       data    I/O
  17. C       name            type    type    function
  18. C       -------------------------------------------------------------------
  19. C       l i i length of error signal
  20. C cgain r i/o stochastic code book gain
  21. C
  22. C   global 
  23. C                       data    I/O
  24. C       name            type    type    function
  25. C       -------------------------------------------------------------------
  26. C  /ccsub/ see description include file
  27. C       e0 real i error signal array
  28. C
  29. C==========================================================================
  30. C
  31. C DESCRIPTION
  32. C
  33. C Depending on the current system state, the stochastic code book
  34. C excitation is reduced to a level that is low enough to produce
  35. C positive perceptual effects, yet is high enough so as not to upset
  36. C the dynamics of the system.  The main effect of the method is that
  37. C during sustained voiced sounds, the excitation level is attenuated.
  38. C In unvoiced and transition regions the level is amplified to a
  39. C level slightly more than that of standard CELP.
  40. C
  41. C The relative adaptive code book excitation component is
  42. C increased in voiced regions by decreasing the stochastic code book
  43. C excitation component.  The amount of decrease in the stochastic
  44. C component depends on the efficiency of the adaptive component.
  45. C More reconstruction burden is placed on the adaptive component as
  46. C its efficiency increases.  The efficiency is measured by the
  47. C closeness (in the squareroot crosscorrelation sense) of the residual
  48. C signals before and after pitch prediction.  When the efficiency is 
  49. C       high (e.g., > 0.9), the stochastic component is amplified slightly
  50. C (e.g., one quantizer level).
  51. C
  52. C The procedure for modifying the stochastic gain outside the
  53. C search loop is:
  54. C 1)  Measure the efficiency of the adaptive component (ccor)
  55. C 2)  Search the stochastic code book for the optimum codeword
  56. C 3)  Modify the stochastic code book gain
  57. C
  58. C This method is compatible with Federal Standard 1016
  59. C
  60. C
  61. C==========================================================================
  62. C
  63. C CALLED BY
  64. C
  65. C csub, cbsearch
  66. C
  67. C CALLS
  68. C
  69. C
  70. C==========================================================================
  71. C
  72. C REFERENCES
  73. C
  74. C Shoham, Yair, "Constrained-Stochastic Excitation Coding of Speech
  75. C at 4.8 kbps," in Advances in Speech Coding, ed. B. Atal, V.
  76. C Cuperman, and A. Gersho, submitted to Kluwer Academic Publishers.
  77. C
  78. C Shoham, Yair, "Constrained-Stochastic Excitation Coding of Speech," 
  79. C Abstracts of the IEEE Workshop on Speech Coding for
  80. C Telecommunications, 1989, p. 65.
  81. C
  82. C==========================================================================
  83. C*-
  84. subroutine mexcite1(l)
  85. implicit undefined(a-z)
  86. integer l
  87. real cgain
  88. include 'ccsub.com'
  89. convex #include "ccsub.com"
  90. #ifdef SUNGRAPH
  91. include 'sungraph_var.com'
  92. convex #include "sungraph_var.com"
  93. #endif
  94. integer i
  95. real e1, scale, e0save(60), ccor
  96. c
  97. save e1, e0save
  98. c
  99. c e1 = Euclidean norm of the first error signal
  100. c      (note:  the error signal array e0 is reused)
  101. c
  102. e1 = 1e-6
  103. do 10 i = 1, l
  104.    e1 = e1 + e0(i)*e0(i)
  105.    e0save(i) = e0(i)
  106. 10 continue
  107. return
  108. c----------------------------------------------------------
  109. entry mexcite2(l)
  110. c
  111. c ccor = crosscorrelation of the residual signals before
  112. c              and after pitch prediction
  113. c        (note:  the error signal array e0 is reused)
  114. c
  115. ccor = 1e-6
  116. do 70 i = 1, l
  117.    ccor = ccor + e0(i)*e0save(i)
  118. 70 continue
  119. c
  120. c *normalize the crosscorrelation
  121. ccor = ccor/e1
  122. return
  123. c----------------------------------------------------------
  124. entry mexcite3(cgain)
  125. c
  126. c *square root crosscorrelation scaling
  127. scale = sqrt(abs(ccor))
  128. c
  129. c *modify scale
  130. if (scale .lt. 0.2) then
  131.    scale = 0.2
  132. else if (scale .gt. 0.9) then
  133.    scale = 1.4 * scale
  134. end if
  135. c
  136. c *modify the stochastic component
  137. cgain = cgain*scale
  138. c
  139. #ifdef SUNGRAPH
  140. call save_sg(gain_vid, scale, 1,'save gain_vid')
  141. call save_sg(ccor_vid, ccor, 1,'save ccor_vid')
  142. #endif
  143. return
  144. end