Ich habe die Möglichkeit untersucht, Geräusche (zum Beispiel Tiergeräusche) mithilfe von Spektrogrammen zu klassifizieren. Die Idee ist, ein tiefes Faltungs-Neuronales Netz zu verwenden, um Segmente im Spektrogramm zu erkennen und eine (oder mehrere) Klassenbezeichnungen auszugeben. Dies ist keine neue Idee (siehe zum Beispiel die Klangklassifizierung von Walen oder die Erkennung von Musikstilen ).
Das Problem, mit dem ich konfrontiert bin, ist, dass ich Sounddateien unterschiedlicher Länge und daher Spektrogramme unterschiedlicher Größe habe. Bisher verwendet jeder Ansatz, den ich gesehen habe, ein Soundbeispiel mit fester Größe, aber das kann ich nicht, da meine Sounddatei möglicherweise 10 Sekunden oder 2 Minuten lang ist.
Zum Beispiel mit einem Vogelgeräusch am Anfang und einem Froschgeräusch am Ende (Ausgabe sollte "Vogel, Frosch" sein). Meine derzeitige Lösung wäre, dem neuronalen Netzwerk eine zeitliche Komponente hinzuzufügen (wodurch mehr ein wiederkehrendes neuronales Netzwerk entsteht), aber ich möchte es vorerst einfach halten. Irgendwelche Ideen, Links, Tutorials, ...?
Antworten:
Für die automatische Spracherkennung (ASR) sind Filterbankfunktionen in Spektrogrammen in Tabelle 1 genauso gut wie CNN . Sie können ein DBN-DNN-System auf fbank trainieren, um Tiergeräusche zu klassifizieren.
In der Praxis werden längere Sprachäußerungen in kürzere Äußerungen unterteilt, da die Viterbi-Decodierung bei längeren Äußerungen nicht gut funktioniert. Sie könnten das gleiche tun.
Sie können die längeren Äußerungen in kleinere Äußerungen fester Länge unterteilen. Das Aufteilen der längeren Äußerungen in kleinere ist einfach. Das Problem besteht darin, die Länge der kleineren Äußerungen zu erhöhen, um eine feste Länge zu erreichen.
Sie können die Frequenzachse des Spektrogramms verziehen, um die kleineren Äußerungen zu verstärken. Es wurde gezeigt, dass diese Datenerweiterung die ASR-Leistungsdatenerweiterung verbessert .
Für eine längere Äußerung mit mehreren Klängen können Sie Musiksegmentierungsalgorithmen verwenden, um sie in mehrere Äußerungen zu unterteilen. Diese Äußerungen können entweder durch Teilung oder Vergrößerung von fester Länge sein.
quelle
RNNs lieferten nicht gut genug Ergebnisse und sind auch schwer zu trainieren, deshalb habe ich mich für CNNs entschieden.
Da ein bestimmtes Tiergeräusch nur wenige Sekunden lang ist, können wir das Spektrogramm in Stücke teilen. Ich habe eine Länge von 3 Sekunden verwendet. Wir führen dann eine Klassifizierung für jeden Block durch und mitteln die Ausgaben, um eine einzelne Vorhersage pro Audiodatei zu erstellen. Dies funktioniert sehr gut und ist auch einfach zu implementieren.
Eine ausführlichere Erklärung finden Sie hier: http://ceur-ws.org/Vol-1609/16090547.pdf
quelle