UNIVERSIDADE FEDERAL DO PARANÁ

Setor de Tecnologia

Departamento de Eletricidade

 

 

 


Disciplina

PROCESSAMENTO DIGITAL DE SINAIS

Professor

Dr. Eduardo Parente

Data

29 de janeiro de 2002

Assunto

CODIFICAÇÃO DE VOZ (CS-ACELP)

Equipe

Brenno A. Martinez

Giorgio R. Zonta

Gisah B. Küster

Gustavo A. Souza

Wilson C. Maia Filho

           

1      Introdução

2      Histórico

3      Compressão de Voz

3.1       Codificação da forma de onda (ou não-paramétrica)

3.2       Codificação da fonte (ou paramétrica)

4      Atributos de um codificador de voz

4.1       Taxa de bits

4.2       Atraso

4.3       Complexidade

4.4       Qualidade

5      Motivação para o uso da Codificação CS-ACELP

5.1       Qualidade de Serviço

5.2       Interoperabilidade

5.3       Economia da banda

6      Descrição Geral do Codificador CS-ACELP

6.1       Princípios Básicos

6.1.1        A Construção da Voz e LPC

6.2       Processo de Codificação

6.2.1        Determinando as Freqüências Formadoras

6.2.2        Codificando a Excitação

6.2.1        Codificação do Resíduo (CELP)

6.2.2        Mais um Avanço (ACELP)...

6.2.3        ...e mais um (CS-ACELP)

6.3       Codificar CS-ACELP

6.4       Decodificador CS-ACELP

7      Aplicações

7.1       Exemplo Prático

8      Conclusão

9      Referências

           

1         Introdução

O processo de codificação/compressão de voz tem como objetivo retirar a redundância deste tipo de sinal. Este processo é bastante utilizado nos sistemas atuais de comunicação. Assim, para garantir que os sistemas de comunicação funcionem adequadamente, os codificadores de voz são padronizados, de forma que todos entes envolvidos nesta comunicação tenham conhecimento de como realizar a codificação e decodificação destes sinais.

Atualmente existem diversos padrões de codificação de voz, os quais se diferenciam por suas taxas de compressão, atrasos, qualidade e complexidade computacional. Assim, para definir qual sistema de codificação de voz deve ser utilizado em uma determinada aplicação, é necessário conhecer quais são os requisitos das aplicações.

Neste trabalho, será apresentado o padrão de codificação de voz CS-ACELP, enfatizando suas principais características, assim como determinando quais as características adequadas e/ou necessárias a uma determinada aplicação. Além disso, será mostrado um panorama geral dos diversos tipos de codificadores de Voz, explicando qual a importância de cada um deles dentro das aplicações que necessitam utilizar compressão.

2         Histórico

Antes da era digital a voz era armazenada e transmitida como um sinal analógico. Atualmente, com a viabilização do processamento digital de sinais, o sinal de voz pode ser digitalizado, podendo desta forma ser transmitido e armazenado de forma mais eficiente. O primeiro codificador de voz foi criado a cerca de 60 anos na forma do "Homer Dudley’s vocoder". Ele foi colocado em uso durante a segunda grande guerra mundial (telefonia segura). A partir daí até meados da década de 70, o interesse nos codificadores de voz se restringia a aplicações militares.

Entretanto, nas décadas seguintes, este panorama foi alterado com a introdução da telefonia digital. Em 1972 surgiu o padrão PCM (64 kb/s - Pulse code Modulation - padronizado como G.711 PCM), projetado para transmitir sinais de voz na banda telefônica. Este padrão possibilitou a transmissão de sinais de voz através de longas distâncias. Em seguida surgiu o 32kb/s ADPCM (Adaptative diferentical PCM – G.726, G.727 ADPCM), que podia dobrar a capacidade de ligações, o que era muito importantes no caso de ligações com bandas estreitas (ex. Cabos submarinos).

Na década de 80, surgiram os PC’s e os telefones celulares, o que provocou uma aumento da necessidade de codificação de voz. As novas aplicações como os celulares digitais, caixa de mensagens, videofones, documentos multimídias, Internet fone, entre outros, precisavam de codificadores digitais de voz.

