1AT 2004 Conceitos de Sinais e Sistemas Mestrado em Ciências da Fala e da Audição António...
Transcript of 1AT 2004 Conceitos de Sinais e Sistemas Mestrado em Ciências da Fala e da Audição António...
1AT 2004
Conceitos de Sinais e SistemasMestrado em Ciências da Fala e da Audição
António Teixeira
8 Janeiro 2005
2AT 2004
Aula
12• Análise LPC• Análise Cepstral• Obtenção de F0 e
Formante
• MATLAB– lpc()– rceps()– xcorr()
3AT 2004
Análise LPC
Uma introdução
4AT 2004
• 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 Coeefficients)
• 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 2004
• 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”
6AT 2004
• 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 2004
• 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 ?
• 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
8AT 2004
• O princípio básico da análise LPC é a de que uma amostra pode ser considerado como simplesmente a 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] ....
9AT 2004
• 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
10AT 2004
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
11AT 2004
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
12AT 2004
• continuando...– s^6= - 71 a1 – 42 a2 + 17 a3 + 50 a4– s^7= ....– s^8= ....– s^9= ....
• Se cada amostra fosse correctamente predicto, não haveria diferença entre s e s^
0=sn – s^n
13AT 2004
• 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ógnitas
facilmente se obtem a1,a2,a3 e a4
neste caso: a1=0.5, a2=-0.6, a3=0.4 e a4=-0.7
14AT 2004
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
15AT 2004
• 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
16AT 2004
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.
17AT 2004
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
18AT 2004
Demo
lpclearn
Lpclearn.exe
19AT 2004
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
20AT 2004
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
21AT 2004
• Como o filtro obtido será o inverso do filtro de produção, as características espectrais do segmento analisado serão:
22AT 2004
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
23AT 2004
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
24AT 2004
• A análise LPC separa os componentes relativos à fonte e ao filtro
• É importante para a determinação da frequência fundamental e as formantes
25AT 2004
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
26AT 2004
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)
27AT 2004
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)
28AT 2004
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)
29AT 2004
Análise Cepstral
30AT 2004
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
31AT 2004
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 ...
32AT 2004
• 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”
33AT 2004
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
34AT 2004
Cepstro real
Definição:
35AT 2004
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
36AT 2004
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
37AT 2004
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)
38AT 2004
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