Baixe o app para aproveitar ainda mais
Prévia do material em texto
FFT-TRANSFORMADA RÁPIDA DE FOURIER A quase totalidade dos fenômenos físicos de natureza periódica tem sua origem em ondas (sonoras, elétricas, hidráulicas e mecânicas) que apresentam formas bem definidas. Em meados do século XVIII, Euler, Bernoulli e Lagrange já discutiam a representação de sinais periódicos através de séries trigonométricas. Fourier (1768-1830) desenvolveu em seu estudo sobre a condução de calor pelos corpos a formulação de que um fenômeno de natureza periódica pode ser decomposto em uma série de funções senoidais, com amplitudes variáveis e freqüências múltiplas da freqüência fundamental, com fases coincidentes ou inversas. O estudo sobre a Teoria Analítica do Calor foi publicado em 1822. Os microcomputadores encontraram aplicação imediata para as séries de Fourier dada a grande quantidade de operações necessárias para ser obtida uma confiabilidade razoável na análise de um evento de natureza periódica. O ouvido humano responde à intensidade das freqüências individuais presentes no som, por este motivo é preciso trabalhar com informações sobre este sinal de som no domínio da freqüência. Neste capítulo será apresentada uma avaliação da base matemática para converter qualquer função periódica nas suas componentes de freqüência, a Transformada de Fourier. Posteriormente será explanada a FFT (Transformada Rápida de Fourier) que é um algoritmo que otimiza o cálculo da Transformada Discreta de Fourier- DFT. 5.1 AS SÉRIES DE FOURIER Os sons naturais são compostos de múltiplas componentes de freqüências. Para iniciar a análise em freqüência de um determinado som, deve-se supor que apenas uma curta seção deste som é utilizada. Nesta análise, pode-se ignorar o restante do sinal do som. Supondo também que a seção curta do som a ser analisada é periódica (repete-se eternamente), pode-se então aplicar os princípios matemáticos que foram desenvolvidos por Fourier, Bernoulli, e Eüler [19]. 44 Para uma função periódica (forma de onda) dada por x(t), na qual o período é dado por To, então: 1. x(t) pode ser representado por um somatório de ondas senoidais. 2. Na forma de onda senoidal, a frequência fundamental é: fo= 1 / To [5.1] 3. O somatório pode ser escrito como: ( ) (( )∑∞ = ++= 1 00 0 2.2cos 2 )( n nn ntfsinbntfa atx ππ ) [5.2] (E. Oran Brigham, pg 74 [20]) 4. 0 0 0 2 2 f T ππω == é conhecido como a primeira harmônica ou freqüência angular fundamental. ( ) (( )∑∞ = ++= 1 00 0 cos 2 )( n nn ntsinbnta atx ωω ) [5.3] para um conjunto de valores de an e bn . 5. O somatório é chamado de “Série de Fourier” e os valores de an e bn são chamados de “coeficiente da série”. 6. Os valores de an e bn podem ser encontrados por: ( )∫ − = 2 T 2 cos)(2 T n dtnttxT a ω e ( )∫= 2 T 2 T- )(2 dtntsintx Tn ωb . [5.4] Estes resultados podem ser aplicados a funções discretas (funções que só estão definidas em pontos específicos), como também a funções contínuas. Se tivermos uma taxa de amostragem “Fs” e uma série de “N” amostras por período, então: 45 1. A menor freqüência presente é N Ff s=0 e 00 2 fπω = [5.5] 2. A série com N amostras por período, pode ser representada por: ∑∞ = + += 1 0 22cos)( k kks N nksinb N nkaanTx ππ [5.6] 3. a0 corresponde ao valor da componente contínua. 4. A série de Fourier pode ser reescrita como: ((∑∞ = ++= 1 00 cos)( k Kk tkaatx θω )) [5.7] onde, kj kK eAX θ= = KK jba − [5.8] ∫ − −= 2 T 2 ).(2 T tojk K dtetxT X ϖ [5.9] ∫ − == 2 T 2 )(1 T oo dttxT AX [5.10] 5. o coeficiente Xk pode ser calculado numericamente através da seguinte aproximação: ∑ = −≈ N m sK N mkjmTx N X 1 ]2exp[).(2 π [5.11] ∑ = ≈ N m smTxN X 1 0 )( 1 onde Ts = T/N [5.12] 46 5.2 A TRANSFORMADA CONTÍNUA DE FOURIER A integral de Fourier é definida pela expressão: [5.13] ( ) ∫+∞ ∞− Π−= dtetxfX ftj 2).( Se a integral definida na equação 5.13 existe em todo f, X(f) pode ser definida como a transformada de Fourier do sinal no tempo x(t). 5.3 A TRANSFORMADA DISCRETA DE FOURIER A equação 5.14 mostra a transformada Discreta de Fourier, para N amostras de um sinal x(k). ∑− = Π−= 1 0 /2).(1][ N k Nnkjekx N nx n= 0, 1, 2 ... N-1 [5.14] Vale salientar que tanto para transformada contínua quanto para a discreta existem as transformadas inversas que retornam o sinal do domínio da freqüência para o domínio do tempo. 5.4 A TRANSFORMADA RÁPIDA DE FOURIER - FFT A Transformada Discreta de Fourier apresentada pela equação 5.14, leva ao cálculo N2 operações de multiplicação para se obter o espectro de frequência de um sinal. Com o algoritmo da FFT (Transformada Rápida de Fourier), desenvolvido na seção a seguir, o número de multiplicações necessárias cai para N.log2.N. Este fato pode ser visualizado na figura 5.3. 47 5.4.1 A operação “Butterfly” Se fizermos na equação 5.14, n i n eW π2− = , [5.15] então: ∑− = − = 1 0 2N n N kni nk ex π y torna-se [5.16] ∑− = = 1 0 N n kn Nnk Wxy Se a série é dividida em elementos pares e ímpares temos: ∑∑ − = + + − = += 1 2 0 )12( 12 1 2 0 2 2 N n kn Nn N n nk Nnk WxWxy [5.17] ∑∑ − = + − = += 1 2 0 2 12 1 2 0 2 2 N n nk Nn k N N n nk Nnk WxWWxy [5.18] devido a nkN nk N W 2 2 =W , isto permite escrevermos ∑∑ − = + − = += 1 2 0 2 12 1 2 0 2 2 N n nk Nn k N N n nk Nnk WxWWxy [5.19] ∑∑ − = + − = += 1 2 0 2 12 1 2 0 2 2 N n nk Nn k N N n nk Nnk WxWWxy [5.20] se fizermos: x1(m)= AMOSTRAS PARES = x(2n) e x2(m)= AMOSTRAS IMPARES = x(2n+1) ∑∑ − = − = += 1 2 0 2 2 1 2 0 2 1 )()( N n nk N k N N n nk Nk WnxWWnxy [5.21] 48 Assim, se existir um número par de amostras, o problema computacional de yk pode ser reduzido pela metade. Então fazendo 2 Nk y + da forma, ( ) ( )∑∑ − = ++ − = + + += 1 2 0 2 2 2 2 1 2 0 2 2 1 2 )()( N n Nkn N Nk N N n Nkn NNk WnxWWnxy [5.22] ∑∑ − = − =+ −= 1 2 0 2 2 1 2 0 2 1 2 )()( N n nk N k N N n nk NNk WnxWWnxy [5.23] devido a ( ) nk N Nkn N W 2 2 2 =+W e 12 −=NNW [prova a seguir] 12 −=NNW ( ) nkNNknN W 2 2 2 =+W 22 2 N N iN N eW = − π ( )πiNN eW −=2 12 −=NNW ( ) 2 22 2 2 nN N nk N Nkn N WWW =+ ( ) 42 22 2 2 nN N nk N Nkn N WWW =+ ( ) nnk N Nkn N WW 2 2 2 2 1−=+ porque 12 −=NNW ( ) nk N Nkn N WW 2 2 2 =+ Com estes resultados ∑∑ − = − = += 1 2 0 2 2 1 2 0 2 1 )()( N n nk N k N N n nk Nk WnxWWnxy [5.24] e ∑∑ − = − =+ −= 1 2 0 2 2 1 2 0 2 1 2 )()( N n nk N k N N n nk NNk WnxWWnxy , [5.25] 49 a Operação Butterfly é construída conforme a figura 5.1 )()()( 21 kXWkXkX k N+= e ( ) )()(2 21 kXWkXNkX kN−=+ [5.26,27] Figura 5.1: A Operação “Butterfly ” A operação “butterfly” permite que a computação da DFT seja dividida ao meio, ou seja, se existem 2n amostras, a computação da DFT pode ser repetida exigindo somente metade do cálculo. Para uma DFT de 2 pontos (caso básico) temos: 101 0 200 xxxWxy +=+= e [5.28] 1010201 xxxWxy −=−= Assim, se existem 2n amostras, a DFT pode ser computada através do uso de uma série de estágios da operação “Butterfly” os quais se repetem conforme o número de bits utilizado. A figura 5.2 mostra este processo: Figura 5.2: Uso da Operação “Butterfly” para Computar uma FFT de 8-pontos 50 Estas séries de operações podem ser mais facilmente implementadas se os valores de entradas forem seqüenciados corretamente. A análise da representação binária dos valores de entrada revelam um padrãosubjacente, ou seja, os índices correspondem à representação binária invertida do número da seqüência, como mostrado na tabela 5.1. Seqüência da Operação “Butterfly” Endereço Binário Bit Reverso Elementos correspondente a seqüência Original x0 x4 x2 x6 x1 x5 x3 x7 000 100 010 110 001 101 011 111 000 001 010 011 100 101 110 111 x0 x1 x2 x3 x4 x5 x6 x7 Tabela 5.1: Sequência e Re-ordenação dos bits de ordem reversa Devido ao fato das representações binárias se repetirem, o número de operações de multiplicações necessárias para se obter o espectro de frequência de um sinal diminui consideravelmente. Figura 5.3: Comparação do número de Multiplicações requeridas pelo cálculo direto e pela FFT 51 52 A figura 5.3 mostra a eficiência computacional da FFT em comparação com o método normal (transformada de Fourier simples). Pode-se ver claramente que quanto maior for o número de pontos de uma amostra, o número de multiplicações na forma direta cresce na forma exponencial, enquanto que a FFT possui poucas multiplicações. BANCO DE FILTROS Um sistema completo de reconhecimento de voz, em seu mais elementar nível, compreende uma coleção de algoritmos de uma larga variedade de disciplinas, incluindo reconhecimento de padrões estatísticos, teoria da comunicação, processamento de sinais, matemática combinacional, lingüística, entre outras. Embora cada uma destas áreas seja abordada de forma diferente pelos programas de reconhecimento de voz existentes, o grande denominador comum de todos os sistemas de reconhecimento da fala é o processamento de sinal “font-end”, ou seja, o processamento inicial da forma de onda da fala em parâmetros de representação. Existem três métodos dominantes na análise espectral de um sinal: - Modelo de Análise de Banco de Filtros. - Código Linear de Predição (LPC). - FFT (Transformada Rápida de Fourier) 6.1 MODELOS DE ANÁLISE ESPECTRAL Tanto para a técnica de reconhecimento de voz baseada no reconhecimento de padrões ou em modelos acústico-fonéticos, mostrados na figura 6.1 (a) e (b) respectivamente, a fase inicial do processo é comum nos dois métodos, ou seja, o processamento de sinais inicial é igual nos dois métodos de reconhecimento de voz, apesar dos passos seguintes serem diferentes. Os métodos de processamento inicial de sinais mais usados são o Banco de Filtros, Código Linear de Predição – LPC e a Transformada Discreta de Fourier (DFT) implementada através da FFT. A estrutura do sistema de um Banco de filtros é mostrada na figura 6.2. O sinal da fala, s(n), é passado através de um banco de Q filtros passa-faixa, os quais cobrem breves espaços de freqüência de interesse no sinal. (sinais 100-3000Hz para sinais de telefone de qualidade, 100-8000Hz para sinais de banda larga). 53 Figura 6.1: (a) Aproximação por Reconhecimento de Padrões (b) Aproximação acústico-fonética. Os filtros individuais podem e geralmente sobrepõem-se na freqüência como mostrado na figura 6.2. Figura 6.2: Modelo de análise de um Banco de Filtros. 54 A saída do ith filtro passa-faixa, Xn (ejωi) é a representação espectral de s(n) (onde ωi é a freqüência normalizada 2.π.fi/Fs, sendo Fs a freqüência de amostragem). A freqüência central do filtro é ωi. Pode-se ver que cada filtro processa o sinal independentemente e produz uma representação espectral individual Xn. A análise de sinal feita através do sistema LPC (Linear Predictive Coding) é mostrada na figura 6.3. A representação espectral resultante Xn (ejωi) é da forma σ/A. (ejωi), onde A.(ejωi) é a pth (p-ésima) ordem polinomial com a transformada Z dada por: A(z) = 1 + a1.z-1 + a2.z-2 + a3.z-3 + .... + ap.z-p [6.1] A ordem p, é chamada ordem do analisador LPC. Figura 6.3: Modelo de análise LPC. Embora existam processadores alternativos para processar o sinal de entrada em sis pr ên rec sa 6.2 fig qu tema de reconhecimento de voz, os modelos de banco de filtros, LPC e a FFT, tem oporcionado mais alto desempenho em sistemas práticos. Neste trabalho será dada fase ao sistema de processamento de banco de filtros, o mais utilizado nos sistemas de onhecimento de voz, devido à sua simplicidade e menor tempo de processamento. Vale lientar que a FFT foi vista no capitulo 5. O MODELO DO BANCO DE FILTROS O diagrama de blocos da estrutura canônica do banco de filtros é mostrado na ura 6.4. O sinal de fala amostrado, s(n), é passado através de um banco de Q filtros, em e: si(n) = s(n) * hi(n), 1 ≤ i ≤ Q [6.2] 55 onde a resposta ao impulso do ith filtro passa-faixa é hi(m) com a duração de Mi amostras; então a convolução é usada para representar a operação de filtragem. Figura 6.4: Modelo do analisador de um Banco de Filtros. O objetivo do banco de filtros é dar a medida da energia do sinal de voz e também a faixa de freqüências de cada sinal (passa faixa). 6.3 TIPOS DE BANCOS DE FILTROS USADOS NO RECONHECIMENTO DE VOZ O tipo mais comum de banco de filtros usado para reconhecimento de fala é o banco de filtros uniforme, para qual a freqüência central, fi, do filtro passa faixa é definida como: i N F f si ⋅= 1 ≤ i ≤ Q , [6.4] de Fs é a taxa de amostragem do sinal de fala, e N é o número de filtros uniformemente on espaçados requeridos para medir toda a faixa de freqüência da fala. O número de filtros usado no banco de filtro, Q, satisfaz a relação, Q ≤ N / 2 [6.5] 56 O valor de Q é igual a (N / 2) quando a faixa de freqüência inteira do sinal de fala é usada na análise. A largura de faixa do filtro (bi), do iésimo filtro, geralmente satisfaz à propriedade, bi ≥ Fs / N [6.6] com a igualdade significando que não há nenhuma freqüência que se sobreponha entre canais de filtro adjacentes, e com a desigualdade significando que aqueles canais de filtro adjacentes se sobrepõem. (Se bi < Fs/N então certas porções do espectro de fala estariam perdidas na análise e o espectro de fala resultante não seria considerado muito significante). A figura 6.5(a) mostra um conjunto Q de filtros ideais, não-sobrepostos, que cobrem uma faixa de frequência de Fs/N(½) até (Fs/N)(Q+ ½ ). Já a figura 6.5(b) mostra um conjunto real dos filtros cobrindo a mesma faixa de freqüências. Figura 6.5: (a) ideal (b) real. Respostas de um banco de filtros de Q – canais com cobertura de uma faixa de frequência de Fs/N(½) até (Fs/N)(Q+ ½ ). Uma alternativa para os bancos de filtro uniformes, são os bancos de filtros não- uniformes. Um critério comumente usado para espaçar os filtros não uniformes é a escala de freqüência logarítmica. (Uma escala de freqüência logarítmica é freqüentemente justificada de um ponto de vista da percepção audível do ser humano). Assim, para um conjunto de Q filtros passa faixa com freqüências centrais, (fi), e largura de faixa (bi), 1 ≤ i ≤ Q , tem-se: 57 b1 = C (primeira largura de banda) [6.7] bi = α .bi –1, 2 ≤ i ≤ Q [6.8] 2 )( 11 1 1 bb bff i i j ji −++= ∑− = [6.9] onde C e fi são, a largura de faixa e a freqüência central do primeiro filtro e α é o fator de crescimento logarítmico. Os valores mais comumente usados de α são: α=2, que dá um espaçamento de faixa de uma oitava nos filtros adjacentes e α= ¼ que dá um espaçamento de 1/3 de oitava na faixa do filtro. Como exemplo, pode se supor a construção de um banco de filtros de quatro faixas, com espaçamento de uma oitava, não superpostos, cobrindo uma faixa de freqüência de 200 a 3200 Hz (com uma taxa amostragem de 6.67 kHz). A figura 6.6 mostra os filtros ideaispara este banco de filtros. São usados valores para fi e C de 300 Hz e 200 Hz, resultando nas seguintes especificações para este banco de filtros: Filtro 1: f1 = 300 Hz b1 = 200 Hz Filtro 2: f2 = 600 Hz b2 = 400 Hz Filtro 3: f3 = 1200 Hz b3 = 800 Hz Filtro 4: f4 = 2400 Hz b4 = 1600 Hz Figura 6.6: Especificação para um Banco de Filtro ideal de 4 canais de uma oitava 58 6.4 IMPLEMENTAÇÃO DE UM BANCO DE FILTROS Um banco de filtro pode ser implementado de diversos modos, dependendo do método usado para projetar os filtros individuais. O projeto de filtros digitais divide-se em duas classes: - Resposta ao Impulso Infinita (IIR) - Resposta ao Impulso Finita (FIR) Os filtros IIR (também chamados na literatura de filtros recursivos), são os mais diretos, e geralmente são de implementação mais eficiente, seja para realizar cada filtro passa faixa individual como uma cascata ou uma estrutura paralela. Para filtros FIR existem vários métodos possíveis de implementar os filtros passa faixa em um banco de filtros. A mais simples implementação é a estrutura na forma direta. Neste caso, se a resposta ao impulso para o iésimo canal é hi(n), onde 0 ≤ n ≤ L-1, então a saída do iésimo canal xi(n), pode ser expressa como uma convolução discreta do sinal de entrada s(n), com a resposta ao impulso, hi(n), isto é: xi(n) = s(n) * hi(n) [6.10] 6.5 CONSIDERAÇÕES SOBRE O USO DE BANCOS DE FILTROS EM SISTEMAS DE RECONHECIMENTO DE VOZ A primeira consideração para qualquer banco de filtro é o tipo de filtro digital usado. As escolhas são IIR (recursivo) e FIR (não recursivo). O projeto de filtros IIR tem a vantagem de ser implementável em estruturas simples e eficientes. A grande desvantagem dos filtros IIR é que a resposta em fase é não linear. Além disso, este tipo de filtro tem a possibilidade de ser tornar instável. Os filtros FIR alcançam a fase linear sem comprometer a habilidade de aproximar- se das características de magnitude ideais; porém, eles normalmente são de implementação computacional muito cara. Para aplicações de reconhecimento de voz, uma estrutura de FFT pode ser aplicada freqüentemente para aliviar consideravelmente a ineficiência computacional de 59 60 bancos de filtro FIR; conseqüentemente, estruturas de banco de filtro digitais mais práticas usam filtros FIR (normalmente em uma realização com FFT) [17]. A próxima consideração é o número de filtros a ser usado no banco de filtros. Para bancos de filtros uniformes, o número de filtros, Q, não pode ser muito pequeno ou então a habilidade do banco de filtros em filtrar o sinal da fala é grandemente prejudicada. Assim, valores de Q menores que 8 geralmente são evitados. Igualmente, o valor de Q não pode ser muito grande (a menos que haja uma considerável sobreposição de filtros), porque as larguras de faixa dos filtros seriam muito estreitas. Assim, sistemas práticos tendem a ter valores de Q < 32. Embora bancos de filtros uniformemente espaçados sejam extensamente usados para reconhecimento de voz, muitos sistemas práticos usam filtros de espaçamento não uniformes, em um esforço de reduzir computação global e caracterizar o espectro de fala de uma maneira mais consistente com a percepção humana. Vale salientar que o banco de filtros é uma ferramenta importante para o reconhecimento de voz quando o objetivo é encontrar frequências especificas de um sinal de voz. Como exemplo pode-se citar a análise das formantes de frequência requeridas na aproximação Acústico-fonética (Capitulo 2). Neste estudo, a aproximação utilizada é a de Reconhecimento de Padrões onde a análise espectral do sinal é feita como um todo, deste modo utilizamos apenas a FFT para obter o espectro de frequência do sinal. AS “WAVELETS” Como será demonstrado no capitulo 10, a FFT é uma ferramenta eficiente para a obtenção do espectro de freqüência de um sinal. No entanto, devido à característica interdisciplinar do reconhecimento de voz, muitas são as variáveis que influenciam no resultado final da FFT, isto é, as características do espectro de um sinal de voz mudam, mesmo no caso deste sinal ser pronunciado pela mesma pessoa. Portanto, precisa-se de uma ferramenta auxiliar para dar maior confiabilidade à resposta obtida pelo sistema. As “Wavelets” cumprem este papel de auxiliar a FFT na definição do reconhecimento de voz. A Transformada “Wavelet”, é uma técnica relativamente pouco difundida, em comparação com a FFT, daí a necessidade de comparar as duas ferramentas, e assim demonstrar sua utilidade. Não é objetivo deste trabalho desenvolver um aprofundamento teórico referente às “Wavelets”, mas somente demonstrar a sua utilidade como uma ferramenta auxiliar à FFT no reconhecimento de voz. Pretende-se aqui mostrar uma pequena introdução conceitual e exemplos práticos do uso das “Wavelets” no reconhecimento de sinais. A Transformada “Wavelet”, em alguns casos, propicia a obtenção de informações não conseguidas com o uso da FFT. Dentre os tipos de aplicações que utilizam as “Wavelets”, estão o reconhecimento de sinais e a compressão de imagens utilizadas pelo FBI americano no reconhecimento de impressões digitais. A Transformada Discreta de Fourier foi concebida no século XIX pelo matemático francês Jean Baptiste Fourier. Como visto no capitulo 5, esta técnica permite que, a partir de um sinal no domínio do tempo, obtenha-se o sinal correspondente no domínio da freqüência. 7.1 A TRANSFORMADA “WAVELET” A DFT (Transformada Discreta de Fourier) informa exatamente quais são as freqüências presentes num sinal. Se for necessário analisar um sinal estacionário, ou seja, um sinal com espectro invariante, a freqüência apontada como existente pela DFT está presente em todo o sinal. Mas, se for necessário trabalhar com um sinal não estacionário 61 (como sinal de voz), muito embora a DFT aponte as frequências presentes, ela não diz nada sobre a localização dessas frequências, ou seja, em que instante de tempo determinada frequência aparece. Quando essa informação é importante, deve-se lançar mão de outra técnica. Uma delas é usar a decomposição baseada em “Wavelets”. A tradução literal de “Wavelet”, é ondaleta, ou, pequena onda. As principais aplicações práticas para o uso de Wavelets são: - Detecção de características em sinais (imagens, sons e outros sinais). - Tremores Sísmicos - Imagens Médicas - Compressão de imagens e sons. - Filtragem do ruído em imagens e sons. - Identificação de características em sinais. A Wavelet é uma forma de onda de duração limitada que tem um valor médio igual a zero. A figura 7.1 mostra uma comparação entre um sinal senoidal (base da análise de Fourier) sem limite de duração (estendida de menos a mais infinito) e um sinal Wavelet com duração limitada, assimétrico e irregular. Figura 7.1: Onda Senoidal e Wavelet tipo db10 Matematicamente, o processo de análise de Fourier é representado pela Transformada de Fourier (equação 7.1), que é a soma de todo o sinal f(t) multiplicado pela exponencial complexa (que pode ser quebrado em componentes senoidais de parte real e imaginária). ( ) ( ) dtetfF tjωω −+∞∞−∫= . [7.1] 62 A figura 7.2 mostra como a transformada de Fourier decompõe um sinal qualquer em suas componentes senoidais. Figura 7.2: Decomposição de um sinal qualquer em sinais senoidais (Transformada de Fourier) Similarmente a transformada Wavelet é definida como a soma de todo o sinal no domínio do tempo, multiplicado pela função wavelet. C [7.2] ∫+∞∞−= dttposiçãoescalatfposiçãoescala ),,().(),( ψ Figura 7.3: Decomposição de um sinal qualquer em sinais de diferentes escalas e posições (Transformada Wavelet) A equação 7.2 resulta emmuitos coeficientes “C”, os quais são função da escala e da posição sinal. A figura 7.3 mostra a decomposição do sinal utilizando-se a Transformada Wavelet. A Transformada Discreta Wavelet decompõe um sinal em outros dois sinais, fazendo uso de filtros passa-baixa (chamados scaling signals) e filtros passa-alta (chamados wavelets signals). 63 Para um sinal discreto F de n pontos, existem m ( m ≤ n/2 ) scaling signals denominados por V1, V2 ...Vm, e existem também m wavelets signals denominados por W1, W2 ... Wm. Cada par de vetores formados pelo conjunto (V1, W1), (V2, W2), ..., (Vm, Wm) é ortogonal, ou seja, possuí produto escalar igual a 0. A forma como se define essa base de vetores é que da origem a diferentes classes de Transformadas Wavelets (tipo da Wavelet, ex: db10), que se prestam melhor a uma ou outra determinada situação. Entretanto, independente dessa definição, os scaling signals serão sempre obtidos dos filtros passa-baixa e os wavelets signals serão obtidos dos filtros passa-alta. A figura 7.4 mostra o nível 1 da decomposição de um sinal pelas Wavelets. O sinal é decomposto por dois filtros, gerando os scaling signals (A -filtros passa-baixa) e os wavelets signals (D - filtros passa-alta). Figura 7.4: Nível 1 de uma decomposição de um sinal pelas Wavelets Quando m = ( n/2 ), o vetor de n pontos formado pelos coeficientes (a1, a2 ...am), seguido de (d1, d2 ...dm ) é chamado de Transformada Wavelet nível 1 do sinal original. Este processo de decomposição é conhecido como Análise de Multi Resolução (MRA - Multiresolution Analysis) e é o coração da análise de sinais com Wavelets. Para melhor exemplificar o processo de decomposição das Wavelets a figura 7.5 mostra um sinal com 1000 pontos e sua decomposição. 64 Figura 7.5: Exemplificação da decomposição de um sinal pela Transformada Wavelet Nível 1 7.2 A ANÁLISE DE MULTI RESOLUÇÃO (MRA) PARA MÚLTIPLOS NÍVEIS Quando se obtêm a Transformada Wavelet de um sinal discreto, realiza-se a Transformada de nível 1. Se for feito o cálculo da Transformada Wavelet da primeira metade desse sinal já transformado, obter-se-á no segundo nível de análise, e assim por diante. Este processo, que está exibido na figura 7.6, pode se repetir por log2(n), onde n é o número de pontos do sinal original. Figura 7.6: Decomposição para Múltiplos nível das Wavelets A Transformação de nível 1 do sinal S é composta pelos sub-sinais cA1 e cD1, a Transformação nível 2 é composta pelos sub-sinais cA2 , cD2 e cD1, e a Transformação 65 66 nível 3, pelos sub-sinais cA3 , cD3 , cD2 e cD1.. Nos capítulos referentes a descrição do sistema desenvolvido neste estudo, será mostrada a utilização da Wavelet no cálculo da correlação dos sinais de voz, como uma ferramenta auxiliar ao cálculo da correlação da FFT. O RECONHECIMENTO DE VOZ E O MATLAB 6.0 Para desenvolver um sistema completo de Reconhecimento de Voz é necessário primeiramente escolher um software de desenvolvimento (linguagem de alto nível). Dentre as principais linguagens de desenvolvimento estão o C/C++, Visual Basic e o Delphi. Todas estas linguagens de programação possuem um ambiente de desenvolvimento de alto nível e com grande capacidade de processamento de inúmeros algoritmos básicos, como o seno e o co-seno etc. No entanto, estas linguagens não possuem nenhuma ferramenta específica para o cálculo de algoritmos com grande complexidade, tal como a FFT (se precisarmos efetuar o cálculo da transformada de rápida de Fourier (FFT) de um sinal temos que desenvolver todo o algoritmo em C/C++, por exemplo). Como citado nos capítulos anteriores, um sistema completo de reconhecimento de voz possui a característica da interdisciplinaridade, ou seja, uma vasta gama de conhecimentos é empregada no desenvolvimento do sistema, desde a aquisição do sinal de voz até o reconhecimento de um padrão. Além da quantidade, existe também a complexidade dos cálculos envolvidos no processamento. Estes fatores influenciam o desempenho e a precisão do reconhecimento de voz e exigem um software de desenvolvimento que possua as qualidades de rapidez e precisão nas diversas tarefas inerentes ao sistema. Devido a este fato, desenvolver um sistema complexo como o de Reconhecimento de Voz torna-se uma tarefa árdua em linguagens como o C/C++, pois cada algoritmo tem que ser programado individualmente, aumentando a possibilidade de pequenos erros de programação (bugs) que podem levar a resultados errados e comprometer a qualidade do sistema. Existem vários softwares de desenvolvimento com ferramentas pré-programadas. O que mais se destaca na área de engenharia é o MATLAB. Desde a sua primeira versão (1984), o MATLAB é tido como produto líder na área de computação numérica e científica. Mais que um software de desenvolvimento de programas, o MATLAB é um ambiente integrado de modelamento de sistemas e algoritmos, ideal para implementação de projetos complexos, e por esta razão vem sendo adotado como ferramenta de desenvolvimento padrão pelas principais universidades e empresas no Brasil e no mundo. 67 O MATLAB é o núcleo de um ambiente de computação numérica baseado em matrizes que integram: - funções de tratamento numérico de alto desempenho; - sofisticados recursos de geração de gráficos para visualização de dados; - poderosa linguagem de programação de alto nível. 8.1 O AMBIENTE DE PROGRAMAÇÃO DO MATLAB A tela de desenvolvimento do MATLAB é basicamente constituída por duas partes principais: - [Command Window]: Janela de Comando - [Workspace]: área de memória de trabalho do MATLAB. Figura 8.1: Janela de Comando do MATLAB A janela de comando vista na figura 8.1 é o espaço onde são digitados os dados e instruções para o MATLAB e exibidos os resultados. 68 O sinal de prompt “>>” indica estado de espera de entrada de dados ou instruções. A área de memória do MATLAB (Workspace) é o local onde ficam armazenadas as variáveis criadas na janela de comando. A figura 8.2 mostra a área de memória (Workspace). Figura 8.2: Área de Memória do MATLAB O MATLAB possui versões para diferentes ambientes operacionais. O sistema de reconhecimento de voz aqui desenvolvido chama-se “Parlato” (capítulo 9) e foi desenvolvido na versão MATLAB 6 (R12) para ambiente Windows 98. A figura 8.3 mostra a tela de desenvolvimento completa do MATLAB, organizada da seguinte forma: A. Janela de Comando [Command Window]: área de trabalho na qual as instruções são digitadas. B. Janela de Informações [Launch Pad]: área na qual são exibidas informações, textos explicativos e exemplos de utilização dos produtos instalados. C. Janela de Memória [Workspace]: área na qual são exibidas as variáveis definidas na área de trabalho do MATLAB. D. Janela de Histórico [Command History]: área na qual ficam armazenadas todas as instruções executadas no MATLAB. Basicamente existem duas formas de desenvolver um programa no MATLAB. Uma delas é desenvolver o programa direto na Janela de Comando, o que possibilita o teste 69 do algoritmo instantaneamente. A outra opção é criar um arquivo de programa executável dentro do MATLAB que é chamado de arquivo “m.file” devido a sua extensão ser “.m”. Os “m.files” são programas desenvolvidos dentro do MATLAB e somente são reconhecidos e executados no ambiente do MATLAB. Figura 8.3: Tela completa do ambiente de Desenvolvimento do MATLAB 8.2 AS FERRAMENTAS DE PROGRAMAÇÃO DO MATLAB Chamadas de “Toolbox”, as caixas de ferramentas do MATLAB são o que o diferenciam dos outros softwares de desenvolvimento como o C/C++. O MATLAB possui inúmeras caixas de ferramentas com algoritmos pré- programados para cada ramo específico de conhecimento.Se o intuito for por exemplo, utilizar algoritmos para o processamento de imagens no MATLAB, basta usar a caixa de ferramentas “Image Processing Toolbox” que contém inúmeros algoritmos prontos para o processamento de imagens. O MATLAB não possui uma caixa de ferramentas específica para o reconhecimento de voz. 70 As principais caixas de ferramentas do MATLAB podem ser encontradas na Janela “Launch Pad”, a qual fornece um rápido acesso ao menu de “ajuda” (help) de cada ferramenta. A figura 8.4 mostra a Janela “Launch Pad”. Figura 8.4: Janela “Launch Pad” do MATLAB No desenvolvimento do sistema “Parlato” (Capítulo 9) foram utilizados vários algoritmos, os quais podem ser encontrados nas caixas de ferramentas descritas abaixo: - Data Aquisition Toolbox: Caixa de ferramentas com algoritmos e funções para aquisição de dados. - Filter Design Toolbox: Caixa de ferramentas com funções para elaboração e filtros e banco de filtros. - Signal Processing Toolbox: Caixa de ferramentas com funções para o processamento de sinais, tais como a FFT. - Statistics Toolbox: Caixa de ferramentas com funções estatísticas tais como a correlação. - Wavelet Toolbox: Caixa de ferramentas com funções e algoritmos de análise espectral de sinais através das “wavelets” (método similar a FFT). - Database Toolbox: Caixa de ferramentas com funções e procedimentos para a criação e manipulação de arquivos de banco de dados. Além das caixas de ferramentas específicas, muitas funções matriciais e numéricas foram utilizadas na confecção do sistema de reconhecimento de voz “Parlato” (capítulo 71 72 9). A utilização de todas estas funções e ferramentas de cálculo, justifica o uso do MATLAB como software de desenvolvimento de um sistema complexo como de reconhecimento de voz, pois neste caso, a atenção do programador fica voltada ao sistema e não a pormenores como o desenvolvimento de algoritmos para fazer a conexão com a placa de som, por exemplo. Finalmente vale salientar que o MATLAB não possui uma Caixa de Ferramentas especifica para o reconhecimento de voz. Portanto desenvolver um sistema de reconhecimento de voz no MATLAB torna-se uma tarefa tão árdua quanto em C/C++; a diferença é que com o MATLAB , tem-se mais segurança na utilização de algoritmos (algoritmos de cálculo avançado, como a FFT) que já foram amplamente testados e aprovados. Deste modo elimina-se a possibilidade de erros na programação destes algoritmos e conseqüentemente diminui-se a porcentagem de erros do sistema como um todo. Portanto, o sistema “Parlato” de reconhecimento de voz (descrito no capítulo 9) é um sistema desenvolvido neste trabalho utilizando o MATLAB como linguagem de programação. O sistema “Parlato” é parte integrante desta dissertação. 5.2 A TRANSFORMADA CONTÍNUA DE FOURIER 5.3 A TRANSFORMADA DISCRETA DE FOURIER 5.4 A TRANSFORMADA RÁPIDA DE FOURIER - FFT Se fizermos na equação 5.14,�, [5.15] 16_Cap08_Matlab_a.pdf O RECONHECIMENTO DE VOZ E O MATLAB( 6.0 Para desenvolver um sistema completo de Reconheci Todas estas linguagens de programação possuem um
Compartilhar