Instituto de Tecnologia de Massachusetts
Departamento de Engenharia Elétrica e Ciência da Computação
6.345 Reconhecimento Automático da Fala
Primavera, 2003
Publicado: 21/02/03
Devolução: 05/03/2003
Tarefa 3
Representação do Sinal
Esta tarefa pretende te familiarizar com os princípio da análise de Fourier (Parte I), e com
análise de Cepstral (Parte II) como a aplicada a fala. As atividades seguintes (marcadas
com T’s) devem ser completadas durantes o tempo de laboratório. As questões (marcadas
por Q’s) devem ser respondidas e entregues na data estipulada.
Para iniciar o laboratório entre o seguinte comando no prompt do UNIX:
% star_lab3.cmd
O laboratório será controlado primeiramente com a janela Lab 3. Esta janela contém um
conjunto de painéis com opções de layouts (estes são chamados de opções de programas na
janela Lab 3), e um conjunto de botões de expressões vocais. Para mostrar uma expressão
utilizando um layout particular, primeiro selecione a opção de layout e então clique no
botão da expressão que você deseja visualizar. O laboratório também fará uso da janela de
controle do Analisador de Espectro. A partir desta janela você pode alterar várias
características da análise de espectro, como: comprimento da janela, tipo da janela, etc.
Parte I: Análise de Fourier Short-Time
Exercícios do Laboratório
T1. Nesta parte do laboratório examinaremos as características espectrais de duas
diferentes janelas executando análises de Fourier short-time. Um modo simples de
fazer isto é aplicar as janelas uma forma de onda de amplitude constante, x[n] = K ,
e então alterar as características da janela para melhor examinar os efeitos.
Para fazer isto selecione o formato forma de onda (Waveform) e Espectro (Spectra)
e a constante da expressão, que contém a forma de onda de amplitude constante, a a
partir da janela Lab 3.
Para um dado tamanho de janela, compare a largura do lóbulo principal e o pico de
amplitude dos lóbulos laterais (definido como a diferença em amplitude entre o
lóbulo principal e o lóbulo lateral mais largo), para a janela Rectangular versus
Hamming. Pode-se especificar a janela utilizando o window control na janela do
Analisador de Espectro. Pode-se também sobrepor os espectros de modo a facilitar a
comparação. Aproximar a região de baixa freqüência do espectro facilitará a medida
do comprimento e da largura dos lóbulos principal e lateral.
Para um dipo dado de janela, pose-se também examinar os efeitos dos diferentes
tamanhos de janelas na largura do lóbulo principal e o pico de amplitude dos
lóbulos laterais. Utilize a janala com tamanhos de 100, 300 e 500 pontos. Pode-se
também especificar isto no Analisador de Espectro utilizando o controle de tamanho
(sec). Lembre-se que o sinal é amostrado em 16kHz e que será necessário calcular
qual o tamanho da janela (em segundos).
Não utilize o teclado para entrar com o tamanho da janela. Se o número dor digitado
e a tecla Num Lock estiver ativada, o Analisador de Espectro desativará. Depois de
entrar com o novo tamanho em segundos., pressione a tecla Enter ou Return para
visualizar as mudanças na janela do espectro.
T2. Nesta parte do laboratório serão investigados os efeitos da aplicação de diferentes
janelas para uma forma de onda perfeitamente periódica. A partir dos resultados da
atividade anterior você estará apto a predizer (ou explicar) as distorções que estas
janelas pode, criar na magnitude do espectro.
Enquanto em alguns layouts seleciona-se a expressão sintetizada, que é uma vogal
gerada com uma função periódica perfeitamente excitada.
Compare a magnitude do espectro com alguns casos como os anteriores (ex.:
Hamming e Rectangular tamanhos de janelas de 100, 300, e 500 pontos cada).
Q1: Determine o período fundamental da vogal desta forma de onda. Como e sob
quais condições esta vogal pode ser determinada a partir da magnitude de espectro?
Q2: Para o espectro analisado com as janelas de Hamming, que é o efeito geral do
aumento do tamanho da janela?
Q3: Por que os espectros são computados com janelas retangulares de aparências
desiguais?
T3. Repita o item T2 com uma expressão falada naturalmente.
Selecione a forma de onda, o espectro e layout do espectro, que é o mesmo do
anterior com exceção da adição da plotagem do espectro. O espectro mostra o
tempo no eixo horizontal e a freqüência no eixo vertical. A escala de cinza
representa a energia. A variação da amplitude com a freqüência para um ponto
particular no tempo corresponde ao STFT do sinal de voz centrado em dois pontos.
(o STFT’s para este espectro foi calculado co um Hamming de 6,7ms).
Escolha tanto uma voz feminina natural, ou uma expressão falada por uma voz
feminina, ou uma voz masculina natural ou uma expressão falada por uma voz
masculina.
Coloque o cursor em várias vogais e friccione porções da expressão e observe as
variações do espectro, pressionando e segurando o botão direito do mouse enquanto
o cursor está dentro da janela de forma de onda então selecione a opção xsprectrum.
Q4: Por que o nível da porção de altas freqüências do espectro são analisados com
janelas retangulares maiores do que o correspondente ao espectro de Hamming?
Exercício de Casa
Q5: Um sinal de voz amostrado a uma taxa de 16.000 amostras/segundos (16kHz).
Uma janela de 10ms é aplicada ao sinal de voz por análise de short-time, e a janela
avança em 40 amostras a cada vez. Assuma que apenas o algoritmo radix-2 FFT
está disponpivel para analisar a transformada de Fourier discreta (DFT).
a) Quantas amostras existem no segmento selecionado da fala?
b) Qual o tamanho do quadro de analise short-time, por exemplo que a duração
(em ms) entre cada DFT computado?
c) Qual é o tamanho mínimo de DFT para que o tempo de aliasing aconteça?
d) Qual o espaço em Hz entre amostras DFT para o tamanho determinado no item
c?
O sinal digital agora precisa passar por um sistema de reconhecimento baseado em
telefonia que assume uma amostragem de 8kHz.
e) Qual o pré-processamento necessário para acomodar esta nova taxa de
amostragem?
f) Assumindo a mesmo tamanho de 10ms para a janela, quantas amostras serão
selecionadas neste segmento de voz?
g) Para manter a mesma taxa do item b, quantas amostras deverão avançar na janela
DFT?
h) Como as respostas dos itens c e d mudariam?
Parte II: Análise Cepstral da Fala
Exercício de Laboratório
Nesta parte do laboratório, você examinará primeiro algumas propriedade do complexo
cepstrum e então mostrar como o cepstrum pode ser modificado para obter tanto a
informação do trato vocal como a informação de excitação. Você estudará estes resultados
usando expressões sintetizadas cujas propriedades conhecemos exatamente. Mais tarde
examinaremos a fala natural de expressões fornecidas.
O Complexo Cepstrum
Examinaremos primeiro alguma propriedade do complexo cepstrum utilizando duas
expressões sintetizadas. A primeira consiste em um impulso na origem e um escala de
impulso de 20 amostras depois. A segunda é um /a/ sintetizado, e a mesma expressão usada
na Parte I.
T4. Na janela de Lab 3 selecione o formato apenas forma de onda [Waveform Only]
então selecione o expressão impulse-pair.
Calcule o complexo de cepstrrum (fase mínima), segurando o botão direito do
mouse na janela de forma de onda e selecionando complex cepstrum a partir do
menu que aparecerá. Será pedido a ordem N da DFT (ex.: ponto DFT 2N) na caixa
de diálogo. Entre um número razoável entre 5 e 12 e pressione a tecla Enter. Uma
nova janela com o complexo cepstrum aparecerá.
Certifique-se de que você entendeu como p complexo de cepstrum é calculado.
Meça e verifique quais os impulsos válidos que no complexo cepstrum tem a
amplitude correta. Você pode alterar a escala no eixo vertical para melhor visualizar
a o cepstrum. Faça isto segurando o botão direito do mouse na janela o cepstrum e
escolhe do vertical fixed zoom a partir do menu. Você pode restaurar a janela
selecionando vertical auto zoom.
Varie o tamanho da DFT e observe os efeitos que isto provoca na extensão do
aliasing.
Q6: Pode explicar por que o valor zero absoluto do complexo cepstrum não é zero?
Faça algumas medidas e verifique sua hipótese.
T5. Selecione o formato Waveform Only e a expressão sintetizada. Marque uma região
na forma de onda que abranja vários períodos pitch.
Calcule o ceptrum (complexo cepstrum fase-zero) pressionando o botão direito do
mouse na janela da forma de onda e selecionando o cepstrum a partir do menu. Use
uma DFT de 10º ordem. Você pode tentar isto com algumas falar reais também.
Q7: meça a freqüência fundamental da voz (F0) de uma vogal sintética a partir do
cepstrum. Verifiqur sua medida do tempo da forma de onda.
Recuperandoa Informação do Trato Vocal
T6. Utilizando os layouts Waveform e Spectra, selecione a expressão sintetizada.
No analisador de espectro, ajuste a analise para DFT, a janela Hamming e o
tamanho em segundos deve incluir vários períodos pitch (ex.: 0,025 secundos).
Calcule o cepstrum, pressionando o botão direito do mouse na janela forma de onda
e selecionando cepstrum a partir do menu. Use DFT a 10º ordem. Veja o ceptrum e
se familiarize com as localizações dos picos nele.
No analizador de espectro, mude o tipo de análise para, CEPST. Esta opção
recalculará o espectro após executar as operações de cepstral liftering no sinal. A
operação de liftering é controlada pelos seguintes parâmetros:
•
•
•
Liftering: seleciona o liftering passa-alta, liftering passa-baixa, ou nenhum.
Cep cut (sec): da a freqüência de corte nominal.
Cep trans: dá a duração da transição de quefrency entre o zero e a potência
total.
Experiemente diferentes valores dos parâmetros acima. Com a operação liftering
apropriada no sinal, você deve ser capaz de recuperar apenas a log magnitude da
resposta de freqüência sem qualquer fonte/excitação da informação.
Q8: neste exemplo, qual é o liftering direito da operação (passa-alta, passa-baixa ou
nenhum) e qual o corte a direita para recuperar apenas o trato vocal da informação?
Recuperação da Informação de Excitação
T7. Como no item T6, experimente diferentes valores para os parâmetros de liftering,
mas desta vez recupere apenas a fonte/excitação da informação.
Q9: neste exemplo, qual a operação de liftering direito e qual o corte para recuperar
apenas a fonte/excitação da informação?
T8. Tente o procedimento de análise em algumas vozes naturais. Observe a diferença
entre as características do complexo cepstrum para falas pronunciadas ou não.
Pode-se comparar o cepstrall uniforme do espectro da magnitude, com o original
para ver qual é preferível para extração dos formatos de freqüências e/ou da
freqüência fundamental da voz.
Q10: Com base nas suas observações na fala natural, que é o lifter mais apropriado
para recuperação da informação do trato vocal? E sobre a excitação da informação?
Coeficientes de Cepstral
Os coeficientes de ceptral e seus tempos derivativos são usados em muitos sistemas
modernos de reconhecimento de voz. Neste laboratório, examinaremos algumas destas
características e certamente ganhar alguma idéia sobre por que eles são úteis.
T9. Selecione os formatos Waveform, Spectrum, e Cepstral Coefficientes e escolha
uma expressão feminina.
Na janela Cepstral Coefficients, os coeficientes c[0] e c[1] (no alto) e o seus
correnspondentes em derivações no tempo (embaixo) são plotados. As derivações
no tempo este caso são calculadas tendo a diferença dos coeficientes cepstral com
quadros antes (ex: 20ms) e depois do quadro corrente. Estude o comportamento
destes parâmetros para diferentes sons.
Q11: Baseado no que foi visto e no que se sabe sobre o comportamento destes
parâmetros, sugira qual destes parâmetros deve ser correlato com as propriedades
acústicas dos sons da fala. Por exemplo, o que se pode dizer sobre os valores de c[1]
para vocais e fricções?
Freqüência-Mel Coeficiente Cepstral
Usaremos agora o MATLAB para resintetizar algumas expressões usando apenas os
coeficientes de cepstral e Freqüência-Mel (MFCCs) derivada destas expressões. Isto deve
dar alguma idéia de qual a informação continda no MFCCs e se essa informação não é
adequada as propostas de reconhecimento de voz.
Para começar no MATLAB, digite o seguinte comando no prompt do Linux:
% start_lab3_matlab.cmd
Então digite o seguinte comando no prompt do MATLAB:
>>init_lab3
Isto carregará três expressões, cada amostra de 8kHz, nas variáveis unsual, pathological e
cupcakes.
T10.
Ouça as três expressões utilizando a função “play”. Para ouvir unusual
digite:
>>paly(unusual, 8000)
Para sintetizar novamente esta expressão utilizando seus MFCCs, a função
resyn_from_mfccs será utilizada. Esta função trabalha invertendo o MFCC’s para
obter a magnitude do espectro para cada quadro, e usando um algoritmo interativo
para estimar a fase de cada componente da freqüência de cada quadro. A estimação
da fase é necessária, por que a fase é ignorada quando se calcula o MFCCs.
A primeira interação da parte iterativa do algoritmo começa com função inicial de
zero para cada quadro. Esta função da fase é combinada com a magnitude espectral
obtida do MFCCs para produzir o STFTs completo. Por causa dos quadros nos
quais o STFT calculado é sobreposto, nem todos os ajustes de STFT corresponde a
sinais válidos. Para considerar um algoritmo aplicado para obter um sinal válido
cujo STFT mais proximamente, nos mínimos quadrados criados por STFTs. O sinal
resultante é considerado o resultado da primeira iteração. A segunda iteração
começa com a combinação da função de fase do sinal e da magnitude obtida no
espectro a partir do MFCCS. A cada iteração, o sinal resultante se parece mais com
o sinal original in that the magnitude spectra are closer in the least squares sense.
Veja a referencia a seguir para maiores informações:
D.W. Griffin and J. S. Lim, “Signal Estimation from Modifies Short-Time
Fourier Transform”, IEEE Tras. Acoustics, Speech and Signal Processing,
Vol. 32 N° 2, Apr. 1984.
Para sintetizar novamente unusual com este algoritmo utilizando os 14 primeiros
MFCCs, digite o seguinte comando no prompt MATLAB:
>>resyn resyn_from_mfccs(ususual, 14);
Isto armazenará a forma de onda syntetizada novamente em resyn, e pode ser
ouvida utilizando a função “play”.
Sintetize novamente as expressões utilizando vários números de coeficientes e ouça
os resultados. Especificamente, sintetize novamente as formas de onda utilizando os
MFCCs 2, 14, 25 e 128.
Q12: Para cada expressão, compare o sinal re-sintetizado usando diferentes
números de MFCC’s. Para quantos MFCC’s a forma geral do espectro capturado
será suficientes para manter a inteligibilidade do sinal. (Peça ajuda a um amigo que
não saiba do que se trata o exercício para te auxiliar). Quantos MFCC’s são
necessários para capturar um informação pitch.
Q13: Muitos sistemas de reconhecimento de voz utilizam os primeiros 14 MFCC’s.
Utilizando da resposta dada para o item anterior, explique porque esta pode ser uma
escolha inteligente.
Q14: Ouça a expressão re-sintetizada para unusual e cupcakes usando apenas os
dois primeiros MFCC’s. Qual o mais inteligível? Porque pode ser? (Sugestão:
Considere qual informação e capturada nos primeiros dois coeficientes cepstrais e
relacione a isto as características espectrais dos fonemas na expressão unusual.
Considere também o número de sílabas em cada palavra e quais os efeitos do
vocábulo na procura do espaço.)
Exercício para Casa
Q15: O complexo ceptrum, x̂[n] , é relacionado ao sinal, x[n] , por
Xˆ ( z ) = log X ( z )
Como visto em aula, o complexo ceptrum, de um casual, um sinal de fase mínima
pode ser gerado com o uso de DFT’s. Entretanto, existe também uma relação
recursiva para determinar x̂[n] diretamente a partir de x[n] .
a) por diferenciação a transformada de Z , mostra que x[n] e x̂[n] são relacionados
por:
nxˆ[n]∗ x[x ] = nx[n ]
b) Assumindo que x[n] é a fase mínima, use esta expressão para derivar a seguinte
formula recursiva para gerar x̂[n] .

