- Specification: QCELP decoder spec is c.s0020 and source is c.r0020
Qualcomm PureVoice is standardized as TIA IS-733, specs could be downloaded from the 3GPP2 specs site.
An SDK for the latter can be found on the Qualcomm site.
QCELP, also known as Qualcomm PureVoice, is a vocoder developed in 1994 to increase the speech quality of the IS-96A codec used earlier in CDMA networks. It was replaced later with EVRC since it provides better speech quality with fewer bits. There are two versions available: QCELP8 and QCELP13 and they use 8 and 13 Kbit/s respectively.
Adopted in CDMA system is a QCELP vocoder with variable rates, which is actually a device converting a sound signal into the signal which can be transmitted in a circuit. The method adopted generally in a wire communication system is to first sample (8,000 sample values generated per second) a voice signal with an 8kHz signal and then implement 8-bit quantization coding for each sample value. Therefore, each voice channel in a wired system has the rate of 64K. However, because the air resource in a wireless system is very precious, a more effective coding mode is needed to use a rate as low as possible in the case where voice quality is guaranteed. A QCELP vocoder with variable rates is such a device. The main principles of it are to extract some voice feature parameters when a person speaks and transmit these feature parameters to the peer party. Then, the peer party will recover the voice with these parameters based on the promise between the two parties. Thus, a far lower rate is needed.
Let's give an example. The information of a triangle can be transmitted from one place to another in two ways: one is to obtain some points by means of sampling and transmit the information of these points to the peer party. The two parties connect these points to obtain a triangle. The other is to transmit the length of a side and the degrees of two angles of this triangle to the peer party, who can likewise recover this triangle based on these pieces of information. Obviously, there is far less information to be transmitted in the second method. What a vocoder does is similar to the latter method, but what a vocoder actually does is more complex than this. But the principles are the same.
The codes transmitted from the transmit end to the receive end and describing voice feature parameters vary with the rhythm or loudness of a speech. These variable rates mean that a vocoder can change its own code rates based on the loudness or rhythm of a speech to further reduce a code rate. Thus, a code with a higher rate will be adopted when there is a high-pitched voice while a code with a lower rate will be adopted when there is a low-pitched voice. In a silent period (when a person makes no sound during a speech), the lowest code rate will be adopted. Thus, a code rate can be decreased to reduce the interference with other users.
Qualcomm shared its source for QCELP during the development of the codec. Sometime along the development Apple licenced the codec for QuickTime. The code doesn't match the binary completely but will help an eventual RE effort. Qualcomm also supply a SDK. http://www.cdmatech.com/products/purevoice_download.jsp This is for the standard QCELP and not for the QCELP found in MOV files.