Forum: Digitale Signalverarbeitung / DSP / Machine Learning schnelle Tonerkennung


von Sascha (Gast)


Lesenswert?

Hallo zusammen,
ich habe nun den Görtzel Algo am laufen und funzt wunderbar, nur ist mir 
das noch etwas zu langsam.

Vielmehr die Relation von Zeitintervall zu Frequenzgenauigkeit ist ja 
beim Görtzel das Problem.

Gibt es da noch eine Möglichkeit die Tonerkennung schneller zu machen?
Ohne das die Frequenztolerenz größer wird?

Z.B. Ich habe eine Sampling Frequenz von 1KHz und erkenne einen Ton mit 
123 Hz in ca. 163 ms. Dann ist meine Frequenztoleranz auf +/- 6.1Hz 
genau.
Es liegen somit 20 Perioden der Frequenz in einem Zeitintervall.

Ich habe schon an die Idee gedacht, den Görtzel Algo zwei mal 
zeitversetzt laufen zu lassen, dann sind es nur noch 81.5 ms bis zum 
Update.

Oder Vorfiltern?

Idee?

Gruß Sascha

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Periodendauermessung (geht nur ordentlich, wenn es nur die eine Frequenz 
gibt). Theoretisch reicht bei symmetrischem Signal eine halbe Periode.

von Sascha (Gast)


Lesenswert?

Hallo,
ja klar, ist aber leider mit viel anderen Störsignalen verbunden.
Sonst müsste man mit einem IIR Filter die Frequenz erst herausfiltern.
Das geht mit einem Filter 7. Ordnung dann so gut, dass man einen sehr
schnellen (Kurzen) Goertzel verwenden kann.
Die Kreuzkorrelation will ich nicht anwenden, da kann es auch zu
Problemen kommen.
Ebenso der Teager-Kaiser Energy Operator verhält sich auch etwas
schwierig bei Stösignalen.

Muss mal nach dem Sliding Gortzel Algo suchen....

Gruß Sascha

von J. S. (engineer) Benutzerseite


Lesenswert?

Bei DER ungünstigen Relation von Taktfrequenz und Zielfrequenz brauchst 
Du ein unsymmetrisches Filter mit händisch optimierten Koeffizienten und 
einer nichtgranularen Fensterung über die gewünschte Persiode, also 
Window in Window.

Was soll das eigentlich für ein lustiger Ton sein, mit 123 Hz und auch 
noch 100 Cent Toleranz? Sollten das gfs 123,5 sein?

: Bearbeitet durch User
von Bernd K. (prof7bit)


Lesenswert?

Sascha schrieb:
> Gibt es da noch eine Möglichkeit die Tonerkennung schneller zu machen?
> Ohne das die Frequenztolerenz größer wird?

Nein, es gibt mathematische Grenzen an die man stößt. Je schmalbandiger 
ein Filter desto kleiner die maximale Modulationsfrequenz, mal ganz 
salopp ausgedrückt. Wenn Du also die Seitenbänder bei plusminus 6Hz 
abschneidest dann kannst Du nur noch Amplitudenänderungen (ein/aus) von 
6Hz und weniger erkennen.

Das kann man auch schön beobachten (hören) wenn man z.B. CW mit einem 
Kurzwellenempfänger hört bei dem man die Bandbreite extrem schmal 
einstellen kann, je schmaler desto verwaschener die Übergänge zwischen 
Ton da / Ton nicht da, bis hin zu dem Punkt an dem man bei einem 
schnellen Geber es nicht mehr sinnvoll mitschreiben kann.

: Bearbeitet durch User
von Sascha (Gast)


Lesenswert?

Hallo,

@Bernd:
ja wenn der Filter z.B. auf Basis eines IIR Filters realisiert wird,
hat er eine sehr große Ein- und Ausschwingzeit. Dann wird die Sache
recht verschwommen.

@Jürgen:
Nein es soll ein CTCSS Subtone Encoder und Decoder geben für eine
Relaisstation auf 2m AFU. Ich habe mir da schon existierende Module
angesehen bin aber nicht davon begeistert.

Die Chipsätze die schnell sind machen es mit einer schnellen und
somit ungenauen Vorhersage. Sind natürlich dann auch etwas Noise
empfindlicher.

Gruß Sascha

PS. ich realisiere das in Floating Point gerade alles auf einem
ATxmega8E5 in Assembler natürlich Handoptimiert. Schnell genug
ist das Ding ja und hat dazu noch einen 12 Bit ADC und 12 Bit DAC.

von Dogbert (Gast)


Lesenswert?

Der Goertzel ist nicht zu "langsam", sondern die Latenz ist zu hoch.