Cada aplicação surgia com uma necessidade de codificação diferente, o que provocou a padronização de vários codificadores. Surgiram também muitos codificadores proprietários que não necessitavam de padronização.

3         Compressão de Voz

Para reduzir a banda do canal necessária para a transmissão de voz digitalizada são utilizadas técnicas de compressão de voz. Isto deve acontecer em tempo real para possibilitar a comunicação e interação. Estes algoritmos permitem reduzir a banda necessária para transmissão de voz a fim de viabilizar sistemas de comunicação digital com taxas bastante reduzidas e tendo como objetivo uma qualidade semelhante ao sistema público de telefonia analógica.[6]

A compressão de sinais é baseada em técnicas de processamento que retiram informações redundantes, previsíveis ou inúteis. A compressão pode acontecer com ou sem perda de informação. Tudo depende da degradação que se admite para o sinal e do fator de compressão que se deseja atingir.

Os dois principais enfoques com que o tema de codificação digital de voz é atualmente abordado são:

3.1      Codificação da forma de onda (ou não-paramétrica)

Esta classe de métodos aborda o problema de codificação de voz de uma forma direta. A idéia é codificar o sinal de voz de forma a se obter um sinal reproduzido cuja forma de onda se assemelhe ao máximo à do sinal original. A codificação da forma de onda é utilizada quando uma qualidade elevada do sinal é exigida. Dentro desta categoria se encontram os métodos mais simples de codificação digital de voz. [7]

3.2      Codificação da fonte (ou paramétrica)

Todos os recursos utilizados na codificação da fonte, consideram quase que apenas as características do sinal de voz. Na verdade, no caso da codificação da forma de onda, não existe uma preocupação com a forma de produção do sinal amostrado. A abordagem agora consiste em um modelamento do processo de produção da voz . Este modelamento é então simplificado de forma que possa ser implementado a um custo computacional apropriado . Entretanto, o mecanismo de produção da voz humana não é simples e, portanto, modelagens, aproximações e simplificações acabam por tornar o processo de codificação da fonte inferior em qualidade em relação à codificação da forma de onda. Por outro lado, a codificação da fonte permite uma redução considerável na taxa de transmissão, porém perde-se fatores essenciais como timbre de voz, tornando-a mais impessoal. Dessa forma, sistemas de codificação da fonte são utilizados quando é necessária uma baixa taxa de transmissão.[7]

4         Atributos de um codificador de voz

Os atributos de um codificador de voz podem divididos em quatro categorias: taxa de bits, atraso, complexidade e qualidade. O tipo de aplicação em que se está utilizando codificação de voz é que determina qual das categorias de atributos tem maior e menor importância. Assim vamos explicar cada uma destas categorias.[6][7]

4.1      Taxa de bits

Taxa de bits é primeiro atributo que vem em nossa mente quando pensamos em codificadores de voz. Dentre os codificadores de voz padronizados, as taxas variam de 2.4 kb/s utilizado em telefonia segura até 64 kb/s no G.711 PCM e G.722 banda larga (7kHz).

As taxas de bits para telefonia segura são na maior parte das vezes as menores, por serem criadas para um ambiente onde taxas superiores a 2.4 kb/s e 4.8 kb/s não são viáveis.

Em uma segunda faixa de taxa de bits vem os codificadores de voz para telefones celulares digitais. A primeira geração de telefones celulares digitais possuem codificadores de voz na faixa de 6.3 kb/s para o sistema Celular Digital Pessoal Japones (PDC – Personal Digital Cellular) até 13 kb/s para o sistema GSM (Global System for Mobile Communications). Estes sistemas de codificação digitais substitui o sistema analógico, com um aumento de 3 a 5 vezes de capacidade. Nesta segunda faixa ainda encontramos os novos padrões recomendados pelo ITU que são o G.729 CS-ACELP 9 e G.729 CS-ACELP Anexo A) com taxa de 8 kb/s e o G.723.1 CS-ACELP com taxa de 5.3 e G.723.1 MPC-MLQ com taxa de 6.4 kb/s.

