README
上传用户:touchwatch
上传日期:2007-01-06
资源大小:168k
文件大小:4k
源码类别:

语音压缩

开发平台:

Unix_Linux

  1. This program implements the 16 kb/s Low-Delay CELP algorithm.
  2. (ITU-T Recommendation G.728)
  3. Original version by Alex Zatsman, Analog Devices, 1993.
  4. Revision by Mike Concannon (Columbia University, NY, NY)  Summer 1994
  5. Disclaimer
  6. ----------
  7. This software carries no warranty, expressed or implied.  The user
  8. assumes all risks, known or unknown, direct or indirect, which involve
  9. this software in any way.
  10. -----------------------------------------------------------------------------
  11. About version 1.0 (by Alex Zatsman)
  12. This original version was intended as a demo for EZ-LAB with ADSD21020
  13. (by Analog Devices, Inc.), using the Analog Devides g21k C compiler (port of
  14. gcc to 21k).
  15. It ran on Sparc as encoder (ccelp) and decoder (dcelp). These must be
  16. built by GNU C compiler (gcc) because the source is written in GNU C
  17. extension. In particular, the "{( ... )}" construct is used in several
  18. places (fast.h)
  19. The Sparc version read inputs from Sun audio files (8-bit u-low
  20. encoded). It wrote out the indices into a file using 2 bytes for each
  21. 10-bit index. Thus the reduction in file size is 2.5x (instead of 4x
  22. for 8-bit source).
  23. The version 1.0 program has NOT been tested with the official ITU-T test data!
  24. -----------------------------------------------------------------------------
  25. About version 2.0 (based on version 1.0 and modified by Mike Concannon)
  26. All stuff about the sparc audio files have been removed.
  27. The speech files should be 2-byte per sample and contain no header.
  28. The input can use the full 16 bit range.
  29. The bitstreams are written as 2-bytes per 10-bit codeword.
  30. To create, use make all
  31. The command 'dcelp' invokes the decoder + postfilter.  The postfilter may
  32. be turned off by changing the variable 'postfiltering_p' in dmain.c from
  33. 1 to 0.
  34. The makefile generates a dcelpnpf version which has the postfilter
  35. turned off.
  36. The postfilter relies on the coefficients (a10 and k10) calculated in the 
  37. durbin recursion (adapters.c) but is otherwise contained wholly in
  38. postfil.c.
  39. To use,
  40. Encoder:
  41. ccelp <input speech file> <output bitstream>
  42. Decoder:
  43. dcelp <input bitstream> <output speech file>
  44. The encoder produced bitstreams match all the test vectors exactly while
  45. the decoder + postfilter output speech files match to between 40 
  46. and 80 dB SNR with the test vector outputs.
  47. See file tv.out
  48. This was generated with the script runtestv, which can only be run
  49. if the testvectors and testprograms are available
  50. VERIFICATION
  51. This code was test on SUN and SGI platforms using the gcc and cc compilers.
  52. In the tdata directory there are a few test files.
  53. f17.in - inputfile
  54. f17.bit - bitstream file
  55. f17.outnpf - output file (no postfiltering)
  56. f17.outpf - postfiltered outputfile
  57. If you get sampled data files that are not identical, try to run an
  58. snr measure on it, and see if you are close. Any SNR > 40 dB would make
  59. it very likely that what you have is fine.
  60. List of Sources:
  61. adapters.c:
  62. Synthesis Filter Adapter,
  63. Perceptual Weighting Filter Adapter
  64. Gain Adapter.
  65. cmain.c: Main routine for coder.
  66. codebook.c: Function for Codebook Search and Access.
  67. data.c:
  68. Codebook (shapes and gains)
  69. Hybrid Window Coefficients for:
  70. Gain Adapter
  71. Perceptual Weighting Filter Adapter
  72. Synthesis Filter Adapter
  73. dmain.c: Main routine for decoder.
  74. filters.c:
  75. Perceptual Weighting Filter
  76. Gain Predictor
  77. Synthesis Filter
  78. global.c: Variables common for coder and decoder.
  79. io-sparc.c: Non-21020 (file) I/O routines. Actually NOT specific
  80. to Sparc machine.
  81. postfil.c: Postfilter and its Adapter.
  82. common.h: Common definitions used in most files
  83. data.h:
  84. Derivatives from gain codebook.
  85. Coefficients for low-pass IIR filter (in postfilter)
  86. fast.h: Some C macros which translate into more efficient code
  87. for ADSP21000
  88. parm.h: Various parameters of LD-CELP (vector size, frame
  89. size, etc)
  90. prototyp.h: Most function prototypes.
  91. qsize.h: Size of the I/O buffer (queue). It is separated
  92. because it is included in some .asm files which don't
  93. like more sophisticated C macros.