Estaba estudiando la posibilidad de clasificar el sonido (por ejemplo, sonidos de animales) usando espectrogramas. La idea es utilizar redes neuronales convolucionales profundas para reconocer segmentos en el espectrograma y generar una (o muchas) etiquetas de clase. Esta no es una idea nueva (ver, por ejemplo , clasificación de sonido de ballena o reconocimiento de estilo musical ).
El problema al que me enfrento es que tengo archivos de sonido de diferente longitud y, por lo tanto, espectrogramas de diferentes tamaños. Hasta ahora, cada enfoque que he visto utiliza una muestra de sonido de tamaño fijo, pero no puedo hacerlo porque mi archivo de sonido puede durar 10 segundos o 2 minutos.
Con, por ejemplo, un sonido de pájaro al principio y un sonido de rana al final (la salida debe ser "Bird, Frog"). Mi solución actual sería agregar un componente temporal a la red neuronal (creando más de una red neuronal recurrente) pero me gustaría mantenerlo simple por ahora. ¿Alguna idea, enlaces, tutoriales, ...?
fuente
Respuestas:
Para el reconocimiento automático de voz (ASR), las características del banco de filtros funcionan tan bien como CNN en la Tabla 1 de espectrogramas . Puede entrenar un sistema DBN-DNN en fbank para clasificar los sonidos de los animales.
En la práctica, las expresiones de voz más largas se dividen en expresiones más cortas, ya que la decodificación de Viterbi no funciona bien para expresiones más largas. Tu podrías hacer lo mismo.
Puede dividir los enunciados más largos en enunciados más pequeños de longitud fija. Dividir las expresiones más largas en más pequeñas es fácil. El problema viene al aumentar la longitud de las expresiones más pequeñas para alcanzar una longitud fija.
Podría deformar el eje de frecuencia del espectrograma para aumentar las expresiones más pequeñas. Se ha demostrado que este aumento de datos mejora el aumento de datos de rendimiento ASR .
Para un enunciado más largo con múltiples sonidos, puede usar algoritmos de segmentación de música para dividirlo en múltiples enunciados. Estas declaraciones pueden hacerse de longitud fija ya sea por división o aumento.
fuente
Los RNN no estaban produciendo resultados suficientemente buenos y también son difíciles de entrenar, así que elegí CNN.
Como el sonido de un animal específico dura solo unos segundos, podemos dividir el espectrograma en trozos. Usé una duración de 3 segundos. Luego realizamos una clasificación en cada fragmento y promediamos las salidas para crear una sola predicción por archivo de audio. Esto funciona muy bien y también es fácil de implementar.
Puede encontrar una explicación más detallada aquí: http://ceur-ws.org/Vol-1609/16090547.pdf
fuente