Ich habe viele Fragen zu SO gelesen, und ehrlich gesagt beschreibt jede von ihnen keinen bestimmten Weg, um dies zu erreichen. Einige sagen "do FFT" und andere sagen "Nulldurchgang" usw. Aber ich bin nur so weit gegangen zu verstehen, dass der digitale Audioeingang aus einer Reihe von Amplituden für eine bestimmte Frequenz besteht und gut. Ich weiß nicht wirklich viel darüber hinaus.
Jetzt kenne ich den Nyquist-Satz, die Frequenz, die Amplitude, die Fourier-Reihe usw., und das war vor zwei bis drei Jahren, als ich das in einem Semester in meinem Universitätsprogramm gemacht habe. Aber damals wurde uns die reale Verwendung von Fourier wirklich nicht viel beigebracht, und ich habe mich nicht darum gekümmert, mehr über das Thema zu lernen, als nur genug zu lernen, um das Thema zu bestehen. Aber jetzt muss ich all das Zeug benutzen.
Hier ist eine Momentaufnahme der Geräusche, die ich zu erkennen versuche:
Offensichtlich haben die Sounds einzigartige Grafiken. Ich möchte nur verstehen, wie man ihre besonderen Eigenschaften für ihre einzigartigen stacheligen Linien in der Grafik extrahiert. Wie welche Amplitude, Frequenz usw. Und für wie viel Zeit - obwohl das trivial ist, denke ich.
Ich möchte eine einfache Schritt-für-Schritt-Liste mit nicht vagen Anweisungen - ich kann die Terminologie googeln, die ich nicht verstehe.
Wie vielleicht das? - -
Erhalten Sie Audio-Eingabedaten
Plotspektogramm
Erhalten Sie ein Spektogrammdiagramm für den Ton, den Sie in einer geräuschlosen Umgebung erkennen möchten
Studieren Sie diese Grafik - zeichnen Sie einzigartige Eigenschaften dieses Klangs
Erstellen Sie eine Funktion, mit der diese besonderen Merkmale im Live-Audio-Feed anhand der in (4) enthaltenen Merkmale des Klangs erkannt werden können.
Wenn eine Übereinstimmung gefunden wird, ist die Arbeit erledigt.
Polieren Sie den Algorithmus, um falsche Negative auszusortieren.
Wo ich verwirrt bin ist - wie gehe ich etwa 3,4,5. Insbesondere 3 und 4. Da ich eine Software erstelle, in der der Benutzer jeden Ton als Gesteingabe zur späteren Verwendung aufzeichnen kann, möchte ich, dass mein System jeden Ton aufzeichnen und mit Live-Audio abgleichen kann Feed, um diese Klanggeste zu erkennen. Zum Beispiel Husten oder Fingerschnippen oder Pfeifen oder Klatschen. Oder sagen Konsonanten - oder oder oder . Fast jeder Ton.B X Z.
Ich dachte daran, den Benutzer dazu zu bringen, den Ton, den er speichern möchte, als Geste in einer ruhigen Umgebung aufzunehmen. Und der Benutzer würde den Ton nur zwischen dem leisen Auffüllen der Zeit machen ; 3 Sekunden am Anfang und am Ende der Aufnahme.
Nehmen wir also an, mein System würde während der ersten 3 Sekunden feststellen, dass der aktuelle Eingang der normale leise Hintergrundton ist. Und dann würde eine plötzliche Änderung in der Grafik den Toneingang starten. Und wenn das aufhört, wird die Aufnahme noch 3 Sekunden lang fortgesetzt, wobei die nachlaufende leise Zeit aufgefüllt wird . Dies würde manuell vom Benutzer durchgeführt. Es würde dann automatisch nur die Eigenschaften des Teils speichern, während dessen die plötzliche Änderung des Diagramms andauerte - irgendwo zwischen den Auffüllzeiten.
Und so würden die Eigenschaften dieses Teils als Gesten-Daten dieses Sounds gespeichert, die später verwendet würden, um diesen bestimmten Sound im Live-Audio-Feed zu erkennen.
Das Problem ist, dass ich das alles in einfachem Englisch denke. Ich muss in Mathematik und Physik denken, um es effizient in meinen Code implementieren zu können. Ich habe einfach keine Ahnung, was ich schreiben soll und wo ich es in meinen Code schreiben soll - selbst wenn mir so viele Bibliotheken und Fragen zu SO zur Verfügung stehen.
Und tut mir leid, wenn das lang war.