Sunteți pe pagina 1din 4

BioChaves

Relatório n. 3 de atividades

Autor: Jugurta Montalvão. São Cristóvão, 23 de agosto de 2018

Neste relatório, me dedico à tarefa de estimação de pulso glotal pelo método da análise pela síntese. Para
tanto, o modelo de pulso glotal de Rosenberg foi implementado na seguinte rotina computacional:
function p=rosenberg(N1,N2)
p(1,1:N1)=0.5*(1-cos(%pi*(0:N1-1)/N1));
p(1,N1+1:N1+N2+1)=cos(%pi*((N1:N1+N2)-(N1))/(2*N2));
endfunction

Através desta rotina e de um modelo linear fizo de trato vocal T(z), como ilustrado na figura abaixo, foi
simulado um sinal vocal resultante da convolução do pulso glotal sintetizado com a resposta ao impulso,
t(n), do trato vocal. Foram usados no experimento: N1=19, N2=17, período de repetição de 37 amostras,
numa freq. de amostragem de 8KHz, resultando num pitch de aproximadamente 216 Hz.

1.0

0.8

0.6

0.4

0.2

0.0

-0.2

-0.4

-0.6

-0.8
0 1000 2000 3000 4000 5000 6000 7000 8000

Resposta normalizada (máximo ganho igual a 1) em freq. do trato vocal T(z) usado no experimento. O eixo
horizontal está graduado em Hz,
Um trecho do sinal sintetizado é representado na figura seguinte.
BioChaves

0.6

0.4

0.2

0.0

-0.2

-0.4

-0.6

-0.8
0 50 100 150 200 250 300 350 400 450 500 550

O eixo horizontal está graduado em número de amostras, numa taxa arbitrada em 8KHz.
O método experimentado assume que o espectro do pulso glotal é modulado (deformado) pelo trato vocal,
de tal forma que, como o trato só possui polos, na escala logarítmica, o espectro do sinal resultante uma
deformação da tendência ‘lenta’ dada pelo espectro do pulso glotal.
São assumidos que:
a) A Energia percebida no espectro do sinal é unitária. Assim o espectro do sinal é obtido por predição
linear, como detalhado a seguir.
// Preditor linear:
s=s(:);
Ordem=12;
M=[];
Ls=length(s);
for k=1:Ordem
M=[M s(k:k+Ls-Ordem-1)];
end
Y=s(Ordem+1:Ls);
Coef=pinv(M)*Y;
SZ=poly([1; -Coef($:-1:1)],'z','coeff');
z=poly(0,'z');
SZ=z^2/SZ;
w=0.78:0.01:%pi; // O 0.78 corresponde aproximadamente à frequência de 1000 Hz, para fa=8000
Hz
a=exp(%i*w);
SS=(abs(horner(SZ,a))).^2; // Aqui é obtido o espectro amostrado
BioChaves

SS=SS/sum(SS); // A energia total é forçada a ser unitária


SP=20*log10(SP);

b) A energia do pulso glotal também é unitária. Assim o espectro do sinal é obtido por análise de um filtro
FIR cuja resposta ao impulso é o próprio pulso. Por exemplo, para parâmetros N1 e N2, temos
p=rosenberg(N1,N2);
PZ=poly(p,'z','coeff');
SP=(abs(horner(PZ,a))).^2;
SP=SP/sum(SP); // Aqui a energia é normalizada
SP=20*log10(SP);

c) Um critério conveniente, portanto, é o erro quadrático entre os dois espectros normalizados.


J=mean((SS-SP).^2)
A figura seguinte ilustra dois casos, (a) para N1 e N2 ‘chutados’ como 19 e 17, respectivamente (o que
coincide com os valores verdadeiros usados na síntese do sinal), e para N1=18, N2=12, assim como os
critérios medidos nos dois casos.

-20

-40
Pulso Pulso
-60 convolvido N1=18
com trato N2=12
-80 Pulso
vocal J=1693 N1=19
-100 N2=17
-120
J=1266

-140

-160

-180

-200
0 1000 2000 3000 4000 5000 6000 7000 8000

Assumindo a restrição de que N1 nunca é menor que N2, é possível calcular o critério para todas as
combinações de N1 e N2 permitidas para o período (conhecido) de 37 amostras, cujo resultado é
apresentado na figura seguinte.
BioChaves

12000

10000

8000

6000
Z

4000

2000
0
5
10
15
20
0 25
0 2 30
4 6 8 10 12 35
14 16 18 40
X
Y

Eixos x e y representam N1 e N2, respectivamente, enquanto o terceiro eixo representa o critério J.


Pelo método experimentado, chega-a aos valores estimados ótimos para N1 e N2 iguais a 19 e 18,
respectivamente. O valor estimado para N2 está desviado de um ponto, e esse desvio precisa ser melhor
estudado. Uma hipótese é que, como o formato do trato não é conhecido (a vogal sintetizada), isso pode ser
a causa do desvio.

S-ar putea să vă placă și