Luis Eduardo Pereira Bueno Codificação de áudio para transmissão de voz em tempo real Trabalho elaborado como parte da avaliação da disciplina Processamento Digital de Sinais, ministrada pelo prof. Marcelo Rosa, do curso de Engenharia Elétrica, Setor de Tecnologia, da Universidade Federal do Paraná. CURITIBA 2008
Sumário Introdução...3 Codecs...3 G.711...3 G.729...3 G.723...3 G.726...4 G.728...4 Compressão de áudio...4 Pulse Code Modulation - PCM...4 Filtragem...4 Amostragem...4 Voz digitalizada...5 Quantização...5 Companding...5 A-law and u-law Companding...5 A-law Compander...5 u-law Compander...6 DPCM - Differential Pulse Code Modulation...6 ADPCM - Adaptive DPCM...6 LD-CELP...7 CS-ACELP...7 Conclusão...8 Referências...9
Introdução H.323 é uma recomendação da União Internacional de Telecomunicações (ITU organismo que define padrões para comunicações multimídia para redes locais de computadores). Estas redes incluem TCP/IP e IPX sobre Ethernet, Fast Ethernet e Token Ring. O padrão H.323 provê uma base tecnológica para comunicações de dados, áudio e vídeo, para redes baseadas no protocolo IP. O H.323 permite também que produtos de multimídia e aplicações de fabricantes diferentes possam interoperar de forma eficiente e que os usuários possam se comunicar sem preocupação com velocidade da rede. O H.323 estabelece padrões para compressão e descompressão de dados de áudio e vídeo, assegurando que equipamentos de fabricantes diferentes tenham uma área de apoio comum. Para que os terminais H.323, como telefones IP, por exemplo, possam estabelecer comunicação em tempo real com boa qualidade, a fala deve ser codificada. Para fazer esta codificação, são usados diferentes tipos de codecs, tanto de áudio como de vídeo. Este trabalho irá explicar o funcionamento de alguns tipos de codecs de áudio usados pelo protocolo H.323. Codecs Para que dados multimídia sejam enviados, são usadas técnicas de processamento digital de sinais para codificá-los. O H.323 aceita codificações/decodificações de algorítimos de áudio especificados pelo ITU como G.711, G.722, G.723.1, G.728 e G.729. O objetivo dos codecs de áudio ao codificar a fala é o de comprimir os dados para que possam ser transmitidos em tempo real utilizando uma pequena largura de banda. G.711 O codec de áudio G.711 é um dos padrões utilizados pelo H.323. O G.711 utiliza PCM para representar amostras de freqüências de voz, amostrada a 8kHz. Existem dois algoritmos de compressão neste padrão, o μ-law, usado nos Estados Unidos e Japão, e o A-law, usado em outros países fora dos EUA. Ambos são logarítmicos, mas o A-law é mais simples para ser processado. Estes algoritmos codificam amostras PCM de 13bits e 14bits para amostras logarítmicas de 8bits. Deste modo, o codificador G.711 irá criar uma transmissão de 64kbps para um sinal amostrado a 8kHz. G.729 G.729 é um algoritmo que comprime voz em pacotes de 10ms de duração. Tem uma baixa largura de banda, de de 8kbps, usando conjugate-structure algebraic-code-excited linear-prediction (CS-ACELP). G.723 Este codec é baseado em ADPCM (adapdative differential pulse code) com 24 e 40kbps.
G.726 G.726 é um codec ADPCM com transmissão de 16, 24, 32 e 40kbps. O G.726 possui uma qualidade praticamente idêntica a do G.711, porém com a metade do consumo de banda. É usado em troncos internacionais de telefonia. Também é o codec padrão usado em telefones sem fio. G.728 Este codec usa LD-CELP (low-delay code excited linear prediction) e opera a 16kbps. O codec possui delay de apenas 5 amostras (0.625ms). Compressão de áudio Existem vários métodos de compressão de áudio. Nos codecs suportados pelo H.323, tem-se u-law, A-law, ADPCM, CELP, e outros. Neste trabalho, será dada ênfase nos codecs PCM. Pulse Code Modulation - PCM PCM é um método de codificação definido no ITU-T G.711. Filtragem O primeiro passo para converter o singal de analógico para digital é filtrar as componentes de altas freqüências. A maior parte da energia da fala está entre 200Hz e 300Hz e 2700Hz e 2800Hz. Então, assume-se uma largura de banda de 3000Hz para fala. Uma banda de 4000Hz, porém, é implementada nos equipamentos para evitar aliasing. Amostragem O segundo passo para converter um sinal analógico de voz para digital é amostrar a entrada filtrada a uma freqüência de amostragem constante. Isso é feito através de um processo chamado modulação por amplitude de pulso (PAM). O sinal analógico original é usado para modular a amplitude um trem de pulsos com uma freqüência constante. O trem de pulsos move-se a uma freqüência constante, chamada freqüência de amostragem. Para determinar a freqüência de amostragem, usa-se o Teorema de Nyquist. Este teorema diz que a freqüencia de amostragem deve ser o dobro da maior freqüência do sinal amostrado. Se este teorema for obedecido, o sinal poderá ser reconstruído através de um filtro passa-baixas. Fs 2 x BW freqüência de amostragem Figura 1 - Amostragem
Voz digitalizada Depois de filtrar e amostrar, deve-se digitalizar as amostras. O processo de digitalização é chamado PCM. Uma técnica chamada quantização é usada para digitalizar as amostras. Quantização Quando as amostras chegam na fase de quantização, elas são associadas a um intervalo de quantização. Cada intervalo de quantização é associado a um valor na forma de um número binário. Os intervalos são igualmente espaçados, assim tem-se a quantização uniforme. O tamanho padrão do número binário é 8bits. Para um sinal amostrado a 8kHz, a taxa de transmissão é de 64kbps. Quando uma amostra não é associada ao seu intervalo de quantização correto, é gerado ruído de quantização. Este ruído de quantização é equivalente ao ruído que interfere na relação sinal ruído (SNR) do sinal de voz. Um modo de reduzir o ruído de quantização é aumentar o número de intervalos de quantização, mas para isso deve-se aumentar o tamanho do valor de 8bits para mais bits. SNR é o fator que mais afeta a qualidade de voz na quantização uniforme. Para melhorar a qualidade de voz, a quantização uniforme é substituída pelo processo de quantização não-uniforme, chamado companding. Figura 2 - Quantização Companding Companding refere-se ao processo de primeiro comprimir o sinal analógico na fonte e depois expandir o sinal novamente ao original quando ele chegar ao destino. Esta palavra em da junção de compressing e expanding. Neste processo, o sinal analógico é comprimido em segmentos logarítmicos. Cada segmento é quantizado e codificado usando quantização uniforme. Os padrões do ITU-T para companding são chamados A- law e u-law. A-law and u-law Companding A-law e u-law são algoritmos de compressão definidos pelo Consultative Committee for International Telephony And Telegraphy (CCITT) G.711 que comprime PCM linear de 16bits em 8bits logarítmico. A-law Compander Limitando a amostra linear para 12 bits de magnitude, a compressão A-low é definida pela equação abaixo, na qual A é o parâmetro de compressão (A=87.7 na Europa) e x é número a ser comprimido.
F x = [ A x ] 1 ln A sgn x 1 ln Ax 1 ln A x 0 1 A 1 A x 1 u-law Compander Limitando a amostra linear para 12 bits de magnitude, o u-law é definido pela equação abaixo, na qual u o parâmetro de compressão (m=255 no EUA e Japão) e x é o número a ser comprimido. F x = sgn x ln 1 x ln 1 0 x 1 DPCM - Differential Pulse Code Modulation Durante o processo PCM, as diferenças entre as amostras de entrada são mínimas. DPCM foi projeto para calcular essa diferença e transmiti-la ao invés da amostra inteira. Deste modo, o número de bits necessário diminui. Usando DPCM, a largura de banda necessária cai para 48kbps. Figura 3 - DPCM A primeira parte do DPCM funciona exatamente como PCM. Na fase do PAM, a amostra de entrada é armazenada no predictor. O predictor envia esse sinal para o diferenciador. O diferenciador compara o sinal anterior com o sinal atual e envia a diferença para a fase de quantização do PCM. Depois de quantizar e codificar, a diferença é transmitida. N receptor, ocorre o caminho inverso. Primeiramente o sinal de diferenças é desquantizado. A diferença é somada com o sinal armazenado no predictor e o resultado é passado por um filtro passa-baixas que reconstrói o sinal. Figura 4 a) codificador DPCM, b) decodificador DPCM O DPCM reduz a taxa de bits para transmissão de voz, porém causa outros problemas relacionados com qualidade de voz. DPCM faz quantização usando quantização uniforme, o que gera uma SNR baixa para amostras pequenas. Como a maioria dos sinais gerados é pequeno, a qualidade da voz tende a cair. ADPCM - Adaptive DPCM Adaptive DPCM (ADPCM) é um método de codificação definido na especificação ITU-T G.726.
ADPCM adapta os níveis de quantização da diferença gerada no DPCM. Se o sinal de diferenças for baixo, ADPCM aumenta o tamanho dos níveis de quantização. Se o sinal de diferença for alto, ADPCM diminui o tamanho dos níveis de quantização. Ou seja, o ADPCM adapta o nível de quantização para o tamanho do sinal de diferença de entrada. Isto gera um SNR uniforme. Figura 5 codificação ADPDM O ADPCM reduz a taxa de bits para 32kpbs, metade da taxa do A-law e u-law. Abaixo, pode-se ver o diagrama de blocos do codificador e decodificador DPCM. Figura 6 Codificador e decodicador ADPCM LD-CELP Uma das desvantagens dos codificadores que funcionam por tramas, em relação aos que codificam o sinal amostra-a-amostra, é o aumento do atraso devido à necessidade da leitura de uma trama completa antes da estimação dos parâmetros correspondentes. Embora o atraso não seja um problema em aplicações de armazenamento, é um atributo importante em aplicações de transmissão bidireccional em tempo real. Em 1988 o ITU-T propôs normalizar um codificador com um débito binário de 16 kbit/s, com qualidade equivalente ao da norma G.726 a 32 kbit/s, ao mesmo tempo que deveria ter um atraso máximo 2ms. Em 1992 foi aprovada a recomendação G.728, um codificador CELP que gozava destas características, denominado por LD-CELP (Low delay CELP). CS-ACELP O ITU-T iniciou em 1990 os trabalhos que conduziriam em 1995 à recomendação G.729, um codificador com um débito binário de 8 kbit/s e uma qualidade equivalente à da recomendação G.726 a 32 kbit/s, ao mesmo tempo que deveria ter pequeno atraso e baixa complexidade. O primeiro objectivo deste codificador era a sua utilização em telefones públicos via rádio.
Conclusão Uma parte muito importante das telecomunicações é a comunicação por fala. No caso das redes de pacotes, é comum acontecer perda ou atraso de informações. Os codecs de áudio ajudam a diminuir esse problemas diminuindo a quantidade de banda necessárias para transmissão. O primeiro codec analisado precisa de 64kb/s para transmitir voz em tempo real. Já o último visto, o CS-ACELP, precisa de apenas 8kb/s. Observou-se também que com o aumento de eficiência do codec, aumenta a complexidade do codificador e do decodificador. Porém, com a evolução dos processadores, torna-se possível a implementação de técnicas de processamento digital de sinais para analisar o sinal de áudio discretizado e realizar a compressão. Depois de analisar o funcionamento dos codecs, ficou claro que o processamento digital de sinais tem presença constante na comunicação multimídia, tornando-a possível mesmo para pequenas larguras de banda.
Referências [1] Packet-based multimedia communications systems, ITU-T Recommendation H.323. 2006. [2] Especificação ITU H.323, Cássio D. B. Pinheiro. <http://penta2.ufrgs.br/h323/indice.htm>. Acesso em 15/11/2008. [3] Protocolos. <http://www.gta.ufrj.br/grad/07_1/voip/protocolos.htm> Acesso em 15/11/2008. [4] Processamento digital de fala, Carlos Eduardo de Meneses Ribeiro. <http://www.deetc.isel.ipl.pt/comunicacoesep/disciplinas/pdf/sebenta/pdf_prg.html>. Acesso em 15/11/2008. [5] Audio compression, Dave Marshall. <http://www.cs.cf.ac.uk/dave/multimedia/node268.html#section0421000000000000000 00>. Acesso em 15/11/2008. [6] μ-law algorithm. <http://en.wikipedia.org/wiki/%ce%9c-law_algorithm>. Acesso em 15/11/2008. [7] A-law algorithm. <http://en.wikipedia.org/wiki/a-law_algorithm>. Acesso em 15/11/2008. [8] Waveform coding techniques. <http://www.cisco.com/en/us/tech/tk1077/technologies_tech_note09186a00801149b3.sht ml>. Acesso em 15/11/2008.