A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

António Teixeira 13 Janeiro 2007

Apresentações semelhantes


Apresentação em tema: "António Teixeira 13 Janeiro 2007"— Transcrição da apresentação:

1 António Teixeira 13 Janeiro 2007
Conceitos de Sinais e Sistemas Mestrado em Ciências da Fala e da Audição António Teixeira 13 Janeiro 2007

2 Aula 12 Análise LPC Análise Cepstral Obtenção de F0 e Formante MATLAB
rceps() xcorr() Aula 12

3 Análise LPC Uma introdução

4 Este procedimento é conhecido por análise LPC
A análise de Fourier não é a única forma de determinar o espectro de um sinal Uma técnica muito utilizada na área do processamento de voz e Fonética envolve determinar os chamados coeficientes de predição linear (Linear Predictive Coding Coefficients) Este procedimento é conhecido por análise LPC é um processo mais complexo que a DFT mas é possível compreender os princípios sem entrar nos detalhes matemáticos mais complexos

5 A noção base da análise LPC baseia-se no processo inverso
Segundo a teoria-fonte filtro produz-se um som pela passagem de uma excitação por um filtro “Entrada nula”  cordas vocais  tracto vocal  rad  voz isto é “Entrada nula”  sistema (cordas vocais + tracto + rad) voz A noção base da análise LPC baseia-se no processo inverso voz  sistema inverso (filtro LPC)  “saída zero” a saída será zero se o filtro LPC for exactamente o inverso do sistema No primeiro caso temos “síntese” ou produção, no segundo “análise”

6 Na abordagem LPC as características espectrais da fonte glotal e radiação são incluídas conjuntamente com as relativas ao tracto vocal num mesmo filtro

7 A análise LPC envolve determinar um filtro cujas características em termos de resposta em frequência seja o inverso do espectro do sinal de voz Como já vimos os filtros digitais são definidos por um conjunto de coeficientes lembra-se dos vectores usados no comando filter ?

8 Também é possível usar um conjunto de coeficientes para “prever” o valor de uma amostra do sinal com base em amostras anteriores y[n]= função de y[n-1], y[n-2], y[n-3] ... O algoritmo LPC faz uma previsão desta forma usando um número reduzido de pontos anteriores, multiplicando cada por um coeficiente

9 O princípio básico da análise LPC é a de que uma amostra pode ser considerado como simplesmente a soma de um número de amostras anteriores, cada multiplicada por um número adequado os números são denominados coeficientes de predição linear y[n]= a1 y[n-1] + a2 y[n-2] ....

10 Para um sinal y, a análise LPC calcula os coeficientes a[1]
Para um sinal y, a análise LPC calcula os coeficientes a[1] ... a[p] tais que y[n]= a[1] y[n-1] +a[2] y[n-2] a[p] y[n-p] +erro

11 Relação com a produção de voz
A produção pode ser descrito pela equação de convolução y * a = b * x onde x é ma fonte, a e b coeficientes. Para sons sem anti-ressonâncias (exemplo: as vogais) b=1 e a equação reduz-se y * a = x y[n] + a[1] y[n-1] +a[2] y[n-2] a[k]y[n-k]=x[n] ou rearranjando y[n] = -a[1] y[n-1]-a[2] y[n-2] a[k]y[n-k]+x[n] Ou seja, num modelo sem anti-ressonâncias, a amostra actual é igual a uma combinação linear de amostras anteriores da saída mais a entrada O modelo proposto antes é, portanto, adequado

12 Um exemplo de como determinar os coeficientes
Consideremos um sinal tomemos 12 amostras (uma janela) designados por s1, s2, ..., s12 a estimativa para s5 considerando as 4 amostras anteriores s^5= a1 x s4 + a2 x s3 + a3 x s2 + a4 x s1 num caso concreto teríamos algo como s^5 = -42 a a2 + 5 a a4

13 continuando... s^6= - 71 a1 – 42 a a a4 s^7= .... s^8= .... s^9= .... Se cada amostra fosse correctamente predicta, não haveria diferença entre s e s^ 0=sn – s^n

14 isto é s6 – s^6 = 0 s7-s^7=0 s8- s^8=0 s9-s^9=0
= -40 – (-71 a1 – a a4) s7-s^7=0 = -4 –(-74 a1 –54 a a a4) s8- s^8=0 = 22 – (-40 a1 – 79 a2 – 54 a a4) s9-s^9=0 =49 – (-4 a1 –59 a2 – 79 a3 – 54 a4) temos um sistema de 4 equações com 4 incógnitas facilmente se obtem a1,a2,a3 e a4 neste caso: a1=0.5, a2=-0.6, a3=0.4 e a4=-0.7

