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?
Respostas:
Deixe-me começar desde o início. A maneira padrão de calcular o cepstrum é a seguinte:
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):
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 originals ( t ) geralmente é convoluído com uma resposta de impulso h ( t ) do trato vocal:
No domínio da frequência, a convolução é uma multiplicação de espectros:
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.
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.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:
fonte
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.
fonte
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.
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.
fonte