250 likes | 356 Vues
Conceitos de Sinais e Sistemas Mestrado em Ciências da Fala e da Audição. António Teixeira 15 Janeiro 2005. Obtenção de F0 e Formante. Aula 13. Obtenção da Frequência Fundamental. Determinação de F0. F0 é uma propriedade fundamental dos sons vozeados
E N D
Conceitos de Sinais e SistemasMestrado em Ciências da Fala e da Audição António Teixeira 15 Janeiro 2005
Obtenção de F0 e Formante Aula 13
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 20ms N=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 ms A frequencia fundamental e´: 125.0 Hz A janela deve conter pelo menos dois períodos de pitch
Estimativa biased Estimativa unbiased Determinação da autocorrelação
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 %)
exemplo autocorrelação Center-clipped 50 % O pitch e´: 4.60 ms A frequencia fundamental e´: 217.4 Hz
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+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´: 7.88 ms A frequencia fundamental e´: 127.0 Hz
Outro exemplo • Mesmo sinal usado em center-clipped 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
Filtro passa baixo Filtro inverso Autocorrelação Janela Análise LPC Determinação do pitch por filtragem inversa O pitch e´: 8.13 ms A frequencia fundamental e´: 123.1 Hz
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 20ms N=floor(0.02*fs); y=x(1:N).*hamming(N); t=(1:N)/fs*1000; %Determine o modelo LPC de ordem 16 p=16; a=real(lpc(y,p)); %determinação do residuo por filtragem %inversa e=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) Determinação do pitch por filtragem inversa
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
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ção Parabólica (Boite et al. P 92)
Cálculo de Fk e Bk • Uma raiz • Próxima do circulo unitário corresponde a uma formante, com:
Exemplo “seg6” 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)) F1 = 326.40 Hz F2 = 1133.75 Hz F3 = 2824.89 Hz F4 = 4039.82 Hz
No SFS F1= 355 F2=1168 F3=2809