Eu estava estudando a possibilidade de classificar o som (por exemplo, sons de animais) usando espectrogramas. A idéia é usar redes neurais convolucionais profundas para reconhecer segmentos no espectrograma e emitir um (ou muitos) rótulos de classe. Esta não é uma idéia nova (veja, por exemplo , classificação de som de baleia ou reconhecimento de estilo musical ).
O problema que estou enfrentando é que tenho arquivos de som de diferentes comprimentos e, portanto, espectrogramas de diferentes tamanhos. Até agora, todas as abordagens que eu vi usam uma amostra de som de tamanho fixo, mas não posso fazer isso porque meu arquivo de som pode ter 10 segundos ou 2 minutos de duração.
Com, por exemplo, um som de pássaro no começo e um som de sapo no final (a saída deve ser "Pássaro, sapo"). Minha solução atual seria adicionar um componente temporal à rede neural (criando mais uma rede neural recorrente), mas gostaria de mantê-la simples por enquanto. Alguma idéia, links, tutoriais, ...?
Respostas:
Para o reconhecimento automático de fala (ASR), os recursos do banco de filtros têm um desempenho tão bom quanto a CNN nos espectrogramas Tabela 1 . Você pode treinar um sistema DBN-DNN no fbank para classificar sons de animais.
Na prática, os enunciados de fala mais longos são divididos em enunciados mais curtos, pois a decodificação de Viterbi não funciona bem para enunciados mais longos. Você poderia fazer o mesmo.
Você pode dividir as expressões mais longas em expressões menores de comprimento fixo. É fácil dividir as expressões mais longas em menores. O problema surge no aumento do comprimento das expressões menores para atingir um comprimento fixo.
Você pode distorcer o eixo de frequência do espectrograma para aumentar os enunciados menores. Este aumento de dados demonstrou melhorar o aumento de dados de desempenho do ASR .
Para um enunciado mais longo com vários sons, você pode usar algoritmos de segmentação de música para dividi-lo em vários enunciados. Essas declarações podem ser feitas de comprimento fixo, por divisão ou aumento.
fonte
RNNs não estavam produzindo resultados bons o suficiente e também são difíceis de treinar, então eu fui com CNNs.
Como um som específico de um animal dura apenas alguns segundos, podemos dividir o espectrograma em pedaços. Eu usei um comprimento de 3 segundos. Em seguida, executamos a classificação em cada bloco e calculamos a média das saídas para criar uma única previsão por arquivo de áudio. Isso funciona muito bem e também é simples de implementar.
Uma explicação mais aprofundada pode ser encontrada aqui: http://ceur-ws.org/Vol-1609/16090547.pdf
fonte