1at 2007 conceitos de sinais e sistemas mestrado em ciências da fala e da audição antónio...

Post on 07-Apr-2016

214 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

1AT 2007

Conceitos de Sinais e SistemasMestrado em Ciências da Fala e da Audição

António Teixeira13 Janeiro 2007

2AT 2007

Aula

12• Análise LPC• Análise Cepstral• Obtenção de F0 e

Formante

• MATLAB– lpc()– rceps()– xcorr()

3AT 2007

Análise LPC

Uma introdução

4AT 2007

• 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

5AT 2007

• 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 vozisto é“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”

6AT 2007

• 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

7AT 2007

• 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 ?

8AT 2007

• 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

9AT 2007

• 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] ....

10AT 2007

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

11AT 2007

Relação com a produção de voz• A produção pode ser descrito pela equação de convolução

y * a = b * xonde 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 = xy[n] + a[1] y[n-1] +a[2] y[n-2] + ... +a[k]y[n-k]=x[n] ou rearranjandoy[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

12AT 2007

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 a1 + 17 a2 + 5 a3 + 90 a4

13AT 2007

• continuando...– s^6= - 71 a1 – 42 a2 + 17 a3 + 50 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

14AT 2007

• isto és6 – s^6 = 0

= -40 – (-71 a1 –42 +17 a3 + 50 a4)

s7-s^7=0= -4 –(-74 a1 –54 a2 + 16 a3 + 97 a4)

s8- s^8=0= 22 – (-40 a1 – 79 a2 – 54 a3 + 16 a4)

s9-s^9=0=49 – (-4 a1 –59 a2 – 79 a3 – 54 a4)

temos um sistema de 4 equações com 4 incógnitasfacilmente se obtem a1,a2,a3 e a4

neste caso: a1=0.5, a2=-0.6, a3=0.4 e a4=-0.7

15AT 2007

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

16AT 2007

• 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

17AT 2007

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.

18AT 2007

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

19AT 2007

Demo

lpclearn

Lpclearn.exe

20AT 2007

Exemplo• Consideremos um segmento de sinal (de uma vogal)

• ak=lpc(frame,12)• resultado

1.0000 -2.3994 2.0545 -0.5626 -0.1950 0.0965 -0.0118 -0.1951

0.7283 -0.5366 -0.4562 0.8068 -0.3069

21AT 2007

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

22AT 2007

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

23AT 2007

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

0 50 100 150 200 250 300-0.1

-0.05

0

0.05

0.1sinal no tempo

0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000-20

-10

0

10

20

30espectro

a0= 1.0000 a1= -0.1155

a2= -0.4197 a3= 0.1063

a4= 0.2854 a5= 0.6263

a6= -0.2841 a7= -0.2171

a8= -0.0904 a9 = 0.2207

a10= 0.2150 a11= -0.2755

a12= -0.3004

Raiz1 878Raiz2 1420Raiz3 2729Raiz4 3446

24AT 2007

LPC vs FFT para obter espectro

0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000-50

-40

-30

-20

-10

0

10

20

30Espectro usando FFT e LPC

25AT 2007

• A análise LPC separa os componentes relativos à fonte e ao filtro

• É importante para a determinação da frequência fundamental e as formantes

26AT 2007

Questões práticas• Ordem a utilizar

– Regra prática• Frequência de amostragem em kHz + 2• Exemplo: 10000 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

27AT 2007

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)

28AT 2007

Leitura adicional• Capítulo 11 do livro “Elements of Acoustic

Phonetics” de Peter Ladefoged, 2ª ed., University of Chicago Press.– SDUA 801.4 17 2ed

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

29AT 2007

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)

30AT 2007

Análise Cepstral

31AT 2007

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

32AT 2007

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 ...

33AT 2007

• 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”

34AT 2007

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

35AT 2007

Cepstro real

Definição:

36AT 2007

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

37AT 2007

Em Matlab

z=rceps(x);0 10 20 30 40 50 60 70

-0.4

-0.3

-0.2

-0.1

0

0.1

0.2

0.3

x

0 50 100 150 200 250-2

-1.5

-1

-0.5

0

0.5

zx

38AT 2007

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)

39AT 2007

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

40AT 2007

Obtenção da Frequência Fundamental

41AT 2007

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

42AT 2007

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

43AT 2007

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

44AT 2007

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

45AT 2007

• 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 %)

46AT 2007

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

47AT 2007

Determinação do pitch pelo cepstrum

48AT 2007

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

49AT 2007

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

50AT 2007

• 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

51AT 2007

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

52AT 2007

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

53AT 2007

Determinação do pitch por filtragem inversaclose 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)

54AT 2007

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

55AT 2007

F0 usando SFS

56AT 2007

Formantes

57AT 2007

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

58AT 2007

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

59AT 2007

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

zzC

zzza 11

1

1

1

)1()1(

1

1

1

60AT 2007

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,

61AT 2007

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

62AT 2007

No SFS

F1= 355

F2=1168

F3=2809

top related