Index

Tonerkennung

Tonerkennung

Benötigt

Sie sollten Wissen über Frequenzen und Quantisierung mitbringen. Die Funktionsweise der Algorithmen ist unwichtig, das Ergebnis zählt ;)

Problemstellung

Man nimmt per Mikrophon ein Signal auf und speichert es. Da hat man einen Amplitudenverlauf. Wie könnte man nun prüfen, ob eine bestimmte Frequenz im Signal enthalten ist? Jean Baptiste Joseph Fourier, franz. Mathematiker, hat den Grundstein gelegt. Seine Fourier Transformation kann dazu verwendet werden, ein Signal aus der Zeit- in die Frequenzdomäne (reversibel) zu transferieren. Hat man also eine Sinuskurve, kann deren Amplitude mit der FT bestimmt werden. Die FT gibt ein Frequenzspektrum zurück, überprüft also in einem Durchgang so viele Frequenzen (eigentlich Frequenzbänder), wie es Daten bekommen hat. Mehr zur Fourier Transformation z.B. hier

Der Goertzel Algorithmus

Die Fourier Transformation selber ist ein sehr rechenintensiver Algorithmus, wir wollen aber eine schnelle Methode, 1 Frequenz im Signal zu bestimmen. Der Goertzel Algorithmus basiert auf der FT, berechnet aber nur 1 Frequenz, also genau, was wir wollen. Ich habe folgenden aus C nach VB übersetzt: Music DSP Goertzel

Beispiel DTMF Ton Erkennung

Ein DTMF (Dual Tone Multi-Freqeuncy) Signal besteht aus 2 Frequenzen, die zusammen eine Taste auf einem Telefon repräsentieren. Mit Hilfe des Goertzel können wir schnell alle möglicherweise vorkommenden Frequenzen untersuchen und aus den 2 mit der größten Amplitude die gedrückte Taste ermitteln. Das downloadbare Beispiel erzeugt solch ein Signal, und kann zusätzlich noch Rauschen generieren, um die Genauigkeit des Algorithmus zu testen.

Download: DTMF Tonerkennung