José Ribamar Smolka Ramos
Telecomunicações
Artigos e Mensagens


ComUnidade WirelessBrasil

 Dezembro 2004               Índice Geral


22/12/04

• Duas mensagens:
1. Vocoders
2. Respondendo perguntas sobre Vocoders

-------------------------------------------------

----- Original Message ----- 
From: jose.smolka@vivo.com.br 
To: wirelessbr@yahoogrupos.com.br ; Celld-group@yahoogrupos.com.br 
Sent: Wednesday, December 22, 2004 5:47 PM
Subject: [Celld-group] VOCODERs

Pegando um "gancho" deixado pelo "tranquilo_DF" naquela famigerada discussão:

(...) um exemplo é o VOCODER que eu vi alguém perguntar sobre "saber" o funcionamento, e no entanto não vi a resposta sobre isso (...)

Pois é... parodiando Zéca Pagodinho: "você sabe o que é um VOCODER? 
Eu não sei, nunca vi, só ouço falar..."  :o)

Literalmente, VOCODER é um acrônimo para VOice enCODER - codificador de voz (claro que, para cada tipo de encoder, existe o decoder correspondente, mas ambos os casos recebem a mesma denominação). 
VOCODERs pertencem a uma classe de dispositivos de hardware e/ou software cujo objetivo é adaptar as características de um sinal (analógico ou digital) às limitações do meio de transmissão - onde a banda de passagem é limitada, ou às limitações do meio de armazenamento - onde o espaço físico disponível é limitado. Nesta categoria geral entram, também, os MODEMs (MOdulator/DEModulator) de dados e CODECs (COder/DECoder) de vídeo.

Vamos nos limitar à transmissão digital de um sinal de voz (áudio, analógico). 
Existem aspectos matemáticos e psicológicos envolvidos, mas vamos devagar. 
As etapas do processo que interessam são: 
- digitalização e codificação do sinal original, 
- transmissão digital do sinal codificado, e 
- recepção, decodificação e "analogização" do sinal no destino.

O primeiro passo do caminho é transformar um sinal transportado por variações de pressão atmosférica (geradas pelas cordas vocais do indivíduo transmissor) em um análogo eletromagnético. Isto é feito pelo microfone,
que cria um sinal elétrico de saída (variação de tensão ou corrente) diretamente proporcional ao sinal acústico de entrada.

O próximo passo é digitalizar o sinal de saída do microfone. 
Aqui começam as bruxarias. 
A técnica básica, e fácil de entender, é conhecida como PCM (Pulse-Coded Modulation), e as técnicas mais sofisticadas baseiam-se em modelos matemáticos do funcionamento da laringe e do ouvido humanos. 
Vou comentar apenas o caso básico, porque, sinceramente, até para mim (que gosto de matemática e física) os modelos matemáticos dos modelos mais sofisticados são impenetráveis à primeira vista.

Anyway... o PCM convencional, tal como aplicado em telefonia, parte de um primeiro princípio, que vem da psicologia da percepção de sons pelos seres humanos: embora o espectro auditivo varie de 0 a 20 KHz, o essencial para compreensão do conteúdo e individualização da voz do transmissor está contido na faixa que vai de 0 a 4 KHz (se o assunto for áudio de alta fidelidade - estilo CD, ou se você estiver lidando com uma população de pessoas com ouvido absoluto - digamos um clube de afinadores de piano, então as premissas mudam). 
Então, pegamos o sinal de saída do microfone e passamos por um filtro passa-baixa com freqüência de corte em 4 KHz (este filtro é conhecido como anti-aliasing)

Agora vem a parte matemática da coisa. Teorema de Nyquist: 
Um sinal limitado em faixa (a passagem pelo filtro garante isso) na freqüência Wc pode ser integralmente recuperado a partir das amostras do sinal, tomadas com freqüência de amostragem Ws tal que Ws >= 2 * Wc. Então, como nosso sinal está limitado a 4 KHz, se fizermos a amostragem a uma taxa mínima de 8 Kamostras/s, o trem de amostras (valores discretos do sinal original em cada um dos pontos de amostragem no tempo) contém toda a informação necessária para a recuperação do sinal original no destino. 
Agora uma pequena discussão sobre a filtragem: 
Fazer anti-aliasing analógico com freqüência de corte muito precisa é um problema, porque bons filtros analógicos custam caro. 
A alternativa boa e barata é fazer um filtro digital após a amostragem. Neste caso, o que é feito é fazer o anti-aliasing sem muita precisão, amostrar o sinal de saída do anti-aliasing com frequências bem maiores que a mínima exigida pelo teorema (digamos 16 Kamostras/s - isto é chamado de oversampling), e depois descartar as amostras em excesso (uma sim, outra não, neste caso, para voltar ao mínimo de 8 Kamostras/s exigidas pelo teorema - este processo é chamado de dizimação). O efeito final é o mesmo de um filtro passa-baixa com freqüência de corte precisamente em 4 KHz, a um custo aceitável.