n<0
0

n=o
xˆ[n] = log x[0]
 x[n]
1 n −1

kx[k ]x[n − k ] n > 0
−
 x[0] nx[0] ∑
k =0
(Use o teorema do valor inicial para n = 0)
Q16: Este problema se preocupa sobre alguns resultados de processamento de sinais
observando os cálculos dos Mel-frequency cepstral coefficients (MFCC’s) a partir
do Mel-frequency spectral coefficients (MFSC’s). Admitamos que o comprimento o
segmento de fala (s[n]) é N, o tamanho da Transformada Discreta de Fourier (S[k]) é
M, e o número dos filtros de Mel-frequency é L. Admitiremos também que o
tamanho do DFT is suficientemente grande tal que o efeito de aliasing seja
desprezível.
a) mostre que o cpestrum c[n] pode ser calculado como uma transformada discreta
do co-seno, ex.:
M −1
2π
c[n] = ∑ log S [k ] cos kn 0 ≤ n ≤ M − 1
M
k =0
(um fator de escala de 1/M é ignorado na expressão acima.)
b) O procedimento seguinte é tipicamente usado para MFCC’s:
• O coeficiente de Fourier S[k] é quadrado.
• A resultante do quadrado da magnitude do espectro é passado pelo filtro
triangular de Mel-frequency como mostrado nas notas de aula.
• A saída de energia em log (em decibels) dos filtros Xk, k = 1, 2, ..., L,
acumulado do vetor L-dimensional MFSC. Note que no MFSC o coeficiente
de k = 0. Esta informação pode ser importante para o item c.
• O MFCC’s ´´e calculado por uma transformada discreta do co-seno.
Para alcançar o último passo, deve-se tratar o MFSC’s como uma transformada
discreta de Fourier de um sinal real. Qual propriedade de simetria deve ser imposta?
Qual o tamanho mínimo da tansformada discreta de Fourier?
c) Mostre que MFCC’s Yi, i = 1, 2, ..., L é dado por:
L

1π 
Yi = ∑ X k cos i k −  
2 L
k =1

Sugestão: A DFT inversa pode calcular igualmente de qualquer ajuste de espaço de
pontos no circulo unitário.
Download

Instituto de Tecnologia de Massachusetts Departamento de