Ich denke Goertzel mehrfach zeitversetzt ist eine gute Lösung, doch 
davor noch eine Fensterfunktion damit die "DFT für eine Frequenzspalte" 
nicht durch die (volatile) Diskontinuität im Zeitbereich des 
abgeschnittenen Signals vom S/N her unnötig verschlechtert wird, also um 
spektrales Aliasing (fehltriggern im Zeitbereich) zu reduzieren.

Die Fensterfunktion erhöht natürlich die Frequenztoleranz, je nach Art, 
um das 2-3 fache.

Der aktuelle S/N bestimmt dann "wie früh" man das Signal erkennen kann.

von Sascha (Gast)


Lesenswert?

Hallo,
also wenn die Frequenztoleranz größer wird, kann ich den Algo ja auch 
mit weniger Samples durchlaufen lassen.
Habe aber mein Problem schon gelöst, benutze einen digitalen Resonator 
mit cyclischer dämpfung. In etwa so wie man das analog in den 70Jahren 
mit der OP-Schaltung gemacht hat. Geht superschnell und hat bei 123 Hz 
eine Frequenztoleranz von +/- 2 Hz mit einer delay Zeit von ca. 42ms. 
Göertzel ist zwar gut und recht, aber eher ein schlechter Kompromiss.

Gruß Sascha

von Winfried J. (Firma: Nisch-Aufzüge) (winne) Benutzerseite


Lesenswert?

Sascha schrieb:
> digitalen Resonator
> mit cyclischer dämpfung

wie muss man sich das vorstellen?

das erinnert mich eher an ein pendelaudion? kurz unter der 
anschwingschwelle

aber programmtechnisch kann ich mirr das nicht vorastellen.

Du baust also einen syntesizer(digitaler oszilator) mischt dessen 
rückführung mit dem signal und klaust dem regelmäßig amplitude, die zeit 
bis zum erreichen der Schaltschwelle ist das Kriterium für die 
Anwesenheit des Tones?

????

Namaste

von Bernd K. (prof7bit)


Lesenswert?

Sascha schrieb:
> Geht superschnell und hat bei 123 Hz
> eine Frequenztoleranz von +/- 2 Hz mit einer delay Zeit von ca. 42ms

Nur 4 Perioden um 123Hz von 125Hz zu unterscheiden?

Das kannst Du Deiner Großmutter erzählen.

Wie bereits gesagt: Entweder breitbandig und schnell oder schmalbandig 
und langsam. Beides zusammen ist eine mathematische Unmöglichkeit.

von Sascha (Gast)


Lesenswert?

Hallo, ha das glaubt ihr mir nicht, aber das geht, vorsicht man kann die 
Ansprechschwelle adaptiv zum Power des Eingangssignal legen, d.h. bei 
2Hz Differenz reichen die -6dB völlig aus. BW bewertet auf -6dB +/-2Hz.
Dann würden mir sogar im extremfall sogar nur 2 Perioden mit dieser 
Methode ausreichen, dann würde die Frequenztoleranz deutlich gößer. Die 
Samplefrequenz bestimmt hier mehr die Frequenzgenauigkeit.
Nur Phasendrehung verkraftet meine Methode nicht.
Ich könnte diese Methode auch benutzen um sehr schnelles PSK zu 
detektieren.
Weil bei jeder Phasendrehung der Resonator auf null zusammenfällt.
Wenn mit einem Vor-Filter (Bandpass) gearbeitet wird darf er kein Ein- 
und Ausswingproblem haben, das verfälscht die Sache. D.h. kein 
IIR-Filter nur FIR-Filter verwenden.

Gruß Sascha

von Winfried J. (Firma: Nisch-Aufzüge) (winne) Benutzerseite


Lesenswert?

Sascha bitte sei so lieb und lass uns an deinen Erkenntnissen teilhaben.

Ich suche eine Möglichkeit Echos sehr kurzer (kodierter?) 
Ultraschallimpulspakete auf möglichst kurze Distanz auszuwerten. Dafür 
wäre eine exakte Vermessung des Dopplereffekts und der laufzeit bei sehr 
kurzen Bursts mit weniger als 6 vollperioden hilfreich. am libesen würde 
ich die Halbwellen der echos einzeln vermessen und zuordnen


Zum beispiel ein Ping mit nur einer halben Periode erzeugen (sendekapsel 
aktiv gedämpft)

Die einlaufende Reflektion detektieren und vermessen und die freien 
Nachschwingungen der Empfangskapsel aktiv dämpfen/ hererausrechnen.

So ließen sich dann auch amplituden oder frequenmodulierte Bursts 
erzeugen welche auch nach längere Laufzeit einer bestimmten Aussendezeit 
zuzuordnen währen. .....

Dafür könnte Dein Verfahren hilfreich sein. Nur kann ich mir noch nicht 
vorstellen wie man das anstellt.

Namaste

