G.729 is a royalty-free narrow-band vocoder-based audio data compression algorithm using a frame length of 10 milliseconds. It is officially described as Coding of speech at 8 kbit/s using code-excited linear predictionspeech coding, and was introduced in 1996. The wide-band extension of G.729 is called G.729.1, which equals G.729 Annex J. Because of its low bandwidth requirements, G.729 is mostly used in voice over Internet Protocol applications when bandwidth must be conserved. Standard G.729 operates at a bit rate of 8 kbit/s, but extensions provide rates of 6.4 kbit/s and 11.8 kbit/s for worse and better speech quality, respectively. G.729 has been extended with various features, commonly designated as G.729a and G.729b:
G.729: This is the original codec using a high-complexity algorithm.
G.729A or A annex: This version has a medium complexity, and is compatible with G.729. It provides a slightly lower voice quality.
G.729B or B annex: This version extends G.729 with silence suppression, and is not compatible with the previous versions.
G.729AB: This version extends G.729A with silence suppression, and is only compatible with G.729B.
G.729.1 or J annex: This version extends G.729A and B with scalable variable encoding using hierarchical enhancement layers. It provides support for wideband speech and audio, using modified discrete cosine transform coding.
Dual-tone multi-frequency signaling, fax transmissions, and high-quality audio cannot be transported reliably with this codec. DTMF requires the use of the named telephony events in the RTP payload for DTMF digits, telephony tones, and telephony signals as specified in RFC 4733.
The complexity of the algorithm is rated at 15, using a relative scale where G.711 is 1 and G.723.1 is 25.
PSQM testing under ideal conditions yields mean opinion scores of 4.04 for G.729a, compared to 4.45 for G.711
PSQM testing under network stress yields mean opinion scores of 3.51 for G.729a, compared to 4.13 for G.711
Some VoIP phones incorrectly use the description "G729a/8000" in SDP. This is incorrect as G729a is an alternative method of encoding the audio, but still generates data decodable by either G729 or G729a - i.e. there is no difference in terms of codec negotiation. Since the SDP RFC allows static payload types to be overridden by the textual rtpmap description this can cause problems calling from these phones to endpoints adherring to the RFC unless the codec is renamed in their settings since they will not recognise 'G729a' as 'G729' without a specific workaround in place for the bug.
G.729 has been extended in Annex B which provides a silence compression method that enables a voice activity detection module. It is used to detect voice activity in the signal. It also includes a discontinuous transmission module which decides on updating the background noise parameters for non speech. It uses 2-byte Silence Insertion Descriptor frames transmitted to initiate comfort noise generation. If transmission is stopped, and the link goes quiet because of no speech, the receiving side might assume that the link has been cut. By inserting comfort noise, analog hiss is simulated digitally during silence to assure the receiver that the link is active and operational.
G.729 Annex J (G.729.1)
G.729 Annex J, maintained by G.729.1, provides support for wideband speech and audio. Introduced in 2006, it defines variable bit-rate wideband enhancement using up to 12 hierarchical layers. The core layer is an 8 kbit/s G.729 bitstream, the second layer is a 4 kbit/s narrowband enhancement layer, and the third 2 kibt/s layer is a bandwidth enhancement layer. Further layers provide wideband enhancement in 2 kbit/s steps. The G.729.1 uses three-stage coding: embedded code-excited linear prediction coding of the lower band, parametric coding of the higher band by Time-Domain Bandwidth Extension, and enhancement of the full band by a predictive transform coding algorithm called time-domain aliasing cancellation, also known as modified discrete cosine transform coding. Bit rate and the obtained quality are adjustable by simple bitstream truncation.
Licensing
As of January 1, 2017, the patent terms of most licensed patents under the G.729 Consortium have expired, the remaining unexpired patents are usable on a royalty-free basis. G.729 includes patents from several companies which were until the expiry licensed by Sipro Lab Telecom, the authorized Intellectual Property Licensing Administrator for G.729 technology and patent pool.
G.729 is assigned the static payload type 18 for RTP by IANA. The rtpmap parameter description for this payload type is "G729/8000". Both G.729a and G.729b use the same rtpmap description as G.729. G.729a and G.729b are indicated using annexb=no or annexb=yes, respectively. G.729 Annex B is the default in absence of parameter annexb in the Session Description Protocol.