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

语音压缩

开发平台:

Unix_Linux

  1. c==========================================================================
  2. c
  3. c NAME
  4. c actorc  
  5. c
  6. c FUNCTION
  7. c
  8. c Schur recursion to do autocorrelation analysis.
  9. c Converts autocorrelation sequence to reflection coefficients.
  10. c
  11. c SYNOPSIS
  12. c
  13. c subroutine actorc (c0, c, rc, n, err)
  14. c
  15. c   formal 
  16. c                       data    I/O
  17. c       name            type    type    function
  18. c       -------------------------------------------------------------------
  19. c       c0              real    i       c(0)
  20. c c(n) real i auto-correlation coefficients
  21. c       rc(n) real    o       reflection coefficients (voiced-> +rc1)
  22. c       n               int     i       number of reflection coefficients
  23. c err real o normalized prediction error
  24. c       
  25. c==========================================================================
  26. c       
  27. c DESCRIPTION
  28. c
  29. c       This performs the classical Schur recursion (rediscovered by
  30. c LeRoux & Guegen) on the correlation sequence c0, c(1), c(2) . . .
  31. c to obtain n reflection coefficients (rc).  The recursion can be
  32. c performed entirely in fractional arithemetic because the
  33. c correlation sequence is normalized by c0, so all the quantities
  34. c in the recursion are less than unity magnitude (except c0).
  35. c
  36. c The sign convention used defines the first reflection coefficient
  37. c as the normalized first autocorrelation coefficient, which results
  38. c in positive values of rc(1) for voiced speech.
  39. c
  40. c==========================================================================
  41. c       
  42. c REFERENCES
  43. c
  44. c Parsons, Voice and Speech Processing, McGraw-Hill, 1987, p.160&378.
  45. c
  46. c==========================================================================
  47. c       
  48. c EXAMPLES
  49. c
  50. c call cor(data,np,c0,c,n)
  51. c call actorc(c0,c,rc,n)
  52. c==========================================================================
  53. c
  54. c PROCESS DESCRIPTION
  55. c
  56. c       Name    Type    Function
  57. c
  58. c       d       real      Recursion sequence (dim n)
  59. c       g       real      Recursion sequence (dim n)
  60. c       p       int       Orderindex recursion
  61. c       err     real      Backward error
  62. c       err0    real      Backward error of order 0
  63. c
  64. c**************************************************************************
  65. c-
  66.         subroutine actorc (c0, c, rc, n, err)
  67. implicit undefined(a-z)
  68. integer n
  69.         real c0, c(n), rc(n), err
  70. include 'ccsub.h'
  71. convex #include "ccsub.h"
  72. real d(maxno), g(maxno), rch
  73.         integer i, p
  74. c
  75. c If zero energy, set rc's to zero & return
  76. c
  77. if (c0 .le. 0.0) then
  78.    do 10 i = 1, n
  79.       rc(i) = 0.0
  80. 10    continue
  81.    return
  82. end if
  83. c
  84. do 30 i = 1, n
  85.    d(i) = c(i)/c0
  86.    g(i) = d(i)
  87. 30 continue
  88. rch   = g(1)
  89. rc(1) = rch
  90. err   = 1.-rch*rch
  91. c
  92. do 100 p = 1, n-1
  93.    do 50 i = 1, n-p
  94.       g(i) = g(i+1) - rch*d(i)
  95.       d(i) = d(i) - rch*g(i+1)
  96. 50    continue
  97. c    Extract the reflection coefficient
  98.    rch     = g(1)/err
  99.    rc(p+1) = rch
  100. c    The mean squares error recursion
  101.    err = err*(1.-rch*rch)
  102. 100 continue
  103. return
  104. end