: Bearbeitet durch User
von Sascha (Gast)


Lesenswert?

Hallo Winfried J.,
willst du sowas nicht als entwicklerarbeit vergeben ?

Geht es hier um bewegte Gegenstände weil Dopplereffekt angegeben ?
Statisch geht das sehr gut, wenn die Datenpackete mit antizyclischen 
Phasendrehungen ausgesendet werden. Eine halbe periode geht nicht, da 
der Transducer sowieso nur die Hälfte der Energie abgeben kann. Die 
Pausezeiten sind adaptiv nach den Echos anzupassen. Ich würde hier mit 
einem IQ Mischer arbeiten, dann erhälst du noch die Phasenwinkel um 
besser die Position zu bestimmen. Aber eigenlich geht das doch eher in 
Radartechnik ein.
Du solltest eher zwei Empfänger haben für die räumliche Auflösung.
Gut ich kenne deine Anwendung ja gar nicht.....

Habe füher auch mal mit Ultraschall einen räumlichen Sensor gebaut der 
Bewegungen von Objekten zweidimensional (X.Y) feststellen konnte. Das 
war führ eine Alarmanlage. War sehr aufwendig, weil ein zeitgesteuerter 
(Rampe) logarithmischer Amplifier schon gebraucht wurde. Gut die 
AD-Wabdler hatten noch nicht den Dynamikbereich. Aber man muss auch das 
Eigenrauschen des Wandler betrachten.

Gruß Sascha

von Winfried J. (Firma: Nisch-Aufzüge) (winne) Benutzerseite


Lesenswert?

Hallo Sascha,

nein vergeben will ich das nicht. Es soll ein Hobbyprojekt bleiben. Ich 
war vor vor 33 Jahren Funkmessgast auf einer Ujagdfregatte anschließend 
habe ich noch ein Seeoffiziersstudium zu 3/4 absolviert. Also 
Wellentheroetisch ist die Sache klar auch die analogen Möglichkeiten, 
Bedingungen und Grenzen sind klar. Die Idee Stero zu hören gefällt mir. 
Auch die "Akustische Kamera" ist bekannt.

Interessant wäre halt mehrere laufende Bursts und Echos überlappend zu 
bearbeiten und dazu muss man sie schnell unterscheiden und zuordnen 
können. Dazu ist es erforderlich den einzelnen Burst code aufzuprägen 
und diesen im echo zu detektieren.

Auf große Distanzen und staatisch ist es kein Problem. Die 
Verstärkerungsrampe soll die entfernungsbedingten Leistungsverluste des 
Echos ausgleichen. Das ist klar, funktioniert aber nur mit Einzelbursts.

 Aber der Nahbereich wird durch die minimale Burstlänge und die SE 
Umschaltdauer bestimmt.

Bei dem von mir angedachten Verfahren muss ein goßer Dynamikumfang 
berücksichtigt werden ebenso wie die Überlagerung diverser Wellen.

Ich muß also auch die Wellenform auswerten um Interferenzen und 
Schwebungen und Dopplerverschiebungen zuordnen und darstellen zu können.

Dafür bedarf es schnellerer Auswertungsmethoden als es mit analogen oder 
gar passiven Filtern möglich ist (Einschwingdauer, Nachschwingen) Damit 
scheiden alle Resonazfilter aus.

Nachdem Fledermäuse das perfekt beherrschen ist bewiesen, dass es 
möglich ist. Sie vermögen ihren Flügelschlag so anzupassen, dass sie 
zwischen gespannten Fäden kleiner ihrer halben Flügelspanne hindurch 
Slalom zu fliegen. Was auch bedeutet das sie Entfernung und Winkel 
Abstand so wie die Annährungsgeschwindigkeit hinreichend schnell 
auswerten können. um nicht hängen zu bleiben.
Davon gibt es Infrarothochgeschwindigkeitsaufnahmen.

Jetz interressiert mich deine schnelle Frequenzauswertung mittels 
Digitalfilter. Das Verfahren kann ich mir noch nicht recht vorstellen.

Namaste

: Bearbeitet durch User
von J. S. (engineer) Benutzerseite


Lesenswert?

Winfried J. schrieb:
> Nachdem Fledermäuse das perfekt beherrschen ist bewiesen, dass es
> möglich ist

Da stecken aber auch einige Hundertausend mehrdimensional verschaltete 
und eintrainierte Neuronen dahinter, während man in FPGAs mit einigen 
TAPs auskommen muss :-)

> Interessant wäre halt mehrere laufende Bursts und Echos überlappend
> zu bearbeiten und dazu muss man sie schnell unterscheiden und zuordnen

Das geht üblicherweise mit mehreren Kanälen unterschiedlicher Frequenzen 
und Sequenzen die auf den anderen Kanälen zeitrichtig abgezogen werden.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.