Deep Learning avec Spectrograms pour la reconnaissance sonore

12

Je cherchais la possibilité de classer le son (par exemple les sons d'animaux) à l'aide de spectrogrammes. L'idée est d'utiliser un réseau de neurones à convolution profonde pour reconnaître les segments dans le spectrogramme et produire une (ou plusieurs) étiquettes de classe. Ce n'est pas une idée nouvelle (voir par exemple la classification du son des baleines ou la reconnaissance du style musical ).

Le problème auquel je suis confronté est que j'ai des fichiers sonores de différentes longueurs et donc des spectrogrammes de différentes tailles. Jusqu'à présent, chaque approche que j'ai vue utilise un échantillon sonore de taille fixe, mais je ne peux pas le faire car mon fichier audio peut durer 10 secondes ou 2 minutes.

Avec, par exemple, un son d'oiseau au début et un son de grenouille à la fin (la sortie doit être "Bird, Frog"). Ma solution actuelle serait d'ajouter une composante temporelle au réseau neuronal (créant plus d'un réseau neuronal récurrent) mais je voudrais rester simple pour l'instant. Des idées, des liens, des tutoriels, ...?

user667804
la source
1
La manière la plus simple est d'utiliser une FFT de longueur fixe au lieu d'un STFT (spectrogramme). Cela éliminera votre problème de longueur variable. Pourquoi n'appliquez-vous pas simplement un réseau de neurones récurrent? Avez-vous juste besoin d'un exemple concret? Si oui, êtes-vous flexible sur le logiciel à utiliser?
Emre
1
Je pense que je perdrais beaucoup d'informations avec une FFT de longueur fixe. Si je faisais cela, je pense que je devrais d'abord faire une segmentation, où je chercherais des parties «intéressantes». Je pourrais le faire ou aller sur les réseaux de neurones récurrents (un exemple est sympa mais pas super nécessaire, je voulais utiliser la lasagne). La raison pour laquelle j'ai essayé de l'éviter est que la sortie d'un réseau de neurones récurrent est plus difficile à gérer (à chaque pas de temps mais je n'ai que les étiquettes pour tout le fichier). J'ai donc voulu commencer par le modèle le plus simple et le rendre progressivement plus complexe.
user667804
pourriez-vous s'il vous plaît dire ce que vous avez fini par utiliser et la meilleure approche que vous avez trouvée? @ user667804
nia
Consultez cet article pour une solution: ceur-ws.org/Vol-1609/16090547.pdf Utilisation d'un CNN sur des morceaux de taille fixe du spectrogramme, puis moyenne des sorties pour générer une prédiction finale (la moyenne des sorties individuelles semble fonctionner meilleur).
user667804

Réponses:

4

Pour la reconnaissance automatique de la parole (ASR), les fonctions de banc de filtres fonctionnent aussi bien que CNN sur les spectrogrammes Tableau 1 . Vous pouvez former un système DBN-DNN sur fbank pour classer les sons d'animaux.

Dans la pratique, les énoncés vocaux plus longs sont divisés en énoncés plus courts car le décodage de Viterbi ne fonctionne pas bien pour les énoncés plus longs. Tu pourrais faire la même chose.

Vous pouvez diviser les énoncés les plus longs en de plus petits énoncés de longueur fixe. Il est facile de diviser les énoncés les plus longs en de plus petits. Le problème vient de l'augmentation de la longueur des plus petits énoncés pour atteindre une longueur fixe.

Vous pouvez déformer l'axe des fréquences du spectrogramme pour augmenter les plus petits énoncés. Il a été démontré que cette augmentation des données améliore l’augumentation des données de performances ASR .

Pour un énoncé plus long contenant plusieurs sons, vous pouvez utiliser des algorithmes de segmentation musicale pour le diviser en plusieurs énoncés. Ces énoncés peuvent être de longueur fixe par division ou augmentation.

Arduinolover
la source
4

Les RNN ne produisaient pas assez de bons résultats et sont également difficiles à former, alors j'ai choisi les CNN.

Parce qu'un son animal spécifique ne dure que quelques secondes, nous pouvons diviser le spectrogramme en morceaux. J'ai utilisé une durée de 3 secondes. Nous effectuons ensuite une classification sur chaque bloc et faisons la moyenne des sorties pour créer une seule prédiction par fichier audio. Cela fonctionne très bien et est également simple à mettre en œuvre.

Une explication plus approfondie peut être trouvée ici: http://ceur-ws.org/Vol-1609/16090547.pdf

user667804
la source