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 |
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
5 Motivação
para o uso da Codificação CS-ACELP
6 Descrição
Geral do Codificador CS-ACELP
6.1.1 A
Construção da Voz e LPC
6.2.1 Determinando
as Freqüências Formadoras
6.2.1 Codificação
do Resíduo (CELP)
6.2.2 Mais
um Avanço (ACELP)...
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.
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.
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:
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]
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]
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]
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 |
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.
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.
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.
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].
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.
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.
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.
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).
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.
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.
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.
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]
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]
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]
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.
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.
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.
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].
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.
[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