Essa é uma interpretação correta da etapa DCT no cálculo do MFCC?


9

Esta é uma continuação da discussão aqui . Gostaria de comentar lá, mas não tenho 50 representantes, por isso estou fazendo uma nova pergunta.

Eis como entendo a etapa DCT no processo de cálculo do MFCC: A lógica por trás disso é separar a correlação nas magnitudes log-espectrais (do banco de filtros) devido à sobreposição dos filtros. Essencialmente, o DCT suaviza a representação do espectro dada por essas magnitudes log-espectrais.

Seria correto dizer que a linha azul na imagem abaixo representa o espectro representado pelo vetor de magnitudes log-espectrais, e a linha vermelha é esse vetor depois de ter sido DCT?

Magnitudes log-espectrais ified DCT (ie MFCCs) vs. magnitudes meramente log-espectrais ???


onde posso baixar seu código para teste?
auraham

A imagem abaixo? Nenhuma imagem na postagem.
Eric Platon

Respostas:


16

Deixe-me começar desde o início. A maneira padrão de calcular o cepstrum é a seguinte:

C(x(t))=F-1 1[registro(F[x(t)])]

No caso dos coeficientes da MFCC, o caso é um pouco diferente, mas ainda similar.

Após a pré-ênfase e a janelinha, você calcula a DFT do seu sinal e aplica o banco de filtros dos filtros triangulares sobrepostos, separados na escala mel (embora em alguns casos a escala linear seja melhor que mel):

insira a descrição da imagem aqui

Com relação à definição de cepstrum, você agora representava o envelope do espectro (espectro reduzido) na escala de frequência de mel. Se você representar isso, verá que é semelhante ao seu espectro de sinal original.

O próximo passo é calcular o logaritmo dos coeficientes obtidos acima. Isso se deve ao fato de o cepstro ser uma transformação homomórfica que separa o sinal da resposta ao impulso do trato vocal, etc. Como?

Um sinal de fala original s(t) geralmente é convoluído com uma resposta de impulso h(t) do trato vocal:

s^(t)=s(t)h(t)

No domínio da frequência, a convolução é uma multiplicação de espectros:

S^(f)=S(f)H(f)

registro(umab)=registro(uma)+registro(b)

Também esperamos que a resposta ao impulso não mude ao longo do tempo, portanto, ela pode ser facilmente removida subtraindo a média. Agora você vê por que estamos pegando os logaritmos das energias da nossa banda.

F-1 1 . O problema é que temos apenas nossas energias logarítmicas, nenhuma informação de fase; portanto, depois de aplicarmos ifft, obtemos coeficientes de valores complexos - não muito elegantes para que todo esse esforço seja uma representação compacta. Embora possamos usar a Transformada discreta de cosseno, que é a versão "simplificada" do FT e obter coeficientes com valor real! Esse procedimento pode ser visualizado como uma combinação de co-co-nóides com nossos coeficientes de log-energia. Você deve se lembrar que o ceptro também é chamado de "espectro do espectro"? Esse é o passo - estamos procurando por qualquer periodicidade em nossos coeficientes de envelope de energia de log.

insira a descrição da imagem aqui

Então agora você vê que agora é bastante difícil entender como era o espectro original. Além disso, geralmente tomamos apenas os 12 primeiros MFCCs, já os mais altos descrevem mudanças rápidas nas energias de log, o que geralmente está piorando a taxa de reconhecimento. Portanto, os motivos para fazer o DCT foram os seguintes:

  • Originalmente, você deve executar o IFFT, mas é mais fácil obter os coeficientes com valor real do DCT. Além disso, não temos mais espectro completo (todos os compartimentos de frequência), mas coeficientes de energia nos bancos de filtros de mel; portanto, o uso do IFFT é um pouco exagerado.

  • Você vê na primeira figura que os bancos de filtros estão sobrepostos, de modo que a energia de um ao lado do outro está sendo espalhada entre dois - o DCT permite correlacioná-los. Lembre-se de que essa é uma boa propriedade, por exemplo, no caso dos Modelos de Mistura Gaussiana, onde você pode usar matrizes de covariância diagonal (sem correlação entre outros coeficientes), em vez de completas (todos os coeficientes são correlacionados) - isso simplifica bastante as coisas.

  • Outra maneira de correlacionar os coeficientes de frequência de mel seria o PCA (Principal Component Analysis), técnica usada apenas para esse fim. Para nossa sorte, foi provado que o DCT é uma aproximação muito boa do PCA quando se trata de sinais decorrelantes, portanto, outra vantagem do uso da Transformação Discreta de Cosseno.


Alguma literatura:

Hyoung-Gook Kim, Nicolas Moreau, Thomas Sikora - Áudio MPEG-7 e além: indexação e recuperação de conteúdo de áudio


11
Por que não podemos tirar o valor absoluto dos números complexos do IFFT? Se os números complexos são muito mais difíceis de lidar, por que usamos o IFFT no cálculo de um ceptro e nem sempre fazemos o DCT? Obrigada pelo esclarecimento. Esse número foi particularmente útil.
precisa saber é o seguinte

11
@ acannon828: Por favor, veja os últimos 3 pontos da minha resposta editada. Espero que agora explique tudo.
jojek

Ótima resposta .. Qualquer literatura que você possa anexar a isso.
Bob Burt

11
@BBBurt: Lá vai você!
jojek

Obrigado pelo livro. A maioria das coisas parece explicada nessa. O livro também aborda a teoria sobre o trato vocal - parece que não consigo encontrar nada relacionado a isso.
Bob Burt

3

Mais do que suavizar o DCT, reduz o número de dimensões necessárias para representar o espectro. O DCT é bom para a redução da dimensionalidade porque tende a compactar a maior parte da energia do espectro nos primeiros coeficientes.


Obrigado. Isso me ajudou a entender o que @pichenettes significava redução de dimensionalidade.
precisa saber é o seguinte

3

A lógica por trás disso é separar a correlação nas magnitudes log-espectrais (do banco de filtros) devido à sobreposição dos filtros. Essencialmente, o DCT suaviza a representação do espectro dada por essas magnitudes log-espectrais.

Isto está incorreto. Há correlação entre as magnitudes log-espectrais não apenas porque elas se sobrepõem, mas também porque nenhuma sequência de números representa uma série "" significativa "(como ocorre na fala e no som naturais) de magnitude log-espectral. magnitudes log-espectrais "significativas" tendem a ser bastante suaves, com uma diminuição geral de energia nas frequências mais altas, etc. Alguém poderia dizer que a dimensão do espaço de todos os vetores de magnitude log-espectrais "significativos" é menor que 40 ou qualquer número de bandas que você usa; e o DCT pode ser visto como uma redução de dimensionalidade para mapear os dados de 40 canais nesse espaço menor.

Essencialmente, o DCT suaviza a representação do espectro dada por essas magnitudes log-espectrais.

O DCT não realiza nenhuma suavização. Você vê suavização ao reconstruir a partir dos dados DCT - a suavização ocorre devido à perda de informações pelo DCT e ao truncamento do coeficiente a seguir.

Mas os coeficientes do MFCC não armazenam o espectro suavizado - ele armazena uma sequência de coeficientes de DCT não correlacionados.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.