José Ribamar Smolka Ramos
Telecomunicações
Artigos e Mensagens
ComUnidade
WirelessBrasil
Dezembro 2004 Índice Geral
22/12/04
-------------------------------------------------
----- 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