Numa terceira faixa encontramos finalmente os primeiros codificadores de voz recomendados pelo ITU que possuem taxas que variam de 16 kb/s (G.728 LD-CELP) a 64 kb/s (G.711 PCM).

Um aspecto importante quando se discute taxa de bits é que a taxa de bits de um codificador é dado pela sua taxa de pico. Entretanto, a maioria dos codificadores padronizados trabalham com uma taxa fixa de bits (a taxa de pico). Desta forma, combinando-se codificadores com taxa fixa de bits com detetores de atividade de voz teremos uma bistream com dois estados de taxa. A menor taxa é zero ou uma outra taxa baixa quando se deseja enviar um ruído de fundo. Este é o caso do da G729 com Anexo B, que inclui algoritmos e suporte a detecção de silêncio.

Em aplicações de conversação entre duas pessoas, por exemplo, é visto que cada uma das pessoas envolvidas na conversa fala em torno de 40% do tempo, o que faz com que em 60% do tempo o seu canal de comunicação seja desperdiçado. Assim, com a utilização da detecção de atividade de voz em um sistema com bitstrem de dois estados teremos uma economia de 2.5 vezes no canal de comunicação.

A tabela 1 mostra uma lista de codificadores padronizados com suas taxas de bits, tamanho do frame (janela de tempo em que o codificador atua) e lookahead (quantidade de tempo do futuro frame que o codificador precisa)  e ano de padronização.

Padrão

Taxa

Tamanho do Frame e Lookahed

Ano da padronização

Recomendações do ITU

G.711 PCM

64 kb/s

0.125 ms e 0 ms

1972

G.726, G727 ADPCM

16, 24, 32, 40 kb/s

0.125 ms e 0 ms

1990, 1990

G.722 Wideband Coder

48, 56, 64 kb/s

0.125 ms e 1.5 ms

1988

G.728 LD-CELP

16 kb/s

0.625 ms e 0 ms

1992, 1994

G.729 CS-ACELP

8 kb/s

10 ms e 5 ms

1995

G.723.1 MPC-MLQ

5.3 e 6.4 kb/s

30 ms e 7.5 ms

1995

G.729 CS-ACELP A

8 kb/s

10 ms e 5 ms

1996

Padrões de Celulares

RPE-LTP (GSM)

13 kb/s

20 ms e 0 ms

1987

IS-54 VSELP (TIA)

7.95 kb/s

20 ms e 5 ms

1990

PDC VSELP (RCR Jap)

6.7 kb/s

20 ms e 5 ms

1990

IS-96 QCELP (TIA)

8.5 / 4 / 2 / 0.8 kb/s

20 ms e 5 ms

1993

PDC PSI-CELP

3.45 kb/s

40 ms e 10 ms

1993

U.S DoD telefonia segura

FS-1015 LPC-10E

2.4 kb/s

22.5 ms e 90 ms

1984

FS-1016 CELP

4.8 kb/s

30 ms e 7.5 ms

1991

MELP

2.4 kb/s

22.5 ms e 23 ms

1997

 

4.2      Atraso

O atraso de um codificador de voz tem um grande impacto sobre sua adequação a uma determinada aplicação. Para melhor ilustrar esta importância vamos comparar dois tipos de aplicações. A primeira é um codificador de voz utilizado para uma aplicação de conversação em tempo real e a segunda é uma aplicação de armazenamento de voz. Foi provado através de estudos feitos por psicólogos que um atraso maior do que 300 ms torna inviável este tipo de conversação. Assim, para a aplicação de conversação em tempo real, codificadores que possuem atrasos maiores ou iguais a 300 ms não são adequados para este tipo de aplicação. Já para aplicações de armazenamento de arquivos atrasos na ordem de 300 ou mais ms são totalmente toleráveis, tendo em vista que os usuários destes tipos de aplicações esperam por um atraso.

Os codificadores de voz com menor atraso são o G.711 PCM, G.726, G.727 ADPCM tem o menor atraso. Estes codificadores trabalham com amostras, e são chamados de codificadores por forma de onda.