15 generalizando No entanto pretendemos obter os coeficientes que sejam adequados não apenas a este conjunto restrito e específico de pontos mas para qualquer amostra como vimos resolvendo a equação anterior obtemos coeficientes adequados para s6 a s9 mas darão um erro se aplicados a outras amostras o erro para cada ponto é designado por en en=(s^n – sn)2 usa-se o quadrado para que seja sempre positivo

16 teremos: e6=(s^6 – s6)2 (a1 s5 + a2 s4 + a3 s3 + a4 s2 – s6)2 e7=(s^7 – s7)2 (a1 s6 + a2 s6 + a3 s4 + a4 s3 – s7)2 ... e12=(s^12 – s12)2 (a1 s11 + a2 s10 + a3 s9 + a4 s8 – s7)2 o algoritmo resolve este conjunto de equações tentando minimizar o erro Usando o Matlab obtêm-se rapidamente usando o comando lpc() Os coeficientes são uma forma eficiente de descrever o sinal de voz

17 Matlab – lpc() A = LPC(X,N) finds the coefficients, A=[ 1 A(2) ... A(N+1) ], of an Nth order forward linear predictor Xp(n) = -A(2)*X(n-1) - A(3)*X(n-2) A(N+1)*X(n-N) such that the sum of the squares of the errors err(n) = X(n) - Xp(n) is minimized. [A,E] = LPC(X,N) returns the variance (power) of the prediction error. LPC uses the Levinson-Durbin recursion to solve the normal equations that arise from the least-squares formulation. This computation of the linear prediction coefficients is often referred to as the autocorrelation method.

18 Métodos de obtenção dos coef.
Existem várias formas de obter os coeficientes Sem entrar nos detalhes, refiram-se: método da autocorrelação método da covariância método da “lattice” Consultar livros como Rabiner & Schafer 1978 para os detalhes

19 Demo lpclearn

20 Exemplo Consideremos um segmento de sinal (de uma vogal)
ak=lpc(frame,12) resultado

21 Resposta em frequência
Como após a determinação dos coeficientes temos um filtro (em que a saída depende de valores da saída em instantes anteriores) podemos obter a sua resposta em frequência

22 Como o filtro obtido será o inverso do filtro de produção, as características espectrais do segmento analisado serão:

23 Análise na frequência com LPC
Tendo os coeficientes a1...ak facilmente se obtém o espectro Exemplo: Material analisado: pequeno segmento de uma vogal a0= a1= a2= a3= a4= a5= a6= a7= a8= a9 = a10= a11= a12= Raiz Raiz2 1420 Raiz3 2729 Raiz4 3446

24 LPC vs FFT para obter espectro

25 A análise LPC separa os componentes relativos à fonte e ao filtro
É importante para a determinação da frequência fundamental e as formantes

26 Questões práticas Ordem a utilizar Aplicar janelas Usar pré-ênfase
Regra prática Frequência de amostragem em kHz + 2 Exemplo: Hz => 10+2=12 Aplicar janelas Usar pré-ênfase O espectro da fala decai com o aumento da frequência Para facilitar a análise LPC tenta-se corrigir esse efeito y(n)=x(n) – a x(n-1), a~0.98

27 Pré-ênfase As primeiras formantes têm maior energia e são preferencialmente modeladas A maior energia deve-se ao efeito combinado da excitação glotal e da radiação Geralmente utiliza-se um filtro de pré-ênfase s’(n)=s(n) – a1 s(s-1) Tipicamente 0.96<= a1 <= 0.99 Para reconstruir o sinal deve usar-se o filtro inverso s(n)= s’(n) + a1 s(n-1)

28 Leitura adicional Capítulo 11 do livro “Elements of Acoustic Phonetics” de Peter Ladefoged, 2ª ed., University of Chicago Press. SDUA ed Capítulo 8 do livro “Techniques in Speech Acoustics” de J. Harrington e S. Cassidy, Kluwer Academic Press, 1999 SDUA 800H 664 Apresenta: informação sobre a forma como são calculados os coeficientes LPC (secção 8.2) Obtenção do espectro com base nos coeficientes (sec. 8.4)

29 Exercícios Matlab Obter um pequeno segmento (frame) de uma vogal
Obter os coeficientes com a ajuda do Matlab Obter a resposta em frequência do filtro e do filtro inverso comparar com o espectro obtido pela DFT/FTT Obter o sinal de erro Verificar o efeito de alterar o número de coeficientes Repetir o processo para outro tipo de som (fricativa por exemplo)

