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

语音压缩

开发平台:

Unix_Linux

  1. C==========================================================================
  2. C
  3. C ROUTINE
  4. C               clip
  5. C
  6. C FUNCTION
  7. C determine if speech is clipped
  8. C
  9. C SYNOPSIS
  10. C               function clip(s, l)
  11. C
  12. C   formal 
  13. C
  14. C                       data    I/O
  15. C       name            type    type    function
  16. C       -------------------------------------------------------------------
  17. C s real i input speech
  18. C l int i length of input speech
  19. C       clip logical o clip flag
  20. C
  21. C==========================================================================
  22. C*-
  23.         function clip(s, l)
  24. implicit undefined(a-z)
  25. integer l
  26.         real s(l)
  27. logical clip
  28. real sum
  29. integer i, count
  30. c
  31. c Count number of clippings and sum their magnitudes
  32. c
  33. count = 0
  34. sum = 0.
  35. do 69 i = 1, l
  36.    if (abs(s(i)) .gt. 32768.0) then
  37.       count = count + 1
  38.       sum = sum + abs(s(i))
  39.    end if
  40. 69 continue
  41. c
  42. c Clipping heuristics (could also use energy, delta energy, etc.)
  43. c
  44. clip = .false.
  45. if ((count .ge. 10) .or. (count.ge.5 .and. sum.gt.1.e6)) then
  46.    clip = .true.
  47. end if
  48.         return
  49. end