conceitos de sinais e sistemas mestrado em ciências da fala e da audição antónio teixeira 15...
TRANSCRIPT
Conceitos de Sinais e SistemasMestrado em Ciências da Fala e da Audição
António Teixeira
15 Janeiro 2005
Aula
13• Obtenção de F0 e
Formante
Obtenção da Frequência Fundamental
Determinação de F0
• F0 é uma propriedade fundamental dos sons vozeados
• Estimar F0 é muito mais difícil do que se possa imaginar !!– A excitação é apenas quase-periódica
• Alguns Métodos – Método da autocorrelação– Método usando predição linear– Método cepstral
Pitch e frequência
• Pitch é a qualidade subjectiva relacionada com a frequência– No entanto, outros factores afectam a percepção
de pitch• por exemplo: o pitch depende em certa medida da
intensidade com que um tom é apresentado ao ouvinte
Determinação do pitch pelo método da autocorrelação
close all;clear all[x,fs]=wavread('seg4');t=(1:length(x))/fs*1000;plot(t,x)%Defina janela de observaçao de 20msN=floor(0.02*fs);t1=(1:N)/fs*1000;rx=xcorr(x,N,'coeff');figure(2)plot(t1,rx(N+1:2*N))%determine o maximo da autocorrelaçao para%desvios superiores a 2ms(500Hz)N1=floor(0.002*fs);[x0,imax]=max(rx(N+N1:2*N+1));imax=imax+N1;t0=imax/fs*1000;f0=1/t0*1000;fprintf(1,'O pitch e´: %6.2f ms\n',t0)fprintf(1,'A frequencia fundamental e´: %6.1f Hz\n',f0)
O pitch e´: 8.00 msA frequencia fundamental e´: 125.0 Hz
0 2 4 6 8 10 12 14 16 18 20-0.5
0
0.5
1
A janela deve conter pelo menos dois períodos de pitch
Determinação da autocorrelação
• Estimativa biased • Estimativa unbiased
0 100 200 300 400 500 600 700 800 900 1000-8
-6
-4
-2
0
2
4
6
8
10
12x 10
-3
0 50 100 150 200 250 300 350 400 450 500-0.4
-0.3
-0.2
-0.1
0
0.1
0.2
0.3
0 100 200 300 400 500 600 700 800 900 1000-3
-2
-1
0
1
2
3
4
5
6
• A utilização directa da autocorrelação pode resultar em múltiplos máximos– Tornando difícil a decisão
• Um método para tentar resolver o problema é utilizar “center-clipping”– Colocando a zero as amostras que se situem
abaixo de um certa percentagem da amplitude máxima (por exemplo Sondhi usou 30 %)
exemploautocorrelação
O pitch e´: 4.60 msA frequencia fundamental e´: 217.4 Hz
Center-clipped 50 %0 2 4 6 8 10 12 14 16 18 20
-0.5
0
0.5
1
0 200 400 600 800 1000 1200 1400-0.08
-0.06
-0.04
-0.02
0
0.02
0.04
0.06
0.08
Determinação do pitch pelo cepstrum
Determinação do pitch pelo cepstrum
close all;clear all[x,fs]=wavread('seg4');N=length(x);t=(1:length(x))/fs*1000;plot(t,x)z=rceps(x);figure(2)plot(z(1:length(x)/2))N1=0.02*N[z0,imax]=max(z(N1:N/2));imax=imax+N1t0=imax/fs*1000;f0=1/t0*1000;fprintf(1,'O pitch e´: %6.2f ms\n',t0)fprintf(1,'A frequencia fundamental e´: %6.1f Hz\n',f0)
0 10 20 30 40 50 60 70-0.4
-0.3
-0.2
-0.1
0
0.1
0.2
0.3
0 50 100 150 200 250-2
-1.5
-1
-0.5
0
0.5
O pitch e´: 7.88 msA frequencia fundamental e´: 127.0 Hz
Outro exemplo
• Mesmo sinal usado em center-clipped
0 100 200 300 400 500 600 700-1.6
-1.4
-1.2
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
O pitch e´: 4.59 ms
A frequencia fundamental e´: 218.1 Hz
• O cepstrum contém harmónicos da frequência fundamental
• Os valores baixos de quefrency representam a forma do tracto
• Os valores elevados de quefrency representam a excitação– E no caso de sinais vozeados a frequência
fundamental
AMDF
• AMDF – Average Magnitude Difference Function
• Mais rápido, em especial quando se utiliza aritmética inteira– Não necessita de multiplicações
N
i
insnsN 0
|)()(|1
Determinação do pitch por filtragem inversa
0 5 10 15 20 25 30-0.25
-0.2
-0.15
-0.1
-0.05
0
0.05
0.1
0.15
0.2
0.25
0 2 4 6 8 10 12 14 16 18 20-5
-4
-3
-2
-1
0
1
2
3
4x 10
-3
0 2 4 6 8 10 12 14 16 18 20-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
O pitch e´: 8.13 ms
A frequencia fundamental e´: 123.1 Hz
Filtro passa baixo
Janela Filtro inverso
Análise LPC
Autocorrelação
Determinação do pitch por filtragem inversa
close all;clear all[x,fs]=wavread('seg1');t=(1:length(x))/fs*1000;plot(t,x)%filtragem passa baixo[b,a]=butter(3,0.25);x=filter(b,a,x);%Defina janela de observaçao de 20msN=floor(0.02*fs);y=x(1:N).*hamming(N);t=(1:N)/fs*1000;
%Determine o modelo LPC de ordem 16p=16;a=real(lpc(y,p));%determinação do residuo por filtragem%inversae=filter(a,1,y);
figure(2)plot(t,e)ry=xcorr(y,N,'coeff');figure(3)plot(t,ry(N+1:2*N))%determine o maximo da autocorrelaçao para%desvios superiores a 2ms(500Hz)N1=floor(0.002*fs);[x0,imax]=max(ry(N+N1:2*N+1));imax=imax+N1;t0=imax/fs*1000;f0=1/t0*1000;fprintf(1,'O pitch e´: %6.2f ms\n',t0)fprintf(1,'A frequencia fundamental e´: %6.1f
Hz\n',f0)
Pós-processamento
• Os métodos expostos podem cometer erros– Produzindo variações bruscas do valor do pitch que
são incorrectas
• Muitas vezes recorre-se a pós-processamento – Filtro de mediana
• Filtro de comprimento L (3 ou 5)• entrada L valores de pitch• saída a mediana (L-1)/2 valores abaixo, (L-1)/2 valores acima• Pode usar-se um filtro passa baixo depois do filtro de mediana
– Programação dinâmica• Algoritmo de optimização
F0 usando SFS
Formantes
Porquê calcular as formantes ?
• As formantes são definidas perceptualmente• A propriedade física correspondente é a frequência
de ressonância do tracto vocal• Análise de formantes é útil para posicionar os
fonemas em termos das primeiras 2 ou 3 formantes– As duas primeiras formantes identificam/caracterizam
bastante bem as vogais
Obter valores candidatos
• Procura de picos no espectro– Designado em Inglês de “peak picking”
• Procura de picos no espectro obtido de análise LPC– Várias alternativas:
• Reter os N maiores picos, • Os N picos com menores frequências• Todos os picos • Pontos onde a segunda derivada é mais negativa
• Factorização das raízes do polinómio resultante da análise LPC
Processos habituais
Peak picking
Melhorado pela utilização de InterpolaçãoParabólica
(Boite et al. P 92)
p
k k
kp
kk
p
k
kk
zz
C
zzza 11
1
1
1
)1()1(
1
1
1
Cálculo de Fk e Bk
• Uma raiz
• Próxima do circulo unitário corresponde a uma formante, com:
kjkk ez .
amostragemkdBfk
amostragemk
k
fB
fF
)1.(/1)(
2
3,
Exemplo “seg6”
-1 -0.5 0 0.5 1
-1
-0.5
0
0.5
1
Real part
Imag
inar
y pa
rt
F1 = 326.40 Hz
F2 = 1133.75 Hz
F3 = 2824.89 Hz
F4 = 4039.82 Hz0 10 20 30 40 50 60 70
-0.2
-0.15
-0.1
-0.05
0
0.05
0.1
0.15 close all;clear all
[x,fs]=wavread('seg6');
t=(1:length(x))/fs*1000;
%Defina janela de observaçao de 20ms
N=floor(0.02*fs);
y=x(1:N).*hamming(N);
t=(1:N)/fs*1000;
%Determine o modelo LPC de ordem 12
p=12; a=real(lpc(y,p));
% raizes
zplane(1,a); rs=roots(a);
Miuk=abs(rs);tetak=angle(rs)
% eliminar metade
ind=find(tetak<=0);miuk(ind)=[];tetak(ind)=[];
% Fk
fk=tetak/(2*pi)*fs;
[fk,ind]=sort(fk);
% mostar resultados
fprintf(1,'F1 = %6.2f Hz\n',fk(1))
fprintf(1,'F2 = %6.2f Hz\n',fk(2))
fprintf(1,'F3 = %6.2f Hz\n',fk(3))
fprintf(1,'F4 = %6.2f Hz\n',fk(4))
No SFS
F1= 355
F2=1168
F3=2809