In 1991 the American Department of Defense (DoD) standardised a 4.8 kbits/s CELP codec as Federal Standard 1016. For details of CELP codecs see the description of the hybrid class of codecs. The DoD CELP codec divides the speech it is to code into 30ms frames, each of which is further divided into four 7.5 ms sub-frames. For each frame the encoder calculates a set of 10 filter coefficients for the short term synthesis filter which is used to model the vocal tract of the speaker. The excitation for this filter is determined for each sub-frame, and is given by the sum of scaled entries from two codebooks. An adaptive codebook is used to model the long term periodicities present in voiced speech, and for each sub-frame an index and a gain is determined for this codebook. A fixed codebook containing 512 psedo-random codes is also searched to find the codebook entry, and the gain multiplier for this entry, which minimise the error between the reconstructed and the original speech samples. At the decoder the scaled entries from the two codebooks are passed through the synthesis filter to give the reconstructed speech. Finally this speech is passed through a postfilter to improve its perceptual quality.
A package containing both C and fortran code to implement the DoD CELP codec is available for ftp here . This is rather a large file (about 2.2 Mb), but as well as the souce code for the codec it has samples of speech before and after coding, and some documentation.
Well thats it as far as the desriptions of standard speech codecs goes. Click here to go back to the speech coding index page, or here to go to our Mobile Multimedia home page.