30 Análise Cepstral

31 Motivação Como o sinal de voz pode ser obtido pela convolução da excitação glotal com a resposta impulsional do filtro constituído pelo tracto torna-se necessário muitas vezes efectuar a operação inversa (desconvolução) A análise cepstral é uma das técnicas que permite estimar uma separação da fonte do filtro Uma das motivações é que os harmónicos da frequência fundamental podem dificultar a análise das formantes uma muito melhor estimativa das formantes poderia ser obtida se os harmónicos forem removidos de alguma forma

32 Propriedades importantes
Para compreender a análise cepstral interessa perceber como são representados no espectro a fonte e o filtro Uma das propriedades da DFT é que se dois sinais x (a fonte) e h (o filtro) são convoluidos a sua DFT é igual ao produto da DFT de x pela DFT de h Quando se representa o espectro em dBs temos uma escala logaritmica logaritmo(a x b) = logaritmo(a) + logaritmo (b) Portanto, o espectro em dBs representa a SOMA do espectro da fonte com o do filtro o que nos fornece um caminho para os separar ...

33 Uma pequena revisão: se tivermos um sinal composto por duas sinusóides, uma variando lentamente no tempo, outra rapidamente, isto é uma de baixa frequência e outra de frequência elevada onde apareceriam as riscas no espectro ? A correspondente à baixa frequência apareceria na parte “baixa” do espectro; a outra na parte “alta”

34 O cepstro É esta lógica que está na base da separação das variações rápidas do espectro devido à fonte das variações lentas do filtro Se considerarmos o espectro como um sinal (no tempo) e aplicarmos a DFT então a parte devida à fonte deverá aparecer nas frequências elevadas e a relativa ao filtro nas frequências baixas Na prática não se aplica a DFT para a inversa (IDFT) para converter da frequência para o tempo o caminho inverso da DFT Curiosamente, apesar de inversas a DFT e a IDFT resultam no mesmo efeito de separação com a DFT ou IDFT a parte de variação rápida é separada da parte de variação lenta

35 Cepstro real Definição:

36 Origem do nome Como se trata de um espectro de outro espectro, os seus “inventores” criaram uma variação da palavra “spectrum” chegado a “cepstrum” adaptado ao Portugês: “espectro”  “cepstro” Já agora: filtering  liftering frequency  quefrency

37 Em Matlab z=rceps(x); x zx

38 Espectro suave Depois de separados podemos eliminar cada uma das partes por um processo de filtragem Se eliminarmos a parte de frequências mais elevadas e voltarmos a efectuar uma DFT teremos um espectro “suave” com “apenas” as características devidas ao filtro (tracto)

39 Cepstro de sinal periódico
Se o sinal original é periódico então a fonte manifesta-se como “picos” espaços da duração do período fundamental

40 Obtenção da Frequência Fundamental

41 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

42 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

43 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´: ms A frequencia fundamental e´: Hz A janela deve conter pelo menos dois períodos de pitch

44 Determinação da autocorrelação
Estimativa biased Estimativa unbiased

45 Um método para tentar resolver o problema é utilizar “center-clipping”
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 %)

46 A frequencia fundamental e´: 217.4 Hz
exemplo autocorrelação Center-clipped 50 % O pitch e´: ms A frequencia fundamental e´: Hz

47 Determinação do pitch pelo cepstrum

48 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´: ms A frequencia fundamental e´: Hz

49 Outro exemplo Mesmo sinal usado em center-clipped O pitch e´: 4.59 ms
A frequencia fundamental e´: Hz

50 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

51 AMDF AMDF – Average Magnitude Difference Function
Mais rápido, em especial quando se utiliza aritmética inteira Não necessita de multiplicações

52 Determinação do pitch por filtragem inversa
Filtro passa baixo Janela Filtro inverso Análise LPC Autocorrelação O pitch e´: ms A frequencia fundamental e´: Hz

53 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 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)

54 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

55 F0 usando SFS

56 Formantes

57 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

58 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

59 Processos habituais Peak picking Melhorado pela utilização de
Interpolação Parabólica (Boite et al. P 92)

60 Cálculo de Fk e Bk Uma raiz
Próxima do circulo unitário corresponde a uma formante, com:

61 Exemplo “seg6” F1 = 326.40 Hz F2 = 1133.75 Hz F3 = 2824.89 Hz
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))

62 No SFS F1= 355 F2=1168 F3=2809


Carregar ppt "António Teixeira 13 Janeiro 2007"

Apresentações semelhantes


Anúncios Google