Entretanto, para aumentar a taxa de compressão, a voz precisa ser dividida e codificada em blocos ou frames. Para o G.728 por exemplo são utilizadas 5 amostras por frame ou 0.625 ms. As primeiras gerações de telefones celulares utilizavam frames com tamanho de 20 ms e 5 ms de lookahead ("olha a frente"). Estes codificadores são chamados de codificadores paramétricos.

O atraso total de um codificador de voz é formado pela soma de 5 variáveis: tamanho do frame, lookahead, atraso de multiplexação, tempo de processamento e tempo de transmissão. O algoritmo de compressão é responsável pelas duas primeiras variáveis. A quarta variável (tempo de processamento), está indiretamente ligada ao algoritmo pois depende de sua complexidade, finalmente a terceira e a quinta variável dependem do sistema em que este codificador vai ser utilizado.

4.3      Complexidade

A maioria dos codificadores são implementados em processadores digitais de sinais (DSP) ou em hardwares dedicados. Entretanto, recentemente codificadores de voz para multimídia estão sendo implementados para Processadores (CPU) de computadores pessoais (PC) e estações de trabalho.

A medida de complexidade para um DSP e uma CPU é diferente devido a natureza dos dois sistemas. Mas, no coração da complexidade encontra-se sempre o número de instruções que precisam ser executadas para implementar o codificador de voz. É importante observar também que DSP’s de diferentes fabricantes possuem eficiências diferentes para implementar um mesmo codificador. A medida utilizada para determinar a complexidade computacional de um codificador é o número de instruções por segunda necessárias a sua implementação. Esta medida é geralmente expressa em milhões de instruções por segundo (MIPS). Na tabela a seguir é mostrado a complexidade de alguns codificadores padronizados.

Codificador

Complexidade

G.726

2 MIPS

G.727 ADPCM

2 MIPS

G.723.1 MPC-MLQ

16 MIPS

G.729 CS-ACELP

20 MIPS

G.729 CS-ACELP A

11 MIPS

G.728 LD-CELP

30 MIPS

Os DSP’s possuem também memória estáticas de alta velocidade (RAM) para armazenar dados e variáveis. Normalmente esta quantidade de memória varia de 1000 a 10000 Words. A quantidade de memória necessária é uma segunda medida de complexidade. Finalmente, os DSP’s possuem uma terceira medida de complexidade que é a quantidade de memória ROM necessária. Nesta memória ROM é onde são armazenadas as instruções do codificador.

Para uma implementação em PC ou estação de trabalho, as duas últimas medidas de complexidade podem ser descartadas, haja visto que estes possuem muita memória (são memória mais lentas, entretanto muito mais baratas).

Computadores de propósito geral como os PC’s tendem a ter arquiteturas de processadores menos eficientes do que os DSP para algoritmos de processamento de voz. Conseqüentemente, 10 MIPS em um DSP representam muito mais ciclos em um PC.

4.4      Qualidade

Dentre os atributos de um codificador de voz, Qualidade é o atributo que mais possui variáveis. Quando os codificadores de voz eram usados somente para telefonia segura, qualidade era sinônimo de inteligibilidade, pois a primeira necessidade da telefonia segura era que a voz decodificada fosse inteligível. Em caso contrário a telefonia segura não seria de grande utilidade.

Os próximos codificadores de voz para redes telefônicas funcionavam codificando amostra por amostra. Assim, sua qualidade era mais ou menos proporcional a relação sinal ruído (SNR) advinda da quantização das amostras do sinal de entrada. Desta maneira, a inteligibilidade deixou de ser uma preocupação. Uma relação sinal ruído alta o suficiente para um sinal de voz também era alta o suficiente para um outro tipo de sinal de áudio, como ruídos e músicas de fundo.

Entretanto, nas baixas taxas de bits utilizadas em telefonia segura, a voz é codificada com base em um modelo de produção da fala, o qual não é capaz de representar música ou qualquer outro ruído que esteja combinado a voz. Assim, quando a voz de entrada de um codificador que opera em baixas taxas de bits esta combinada a algum outro tipo de ruído, a performance deste codificador fica bastante degradada. Este problema é conhecido com robustez a ruídos de fundo (robustness to background noise). Muitas pesquisas da década passada foram em cima de sistemas de codificação capazes de serem robustos a estes ruídos de fundo. Os problemas com ruídos de fundo era, observado, para todos os codificadores que operavam em taxas inferiores a 16 kb/s.