Agora o problema é a representação numérica do valor de cada amostra, que é conhecido por quantização. 
Cada amostra individual pode assumir, de forma contínua, valores entre 0 (nenhum sinal de entrada) e um valor máximo M.
Vamos dividir o intervalo 0 - M em n sub-intervalos. 
Cada amostra é avaliada para identificar em qual dos n sub-intervalos ela se encontra, e, a partir daí o número do intervalo onde a amostra se encaixou (variando de 0 a n-1) passa a representar o valor real da amostra. 
Aqui surge um problema para a recepção: se cada amostra é representada apenas pelo número do sub-intervalo onde ela se encaixou na origem, qual valor atribuir a ela na decodificação? 
A aproximação estatisticamente aceitável é o valor médio do sub-intervalo correspondente, o que cria uma probabilidade de imprecisão na recuperação do valor exato da amostra. 
Este problema, conhecido como erro de quantização, pode ser minimizado aumentando o número de sub-intervalos, pois quanto maior for este número, menor a probabilidade de ocorrência de erros e, quando eles ocorrem, a diferença entre o valor recuperado da amostra e o seu valor original é minimizado.

Agora voltamos aos aspectos psicológicos da percepção de sons. 
Para o caso telefonia, chegou-se à conclusão que n=256 produzia um resultado final aceitável (áudio digital de alta fidelidade usa n=65536 - a escolha de potências de 2 para os valores de n não é casual), mas tem de ser levada em conta que a sensibilidade do ouvido humano aos erros de quantização varia logaritmicamente, sendo maior para amplitudes baixas e menor para amplitudes altas. 
Então, a largura de cada um dos 256 sub-intervalos não é igual. 
Os sub-intervalos correspondentes a amplitudes baixas são menores (para minimizar o erro onde o ouvido é mais sensível), e os sub-intervalos das amplitudes altas são maiores (porque aqui a percepção dos erros de quantização é menor). 
Este ajuste é denominado companding e, conforme o organismo de padronização, pode ser feito com escalas logarítmicas diferentes (no caso de telefonia, a ANSI recomenda uma escala chamada A-law, e a ITU recomenda uma escala chamada mu-law), que tem de ser usadas de forma consistente entre transmissor e receptor, sob pena de perda de fidelidade.

Então, se o número que identifica a amostra pode variar entre 0 e 255, isto pode ser representado por um número binário com 8 bits de tamanho.
Finalmente, temos o sinal digitalizado, com uma taxa de bits igual a 8 Kamostras/s * 8 bits/amostra = 64 Kbps. Este valor parece familiar? 
É a banda do canal básico para comunicações digitais em todas as operadoras de telefonia do mundo. 
Só que, para o caso de telefonia móvel, onde a interface do usuário com o sistema é feita via rádio, fica difícil usar esta taxa de bits toda, porque isto significaria alocar uma faixa de rádio muito grande para cada usuário, e caberiam poucos usuários em cada célula.
O segredo é tentar diminuir a demanda de Kbps por usuário, fazendo uma pós-produção no sinal digital PCM. 
Os algoritmos para fazer isso são conhecidos como algoritmos de compressão.

Existem duas categorias de algoritmos de compressão: 
- sem perda (lossless), onde os algoritmos de compressão/descompressão permitem recuperação exata do fluxo de bits original; ou 
- com perda (lossy), onde existem diferenças entre o fluxo de bits original e o fluxo de bits recuperado na descompressão. 
Algoritmos lossy são admissíveis, desde que a perda ocorra de maneira a não prejudicar a percepção do ouvinte sobre a qualidade do som (metalização, picotes, "efeito pato donald" são conseqüências comuns de perdas excessivas). 
Os algoritmos (lossless ou lossy) podem ser abertos (como os recomendados pelo MPEG da IEA/IEC) ou proprietários (como o Viterbi Encoding, da Qualcomm). 
Com o uso de algoritmos de compressão, pode-se atingir redução do fluxo de bits PCM para 32, 16 e até 8 Kbps, sem perda significativa da qualidade do sinal recuperado.

