2 Stimmen

Erkennen der Frequenz des Audioeingangs - Java?

Ich recherchiere seit ein paar Monaten immer wieder darüber.

Ich suche einen Bibliothek o funktionierender Beispielcode zur Erkennung der Frequenz im Audioeingang der Soundkarte oder das Vorhandensein einer bestimmten Anzahl von Frequenzen feststellen. Ich neige zu Java, aber die eigentliche Anforderung ist, dass es sollte etwas höheres/einfacheres als C sein y vorzugsweise plattformübergreifend . Linux wird die Zielplattform sein, aber ich möchte Optionen für Mac oder möglicherweise sogar Windows offen lassen. Python wäre auch akzeptabel, und wenn jemand eine Sprache kennt, die dies einfacher machen würde / bessere vorgefertigte Bibliotheken hat, wäre ich bereit, sie in Betracht zu ziehen.

Im Wesentlichen habe ich eine definierte Menge von Frequenzpaaren die im Audioeingang der Soundkarte erscheinen, und ich muss in der Lage sein, dieses Paar zu erkennen und dann... etwas zu tun, wie zum Beispiel das folgende Audio bis zu einer maximalen Dauer aufzunehmen und dann eine Aktion durchzuführen. Ein potenzieller Lauf könnte z.B. 5-10 Paare enthalten, die zur Laufzeit definiert werden, aber nicht kompiliert werden können Frequenz 1 für ~ 1 Sekunde, eine maximale Verzögerung von ~ 1 Sekunde, Frequenz 2 für ~ 1 Sekunde.

Ich habe Vorschläge gefunden, entweder eine FFT oder einen Goertzel-Algorithmus zu verwenden, konnte aber nicht mehr als den einfachsten Beispielcode finden, der keine brauchbaren Ergebnisse zu liefern schien. Ich fand auch einige Einschränkungen mit Java-Audio und nicht in der Lage, mit einer hohen Rate zu sampeln, um die Auflösung zu erhalten, die ich brauche.

Irgendwelche Vorschläge für zu verwendende Bibliotheken oder vielleicht funktionierenden Code? Ich gebe zu, dass ich nicht der mathematisch begabteste bin, daher habe ich mich in einigen der eher technischen Beschreibungen, wie die Algorithmen tatsächlich funktionieren, verirrt.

0voto

fefanto Punkte 46

Wenn Sie auf die Erkennung von Frequenzpaare dann ist Ihr Job sehr ähnlich dem eines DTMF Detektor.

Versuchen Sie die Suche nach DTMF an Orten wie Sauerschmiede finden Sie Detektoren in vielen Programmiersprachen. Die Platzierung der Frequenzpaare entlang des Spektrums scheint noch strenger zu sein als Ihre Angaben, so dass Sie keine Probleme haben sollten Anpassung eines DTMF-Detektors auf Ihre Eingaben.

0voto

Rob Punkte 4849

Probieren Sie SNDPeek aus, eine plattformübergreifende C++-Anwendung, die alle möglichen Informationen aus Live-Audio extrahiert; https://github.com/RobQuistNL/sndpeek

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X