Até este momente, falamos sobre três aspectos da qualidade: codificação de voz "limpa", codificação de voz com ruído e inteligibilidade da voz decodificada, entretanto, para avaliar a qualidade de um determinado codificador de voz, muitas outros aspectos tem que ser levados em consideração, como por exemplo: nível de sinal de entrada muito alto ou baixo, para uma variedade de línguas diferentes ou em canais ruidosos; capacidade de transportar sinais de sinalização da rede telefônica, de modens e faxes. Esta lista é extensa, e todos somos capazes da imaginar outros diferentes tipos de sinais, os quais seriam importantes que fossem transportados com qualidade.

O ITU, possui uma vertente especializada em testes de qualidade de codificadores de voz (Speech Quality Expert Group). Este grupo realiza medidas de qualidade e determina quando a qualidade de um determinado codificador de voz é suficiente para um tipo de aplicação. A presença deste grupo no ITU assegura que seus codificadores de voz recomendados atenderão todas as especificações as quais se propõe.

Figura 1: Qualidade dos codificadores de voz.

A importância de testes de robustez em sistemas de codificação pode ser observada com o exemplo da introdução da telefonia digital nos EUA, onde os codificadores de voz utilizados não foram testados em situações onde o sinal de voz de entrada continha ruídos. Como telefones celulares são normalmente utilizados em sistemas viva voz de automóveis, onde a quantidade de ruído introduzida junto a voz é grande, ou ainda como os microfones dos aparelhos celulares ficam próximos aos lábios dos falantes e o nível do sinal de entrada ficava alto, os sinais de entrada desses codificadores estavam longe de serem sinais limpos de voz. Desta maneira, a maior parte dos usuários dos primeiros telefones celulares digitais rejeitaram esta tecnologia, justificando que os telefones celulares analógicos com modulação FM eram melhores. Assim, em 1995 a primeira geração de codificadores de voz para telefones celulares foram substituídas.

A figura 1, nos apresenta a performance, em relação a qualidade da voz para diversos tipos de codificadores.

 

5         Motivação para o uso da Codificação CS-ACELP

Existem três características principais que fornecem a motivação para o uso da codificação CS-ACELP: atraso, bit-rate e qualidade, estas características são traduzidas para o usuário na forma de qualidade de serviço, interoperabilidade e largura de banda[10].

5.1      Qualidade de Serviço

Devido ao pequeno atraso do algoritmo(janela de 10ms) e ao fato da qualidade do sinal recuperado não variar com a distância que o sinal codificado cruzou a codificação CS-ACELP é ideal para a utilização em sistemas de telefonia.

Além da aplicação em redes de voz, o CS-ACELP pode ser facilmente adaptado para funcionar em redes de dados como Frame Relay e ATM que são projetas para trabalhar com o menor atraso possível.

5.2      Interoperabilidade

CS-ACELP é uma recomendação da ITU-T sob o código G.729. Isto garante interoperabilidade entre produtos de diferentes fabricantes, protegendo assim o investimento do comprador.

5.3       Economia da banda

O CS-ACELP multiplica por 8 a capacidade de transmissão do atual sistema de telefonia, pois reduz para 8000Hz o bit rate necessário para a transmissão de um canal de voz. Os anexos da da norma G.729 ainda fornecem bit-rates menores para o controle ainda maior da banda em momentos de grande congestionamento.

6          Descrição Geral do Codificador CS-ACELP

 O codificador CS-ACELP (Recomendação G.729 da ITU-T) foi desenvolvido para ser usado com sinais digitais obtidos a partir de sinais analógicos tratados da seguinte maneira.