O próximo passo é modular o sinal comprimido de forma a maximizar a relação sinal/ruído na transmissão. Porquê? Lei de Shannon: a capacidade máxima de transmissão de informação C, em bps, de um canal ruidoso é dada pela
expressão C = W * log2 (S/N), onde W é a banda de passagem (em Hz), e S/N é a relação sinal/ruído. 
Como a banda de passagem está definida, para melhorar a capacidade, é necessário aumentar S/N. 
Em comunicações digitais, isto significa um compromisso entre o número de estados diferentes que o sinal pode assumir e a quantidade de transições de estado por segundo (baud rate) que o receptor consegue discriminar com sucesso.

Vamos usar como exemplo a versão digital de modulação AM, conhecida como ASK (Amplitude-Shift Keying). 
Se associarmos dois níveis de amplitude diferentes da portadora, bem separados entre si, para simbolizar,
respectivamente, os valores binários 0 e 1 (vamos esquecer detalhezinhos sobre como sinalizar quando muda de 0 para 1 e de 1 para 0 - aí entram coisas como NRZ, NRZI, Manchester encoding, etc.), podemos ter um bom S/N, separando bem os dois níveis, a ponto de ser altamente improvável que o ruído do ambiente provocasse uma interpretação errada do significado do sinal. 
Mas esta modulação está limitada a codificar 1 bit do sinal digital em cada transição de estado. 
Se utilizarmos 4 níveis diferentes de amplitude, cada transição pode representar 2 bits do sinal digital, mas a S/N diminui, porque agora é mais fácil um erro de interpretação por causa de flutuações aleatórias introduzidas pelo ruído do ambiente. 
Podemos melhorar a modulação introduzindo mais uma variável, por exemplo a fase do sinal. 
Permitindo que o sinal modulado posa assumir 2 estados facilmente discrimináveis de amplitude, e 2 estados facilmente discrimináveis de fase (digamos, zero e pi radianos), temos 2 * 2 = 4 estados possíveis, com 2 bits do sinal digital codificados em cada transição de estado. 
Melhora a capacidade sem sacrificar o S/N. 
Este é o modelo básico conhecido como quadratura de amplitude e fase, ou QAM (Quadrature-Amplitude Modulation). 
Se você aumentar o número de possibilidades para cada variável, você também aumenta a "constelação" de estados, aumentando o número de bits codificados/transição, até o ponto onde S/N ainda fique aceitável. 
Daí vem 8-QAM, 16-QAM, e outras tantas formas mais exóticas, mas todo mundo com o mesmo objetivo básico: codificar o máximo possível de bits/transição mantendo S/N dentro de valores aceitáveis.

Para a recepção, siga o caminho inverso: demodulação para obter o sinal comprimido original, descompressão para obter (talvez com perdas) o sinal digital original, "analogização" para obter uma réplica (com erros de quantização) do sinal elétrico analógico original, e amplificação + alto-falante para reconstituir o sinal acústico analógico original. 
Se tudo estiver bem feito, o ouvinte não vai se queixar de que não entende o que está sendo dito, ou que não consegue reconhecer a quem pertence a voz.

Ponha esta "tranqueira" toda junta em um mesmo conjunto de ASICs (Application-Specific Integrated Circuit), et voilà, temos um VOCODER

[ ]'s

J. R. Smolka

--------------------------------------------------------------------------------

De: jose.smolka@vivo.com.br
Data: Qui Dez 23, 2004 11:40 am
Assunto: Respondendo às perguntas sobre VOCODERs

Por partes:

