No reconhecimento de fala, o front end geralmente processa o sinal para permitir a extração de recursos do fluxo de áudio. Uma transformada de Fourier discreta (DFT) é aplicada duas vezes nesse processo. A primeira vez é depois de janelas; depois disso, o bin bin é aplicado e, em seguida, outra transformação de Fourier.
No entanto, notei que é comum nos reconhecedores de fala (o front end padrão no CMU Sphinx , por exemplo) usar uma transformação discreta de cosseno (DCT) em vez de um DFT para a segunda operação. Qual é a diferença entre essas duas operações? Por que você faria DFT na primeira vez e depois um DCT na segunda vez?
Respostas:
A Transformada Discreta de Fourier (DFT) e a Discreta Cosine Transform (DCT) executam funções semelhantes: ambas decompõem um vetor de tempo discreto de comprimento finito em uma soma de funções básicas de escala e deslocamento. A diferença entre os dois é o tipo de função básica usada por cada transformação; o DFT usa um conjunto de funções exponenciais complexas harmonicamente relacionadas, enquanto o DCT usa apenas funções cosseno (com valor real).
O DFT é amplamente utilizado para aplicações gerais de análise espectral que chegam a vários campos. Também é usado como um bloco de construção para técnicas que tiram vantagem das propriedades da representação no domínio da frequência dos sinais, como os algoritmos de convolução rápida de sobreposição para salvar e sobreposição para adicionar.
O DCT é freqüentemente usado em aplicativos de compactação de dados com perda, como o formato de imagem JPEG. A propriedade do DCT que o torna bastante adequado para compressão é seu alto grau de "compactação espectral"; em um nível qualitativo, a representação DCT de um sinal tende a ter mais de sua energia concentrada em um pequeno número de coeficientes quando comparado a outras transformações como a DFT. Isso é desejável para um algoritmo de compactação; se você puder representar aproximadamente o sinal original (domínio no tempo ou no espaço) usando um conjunto relativamente pequeno de coeficientes DCT, poderá reduzir seu requisito de armazenamento de dados armazenando apenas as saídas DCT que contêm quantidades significativas de energia.
fonte
Descobri que alguns dos detalhes no wiki do DCT (também compartilhados pela Pearsonartphoto) apontam que o DCT é adequado para aplicativos de compactação. O final da seção Visão geral informal é útil (negrito é meu).
Além disso, você pode achar que essa resposta também é útil (em math.stackexchange.com). Afirma:
fonte
A razão pela qual você vê a transformação de Fourier aplicada duas vezes no processo de extração de recursos é que eles são baseados em um conceito chamado cepstrum. Cepstrum é uma brincadeira com a palavra espectro - essencialmente, a idéia é transformar um sinal no domínio da frequência pela transformada de Fourier e depois executar outra transformação como se o espectro de frequências fosse um sinal.
Enquanto o espectro de frequências descreve a amplitude e a fase de cada banda de frequência, o cepstrum caracteriza variações entre as bandas de frequência. As características derivadas do cepstrum são encontradas para melhor descrever a fala do que as características obtidas diretamente do espectro de frequências.
Existem algumas definições ligeiramente diferentes. Originalmente, a transformação de ceptro foi definida como transformada de Fourier -> logaritmo complexo -> transformada de Fourier [1]. Outra definição é transformada de Fourier -> logaritmo complexo -> transformada inversa de Fourier [2]. A motivação para esta última definição está em sua capacidade de separar sinais convoluídos (a fala humana é frequentemente modelada como a convolução de uma excitação e um trato vocal).
Uma escolha popular que tem bom desempenho em sistemas de reconhecimento de fala é aplicar um banco de filtros não linear no domínio da frequência (o mel binning a que você está se referindo) [3]. O algoritmo específico é definido como transformada de Fourier -> quadrado de magnitude -> banco de filtros de mel -> logaritmo real -> transformação discreta de cosseno.
Aqui, o DCT pode ser selecionado como a segunda transformação, porque, para entradas com valor real, a parte real do DFT é um tipo de DCT. A razão pela qual o DCT é preferido é que a saída é aproximadamente correlacionada. Recursos descorrelacionados podem ser modelados eficientemente como uma distribuição Gaussiana com uma matriz de covariância diagonal.
[1] Bogert, B., Healy, M. e Tukey, J. (1963). A Alanese de Quefrência de Séries Temporais para Ecos: Cepstrum, Pseudo-Autocovariância, Cross-Cepstrum e Saphe Cracking. Em Anais do Simpósio de Análise de Séries Temporais, p. 209-243.
[2] Oppenheim, A. e Schafer, R. (1968). Análise Homomórfica da Fala. Nas transações IEEE sobre áudio e eletroacústica 16, p. 221-226.
[3] Davis, S. e Mermelstein, P. (1980). Comparação de representações paramétricas para reconhecimento de palavras monossilábicas em frases continuamente pronunciadas. Nas transações do IEEE sobre acústica, processamento de fala e sinal 28, p. 357-366.
fonte
A diferença entre uma transformação discreta de Fourier e uma transformação discreta de cosseno é que o DCT usa apenas números reais, enquanto uma transformação de Fourier pode usar números complexos. O uso mais comum de um DCT é a compactação. É equivalente a uma FFT com o dobro do comprimento.
fonte