Primeiramente deve-se realizar uma filtragem para a limitação da banda do sinal de acordo com a norma de telefonia (Recomendação G.712 da ITU-T). O sinal então deve ser amostrado a taxa de 8000 Hz e então convertido para codificação PCM linear de 16-bit. Outros tipos de codificação, como PCM 8-bit não linear (Recomendação G.711 da ITU-T), deve ser convertido para PCM 16-bit linear antes de serem aplicados ao conversor CS-ACELP.

O codificador opera em janelas de 10ms que correspondem a 80 amostras a taxa de amostragem de  8000Hz. Para cada janela de 10ms, o sinal é analisado de maneira a se obter os parâmetros do modelo  CELP (coeficientes do filtro de predição linear, índices das palavras de código fixas e adaptativas, e as ganhos).

6.1      Princípios Básicos

 

6.1.1       A Construção da Voz e LPC

 

A codificação CS-ACELP é baseada na técnica Predição Linear Excitada por Código (Code Excited Linear Prediction - CELP) que por sua vez é baseada na Codificação Linear com Predição (Linear Predictive Coding – LPC). Para compreendermos o funcionamento do codificador CS-ACELP precisamos primeiro compreender o funcionamento do LPC e então do CELP.

O LPC parte do princípio que o sinal de voz é gerado por uma fonte no fim de um tubo. A fonte é o espaço que existe entra as cordas vocais e é chamado glote. A glote emite um zumbido que pode ser caracterizado por sua intensidade e freqüência. O tubo é formado pela garganta e pela boca, estas podem ser caracterizadas por suas freqüências de ressonância, que são chamadas de freqüências formadoras. O efeito do tubo sobre o zumbido formam a voz.[5]

Através da análise do sinal de voz, o LPC remove o efeito das freqüências formadoras e faz uma estimativa da intensidade e da freqüência do zumbido restante. Após a remoção das freqüências formadores o zumbido restante é chamado de resíduo.

Os valores que descrevem as freqüências formadoras e o resíduo são armazenados e transmitidos. No lado do receptor, o LPC, a partir dos valores do resíduo reconstrói o sinal de excitação (o zumbido), e com os valores das freqüências formadoras ele constrói um filtro que funcionará como o tubo. A fala é reconstituída através das passagem da excitação através do filtro.

 

6.2      Processo de Codificação

 

6.2.1       Determinando as Freqüências Formadoras

 

O primeiro desafio do LPC é a determinação das freqüências formadoras a partir do sinal de voz. A solução para esse problema é uma equação de diferenças onde cada amostra é descrita como a combinação linear de amostras anteriores. Essa equação recebe o nome de Linear Predictor (LP). São os coeficientes dessa equação que descrevem as freqüências formadoras. O LPC estima esses coeficientes através da minimização do erro médio quadrático entre o sinal que foi previsto e o sinal real. Vários métodos podem ser usados nesta etapa (auto- correlação, covariância). Estes coeficientes serão usados em outra etapa do processo para separar a influência das freqüências formadoras do sinal de voz.

A solução apresentada acima é simples, pois considera o caso de um tubo perfeito, ou seja sem ramificações. Na prática os sons vocais podem ser bem representados como um tubo simples, mas sons nasalados são formados em um “tubo” que contém uma ramificação, as fossas nasais, e precisam de um algoritmo mais complexos para serem representados. Essa diferença é geralmente ignorada e compensada em um estágio posterior do processo de codificação.

 

6.2.2       Codificando a Excitação

 

Quando os coeficientes da equação de previsão foram determinados com precisão, o processo de retirar a influência das freqüências formadoras do sinal de voz se torna extremamente eficiente, e o resultado é o sinal do zumbido puro. Este sinal por sua vez é facilmente codificado em função da sua freqüência e amplitude.[1][2]

No entanto, a determinação dos coeficientes que descrevem as freqüências formadoras não é perfeita.  Além disso sons nasais, como foi dito anteriormente, não são representados corretamente pelo LPC. Esse problemas significam, na prática, que parte da informação sobre as freqüências formadores é deixada no resíduo. Outras variáveis como posição da língua e ressonância na traquéia, também não são descritos pelo LPC.

Como essa informação fica no resíduo, e conseqüentemente não é transmitida para o LPC no receptor, dados importantes para a síntese da voz são perdidos, resultando em má qualidade da voz. 

