Qual é a interpretação gráfica correta de uma série de vetores MFCC?

7

Estou estudando reconhecimento de fala, em particular o uso do MFCC para extração de recursos. Todos os exemplos que encontrei on-line tendem a representar graficamente uma série de MFCC extraídos de uma expressão específica da seguinte forma (gráfico gerado por mim a partir do software que estou escrevendo):

Vetores MFFC por recurso Como você pode ver no gráfico acima:

  • o eixo x é usado para cada um dos coeficientes do MFC (de 1 a 12 neste exemplo)
  • o eixo y é usado para os valores dos coeficientes (variando de aproximadamente -12 a 42 neste exemplo)
  • você tem tantas linhas quanto quadros ou vetores de recursos que você extraiu (140 neste exemplo).

Agora, isso não faz muito sentido para mim, porque o que estamos vendo aqui é a superposição de todos os vetores de recursos de uma só vez, perdendo qualquer informação de tempo. Estou com dificuldades para entender como essa representação é útil.

Em minha opinião, eu representaria os vetores extraídos da seguinte forma (novamente, gráfico gerado por mim):

Vetores MFCC por quadro

No gráfico acima:

  • o eixo x é o número do quadro ou vetor (1 a 140)
  • o eixo y são os valores do coeficiente (novamente, de -12 a 42 aprox)
  • você tem uma linha para cada recurso (12).

Para mim, essa representação deve ser mais útil, pois você pode ver a evolução no tempo de cada recurso em particular e, em minha opinião, isso deve ter um impacto mais forte sobre como aplicar algoritmos de comparação em palavras faladas.

Talvez as duas representações sejam igualmente válidas e úteis para propósitos diferentes, como quando você precisa estudar um sinal no domínio do tempo ou no domínio da frequência, mas, no caso do reconhecimento de fala, eu esperaria a evolução no tempo de cada indivíduo. recurso para ser mais significativo do que a densidade de valores para cada recurso (e talvez eu esteja completamente errado: P).

Então, de fato duas perguntas:

  1. Por que a primeira representação é aquela que parece ser amplamente usada e não a segunda?
  2. Quando você deseja comparar dois conjuntos de MFCCs extraídos, por exemplo, usando Dynamic Time Warping - DTW, e relacionado a este tópico, você compara os vetores de recursos (ou seja, 140 vetores de 12 recursos) ou os quadros (12 vetores de 140 quadros) )? (em outras palavras, MxN ou NxM?)

Obrigado!

jotadepicas
fonte
Você está completamente errado. Os coeficientes individuais têm pouco sentido; é necessário considerá-los como um vetor de 12 dimensões.
Nikolay Shmyrev 31/03/19
cuidado ao elaborar? por que o voto negativo?
Jotadepicas 31/03/19
brilhante, downvoting uma pergunta porque quem pede é (supostamente) errado
Robert
Votos negativos porque você citou informações da Internet e não forneceu o link, impossibilitando explicar as intenções do autor original.
Nikolay Shmyrev 31/03
de acordo com stackoverflow.com/help/privileges/vote-down, você está fazendo um uso incorreto de downvotes, em particular "Não é um substituto para a comunicação e edição". e "Se algo estiver errado, deixe um comentário ou edite a postagem para corrigi-la.". Aliás, esses gráficos foram gerados por mim com o software que estou escrevendo e, como parte do meu esforço para escrever uma boa pergunta, não há link para eles. Se você se referir aos "exemplos on-line" que mencionei, posso adicionar links, mas como essa é a abordagem geral aceita, como você reconhece, não tenho certeza se isso fará alguma diferença.
jotadepicas

Respostas:

10

A maneira como as MFCCs são sempre usadas é alimentando-as no classificador. Isso pode ser feito quadro a quadro ( 12x1vetor) ou concatenando ( 12xN) - o mesmo que um espectrograma.

Portanto, no DTW, você deve executar a classificação calculando a distância entre os vetores 12D. É um Dynamic Time Warping, portanto, a diferença deve ser calculada entre quadros no domínio do tempo , não entre amostras em um "domínio de recurso único".

Aqui está uma representação gráfica disso:

insira a descrição da imagem aqui


Apenas um adendo à plotagem da MFCC. Não faz sentido olhar para o gráfico de linha de todos os vetores MFCC empilhados juntos (primeira imagem) e não é realmente útil observar a evolução temporal de todos os MFCCs (segunda imagem). Não existe nenhum conceito de representação gráfica correta para os MFCCs, a menos que você queira obter algo específico.

Primeiramente, uma distribuição (histograma) de cada MFCC pode ser plotada para ver quais são os valores típicos, etc. Especialmente se você tiver um modelo GMM treinado para um sinal, poderá plotar a distribuição da amostra de teste e sobrepor com um PDF do GMM nessa dimensão.

A segunda abordagem seria plotar os MFCCs de maneira semelhante a um espectrograma (como mostrado na figura acima). Pode-se querer usá-lo para "boa representação" ou para ver as tendências e padrões gerais. Mas é quase impossível dizer que tipo de sinal está escondido atrás de tal representação.

Por exemplo, aqui está um gráfico MFCC de um sinal muito simples. Que sinal é esse? Se você estiver pronto, passe o espaço amarelo.

insira a descrição da imagem aqui

Varredura senoidal exponencial! insira a descrição da imagem aqui

Foi fácil dizer? Definitivamente, olhando o espectrograma, ficou imediatamente óbvio. Talvez existam poucas pessoas que adivinharam desde que brincaram com esses exemplos antes. Agora algo mais complicado:

insira a descrição da imagem aqui

Pronto?

Chilrear dos pássaros - você pode ouvir aqui insira a descrição da imagem aqui

Penso que essa representação do MFCC é de alguma utilidade, exceto preencher o espaço. Agora, poucas pessoas podem adivinhar o sinal com base em um espectrograma, mas é impossível fazer isso olhando para os MFCCs.

Portanto, se alguém está lhe dizendo que ele pode dizer o que está acontecendo com o sinal com base em "ajustes cosseno-correlacionados de energias logarítmicas dentro de bancos de filtros triangulares no domínio da frequência", então ele é um mentiroso (com uma prévia de 99.9%) ou um computador. Muito raramente, há ocasiões em que é útil analisar os valores brutos do MFCC - como depuração e verificação de sanidade (são coeficientes constantes para o sinal estacionário).

jojek
fonte
11
Muito obrigado por uma resposta tão abrangente (e divertida de ler: P). Exatamente o tipo de orientação que eu estava procurando, e a IMO é um exemplo de conteúdo de qualidade.
Jotadepicas
@jotadepicas: Não se preocupe. Se isso responder à sua pergunta, marque-a como aceita (com um visto), para que não volte à página principal.
jojek
Com certeza! Eu sempre tendem a deixar as perguntas em aberto por um dia ou dois, caso outras respostas apareçam e, em seguida, marque a melhor como aceita. Muito provavelmente, o seu: D. Obrigado novamente!
Jotadepicas