Para o Evandro (do grupo wirelessbr, para o pessoal do celld-group esta parte desta msg não tem sentido).
Acho que vc não percebeu meu objetivo. Vou explicar melhor. Não estou querendo continuar, expandir ou modificar a discussão, para mim pra lá de esgotada (e, sinceramente, off-topic) do CDMA x GSM.
O Hélio avisou, e cumpriu, que msgs sobre o tema seriam encaminhada para uma página separada do site, e não seriam mais postadas nos forums (pequeno preciosismo: já que forum é latim, o plural deveria ser latino também? No caso, "fora"?).
Pois bem. lá nesta página, uma das últimas msgs era de um membro do celld-group pedindo, justamente, que a discussão voltasse ao plano técnico e sugerindo que o assunto dos VOCODERs fosse explicado (apesar de, no
contexto da discussão, o tema tenha sido proposto com segundas intenções).

Portanto, se dei a impressão de estar querendo "tripudiar" no contexto daquela discussão, me desculpe. Para mim ela é assunto encerrado, it's over, finito, kaput!!!

Para o Marcelo (do celld-group)
Primeiro detalhe, não é o caso de dizer que o terminal celular é um VOCODER. Ele é um equipamento eletrônico que, entre outras tantas coisas, tem lá dentro um VOCODER (ou mais de um, se vc considerar que, em redes 2G,
o tratamento das chamadas de dados é diferente das chamadas de voz).

Não tenho nem condição de "escovar" os bits dos algoritmos, porque não sou especialista nisso, mas podemos discutir as filosofias básicas adotadas.

Uma primeira escola usa o PCM para fazer a conversão A/D (analógico/digital) na transmissão e D/A (digital/analógico) na recepção, e depois vai fazer tratamentos no bit stream PCM para economizar banda. Esta
é a filosofia que eu descrevi na msg anterior. É a mais básica, e a mais fácil de entender, por isso usei esta como exemplo. Tem várias possibilidades de tratamento do bit stream PCM, uma delas é supressão de silêncio (não só os silêncios entre frases, mas as pequenas pausas naturais entre palavras e fonemas, da cadência normal da fala), e outra é, sabendo a articulação típica dos fonemas, a duração de determinados sons é previsível, o que significa que, no bit stream PCM, existirão seqüências previsíveis de valores de amostra, que podem ser "abreviadas"na transmissão e "expandidas" na recepção.

Outra escola prefere abordar o sinal analógico de áudio como vc mencionou, um sinal modulado por um determinado dispositivo, no caso o aparelho fonador humano (laringe, faringe, e cavidade bucal). Compreendendo quais são as disposições físicas do aparelho fonador utilizadas na emissão de cada fonema, podemos codificar estas disposições. Nesta abordagem, o PCM será utilizado muito mais em termos de áudio de alta fidelidade, e o bit stream de saída (muito mais de 64 Kbps, neste caso) é analisado para identificar quais são as disposições do aparelho fonador do emissor associadas àqueles sons. O que é transmitido (possivelmente com compressões posteriores mais na linha do algoritmo Lempel-Ziv - o mesmo usado por programas populares de compressão, como WinZip, Gzip, TAR, etc.) é a informação de como o aparelho fonador do emissor está variando suas disposições físicas no tempo. Esta informação, na recepção, vai ser intepretada por um "aparelho fonador eletrônico", que faz a síntese dos sons associados.

Para o Evandro (celld-group)
Na verdade não sou tão especialista assim, a ponto de ficar tecendo comparações detalhadas sobre cada uma das tecnologias de codificação de voz que vc mencionou. Sei que o CELP e o ACELP caem na primeira escola que mencionei acima, mas não sei detalhes suficientes.
Com tanta gente fazendo "diabruras" no bit stream de áudio, o único parâmetro confiável para dizer se uma determinada tecnologia funciona ou não é pedir ao usuário que dê sua opinião sobre ela. O índice MOS (Mean
Opinion Score), como o nome diz, é o resultado de uma pesquisa de opinião de usuários sobre a qualidade subjetiva do sinal recebido. Se não me engano, cada usuário é convidado a ouvir alguma coisa (conversação? música?
leitura de texto? tudo isso junto? não sei) e dar opinião sobre a qualidade do áudio, numa escala de 0 (péssimo) a 5 (ótimo). Para que uma tecnologia seja considerada boa, tem de ter um escore médio igual ou melhor a 4 neste
tipo de teste.

Para falar dos vários tipos de VOCODER usados na prática em cada caso (CDMA, GSM, TDMA), vou ter de pesquisar e, quem sabe, publicar outra msg sobre o assunto depois (dá pra ouvir o Hélio salivando, he he he)
J. R. Smolka


 

ComUnidade WirelessBrasil                     BLOCO