No LPC são transmitidos apenas os coeficientes que descrevem o zumbido de excitação, que no receptor serão usados para recriar esse zumbido. Isto também acarreta a perda de qualidade da voz. Para aumentar a qualidade do sinal, várias técnicas de codificação do resíduo foram criadas para que mais informações sobre este também fossem transmitidas.

 

 

6.2.1       Codificação do Resíduo (CELP)

 

Para enviar informações sobre o resíduo, obviamente é necessário o aumento da taxa de transmissão de bits.  Para minimizar ao máximo esse aumento, foi desenvolvida a técnica de Predição Linear Excitada por Código (Code Excited Linear Prediction – CELP).[3]

No CELP, é utilizada uma tabela com os valores mais comuns de resíduos. O codificador analisa o resíduo e o compara com os valores existentes na tabela, ao encontrar o melhor valor o codificador envia apenas a palavra de código que representa  a valor da tabela. O receptor procura na sua tabela de resíduos o correspondente a palavra de código recebida, e então usa esse valor para excitar o filtro das freqüências formadoras.

Para funcionar corretamente é necessário uma tabela de resíduos grande o suficiente para conter todos os valores de resíduos. O problema é que a tabela se torna grande demais, aumentando muito o tempo de procura pelo valor correto, pois é necessário um valor na tabela para cada valor de freqüência.

Com o objetivo de reduzir o problema do tamanho excessivo da tabela, na prática são utilizadas duas tabelas. Uma delas com valores fixos de resíduos que são determinados durante a construção do sistema. A outra tabela é preenchida durante a operação do sistema com cópias atrasadas do resíduo usado anteriormente, onde o atraso representa a mudança de freqüência.[1]

 

6.2.2       Mais um Avanço (ACELP)...

 

Visando o aumento da qualidade da voz reconstituída, foi introduzida a utilização de códigos algébricos na tabela de resíduos, chamada de  Predição Linear Excitada por Código Algébrico (Algebraic Code Excited Linear Prediction - ACELP). Esses códigos, devido a suas propriedades matemáticas especiais, são utilizados na reconstrução do resíduo, e promovem um aumento na qualidade das componentes harmônicas do mesmo.[1]

 

6.2.3       ...e mais um (CS-ACELP)

 

Para otimizar ainda mais o processo de procura nas tabelas de resíduos, foi desenvolvida uma nova forma de armazenamento, onde um algoritmo faz a pré-seleção dos futuros candidatos a serem escolhidos para representar a próxima janela sob análise. Essa técnica recebeu o nome de Estrutura Conjugada, e originou a codificação Estrutura Conjugada Predição Linear Excitada por Código Algébrico (Conjugate Structure Algebraic Code Excited Linear Prediction – CS-ACELP).[1]

 

6.3      Codificador CS-ACELP

 

A seguir é apresentado o diagrama de blocos simplificado do codificador CS-ACELP:[1]

 

            Figura 1: Diagrama de Blocos Simplificado do Codificador CS-ACELP

                       

 

O diagrama de blocos acima representa o processo já descrito em 2.

A saída do codificador é uma seqüência de bits a 8000Hz, contendo 80 parâmetros para cada 10ms de sinal de voz analisado. Neste caso a taxa de compressão atinge 16:1.

 

6.4      Decodificador CS-ACELP

 

O diagrama de blocos do decodificador CS-ACELP é apresentado a seguir[1]:

 

Figura 2: Diagrama de Blocos Simplificado do Decodificador CS-ACELP

 

 

O procedimento de decodificação é muito mais simples que a codificação. Os parâmetros do resíduo são extraídos a partir das tabelas de resíduos utilizando as palavras de código recebidas. Esses parâmetros são então somados recuperando o sinal de excitação. O filtro LP também é construído a partir dos coeficientes recebidos. A sinal de voz é reconstituído aplicando-se ao o sinal de excitação ao filtro LP. Após o filtro LP ainda há uma etapa de pós-processamento envolvendo novos filtros e o escalonamento do sinal.

 

7         Aplicações

 

