Ich suche nach Algorithmen, um das folgende Problem zu lösen: Wie kann ich bei einer lauten .wav-Tonaufnahme (etwas Wind + Reibungsgeräusch am Mikrofon) den BPM eines leisen Schlagzeugschlags erkennen?
Ich habe versucht, das Thema zu googeln, aber die Ergebnisse sind ziemlich schlecht, da sowohl für die Analyse als auch für die Erzeugung von Fingerabdruck-IDs viel MP3-Software zur Verfügung steht. Keiner von ihnen liefert Informationen darüber, wie man es tatsächlich macht.
Ich kenne Algorithmen zum Entfernen des Rauschens, habe aber immer noch das Problem, BPM zu erkennen. Und je nachdem, wie das BPM-Problem gelöst ist, muss ich möglicherweise nicht einmal entstören (da die Drum tendenziell in den niedrigeren Frequenzen und das Rauschen in den höheren liegt, ist möglicherweise ein einfacher Tiefpass ausreichend für die Vorverarbeitung).
quelle
Antworten:
Eine Methode, die bei einem relativ starken Schlagzeugschlag funktioniert, besteht darin, die Stärke der STFT der Wellenform zu ermitteln und sie dann nur in der Zeitdimension automatisch zu korrelieren. Der Peak der Autokorrelationsfunktion ist der Beat oder ein Submultiple davon.
Dies ist gleichbedeutend mit dem Aufteilen des Signals in viele verschiedene Frequenzbänder, dem Ermitteln der Amplitudenhüllkurve, dem automatischen Korrelieren jeder Hüllkurve und dem anschließenden Summieren dieser. Das Rauschen und andere Teile der Musik werden durch die Kreuzkorrelationsoperation herausgemittelt.
Dies liegt daran, dass Schlagzeugschläge bei vielen Frequenzen (vertikale Linien) einen kurzlebigen Klang erzeugen, während andere Teile der Musik bei nur wenigen Frequenzen (horizontale Linien) langlebig sind und Rauschen bei allen Frequenzen langlebig, aber zufällig ist. Sie können die Beat-Wiederholung sehen, wenn Sie sich eine STFT ansehen:
Ich habe mir das für ein Schulprojekt ausgedacht, um einen einzelnen BPM-Wert für ganze Musikdateien zu finden, aber es könnte auch an einen Audiostream mit wechselndem BPM angepasst werden. Sie müssen Blöcke verarbeiten, die mindestens doppelt so lang sind wie der Zeitraum des BPM, den Sie suchen.
quelle
Autokorrelation ist sicherlich eine gute grundlegende Methode dafür. Es gibt einige Dinge, die Sie tun können, um dies möglicherweise weiter zu verbessern:
quelle