O documento compara os codecs G.723.1 e G.729, atualmente utilizado e pretendido para futura migração no Terra Voip. G.723.1 codifica em 30ms com MOS de 3.9 a 5.3kbps, enquanto G.729 codifica em 10ms, oferecendo menor delay e qualidade superior com extensões como G.729b para remover ruídos. O documento recomenda a migração para G.729 devido à sua flexibilidade e melhor qualidade de voz.
2. 1. Objetivo
Este artigo tem por finalidade apresentar os conceitos gerais sobre
codecs e principalmente traçar um quadro comparativo entre o padrão G.723.1
(atualmente utilizado no “Terra Voip”) e o padrão G.729 juntamente com seus
anexos (codec pretendido para uma futura migração).
2. Introdução aos Codecs
CoDec é o acrômio para coder/decoder em inglês, podendo ser um
dispositivo de hardware ou software que tem por finalidade converter (codificar)
um arquivo de som ou imagem na sua forma original (não comprimida) para uma
forma comprimida e depois realizar o processo inverso.
3. Tipos
Existem dois tipos de codecs:
Sem perdas (lossless, em inglês) - Os codecs sem perdas são codecs
que codificam som ou imagem para comprimir o arquivo sem alterar a
qualidade original. Se o arquivo for descomprimido, o novo arquivo será
idêntico ao original. Esse tipo de codec normalmente gera arquivos
codificados que são entre 2 a 3 vezes menores que os arquivos originais.
São muito utilizados em rádios e emissoras de televisão para manter a
qualidade do som ou imagem. Exemplos desse tipo de codec são o flac,
shorten, wavpack e monkey's audio, para som. Para imagem, HuffYUV,
lossless MJPEG e FFmpeg Video 1.
Com perdas (lossy, em inglês) - Os codecs com perdas são codecs que
codificam som ou imagem, gerando uma certa perda de qualidade com a
finalidade de alcançar maiores taxas de compressão. Essa perda de
qualidade é balanceada com a taxa de compressão para que não sejam
criados artefatos percebíveis. Os codecs com perdas foram criados para
comprimir os arquivos de som ou imagem a taxas de compressão muito
altas. Por exemplo, o Vorbis e o Mp3 são codecs para som que facilmente
comprimem o arquivo de som em 10 a 12 vezes o tamanho original, sem
gerar artefatos significativos. Exemplos de codecs com perdas são o Ogg
Vorbis, MP3, AC3 e WMA, para som. Para imagem, temos o Xvid, DivX,
WMV7, WMV8, WMV9, Theora e Soreson.
3. 4. Codecs Voip
Codecs da família dos codecs com perda, que tem por objetivo diminuir a
taxa de bits sem tirar a qualidade da fala, para isso utiliza algoritmos de
supressão de silêncio, reconhecimento de fala, remoção de ruído ambiente,
entre outros.
Exemplo: AMR, AMBE, CELP, DSS, EVRC, FS-1015 (LPC-10), FS-1016
(CELP), G.711 (a-law and mu-law/u-law), G.722.1, G.722, G.723.1, G.723
(Superseded by G.726), G.726 (ADPCM), G.728 (LD-CELP), G.729 (CS-ACELP)
G.729a, GSM, HILN (MPEG-4 Parametric audio coding), iLBC, IMBE, iSAC,
QCELP, SMV, Speex.
5. Taxa de Bits
A taxa de bits é uma das medidas da qualidade de um arquivo
comprimido como um codec com perda. A taxa de bits representa o tamanho
final desejado para o arquivo e, normalmente, é apresentada como kbits/s.
1 kbit/s significa que, a cada segundo, o codec tem 1000 bits do arquivo
final para utilizar, ou seja, se um arquivo de som tem 8 segundos e é comprimido
a uma taxa de 1 kbit/s, o arquivo final terá 8 kbits ou 1 kbyte. Conclui-se, então,
que quanto maior for a taxa de bits, melhor será a qualidade do arquivo final, já
que o codec terá mais espaço para poder comprimir o arquivo original,
necessitando descartar menos "detalhes" do arquivo.
6. Score MOS
Atribui uma pontuação para qualidade de ligações:
Score Definição Descrição
Um sinal de voz perfeito
5 Excelente gravado em um local
silencioso.
Qualidade de uma chamada
4 Bom telefônica de longa distância
(PSTN)
Requer algum esforço na
3 Razoável
escuta.
Fala de baixa qualidade e
2 Pobre
difícil de entender.
1 Ruim Fala não clara, quebrada.
4. 7. G.723.1
O G.723.1 codifica o sinal em trechos de 30ms, perdendo ainda cerca de
7.5ms para execução do algoritmo, resultando em um delay esperado de 37.5ms
por frame. Música e tons (DTMF e fax, por exemplo) não podem ser
transportados por esse codec, para isso outro codec precisa ser utilizado tal
como G.711.
Este codec foi regulamentado pela ITU-T em 1995, sua principal
característica é a necessidade de uma banda pequena para transportar os
pacotes RTP (cerca de 20kbps), o esforço computacional para executá-lo fica
em torno de 16MIPS ou 2.2 kbytes de RAM para codificar.
O G.723.1 pode operar sob dois tipos de algoritmos:
Multipulse with Maximum Likelihood Quantization (MPC-MLQ)- Realiza a
transmissão a uma taxa de 6.3 kbit/s (24 byte por frame), sem perder
muito em qualidade (MOS 3.9, quase um ligação PSTN a longa
distância).
Algebraic Code Excited Linear Prediction (ACELP) - Realiza a
transmissão a uma taxa mais baixa que o MPC-MLQ, cerca de 5.3 kbit/s
(20 byte por frame), acarretando a uma pequena perda na qualidade
(MOS 3.62) e um maior esforço computacional.
8. G.729
O G.729 codifica o sinal em trechos de 10ms perdendo ainda cerca de
5ms para execução do algoritmo, resultando em um delay esperado de 15ms
por frame. Música e tons (DTMF e fax, por exemplo) não podem ser
transportados por esse codec, para isso outro codec precisa ser utilizado tal
como G.711.
O padrão opera a uma taxa de 8 kbit/s (8 bytes por quadro), no entanto
existem extensões que podem diminuir ou aumentar esta taxa. Utiliza como
algoritmo de codificação e decodificação o CS-ACELP (Conjugate-Structure
Algebraic Code Excited Linear Prediction), uma extensão do ACELP.
Além disso, o presente codec dá suporte a áudio e vídeo conferência.
Desenvolvido pelo consórcio de empresas: France Telecom, Mitsubishi
Electric Corporation, Nippon Telegraph and Telephone Corporation (NTT), e
Université de Sherbrooke, Os direitos intelectuais são propriedade da SIPRO
(http://www.sipro.com/).
8.1 G.729a
Um problema do G.729 é a alta complexidade o algoritmo CS-ACELP isso
leva a necessidade de uma grande força computacional da máquina do usuário
para realizar a codificação (principalmente) dos sinais, para contornar isso foi
criada uma extensão que reduzisse a complexidade do algoritmo o G.729a além
5. de ameniza este problema também tem a capacidade de enviar e receber dados
junto com voz (DSDV).
8.2 G.729b
O G.729b é a implementação de três elementos que tem por objetivo
retirar da entrada sons inúteis, selecionando com critério o que será
transportado, são eles:
VAD (Voice activity detection)- Módulo que tem por finalidade detectar a
voz humana para só assim permitir a transmissão.
DTX (Discontinuous Transmission)- Módulo que detecta ruídos
ambientais eliminando-os da transmissão.
CNG (Confort Noise Generator), Módulo do decodificador que adiciona ao
som do ouvinte um ruído de conforto existem em ligações PSTN.
8.3 G.729c
O G.729c é uma versão do G.729 que utiliza o ponto flutuante, para assim
como o G.729a, reduzir a complexidade do algoritmo CS-ACELP.
8.4 G.729d/e
O G.729d é uma versão do G.729 que realiza uma compressão maior da
taxa de bits (6.4kbit/s), com isso uma menor banda é necessária para realizar a
comunicação, no entanto haverá uma perda na qualidade do sinal.
O G.729e é justamente o inverso do G.729d, ele trabalha com uma taxa
de bits de 11.8kbit/s, melhora a qualidade do sinal e aumenta a banda
necessária.
9. Considerações Finais
Pelo que foi exposto no presente artigo, recomendamos o G.729 por ser
uma solução melhor comparada ao atual codec utilizado pelo Terra Voip, o
G.723.1. Os motivos que nos levam a tomarmos esta posição são:
O G.729 ameniza o grave problema de delay, traço presente em ligações
voip e a mais sentida por usuários acostumados com ligações PSTN, isto devido
a sua implementação trabalhar sobre áreas menores de codificação, 10ms
contra 30ms do G.723.1.
Se pensarmos em qualidade o G.729 em conjunto com seu anexo G.729b
nos dará a segurança de termos ligações com menos ruídos, isto devido aos
módulos VAD/CNG/DTX.
6. Outro ponto positivo encontrado neste codec é que, em composição com
o G.729a teremos a possibilidade que transmitir dados juntamente com o canal
de voz, o que deixará uma lacuna em aberto para futuras alternativas no envio
de dados.
Por fim, se o problema for reduzir a banda de transmissão o G.729d
consegue taxas de transmissão tão baixas quanto o G.723.1, porém ainda
oferecendo todo conforto acima exposto, no entanto recomendamos o G.729 em
composição com o Anexo A e B, cientes de que a qualidade é o principal ponto a
ser alcançado por nossos produtos.
Pelos seus atributos e toda flexibilidade de configuração que só é
encontrada nos codecs da família G.729, o recomendamos para todos os
produtos comercializados pela Viper Serviços em Telecomunicações S/A.