Sie sind auf Seite 1von 48

IME { Mestrado em Engenharia Eletrica

PROCESSAMENTO DIGITAL DE SINAIS

Jose Antonio Apolinario Jr., D.Sc.


Sum
ario

Indice do Texto ii

1 Introduc~ao 1

2 Filtros Analogicos: func~oes aproximac~ao e implementac~ao 2

3 Metodos de Aproximac~ao:
Filtros IIR 6

4 Metodos de Aproximac~ao:
Filtros FIR 14

5 Tecnicas de Realizac~ao 22

6 Efeitos da Quantizac~ao 29

7 Processamento Digital de Voz 35

ii
Cap
tulo 1

Introdu
c~
ao

Nosso interesse reside nas ferramentas usadas para processar um sinal


digital ou discreto no tempo e em particular prover os alunos com um
texto simpli cado sobre projeto de ltros digitais.
Trataremos inicialmente do processamento executado por um sistema
discreto (digital) linear e invariante no tempo (sistema LTI, do ingl^es
\Linear and Time Invariant"), ou seja, um ltro. Veremos suas classi-
cac~oes e tecnicas de projeto bem como suas formas de realizac~ao.
Posteriormente, s~ao apresentados de modo resumido dois topicos de
interesse: os efeitos da utilizac~ao de um numero limitado de bits e a
codi cac~ao de sinal de voz.
Cap
tulo 2

Filtros Anal
ogicos: fun
c~oes

aproxima
c~
ao e implementa
c~
ao

Os ltros analogicos s~ao aqueles implementados sicamente com com-


ponentes tais como indutores e capacitores. Eles s~ao estudados e re-
presentados em termos de suas func~oes de transfer^encia no domnio da
Transformada de Laplace ou H (s). Um estudo mais detalhado de tais l-
tros esta fora do escopo de nosso curso mas o que realmente nos interessa
saber e que podemos aproveitar a vasta teoria desenvolvida para os l-
tros analogicos nos ltros digitais. Nosso problema, ent~ao, e sair de uma
func~ao de transfer^encia analogica em \s" e chegar a uma func~ao de sis-
tema digital em\z ". Isto deve ser feito de forma que um ltro estavel em
\s" resulte num ltro tambem estavel em \z ". Isto signi ca que todos
os polos analogicos (razes do denominador de H (s)) que se encontram
no semi-plano esquerdo do plano \s" sejam mapeados em polos digitais
(razes do denominador de H (z )) que se encontrem dentro do crculo
unitario no plano \z " como nos indica a Figura 2.1. Observe tambem,
nesta gura, a notac~ao usada neste curso para frequ^encia analogica (ou
velocidade angular em rad=s para ser mais preciso) -
- e para frequ^encia
IME { Mestrado em Engenharia Eltrica PDS I

digital - w - (rad).

plano Z
plano S

jw
z=e

s=jΩ

Figura 2.1: H(s) estavel deve gerar H(z) estavel.

Veremos no Captulo 3 como efetuar tal transformac~ao. Voltemos


nossa atenc~ao para os tipos de ltros analogicos mais usuais, ou sejam,
as mais importantes func~oes aproximac~ao. Lembre-se que e usual pro-
jetarmos um ltro iniciando por um prototipo passa-baixas com uma
especi cac~ao que pode, por exemplo, ser em termos da frequ^encia de
corte
c e da ordem N do ltro.

2.1 Filtro Butterworth


 conhecido como a aproximac~ao MAXIMAMENTE PLANA por sua
E
caracterstica suave tanto na banda passante como na de rejeic~ao. Pos-
sui uma representac~ao algebrica de sua resposta em frequ^encia em valor
absoluto quadratica dada por

jH (j
)j2 = p 2N

N
(2.1)

+
2cN

J. A. Apolin
ario Jr. { Dezembro 2003 3
IME { Mestrado em Engenharia Eltrica PDS I

2.2 Filtro Chebyshev


Este ltro possui um mnimo erro maximo na banda passante (aprox-
imac~ao \equal-ripple") e e suave na banda de rejeic~ao.

2.3 Filtro Chebyshev II


Este ltro e tambem conhecido como Filtro de Chebyshev Inverso e apre-
senta um maximo erro mnimo (\equal-ripple") na banda da rejeic~ao e e
suave na banda passante.

2.4 Filtro Elptico


 tambem conhecido com Filtro de Cauer e usa aproximac~oes de
E
Chebyshev para ambas as bandas, passante e de rejeic~ao.

2.5 Filtro Digital


Para iniciarmos o nosso estudo de ltro digital, representamos na Figura 2.2
um sistema LTI pela sua resposta ao impulso h(n), sua entrada x(n) e sua
sada ltrada y (n).

x(n) h(n) y(n)

Figura 2.2: Representac~ao de um ltro digital no domnio do tempo.

Sabemos que a sada corresponde a convoluc~ao da entrada com a res-


posta ao impulso, ou seja,

J. A. Apolinario Jr. { Dezembro 2003 4


IME { Mestrado em Engenharia Eltrica PDS I

X
1
y (n) = x(n)  h(n) = x(k)h(k n) (2.2)
k= 1
Tal operac~ao no domnio da transformada Z e dada por Y (z ) = X (z )H (z ),
onde H (z ) = Zfh(n)g, ou seja, a func~ao de sistema e a transformada Z da
resposta ao impulso. Existem basicamente dois tipos de ltros digitais: os
de resposta ao impulso nita (FIR do ingl^es \Finite Impulse Response")
e os de resposta ao impulso in nita (IIR de \In nite Impulse Response").
Lembramos que os ltros FIR n~ao possuem polos fora da origem (H (z )
possui somente numerador) sendo sempre estaveis enquanto que os l-
tros IIR possuem polos fora da origem podendo ser dentro do crculo
unitario (estaveis) ou fora dos mesmos (instaveis). Para a observac~ao
anterior quanto a estabilidade, foi levado em conta os ltros causais ou
n~ao-antecipativos, ou seja, aqueles onde h(n) = 0 para n < 0. Estudaremos
no captulo seguinte os ltros IIR e no posterior os ltros FIR. Termi-
namos este captulo apresentando a forma geral de representar um ltro
digital por seus coe cientes.
EQUACAO ~ EM DIFERENCAS:
y (n) = b(1)x(n) + b(2)x(n 1) +    + b(nb + 1)x(n nb )
a(2)y (n 1)    a(na + 1)y (n na )
~ DE SISTEMA:
FUNCAO
b(1) + b(2)z 1 +    + b(nb + 1)z nb
H (z ) =
1 + a(2)z 1 +    + a(na + 1)z na
VETOR B:
B = [b(1) b(2)    b(nb 1)] (numerador)
VETOR A:
A = [1 a(2)    a(na + 1)] (denominador)
Comando Matlab c para ltrar o sinal x(n):
> y = filter (B,A,x);

J. A. Apolinario Jr. { Dezembro 2003 5


Cap
tulo 3

M
etodos de Aproxima
c~
ao:

Filtros IIR

3.1 Invari^ancia do Impulso


A ideia principal deste metodo reside em discretirzarmos a resposta ao
impulso do ltro analogico e gerarmos desta maneira a sequ^encia que
correspode a resposta ao impulso do ltro discreto no tempo equivalente.
Matematicamente temos:

H (z ) = Zfh(n)g = ZfTd hc(nTd )g


= ZfTd L 1fHc(s)gjt=nTd g (3.1)
Onde Hc(s) e a func~ao de transfer^encia analogica, L 1 (:) e a transfor-
mada inversa de Laplace e Td e o perodo de amostragem, valor arbitrario
que pode ser feito igual a 1 ou ajustado para termos uma frequ^encia
de corte adequada. A ttulo de exemplo, tomemos o caso de um ltro
analogico que apresenta polos simples em s1 , s2 ,    , sN :
X
N
Ak
Hc (s) = (3.2)
k=1
s sk
IME { Mestrado em Engenharia Eltrica PDS I

obtido apos uma expans~ao em frac~oes parciais. A resposta ao impulso no


domnio do tempo contnuo e dada por:
1 fHc (s)g = X Ak esk t u(t)
N
hc (t) = L (3.3)
k=1
A resposta ao impulso no domnio do tempo discreto ca
X
N
h(n) = Td hc (nTd ) = T dAk esk (nTd ) u(n) (3.4)
k=1
Finalmente, a func~ao sistema (discreta no tempo) e dada por
X
N
Td Ak
H (z ) = Zfh(n)g = (3.5)
k=1
1 esk Td z 1
Observe que na obtenc~ao de h(n) multiplicamos hc (nTd ) por Td : isto se
deve a relac~ao existente entre os espectros dos sinais contnuo e discreto
de modo que tal multiplicac~ao garante que
w
H (ejw ) = Hc (j ); jwj <  (3.6)
Td
se o ltro contnuo no tempo e limitado em frequ^encia, ou seja, Hc(j
) = 0
para j
j  =Td . Na pratica isto n~ao ocorre e temos, por menor que
seja, um pouco de \ALIASING" ou superposic~ao espectral. A relac~ao
(mapeamento) entre as frequ^encias contnuas e discretas e linear e dada
por w = Td
.

3.2 Transformac~ao Bilinear


Neste metodo, o ltro discreto e obtido a partir do ltro analogico com
a seguinte transformac~ao
H (z ) = H (s)js= 2 1 z 11 (3.7)
T 1+z
d
A mesma transformac~ao tambem pode ser representada por:
z=
1 + (Td =2)s (3.8)
1 (Td =2)s
J. A. Apolinario Jr. { Dezembro 2003 7
IME { Mestrado em Engenharia Eltrica PDS I

Se substituirmos \s" por  + j


, veremos que todo ponto a esquerda do
eixo j
no plano \s" corresponde a um ponto no plano \z " com modulo
menor que 1. Isto signi ca que um ltro estavel em \s" sera estavel em
\z ". Alem disto se zermos s = j
e z = ejw na express~ao de trans-
formac~ao, teremos como resultado:

= T2 tan(w=2) (3.9)
d
ou w = 2tan 1 (
Td =2) o que signi ca que n~ao ha aliasing pois a func~ao
n~ao e linear (o eixo imaginario e mapeado no crculo unitario) e que e
necessario pre-distorcer as frequ^encias (de corte) discretas para encontrar
as analogicas necessarias a um projeto. Em outras palavras, se temos wp
e ws (frequ^encias limites das bandas passante e de rejeic~ao), teremos que
aplicar as formulas mencionadas para calcularmos
p e
s necessarias ao
projeto do prototipo analogico que apos a transformac~ao bilinear resul-
tara nas frequ^encias desejadas.

3.3 Exemplo
Seja um ltro analogico Butterworth de segunda ordem que tem como
func~ao de transfer^encia
H (s) = 2 p
1 (3.10)
s + 2s + 1
Sabemos que os polos situam-se em S1;2 = cos 34  jsen 34 e, como todo
ltro Butterworth analogico, possui sua frequ^encia de corte
c em js1 j =
js2j iguais a 1 no nosso caso. Neste exemplo desejamos um ltro digital
pelos dois metodos (invari^ancia ao impulso e transformac~ao bilinear) com
frequ^encia de corte em wc = 3=5.
(a) Invari^ancia ao impulso
A1 A2
H (s) = + (3.11)
s s1 s s2
J. A. Apolinario Jr. { Dezembro 2003 8
IME { Mestrado em Engenharia Eltrica PDS I
p2 p p p
com s1 = 2 + j 22 e s2 = 2
2 j 22 onde
p
1 )js=s1 = (s 1 )js=s1 =
1 j 2
A 1 = H (s):(s s :(s s (3.12)
s 1 )(s 1
s )
p
2

2 )js=s2 = (s 2 )js=s2 =
1 j 2
A 2 = H (s):(s s :(s s (3.13)
s 1 )(s 1
s ) 2

Seguindo o metodo, fazemos:


A A
h(t) = L 1 f 1 + 2 g = A1 es1 t u(t) + A2 es2 t u(t) (3.14)
s s1 s s2

E em seguida:

h(n) = Td h(nTd ) = A1 Td es1 Td n u(n) + A2 Td es2 Td n u(n) (3.15)


De modo que:
A1 Td A2 Td
H (z ) = Zfh(n)g = + (3.16)
1 es1 Td z 1 1 es2 Td z 1

O fator Td calculamos de modo a termos wc = Td


c , ou seja, 35 = Td :1
ou simplesmente Td = 35 .
Substituindo A1 ; A2 ; s1 ; s2 e Td em H (z ) acima (3.16), chegamos a

H (z ) =
0 :6832z 1
(3.17)
1 0:1243z 1 + 0:0695z 2

(b) No caso da transformac~ao bilinear, temos uma vez mais que calcular
Td para ajustar a frequ^encia de corte:


c = T2 tan(wc=2) (3.18)
d

ou Td =
2c tan(wc =2) = 2tan( 3=2 5 ) = 2:7528.
Em seguida fazemos a transformac~ao:

s=
2 1 z 1 = 0:7265 1 z 1
(3.19)
Td 1 + z 1 1+z 1

J. A. Apolinario Jr. { Dezembro 2003 9


IME { Mestrado em Engenharia Eltrica PDS I

em

H (z ) = H (s)js=0:7265 1 z 1 (3.20)
1+z 1

que resulta em

H (z ) =
1 + 2z 1 + z 2 (3.21)
2:5554 + 0:9443z 1 + 0:5004z 2

Finalmente, dividindo numerador e denominador por 2:5554, obte-


mos

H (z ) =
0 :3913 + 0:7827z 1 + 0:39132z 2
(3.22)
1 + 0:3695z 1 + 0:1958z 2
Mesmo com um ltro de ordem baixa, tais transformac~oes s~ao traba-
lhosas para fazer manualmente e impraticaveis para uma ordem elevada.
Para a nossa sorte, o Matlab disp~oe de duas instruc~oes que deixa o pro-
cesso trivial: H (s) = s2 +p12s+1 implica em
> num=1;
e
> den=[1 sqrt(2) 1];

- Invari^ancia ao impulso:
> TdII=3*pi/5;

> [numII,denII]=impinvar(num,den,1/TdII);

- Transformac~ao bilinear:
> TdTB=2*tan(3*pi/10);

> [numTB,denTB]=bilinear(num,den,1/TdTB);

Para veri carmos a resposta em frequ^encia destes dois ltros fazemos


> [HII,W]=freqz(numII,denII,1000);
> [HTB,W]=freqz(numTB,denTB,1000);

J. A. Apolinario Jr. { Dezembro 2003 10


IME { Mestrado em Engenharia Eltrica PDS I

O gra co resultante indicara a resposta em frequ^encia conforme es-


perada para o ltro projetado pelo metodo da transformac~ao bilinear e
uma resposta em frequ^encia que n~ao atende a especi cac~ao para o caso do
ltro resultante da invari^ancia ao impulso. Explica-se este resultado ruim
pelo aparecimento do aliasing: podemos fazer um gra co da resposta em
frequ^encia de H (s) com
> [H,O]=freqs(num,den,1000);
> plot(O,abs(H));
e veremos claramente que a frequ^encia de amostragem e baixa e que o
aliasing n~ao sera desprezvel.

3.4 Projeto usando Matlab


Todo o trabalho do projeto de ltros IIR (Butterworth, Chebyshev 1,
2 e Elptico) pode ser simpli cado com o uso das seguintes func~oes de
Matlab descritas na Tabela I.

Tabela I

Projetos de filtros IIR usando Matlab.

FILTRO INSTRUCO~ ES
Butterworth buttord, butter
Chebyshev Tipo I cheb1ord, cheby1
Chebyshev Tipo II cheb2ord, cheby2
Elptico ou Cauer ellipord, ellip

Iniciamos nosso projeto com a especi cac~ao do ltro em termos de sua


resposta em frequ^encia nos domnios discreto e contnuo conforme vemos
na Figura 3.1.

J. A. Apolinario Jr. { Dezembro 2003 11


IME { Mestrado em Engenharia Eltrica PDS I

| H(e )| jw
| H(j Ω ) |
1 1
1 - δ1 1 - δ1

δ2 δ2
w Ω
wp ws π Ωp Ωs
0 0

Figura 3.1: Especi cac~ao do ltro nos dois domnios.

Como tais func~oes usam a transformac~ao bilinear, a pre-distorc~ao deve


ser efetuada:

p = T2 tan(wp=2) (3.23)
d
2

= tan(w =2) (3.24)
s s
Td
Podemos fazer Td = 1 e, desta forma, nossa frequ^encia de amostragem
tambem sera igual a 1.
A primeira coisa que necessitamos sera a ordem \N " necessaria (isto,
evidentemente, apos de nirmos o tipo de ltro que iremos usar: Butter-
worth, Chebyshev 1, 2 ou Elptico). Em um exemplo, podemos conside-
rar Æ1 = 0:1, Æ2 = 0:2, wp = 0:4863 e ws = 0:7981 . Se de nirmos o ltro
Butterworth (maximamente plano nas duas bandas), obtemos a ordem
necessaria com a func~ao [N,
c ]=buttord(
p ,
s ,Rp ,Rs ,'s');
> omegap=2*tan(0.4863*pi/2);
> omegas=2*tan(0.7981*pi/2);
> Rp=-20*log10(0.9);
> Rs=-20*log10(0.2);
> [N,omegac]=buttord(omegap,omegas,Rp,Rs,'s');
onde:
J. A. Apolinario Jr. { Dezembro 2003 12
IME { Mestrado em Engenharia Eltrica PDS I


p e
s calculados de acordo com a pre-distorc~ao
Rp : o ltro n~ao perde mais que Rp dB na banda passante

Rs : o ltro tem ao menos Rs dB de atenuac~ao na banda de rejeic~ao

's': indica especi cac~oes analogicas

O resultado e N = 2 e
c = 2:7530.
Podemos, alternativamente, calcular N e wc no domnio discreto com
[N,wc]=buttord(0.4863,0.7981,-20*log10(0.9),-20*log10(0.2)); e os re-
sultados seriam N = 2 e wc = 0:6 (de 0:6 ou 3=15).
Os valores de coe cientes (ja obtidos no mesmo exemplo anterior)
podem, ent~ao, ser obtidos com a func~ao butter:
> [numTB,denTB]=butter(2,0.6);
onde N = 2 (ordem) e wc = 0:6 (frequ^encia de corte).
Procedimento similar pode ser usado para calcular um ltro Cheby-
shev 1, 2 ou Elptico. Aconselha-se o uso de help butter (cheby1, cheby2
ou ellip) para obter detalhes na hora do uso da func~ao.

Exerccio: Projetar um ltro PB com Æ1 = 0:10875, Æ2 = 0:17783,


wp = 0:2 e ws = 0:3 , usando ltros IIR tipos Butterworth, Chebyshev1,
Chebyshev2 e Elptico. Fazer um gra co da magnitude da resposta em
frequ^encia de cada um para comparar.

J. A. Apolinario Jr. { Dezembro 2003 13


Cap
tulo 4

M
etodos de Aproxima
c~
ao:

Filtros FIR

4.1 Janelamento
Um ltro digital ideal, passa-baixas por exemplo, n~ao e implementavel
pois sua resposta ao impulso e uma sequ^encia bilateral e, portanto, anti-
causal. Podemos expressar a resposta em frequ^encia de um ltro PB
ideal pela equac~ao abaixo a qual e visualizada pela Figura 4.1.
8
< e jw ; jwj  wc
Hd (ejw ) = (4.1)
: 0 ; wc < jwj  
Observe que este ltro tem uma fase linear o que equivale a dizer um
retardo constante (de amostras). Obtemos a resposta ao impulso hd (n)
sacando a transformada inversa de Fourier de Hd (ejw ):
senwc(n )
hd (n) = F 1fHd (ejw )g = (4.2)
 (n )
A ideia basica do janelamento e usar somente uma porc~ao nita das
amostras de hd (n). Isto correspode a termos h(n) = hd (n):w(n) onde w(n) =
u(n) u(n 2 ) conforme vemos na Figura 4.2. A sequ^encia w(n) e chamada
IME { Mestrado em Engenharia Eltrica PDS I

jw
| H(e
d
)|

w
wc π
0

Figura 4.1: Resposta em freq^encia do ltro ideal.

de janela retangular e o ltro resultante e causal, tem uma resposta ao


impulso nita e possui fase linear.

w(n)
hd(n)

0 α 2α n

Figura 4.2: Resposta ao impulso ideal e janela retangular.

A resposta ao impulso h(n) do ltro sendo o produto de duas sequ^encias,


possui resposta em frequ^encia correspondente a convoluc~ao da resposta
em frequ^encia do ltro ideal com a da janela (func~ao \sinc"). Isto resulta
em oscilac~oes nesta resposta em frequ^encia que a torna mais proxima do
J. A. Apolinario Jr. { Dezembro 2003 15
IME { Mestrado em Engenharia Eltrica PDS I

ltro ideal na medida que aumentamos M , o tamanho da janela. Contudo,


a amplitude maxima desta oscilac~ao e constante
(Fen^omeno de Gibbs). Podemos diminuir a amplitude de tais oscilac~oes
fazendo um truncamento mais suave de modo que diminumos as alturas
dos \lobulos" secundarios e aumentamos a transic~ao desde o lobulo prin-
cipal.
A Tabela I, a seguir, mostra-nos as principais janelas usadas em pro-
jetos de ltros FIR (observe que M = 2 e que o tamanho de cada janela
e M + 1 amostras).

Tabela I

Janelas mais comuns usadas em filtros FIR.

8
< 1 ;0  n  M
Retangular w (n) =
: 0 ; caso contrario
8
>
< 2n=M ; 0  n  M=2
>
Triangular w(n) = 2 2n=M ; M=2  n  M
>
>
:
8 0 ; caso contrario
< 0:5 0:5cos( 2Mn ) ; 0  n  M
Hanning w (n) =
:
8 0 ; caso contrario
< 0:54 0:46cos( 2Mn ) ; 0  n  M
Hamming w (n) =
:
8 0 ; caso contrario
< 0:42 0:5cos( 2Mn ) + 0:08cos( 4Mn ) ; 0  n  M
Blackman w (n) =
: 0 ; caso contrario

Vejamos um exemplo de um ltro passa-baixa com frequ^encia de corte


em =5. Neste exemplo usaremos M = 250 e a janela de Hanning. Seguem
as instruc~oes em Matlab:
> wc=pi/5;
> M=250;

J. A. Apolinario Jr. { Dezembro 2003 16


IME { Mestrado em Engenharia Eltrica PDS I

> w=hanning(M+1);
> n=0:M; n=n'+0.0000001;
> hd=sin(wc*(n-M/2))./(pi*(n-M/2));
> h=hd.*w;
> [H,W]=freqz(h,1,1000);
> plot(W/pi,abs(H)); grid;
> figure; plot(n,h); hold; plot(n,w)
As janelas apresentadas ate agora traduzem um metodo um tanto
quanto emprico. A janela de Kaiser apresentada a seguir resulta num
procedimento simples e e ciente na obtenc~ao da janela correta dadas as
especi cac~oes do ltro desejado.
8 I0( p1 (n )= )
< ;0  n  M
w (n) = I0 ( ) (4.3)
: 0 ; caso contrario
onde = M=2 e Io (:) e a func~ao de Bessel modi cada de primeira ordem
Os valores de e M s~ao encontrados da seguinte maneira:

w = ws wp (4.4)
A = 820log10 Æ (4.5)
>
> 0:1102(A 8:7) A > 50
<
= > 0:5842(A 21)0:4 + 0:07886(A 21) ; 21  A  50 (4.6)
>
: 0 A < 21
M = 2:A2858w (4.7)
Exemplo: Consideremos o projeto de um ltro digital FIR usando a
janela de Kaiser que deve obedecer as especi cac~oes dadas na Figura 4.3
onde Æ1 = 0:01 e Æ2 = 0:001.
Consideremos, inicialmente, que Æ = 0:001, ou seja, o menor entre Æ1 e

J. A. Apolinario Jr. { Dezembro 2003 17


IME { Mestrado em Engenharia Eltrica PDS I

1+ δ1
1
1- δ1

δ2
w
wc = 0.5π π
0

wp = 0.45π w = 0.55π
s

Figura 4.3: Especi cac~oes do ltro do exemplo.

Æ2 . A seguir calculamos:
w = ws wp = 0:1 (4.8)
A = 20log10 Æ = 60 (4.9)
= 0:1102(60 8:7) = 5:6533 (4.10)
A 8
M =
2:285  0:1 = 72:4381 (4.11)
Finalmente, apresentamos a soluc~ao em Matlab:
> wc=0.5*pi;
> M=73;
> w=kaiser(M+1,beta);
> n=0:M; n=n'+0.0000001;
> hd=sin(wc*(n-M/2))./(pi*(n-M/2)));
> h=hd.*w;
> [H,W]=freqz(h,1,1000);
> plot(W/pi,abs(H)); grid;
... ou (simplesmente:)
> h=fir1(M,wc/pi,kaiser(M+1,beta));

J. A. Apolinario Jr. { Dezembro 2003 18


IME { Mestrado em Engenharia Eltrica PDS I

Para encontrarmos M e , podemos tambem usar:


> [M,wc,beta]=kaiserord([.45 .55],[1 0],[.01 .001],2);

4.2 Metodos de Otimizac~ao


Introduzimos a seguir o conceito de ltro FIR otimo. Quando pen-
samos em algo otimo, devemos sempre associar a ideia a um criterio de
otimizac~ao: isto e otimo baixo qual ponto de vista? Podemos, por exem-
plo, pensar em encontrar os M + 1 coe cientes que minimizam a area
entre a resposta em magnitude e a resposta em frequ^encia de um ltro
ideal. Ocorre que tais coe cientes correspondem ao ltro ideal multipli-
cado pela janela retangular o que, como ja sabemos pelo ripple do metodo
de janelamento, n~ao e um bom criterio de otimizac~ao. Um dos algoritmos
mais usuais em processamento de sinais digitais e conhecido como metodo
de projeto ltro FIR \equiripple" otimo de Parks-McClellan. Usaremos
a implementac~ao feita em Matlab (instruc~ao REMEZ) que retorna os co-
e cientes da melhor aproximac~ao a resposta em frequ^encia desejada no
sentido MINMAX (minimizac~ao da maxima amplitude de oscilac~ao) ou,
como tambem e conhecido, criterio de Chebyshev.
Uma explicac~ao mais detalhada do metodo (baseado no Teorema das
Alternac~oes) esta fora do escopo deste texto. Veremos de um modo sim-
ples e direto a obtenc~ao dos coe cientes desejados usando duas instruc~oes
do Matlab:

[n,fo,w]=remezord(F,A,DEV,FS): estima a ordem necessaria

h=remez(n,fo,mo,w): calcula o ltro FIR otimo

Seja o seguinte exemplo ilustrado na Figura 4.4 onde Æ1 = 0:01, Æ2 =


0:001, wp = 0:45 e ws = 0:55.

J. A. Apolinario Jr. { Dezembro 2003 19


IME { Mestrado em Engenharia Eltrica PDS I

| H(ejw) |
1+ δ1
1
1- δ1

δ2
w
wc π
0
wp w
s

Figura 4.4: Especi cac~oes do projeto de ltro FIR (LPF) otimo.

A soluc~ao em Matlab e:


> [n,fo,mo,w]=remezord([0.45*pi 0.55*pi], [1 0], ...
> [0.01 0.001],2*pi);
> h=remez(n,fo,mo,w);
> [H,W]=freqz(h,1,1000);
> plot(W/pi,abs(H));
> grid; xlabel('w'); ylabel('|H(e^fjwg)|')
Observe que M = 51 e n~ao 73 como no caso da janela de Kaiser.
No exemplo a seguir (Figura 4.5) usamos o mesmo metodo para um
ltro passa-banda.
Soluc~ao:
> [n,fo,mo,w]=remezord([0.19*pi 0.21*pi 0.49*pi ...
> 0.51*pi],[0 1 0],[0.001 0.001 0.001],2*pi);
ou
> [n,fo,mo,w]=remezord([0.19 0.21 0.49 0.51], ...
> [0 1 0], [0.001 0.001 0.001]);

J. A. Apolinario Jr. { Dezembro 2003 20


IME { Mestrado em Engenharia Eltrica PDS I

| H(ejw) |
1 + δ1
1
1 - δ1
δ1=δ2=0.001

δ2
w
π/5 π/2 π
0

0.19π 0.21π 0.49π 0.51π

Figura 4.5: Um exemplo com um ltro PASSA-BANDA.

uma vez que o \default" da frequ^encia de amostragem e 2.


> h=remez(n,fo,mo,w);
O resultado de M neste caso foi 326.


Ultimas observaco~es:
(i) a fase e linear

(ii) vejamos \> filtdemo" e \> filtdem"

J. A. Apolinario Jr. { Dezembro 2003 21


Cap
tulo 5

T
ecnicas de Realiza
c~
ao

A implementac~ao de um sistema discreto no tempo sera discutida neste


captulo. Iniciamos pela representac~ao de tal sistema com o seguinte
exemplo:

y (n) = x(n) 0:5x(n 1) 0:1y(n 1) (5.1)


Revisamos a analise deste sistema expressando sua func~ao sistema, ou
seja, H (z ) = XY ((zz)) .
1 0:5z 1
H (z ) = (5.2)
1 + 0:1z 1
Como possui um zero em z = 0:5 e um polo em z = 0:1, podemos
esperar um comportamento tipo \ ltro passa-altas" (faca um diagrama
de polos e zeros para justi car esta hipotese). Representamos este ltro
com a seguinte estrutura mostrada na Figura 5.1.
Para efetivamente ltrarmos (em Matlab) um sinal de voz proveniente
de um arquivo ".wav"podemos fazer o seguinte:
> [x,fs,nbits]=wavread('sweet.wav');
> tam=max(size(x));
> y=zeros(tam,1);
> xant=0;
IME { Mestrado em Engenharia Eltrica PDS I

+
x(n) y(n)

z-1 z-1

-0.5
Figura 5.1: Representac~ao do sistema apresentado em (5.1).

> yant=0;
> for n=1:tam
> y(n)=x(n)-0.5*xant-0.1*yant;
> xant=x(n);
> yant=y(n);
> end
> soundsc(y,fs);
Ou simplesmente y=filter([1 -0.5],[1 0.1],x); que sera muito mais
rapido que a implementac~ao da equac~ao em diferencas como anterior-
mente. Com o comando help filter, vemos que esta func~ao usa a imple-
mentac~ao Forma Direta II Transposta. Vejamos o que signi ca isto.

5.1 Formas Diretas


A Forma Direta conhecida como I e uma implementac~ao tal como repre-
sentada no exemplo da gura anterior. Revemos a express~ao geral de
uma equac~ao em diferencas:

y (n) = b0 x(n) + b1 x(n 1) +    + bM x(n M)


+ a1 y (n 1) +    + aN y(n N) (5.3)
A Forma Direta I e (genericamente) representada pela estrutura indi-
J. A. Apolinario Jr. { Dezembro 2003 23
IME { Mestrado em Engenharia Eltrica PDS I

cada na Figura 5.2.


b0
+ +
x(n) y(n)
-1 -1
z z

b1 a1
+ +

bM-1 aN-1
+ +
-1 -1
z z
bM aN

Figura 5.2: Forma Direta I.

Observe que na gura anterior podemos imaginar dois ltros em cas-


cata, H1 (z ) com os coe cientes b0i s e H2 (z ) com os coe cientes a0i s. Como
H1 (z ):H2 (z ) = H2 (z ):H1 (z ), podemos inverter a ordem sem problemas. Neste
caso (faca uma gura com esta invers~ao) podemos usar somente uma das
duas colunas de retardo (z 1 ) e chegarmos a Forma Direta II conforme
indicado na Figura 5.3.
Observe que nesta gura admitimos M = N (por mera simpli cac~ao
da gura) e que economizamos elementos de retardo (\memoria") nesta
estrutura que, por este fato, e conhecida como estrutura \can^onica".

J. A. Apolinario Jr. { Dezembro 2003 24


IME { Mestrado em Engenharia Eltrica PDS I

b0
x(n) + + y(n)

-1
z
a1 b1
+ +

aN-1 bM-1
+ +
-1
z
aN bM

Figura 5.3: Forma Direta II.

5.2 Formas Transpostas


A representac~ao usada ate agora encontra seu equivalente na teoria de
grafos (\signal ow graph") e, portanto, pode usar sua teoria e em par-
ticular seus procedimentos para transformar sua forma sem alterar sua
relac~ao entre entrada e sada. Um destes procedimentos e a transposic~ao:
trocamos entrada por sada, revertemos o sentido de cada ramo e man-
temos a transmit^ancia inalterada.
Vejamos como ca a transposic~ao para o seguinte exemplo.

y (n) = x(n) + 0:2x(n 1) 0:1y(n 1) (5.4)


As Figuras 5.4, 5.5 e 5.6 representam este sistema nas formas diretas
I, em grafos e na forma transposta.

J. A. Apolinario Jr. { Dezembro 2003 25


IME { Mestrado em Engenharia Eltrica PDS I

+ +
x(n) y(n)
-1 -1
z z

0.2 -0.1

Figura 5.4: FORMA DIRETA I.

x(n) y(n)
-1 -1
0.2 z -0.1 z

Figura 5.5: SIGNAL FLOW GRAPH.

Observe que, embora com a mesma func~ao de sistema H (z ), a equac~ao


em diferencas n~ao e igual e necessita uma variavel auxiliar w(n) de modo
que
8
< y(n) = w(n) + 0:2w(n 1)
: w(n) = x(n) 0:1w(n 1) (5.5)

Encontramos nas Figuras 5.7 e 5.8 os diagramas de uxo de sinais das


vers~oes transpostas das Formas Diretas I e II.
Vale a pena ressaltar que existem outras maneiras de implementar
ltros digitais pois quando levamos em considerac~ao as possibilidades de
aplicac~ao dos teoremas da teoria de grafos sempre podemos visualizar
uma estrutura diferente. Alem disto, podemos mencionar, a ttulo de
exemplo, a estrutura conhecida como \lattice", os \wave digital lters"
e as representac~oes baseadas em variaveis de estado.

J. A. Apolinario Jr. { Dezembro 2003 26


IME { Mestrado em Engenharia Eltrica PDS I

y(n) x(n)
-1 -1
0.2 z -0.1 z

Figura 5.6: SIGNAL FLOW GRAPH TRANSPOSTO.

b0
x(n) y(n)

-1
z z-1
a1 b1

z-1 z
-1

a2 b2

a N-1 bM-1

z-1 z
-1

aN bM

Figura 5.7: FORMA DIRETA I TRANSPOSTA.

J. A. Apolinario Jr. { Dezembro 2003 27


IME { Mestrado em Engenharia Eltrica PDS I

b0
x(n) y(n)

-1
z
b1 a1

z-1
b2 a2

bM-1 a N-1

z-1
bM aN

Figura 5.8: FORMA DIRETA II TRANSPOSTA.

J. A. Apolinario Jr. { Dezembro 2003 28


Cap
tulo 6

Efeitos da Quantiza
c~
ao

A convers~ao analogica-digital (A/D) pode ser visualizada por um con-


versor contnuo-discreto (C/D) ideal seguido de um \quantizador". Tal
operac~ao (quantizac~ao) sera representada por

x^(n) = Q[x(n)] (6.1)


onde o operador Q(:) efetua uma operac~ao n~ao linear de arredondar o
valor de x(n) para o nvel de quantizac~ao mais proximo. O espacamento
de tais nveis de quantizac~ao de nira o passo de quantizac~ao, uniforme ou
n~ao-uniforme. Vejamos, por exemplo, uma quantizac~ao uniforme com 3
bits representada na Figura 6.1. Observe que 3 bits corresponde a 23 = 8
nveis de quantizac~ao. Alem disto, observe na gura que se x(n) > 72 ou
x(n) < 9 2 , teremos uma saturac~ao.
Em um processador digital de sinais (DSP), teremos na sada do con-
versor A/D um valor pertencente a um dos possveis nveis de quan-
tizac~ao representado de acordo com um sistema de numerac~ao. Logo, no
nosso modelo teorico do conversor A/D, temos um codi cador logo apos
o quantizador de modo a especi carmos o esquema de codi cac~ao usado
(complemento-a-dois, o set binary, etc.).
Observe ainda que podemos representar uma escala de valores de 7 2
IME { Mestrado em Engenharia Eltrica PDS I

^
x(n)=Q[x(n)]

3∆

2∆

−4∆ −7∆/2 −3∆ −5∆/2 −2∆ −3∆/2 −∆


x(n)
−∆/2 0

∆/2 ∆ 3∆/2 2∆ 5∆/2 3∆

−∆

−2∆

−3∆

−4∆

Figura 6.1: Exemplo de uma quantizac~o uniforme de 3 bits.

( 9 ) = 8 sem saturac~ao para o exemplo de


2 3 bits, o que corresponde a
duas vezes o valor de fundo de escala Xm .
Logo,  = 22X#m , onde # e o numero de bits e, assumindo que nosso
numero binario (sada do decodi cador) x^B (n) e tal que 1  x^B (n) < 1,
ent~ao x^(n) = Xm :x^B (n).
A quantizac~ao introduz um erro (erro de quantizac~ao) de nido por

e(n) = x(n) x^(n) (6.2)


de modo que, no caso exempli cado de quantizac~ao uniforme n~ao ex-
istindo saturac~ao (\over ow"), =2  e(n)  =2.

J. A. Apolinario Jr. { Dezembro 2003 30


IME { Mestrado em Engenharia Eltrica PDS I

Este erro, para valores baixos de , e assumido ser uma variavel


aleatoria uniformemente distribuda descorrelacionada das amostras su-
cessivas ou passadas (e(n i); i 6= 0) bem como de x(n). Sua media e zero
e sua vari^ancia e dada por

e2 =
2 = 4Xm2 2 2#
= Xm212
2 2(# 1)
(6.3)
12 12
# sendo o numero de bits.
A representac~ao numerica usada ate agora e conhecida como ponto
xo (\ xed point"). Vejamos a express~ao para um valor quantizado em
ponto xo, complemento-a-dois, com B + 1 bits:
X
B
x^(n) = QB [x(n)] = Xm :( b0 + bi 2 i ) = Xm :x^B (n) (6.4)
i=1

com  = Xm 2 B .
Contemplamos ate agora o caso do arredondamento ao nvel de quan-
tizac~ao mais proximo (\round"). Contudo, e importante mencionar que
podemos truncar o numero de bits n~ao para o nvel mais proximo mas
em direc~ao a 1 (\ oor") ou em direc~ao a +1 (\ceil").
Quando o valor a ser quantizado e maior em valor absoluto que Xm ,
normalmente e usada a saturac~ao (\clipping" ou \saturation over ow")
conforme sugere a gura anterior.
Esta aritmetica em ponto xo permite a representac~ao de um numero
maior que 1 em magnitude pela de nic~ao do fator de escala Xm . Fazendo
o fator de escala uma variavel Xm = 2c, chegamos a uma representac~ao
conhecida como ponto utuante ou \ oating-point" onde o expoente c do
fator de escala e chamado de caracterstica e a parte fracional e chamada
de mantissa. Esta representac~ao em ponto utuante oferece um meio
conveniente de manter uma faixa din^amica elevada e um baixo erro de
quantizac~ao.

J. A. Apolinario Jr. { Dezembro 2003 31


IME { Mestrado em Engenharia Eltrica PDS I

A seguir, veremos um pequeno exemplo onde calculamos a vari^ancia


do erro de quantizac~ao (ponto xo) na sada do seguinte ltro digital:
y (n) = x(n) 0:5x(n 1) (6.5)
Observe que os coe cientes ja est~ao quantizados neste nosso exemplo;
para um caso mais geral existe um estudo do efeito da quantizac~ao nos
coe ciente de um ltro digital.
A equac~ao em diferencas quantizada ca
y^(n) = Q[x(n)] Q[0:5^x(n 1)]
= x^(n) [0:5^x(n 1) M (n)] (6.6)
onde M (n) = M (a; b) , ab Q(ab) e o erro de quantizac~ao da operac~ao de
multiplicac~ao.
De nimos, ent~ao, y (n) = y (n) y^(n) como o erro de quantizac~ao acu-
mulado de maneira que desejamos obter a vari^ancia deste erro, ou seja,
E [2 y (n)] = E f[y (n) y^(n)]2 g (6.7)
Usando (6.5) e (6.6) em (6.7), teremos
E [2 y (n)] = E f[x(n) 0:5x(n 1) M (n)]2 g (6.8)
Calculando o quadrado e levando em considerac~ao todo o assumido
em relac~ao a variavel aleatoria que caracteriza o erro de quantizac~ao,
chegamos a seguinte aproximac~ao.
E [2 y (n)]  1:25E [2 x(n)] + E [M
2 (n)] (6.9)
Estaremos simulando uma quantizac~ao tipo arredondamento somente
da parte fracionaria com B = 8 bits excluindo o bit de sinal de modo que
o valor teorico da vari^ancia deste erro de quantizac~ao acumulado na sada
sera de
E [2 y (n)]  2:25
2 28
12 = 2:861 10 (6.10)
6

J. A. Apolinario Jr. { Dezembro 2003 32


IME { Mestrado em Engenharia Eltrica PDS I

Para chegarmos na aproximac~ao acima, assumimos que n~ao e necessario


quantizar a soma em ponto xo, que o erro de quantizac~ao e descorre-
latado das demais variaveis e tambem entre si em instantes consecutivos e
que o erro de quantizac~ao e estacionario (estatiststicas n~ao mudam com
o tempo).
O valor da simulac~ao (obtido na listagem Matlab a seguir) resulta num
valor proximo a E [2 y (n)] = 3:5 10 6. Logo, nossas aproximac~oes teoricas
conduzem a um valor na mesma ordem de grandeza da simulac~ao.
clear
tam=500000;
% Sinal de entrada:
x=randn(tam,1); x=x-mean(x); x=x/std(x);
% Nmero de bits:
B=8;
% Entrada quantizada:
xQ=qround(x,B);
% Filtrando:
% y(n) = x(n) - 0.5 x(n-1)
y=filter([1 -0.5],1,x);
yQ=zeros(tam,1);
xQant=0;
for n=1:tam
if mod(n,50000)==0
disp(n)
end
yQ(n)=qround(xQ(n)-qround(0.5*xQant,B),B);
xQant=xQ(n);
end
disp('E[(y(n)-y Q(n))^
2]:')

J. A. Apolinario Jr. { Dezembro 2003 33


IME { Mestrado em Engenharia Eltrica PDS I

mean((y-yQ).^
2)
disp('Valor te
orico:')
2.25*2^
(-2*8)/12

Observe que se estimarmos E [2 x(n)], obtemos na simulac~ao algo proximo


de 1:270910 6 enquanto que o valor teorico e de 2 1628 = 1:271610 6. Com
estes valores, concluimos que o erro de quantizac~ao acumulado e mais
difcil de ser obtido teoricamente que o erro de quantizac~ao. Alem disto,
assumimos a ergodicidade da variavel aleatoria para podermos trocar o
ensemble (numero de rodadas necessarias para estimar um valor esper-
ado) pela media temporal.

J. A. Apolinario Jr. { Dezembro 2003 34


Cap
tulo 7

Processamento Digital de Voz

7.1 Introduc~ao
O processamento digital do sinal de voz, assunto com uma natureza in-
terdisciplinar envolvendo fonetica, siologia e acustica dentre outras dis-
ciplinas alem da teoria de processamentode sinais digitais, vem sofrendo
um grande avanco com o desenvolvimento da tecnologia dos processadores
digitais de sinais e encontra inumeras aplicac~oes na vida moderna quer
seja em codi cac~ao, reconhecimento ou sntese de voz.
Neste curso procuramos, com o auxlio do Matlab, oferecer os con-
ceitos basicos envolvidos no processamento digital do sinal de voz com
vista ao entendimento dos princpios de transmiss~ao de voz.
O processo da produc~ao de voz inicia-se com a passagem de um uxo
de ar pelas cordas vocais. Quando estas est~ao tensas e vibram, a voz
resultante sera um sinal dito sonoro ou vozeado (voiced speech) como
o \~a" em \Jo~ao". Por outro lado, quando as cordas vocais est~ao re-
laxadas (so uma constric~ao), produz-se um sinal conhecido como surdo
ou n~ao-vozeado (\unvoiced sound"). Em seu percurso das cordas vocais
ate a boca, o uxo de ar passa pelo chamado trato vocal com um even-
IME { Mestrado em Engenharia Eltrica PDS I

tual acoplamento com o trato nasal (parte do ar pode sair pelo nariz).
Este trato vocal e usualmente modelado em tubos com diferentes sec~oes
transversais (0 a 20cm2 ) e com um comprimento total de cerca de 17cm
para um homem adulto.
Para vermos a representac~ao de um sinal de voz, vamos gravar uma
fala: apos acertar o volume de entrada de sinal pelo microfone, gravamos
2 segundos de voz com o comando > [x,fs]=daqrecord(2); Esperimente
gravar a frase \S~ao Jo~ao". Com este comando estaremos digitalizando
(mono) com uma frequ^encia de amostragem de 8000Hz , logo, teremos
16000 amostras.
Representac~ao no domnio do tempo:
> plot(x)
Escutando:
> soundsc(x,fs)
Representac~ao no domnio da frequ^encia:
> X=fft(x);
> plot(abs(X(1:max(size(X))/2)))
Como o sinal de voz n~ao e estacionario, este ultimo gra co mostra
os componentes frequenciais existentes em todo sinal. O mais adequado
seria uma analise \short time" onde podemos veri car os componentes
frequenciais em perodos de tempo (por exemplo em torno de 20ms) onde
o sinal de voz e localmente estacionario. Uma maneira de visualizarmos
o espectro em func~ao do tempo e atraves do spectograma:
> specgram(x);
que e equivalente a > specgram(x, 256, 8000, hamming(256), 128), ou seja,
spectrograma do sinal x com FFT em janelas de 256 amostras, fs = 8KHz ,
janela tipo Hamming de 256 pontos e overlap de 128 amostras.

J. A. Apolinario Jr. { Dezembro 2003 36


IME { Mestrado em Engenharia Eltrica PDS I

7.2 Caractersticas Signi cativas do Sinal de Voz


O processamento de sinal de voz, para muitas aplicac~oes, esta relacionado
a analise de suas caractersticas signi cativas (\features"). Como exem-
plos de tais caractersticas podemos citar a \pitch" (tom fundamental
ou frequ^encia de vibrac~ao das cordas vocais) e os formantes (picos do
espectro de um som sonoro ou vozeado devido as resson^ancias do trato
vocal). Uma vez de nido o metodo de analise, temos para cada intervalo
de tempo um vetor de \features" que s~ao levantadas de acordo com a
aplicac~ao.
O modelo de um sistema discreto para a produc~ao de voz e apresentado
na Figura 7.1.
MODELO DE VOICED
GERADOR DE
PULSO GLOTTAL
TREM DE IMPULSOS
Periodo G(Z)
da
Pitch

MODELO DO MODELO DE
~
TRATO VOCAL RADIACAO
V(z) ’
R(z)

UNVOICED
GERADOR DE
RUIDO

Figura 7.1: Modelo de modelo de produc~ao de voz discreto no tempo.

Vejamos a seguir alguns exemplos dos modelos que aparecem na Figura 7.1:
1
G(z ) = (1aelnaz(a)1z)2 , modelo exponencial
V (z ) = DG(z) = 1 PN G k z k , modelo de tubos acusticos sem perdas
k=1
R(z ) = 1 1z 1 , modelo de radiac~ao
Vejamos, a ttulo de exemplo, a sntese de uma vogal \a" conforme o
programa Matlab que segue.
function x = vogal(tam);
% s
ntese da vogal "A"

J. A. Apolinario Jr. { Dezembro 2003 37


IME { Mestrado em Engenharia Eltrica PDS I

% "tam"
e o nmero de amostras
fs=10000; % sampling frequency
pitch=90; % pitch
a=0.91; % const. do modelo exp. do pulso Glotal
%-------------------------------------------------
G = 1.9206;
D = [1.0000 -0.0460 -0.6232 0.3814 0.2443 0.1973 ...
0.2873 0.3655 -0.4806 -0.1153 0.7100];
% +-> vocal tract coef. of the russian vowel AA
disp('')
disp('Programa vogal.m (exemplo s
ntese de uma vogal) ...')
disp('')
%---------------------+
% EXCITATION e(n): |
%---------------------+
e = zeros(tam,1);
for n=1:fix(fs/pitch):tam
e(n) = 1;
end
%---------------------+
% GLOTTAL PULSE G(z): |
%---------------------+
num = [0 -a*exp(1)*log(a)];
den = conv([1 -a],[1 -a]);
%gE = [1 zeros(1,(tam-1))]';
%gE = filter(num,den,gE);
eg = filter(num,den,e);
%eg = randn(tam,1); % whispered "A"
%---------------------+

J. A. Apolinario Jr. { Dezembro 2003 38


IME { Mestrado em Engenharia Eltrica PDS I

% VOCAL TRACT V(z): |


%---------------------+
num=G;
den=D;
egv=filter(num,den,eg);
%---------------------+
% RADIATION R(z): |
%---------------------+
num = [1 -1];
den = 1;
x=filter(num,den,egv);
%---------------------+
% ADDING SOME NOISE: |
%---------------------+
x=x+0.012345*randn(size(x));
%---------------------+
% PLOTING & LISTENING:|
%---------------------+
plot(x(1:5*pitch))
soundsc(x,fs);
achacn
return

Use > x=vogal(2500); para gerar 0.25s de sinal com uma frequ^encia
de amostragem de 10KHz . Modi que o programa para variar a pitch e
a excitac~ao do trato voal (\whispered speech"). Observe as mudancas
na forma de onda no domnio do tempo. Observe tambem o espectro de
cada sinal gerado.
Apos este pequeno e interessante exerccio, voltemos nossa atenc~ao

J. A. Apolinario Jr. { Dezembro 2003 39


IME { Mestrado em Engenharia Eltrica PDS I

ao metodo de analise que usaremos neste nosso estudo introdutorio ao


processamento de sinal de voz. Usaremos doravante a analise conhecida
como LPC (\Linear Predictive Coding") que consiste numa modelagem
considerada boa (especialmente para sinais sonoros), oferece uma boa
representac~ao do trato vocal, e matematicamente simples e apresenta
bons resultados.
Nesta modelagem, a produc~ao de voz e simpli cada como se indica na
Figura 7.2.

e(n) H(z) x(n)

Figura 7.2: O modelo LPC para a produc~ao de voz.

onde e(n) e a excitac~ao e a func~ao de sistema H (z ) e dada por


G P G
H (z ) = = (7.1)
A(z ) 1 p
k=1 ak z
k

Para estimar os coe cientes LPC a partir de um sinal de voz (esta-


cionario) podemos usar o comando > [A,G]=lpc(x,p); onde p e a ordem do
modelo LPC. Experimente isto: grave um \a" com [x,fs]=daqrecord(5);
estime os par^ametros a0 s com [A,G]=lpc(x,10); e coloque tais coe cientes
no programa vogal.m para escutar o seu \a" sintetizado. N~ao cou t~ao
parecido, n~ao e mesmo? Faltou estimar a pitch, efetuar uma pre-^enfase
antes da analise LPC, etc., etc. e etc. A ideia basica aqui e enten-
dermos que o sinal de voz equivalente a um \a" pode ser substitudo
(numa transmiss~ao por um certo canal, por exemplo) por um conjunto
de coe cientes que proporcionam uma representac~ao e ciente num curto
intervalo de tempo uma vez que esta forma de onda pode ser sinteti-
zada. Este e o conceito de um VOCODER, n~ao transmitirmos todas as
J. A. Apolinario Jr. { Dezembro 2003 40
IME { Mestrado em Engenharia Eltrica PDS I

amostras de um sinal de voz mas somente um conjunto de informac~oes


com as quais podemos recuperar o sinal (ou pelo menos uma vers~o in-
teligvel do mesmo).

7.3 Codi cac~ao de Voz


A convers~ao da forma de onda analogica da voz em sua forma digital
e conhecida como codi cac~ao de voz. Procura-se nesta convers~ao uma
compress~ao de dados, ou seja, usar o menor numero possvel de bits na
representac~ao digital do sinal de voz tendo em considerac~ao uma dada dis-
torc~ao admitida no processo. Esta representac~ao e ciente do sinal de voz
digitalizado permitira uma transmiss~ao por um canal de comunicac~oes
com uma largura de banda mais limitada alem de um armazenamento
mais adequado (ocupando menos espaco em disco). Para dimensionar-
mos o problema vejamos uma representac~ao simples de um sinal de voz
con nado em 4KHz de modo que a frequ^encia de amostragem seja de
8KHz, ou seja, 8000 amostras por segundo no caso de sinal mono (ou
16000 se estereo). Cinco segundos deste sinal codi cado PCM com 16 bits
por amostra seria equivalente a termos
5 (seg) 8000 (amostras/seg) 2 (bytes/amostra) =1024 = 78125Kbytes
ou ent~ao 78125K=5 = 128000bps de taxa de transmiss~ao caso fosse necessario
enviar este sinal por um canal.
Estimem ent~ao o tamanho de um arquivo de uma musica com 4 min-
utos digitalizada com 16 bits, estereo, fs = 22050Hz , tpico de um CD:
4  60  2(canais) 2(bytes por amostra) = 20:1875Mbytes
Donde vemos a utilidade da compactac~a MP3 que pode diminuir este
tamanho em ate 10 vezes.
Os diversos metodos de codi cac~ao de voz podem ser didaticamente
divididos em \codi cadores da forma de onda" e \codi cadores de voz"

J. A. Apolinario Jr. { Dezembro 2003 41


IME { Mestrado em Engenharia Eltrica PDS I

(vocoder = voice coder).


Na codi cac~ao da forma de onda busca-se codi car diretamente o sinal
(forma de onda no domnio do tempo) de voz tentando explorar suas
caractarsticas temporais ou espectrais. Por outro lado, a codi cac~ao
da voz envolve a representac~ao (sntese) do sinal de voz a partir de um
conjunto de par^ametros estimados anteriormente (analise) de quadros ou
pequenos intervalos de voz onde tais par^ametros podem ser considerados
constantes.
CODIFICADORES DA FORMA DE ONDA:
- PCM (Pulse COde Modulation)

- DPCM (Di erential Pulse Code Modulation)

- APCM e ADPCM (Adaptive PCM e Adaptive DPCM)

- DM (Delta Modulation)
- ADM (Adaptive Delta Modulation)

- APC (Adaptive Predictive Coding)

- SBC (subband Coding)

- ATC (Adaptive Transform Coding)


Tais codi cadores podem ser escalares (amostras codi cadas sepa-
radamente) ou vetoriais (VQ = Vector Quantization onde um bloco de
amostras e quantizada como uma entidade conhecida como code vector).
VOCODERS:
- Channel Vocoder

- Phase Vocoder

- Cepstral Vocoder (cepstrum = DFT/log j:j/IDFT)


J. A. Apolinario Jr. { Dezembro 2003 42
IME { Mestrado em Engenharia Eltrica PDS I

- Formant Vocoder

- LPC Vocoder

- RELP (Residual Excited Linear Prediction) Vocoder

- Multipulse LPC Vocoder

- CELP (Code Excited Linear Prediction) Vocoder: 9600 bps com


boa qualidade

- VSELP (Vector Sum Excited Linear Prediction)

Continuando nossa discuss~ao sobre os codi cadores de voz, mencionamos


os codi cadores conhecidos como hbridos. Tipicamente os codi cadores
de forma de onda usam uma taxa de bits alta oferecendo uma qualidade
de voz muito boa enquanto que os codi cadores de voz operam numa
taxa de bits bastante baixa mas tendem a produzir uma voz que soa
arti cial ou sintetica. Os codi cadores hbridos s~ao tecnicas usadas em
ambos codi cadores e que buscam uma boa qualidade de voz com uma
taxa de bits intermediaria.
A seguir, nalizando nossa materia, apresentamos uma breve descric~ao
dos padr~oes de codi cadores mais comuns.

7.3.1 64 kbits/s PCM Codecs

Os codi cadores PCM (Pulse Code Modulation) s~ao os mais simples cod-
i cadores de forma de onda. Voz com baixa largura de banda e tipica-
mente amostrada 8000 vezes por segundo e ent~ao cada amostra e quan-
tizada. Se um quantizador linear e usado, uns 12 bits por amostra s~ao
necessarios, dando uma taxa uma taxa de bits de cerca de 96kbps. En-
tretanto isto pode ser facilmente reduzido se usarmos uma quantizac~ao

J. A. Apolinario Jr. { Dezembro 2003 43


IME { Mestrado em Engenharia Eltrica PDS I

n~ao-linear.Para a codi cac~ao de voz, veri cou-se que uma quatizac~ao n~ao-
linear de 8 bits por amostra era su ciente para manter uma qalidade
de voz que n~ao pudesse ser distinguida da original. Isto nos da uma
taxa de bits de 64kbps e dois destes PCM n~ao-lineares foram padroniza-
dos nos anos 60. Nos Estados Unidos a codi cac~ao usando a -Law e
o padr~ao enquanto que na Europa a compress~ao A-Law, ligeiramente
diferente, e usada. Devido a simplicidade, excelente qualidade e baixo
retardo (delay), ambos codi cadores ainda s~ao usados hoje em dia. Por
exemplo, os arquivos de audio \.au" usados na internet s~ao em verdade
arquivos PCM. Programas para implementar os codigos G711 A-Law e
-Law foram disponibilizados pela Sun Microsystems Inc. Uma outra
fonte de informac~oes sobre PCM e outros codi cadores de forma de onda
podem ser encontrados no livro \Digital Coding of Waveforms" de N.S
Jayant e Peter Noll, Prentice Hall, 1984.

7.3.2 The 32 kbits/s G721 ADPCM Codec

Os codi cadores ADPCM (Adaptive Di erential Pulse Code Modulation)


quantizam n~ao o sinal de voz diretamente, como os codi cadores PCM,
mas a diferenca entre o sinal de voz e uma predic~ao que foi feita do sinal
de voz. Se a predic ao e boa ent~ao a diferenca entre as amostras de
voz real e predita tera baixa vari^ancia que as amostras do sinal de voz
real e ser~ao quantizadas de maneira mais precisa com um numero de bits
mais baixo do que seria necessario para quantizar as amostrad de voz
originais. No decodi cador, o sinal diferenca quantizado e somado ao
sinal predito para resultar no sinal de voz reconstrudo. O desempenho
do decodi cador e auxiliado pela predic~ao adaptativa e quantizac~ao de
modo que o preditor e o quantizador difenrencial adaptem a mudanca de
caractersticas do sinal de voz que esta sendo codi cado. Em meados dos

J. A. Apolinario Jr. { Dezembro 2003 44


IME { Mestrado em Engenharia Eltrica PDS I

anso 80, o CCITT padronizou um ADPCM 32Kbps conhecido como G&21


o qual propiciava voz reconstruda quase t~ao boa quando a do codi cador
PCM 64kbps. Mais tarde, nas recomendac~oes G726 e G727, codi cadores
operando em 40, 32, 24 e 16Kbps foram padronizados.

7.3.3 The 16 kbits/s G728 Low Delay CELP Codec

A taxas de bits em torno de 16kbps e menor a qualidade dos codi cadores


de forma de onda decai rapidamente. Logo, os codi cadores hbridos,
especialmente os codi cadores CELP e seus derivados, s~ao ent~ao usados.
Entretanto o retardo (ou delay que e de nido pelo tempo entre a chegada
das amostras e sua sada do decodi cador) tende a ser alto sendo tipica-
mente da ordem de 50 a 100ms, o qual pode causar problemas. Portanto,
em 1988 o CCITT lancou um conjunto de requerimentos para um novo
padr~ao de 16kbps, a maior restric~ao sendo o fato do codi cador produzir
uma qualidade de voz comparavel ao padr~ao G721 ADPCM de 32kbps
em ambos os casos de canais sem erro e ruidosos, alem de ter um re-
tardo menor de 5ms e idealmente menor que 2ms.. Todas condic~oes do
CCITT foram cumpridas pelo codi cador \backward adaptive CELP"
desenvolvido pela AT&T Bell Labs e padronizado em 1992 como G728.

7.3.4 The 13 kbits/s GSM Codec

O sistema GSM (Global System for Mobile communications) e um sis-


tema radio movel digital (celular) usado extensivamente na Europa. O
codi cador de voz GSM em plena taxa opera a 13kbps e usa um codi cador
conhecido como RPE (Regular Pulse Excited). Maiores informac oes so-
bre este padr~ao podem ser obtidas na internet (inclusive codigo fonte
para implementac~oes). O codi cador GSM prove boa qualidade de voz
embora n~ao t~ao boa como o codi cador G728. Sua principal vantagem

J. A. Apolinario Jr. { Dezembro 2003 45


IME { Mestrado em Engenharia Eltrica PDS I

sobre outros codi cadores a taxas baixas e sua relativa simplicidade: ele
pode rodar em um microcomputador de uso geral enquanto que os cod-
i cadores CELP necessitam de um DSP dedicado para rodar em tempo
real.

7.3.5 The 4.8 kbits/s DoD CELP Codec

Em 1991, o Departamento de Defesa (DoD = Department of Defense)


americano padronizou um codi cador CELP a 4:8kbps como o Padr~ao Fed-
eral 1016. Vejamos alguns poucos detalhes deste padr~ao: o decodi cador
DoD CELP dividen o sinal de voz para codi car em quadros de 30ms,
cada uma posteriormente dividida em 4 sub-quadros de 7:5ms. Para cada
quadro o codi cador calcula um conjunto de 10 coe cientes para o ltro
de sntese a tempo curto o qual e usado para modelar o trato vocal do
locutor. A excitac~ao para este ltro e determinada para cada sub-quadro
e e dada pela soma de entradas escaladas de dois code-books. Um code-
books adaptativo e usado para modelar as periodicidades a longo termo
presentes em sinais vozeados (ou sonoros) e para cada sub-quadro um
ndice e um ganho s~ao determinados para este codebook. Um codebook
xo contendo 512 codigos pseudo-aleatorios e tambem buscado para en-
contrar a entrada do codebook e o ganho multiplicador para esta entrada
os quais minimizam o erro entre as amostras reconstrudas e originais. No
decodi cador as entradas escaladas dos dois codebooks s~ao passadas por
um ltro de sntese para produzir a voz reconstruda. Finalmente este
sinal de voz e passado por um ltro posterior (pos lter) para melhorar a
qualidade perceptiva.

J. A. Apolinario Jr. { Dezembro 2003 46

Das könnte Ihnen auch gefallen