A compressão do sinal de voz tem muitas aplicações práticas. Um exemplo é na telefonia celular digital onde muitos usuários tem que dividir a mesma largura de espectro. Compressão permite que mais usuários usem o mesmo espaço. Outro exemplo são os dispositivos de armazenagem de voz, permitindo a armazenagem de mis discursos para um dado tamanho de memória.

 

7.1      Exemplo Prático

Como já visto anteriormente a codificação CS-ACELP é a mais complexa das codificações paramétricas. A empresa Atlanta Signal Processor Inc.[11] fornece o código já pronto e testada para utilização em sistemas com os seguintes requisitos mínimos, DSP TMS320C3x operando a 60Mhz, onde serão utilizados,em média, 80% da capacidade computacional do processador. Para operação full-duplex são necessário aproximadamente 350Kb de memória RAM externa. Esse tipo de implementação reduz o tempo de desenvolvimento de qualquer aplicação que use CS-ACELP.

Além da Atlanta Signal Processors, a empresa Texas Instruments também fornece implementações para DSP do algoritmo do CS-ACELP[12].

8         Conclusão

Novas técnicas de compressão de voz, dados e imagens tem adiado a solicitação de novos incrementos de taxas de transmissões, mantendo os custos e ampliando os serviços. O uso de tecnologias de compartilhamento de serviços como o Frame Relay e Internet tem reduzido, substancialmente, os custos de comunicação de dados e voz.[9]

A tecnologia CS-ACELP permite ligações telefônicas a 8.000 bits por segundo (bps) onde um canal de transmissão de 64.000 bps pode estabelecer até 8 ligações simultâneas entre dois pontos. O CS-ACELP também é facilmente adaptado para se rutilizado com as tecnologias Frame Relay e ATM.

Atualmente é de fundamental importância do uso coerente da largura de banda disponível, tornando a compressão de voz de fator decisivo para isto. No entanto, para o desenvolvimento de qualquer aplicação que necessite utilizar codificação/compressão de voz, é muito importante conhecer todos os padrões de codificação disponíveis. A utilização de sistemas padronizados de codificação, permitem a interoperabilidade destas aplicações com outras aplicações que utilizem o mesmo padrão.

Apesar, de existirem atualmente diversos sistemas padronizados de codificação de voz, muita pesquisa ainda é necessária para superar alguns problemas ainda existentes nesta área.

·         Complexidade dos algoritmos;

Finalmente, CS-ACELP (G.729) é uma norma da ITU-T, portanto é a escolha ótima para compressão de voz com qualidade e pequena largura de banda com um atraso aceitável. CS-ACELP também é facilmente adaptável a tecnologias de transporte de dados, seguindo a tendência das redes de voz sobre IP.

9         Referências

 

[1]              Recomendação G.729 – “Coding Speech at 8 kbit/s using Conjugate-Structure Algebraic Code Excited Linear Prediction (CS-ACELP)”.

 

[2]              www.data-compression.com/speech.html - Introdução a compressão de voz

 

[3]              www.mobile.ecs.soton.ac.uk/jason/papers/iee_final/iee_final.html – Teoria sobre codecs CELP

 

[4]              www.dspguide.com - Livro gratuito sobre DSP.

 

[5]              cslu.cse.ogi.edu/tutordemos/SpectrogramReading/ipa/ipahome.html - Teoria sobre a formação da voz.

 

[6]              www.bell-labs.com/org/1133/Research/SpeechAudioCoding/index.html - Tutorial básico sobre compressão de voz.

 

[7]              www.inf.ufsc.br/~jefepist/ine6403/seara/ - Codificadores de Voz
Características que diferenciam os codificadores de voz e suas aplicações

[8]              http://www.lecom.dcc.ufmg.br/~sergiool/telefonia/voz.htm - Voz

[9]              http://www.efagundes.com/_disc2/00000012.htm - Noticias de Telecomunicações

[10]            “Why choose G.729” - Sipro Lab Products Folder.

[11]            “G.729 CS-ACELP Speech Coder” - Atlanta Signal Processors Datasheet

[12]            “Implementation of G.729 on the TMS320C54x” – Texas Instruments Datasheet