Forum: Digitale Signalverarbeitung / DSP / Machine Learning einfache und billige Sound Lokalisation


von Andreas B. (anbaldinger)


Angehängte Dateien:

Lesenswert?

Hallo,

Ich habe ein kleines Nebenprojekt geplant und hätte gerne Meinungen und 
Anregungen dazu.
Es geht um die Lokalisation einer Soundquelle.

Zur Hintergrundinformation: Es geht um einen Roboter (fahrbare 
Plattform, Torso + Kopf, ca. 1,40m groß), der zur Unterstützung der 
Interaktion eine ungefähre Lokalisation des Sprechers erhalten soll.
Beispiel: Jemand nennt den Roboter beim Namen -> Ist die Anrede laut 
genug -> Lokalisation der Soundquelle -> Kopf hindrehen -> genauere 
Lokalisation mit Face recognition.

Meine Idee dazu: 4 Mikrophone an einem uC (analoger oder digitaler 
Eingang kommt auf Mikrofonart an) - Finden des selben Bereichs in allen 
4 Eingangssignalen (peak) und Berechnung der relativen Zeitabstände. 
Daraus bekomme ich dann ja die Richtung der Soundquelle (siehe Bild).

Ich habe so etwas bereits vor 2 Jahren beim Nao (kleiner humanoider 
Roboter von Aldebaran) versucht, da waren die vier Mikrophone bereits 
eingebaut und das Signal vorbereitet. Hat auch in einem gewissen bereich 
(sehr nahe am Kopf) ganz gut funktioniert.

Nun zu meinen Fragen: Da ich ja hier sehr kurze Zeitabschnitte messen 
können muss (Schallgeschwindigkeit ~343m/s, weitester Abstand zweier 
Mikrofone: 270mm): Reichen hier "einfache" Mikrofone und die 
digitalen/analogen Eingänge eines uC für eine nötige Auflösung aus? Und 
gibt es Mikrofone die hier mehr/weniger geeignet sind? Gibt es einen 
Vorteil analoger/digitaler Mikrofone? Gibt es weiter Dinge die zu 
beachten sind?

Vielen Dank ajF für alle Anregungen.

: Verschoben durch Admin
von Ben j. (scarab)


Lesenswert?

Die frage ist eher ob du beim Sagen eines Namens einen Peak bekommst der 
stark genug ist um ihn vom Rauschen und Hintergrundgeräuschen zu 
Unterscheiden.

von MaWin (Gast)


Lesenswert?

Mit weiter voneinander entfernten Mikrophonen klappt das sehr gut,
aber mit einer Auflösung von knapp einem Millimeter (übliche 44ksps 
Samplerate) kannst du ja selbst ausrechnen, welche Genauigkeit z.B. bei 
nur 10cm entfernten Mikrophonen erzielbar ist wenn die "Lineale" zur 
Schallquelle eine Unsicherheit von 0.8mm haben.

Eine Steigerung der Samplerate z.B. auf 192ksps ist schon sinnvoll,
ausserdem eine Montage der Mikrophone im Freifeld, sonst wird es
mit der Mathematik "aus dem Ohr um den Kopf rum" zu schwer.

von Andreas B. (anbaldinger)


Lesenswert?

@ Benjamin xyz:
Du meinst also eine Filterung müsste her.
Vielleicht reicht es mit einem digitalen Filter alles außer den 
interessanten Bereich (z.B. 0,5 - 2kHz) wegzuschneiden.
Könnte das mit einer Kombination geeigneter Hochpass- & Tiefpassfilter 
funktionieren?
Und lässt sich sowas dann überhaupt auf einem uC realisieren?

@ MaWin:
Ja, dass so etwas im Freifeld natürlich viel besser funktioniert ist 
klar, aber leider hier nicht Sinn der Aufgabe :).
Hängt die Samplerrate eigentlich auch vom Mikrofon ab?

von Erich (Gast)


Lesenswert?

>Gibt es weiter Dinge die zu beachten sind?

JA.
Man sollte GOOGLE benutzen und etwas Englisch können:

GOOGLE fragen nach ...
       "localisation of sound" microphone
... dann kriegste die Antwort:  Ungefähr 16.400 Ergebnisse

Treffer sind u.a.
http://en.wikipedia.org/wiki/Sound_localization
www.cs.cmu.edu/~robust/Papers/SternWangBrownChapter.pdf

Und eines scheint mir noch klar zu sein:  Die Sache ist nicht einfach.

von Ben j. (scarab)


Lesenswert?

Andreas Baldinger schrieb:
> @ Benjamin xyz:
> Du meinst also eine Filterung müsste her.
> Vielleicht reicht es mit einem digitalen Filter alles außer den
> interessanten Bereich (z.B. 0,5 - 2kHz) wegzuschneiden.
> Könnte das mit einer Kombination geeigneter Hochpass- & Tiefpassfilter
> funktionieren?
> Und lässt sich sowas dann überhaupt auf einem uC realisieren?

Kann man auch analog machen und die Filterung einfach zwischen Mikrofon 
und DAC hängen. Auf irgend einer Seite von nem IC-Hersteller gibts ein 
online Tool das beim eingeben der Filterparameter ne fertige 
OPV-Schaltung raus wirft. Also schon mit Bauteilwerten usw.

Würde sich aber auch ohne Probleme auf dem uC realisieren lassen.

von Ulrich (Gast)


Lesenswert?

Die Mikrofone sollten ungerichtet sein, also Druckempfänger wie fast 
alle kleinen Elektret- Mikrophonkapseln. Es sollten auch alles 4 gleiche 
Kapseln sein.

Wenn der µC genügend Rechenzeit übrig hat kann man die Auswertung über 
die Korrelationsfunktion machen. Das hilft in Grenzen auch gegen 
Rauschen und man braucht kein scharf Definiertes Geräusch wir ein 
Knacken. So besonders hoch muss die Abtastrate auch nicht sein, für mehr 
als etwa 50 kHz Abtastrate liefern die Mikrofone kaum Informationen, und 
die Stimme hat eher wenig Frequenzanteile über etwa 2 kHz. Da würde dann 
schon fast 5 kHz Abtastrate reichen. Schnelleres Abtasten vereinfacht 
aber ggf die Auswerung etwas.

von Mikel (Gast)


Lesenswert?

Andreas Baldinger schrieb:
> @ MaWin:
> Ja, dass so etwas im Freifeld natürlich viel besser funktioniert ist
> klar, aber leider hier nicht Sinn der Aufgabe :).
> Hängt die Samplerrate eigentlich auch vom Mikrofon ab?

Er meinte damit nicht das du auf den Acker gehen sollst. Sondern das da 
wo die Mikrophone sitzen, keine Verzierungen sind, wie z.B. ne 
Ohrmuschel.

von Jobst M. (jobstens-de)


Lesenswert?

Ulrich schrieb:
> für mehr
> als etwa 50 kHz Abtastrate liefern die Mikrofone kaum Informationen, und
> die Stimme hat eher wenig Frequenzanteile über etwa 2 kHz. Da würde dann
> schon fast 5 kHz Abtastrate reichen. Schnelleres Abtasten vereinfacht
> aber ggf die Auswerung etwas.

Die Frequenz ist zur Positionsbestimmung aber ehr nebensächlich. Wichtig 
ist die Zeit und deren Auflösung, daher ist eine möglichst hohe 
Samplingfrequenz sinnvoll. Auch wichtig ist das gleichzeitige Samplen 
der einzelnen Mikrofone, da sonst wieder Zeitdifferenzen entstehen. 
Möglich, daß Dir hierbei digitale Mikrofone einen Strich durch die 
Rechnung machen.


Gruß

Jobst

von Ulrich (Gast)


Lesenswert?

So lange die Verzögerung durch ein nicht gleichzeitiges Samplen konstant 
und bekannt ist, stört das nicht so sehr. Eine hohe Samplingrate ist 
nicht unbedingt nötig, sondern macht nur ggf. die Auswertung einfacher. 
Da keine höheren Frequenzen gesendet werden, kann man zwischen den 
langsameren Samples, oder ggf. anderen daraus berechneten Werten 
interpolieren ohne dadurch grobe Fehler zu machen. Eine geringere 
Samplingrate erfordert dann ggf. eine etwas aufwendigere Auswertung - 
dafür hat man weniger Daten zu verarbeiten und kommt mit weniger 
Rechenzeit aus.

Ein Möglichkeit ist die Korrelationsfunktion für ein paar Verzögerungen 
(z.B. +-1 ms was je nach Samplingrate etwa 10 diskreten Werten 
entspricht) einfach nach Brute Force (Integral über Produkt) zu 
berechnen. Das schafft ein kleiner µC für 2 Kanäle gerade noch. Aus den 
Punkten kann man dann das Maximum finden - die Interpolation geht z.B. 
durch anpassen einer Parabel an etwa 5 Punkte - das gibt dann auch 
gleich die Interpolation für Zwischenwerte. Wegen der begrenzten 
Bandbreite hat man eine glatte Kurve und verpasst durch die relativ 
weniger Stützstellen nichts wesentliches. Im Ergebnis ist man also nicht 
auf die anfänglichen etwa 10 Verzögerungen bzw. Winkel festgelegt.

von Soundman (Gast)


Lesenswert?

MaWin schrieb:
> Auflösung von knapp einem Millimeter (übliche 44ksps
> Samplerate) kannst du ja selbst ausrechnen, welche Genauigkeit z.B. bei
> nur 10cm entfernten Mikrophonen erzielbar ist

Die Auflösung hat mit der Samplerate nichts zu tun. Man kann 
Verschiebungen deutlich unterhalb der Samplegrenzen wahrnehmen und 
messtechnisch erfassen.

von Udo (Gast)


Lesenswert?

Ulrich schrieb:
> anpassen einer Parabel an etwa 5 Punkte
Drei Punkte reichen (das Original, einmal nach links und einmal nach 
rechts verzögert) wenn man den Sinus nimmt, mit dem sich das matching 
der angenommenen Phasenverschiebungen ändert.

Allerdings ist die Einpassung des Sinus ein Problem für einen 
Microcontroller.

von Daniel (Gast)


Lesenswert?

Ulrich schrieb:
> Die Mikrofone sollten ungerichtet sein, also Druckempfänger
und selbst die sind im Bereich >1kHz Nierenähnlich

Erich schrieb:
> "localisation of sound" microphone
dabei geht es aber um die Auswertung durch den Menschen.

Einfach und billig wird es mit 3-4 schmalbandigen Kanälen und 
IQ-Demodulation, ansonsten FFT  über alle Frequenzen und 
Phaseninfomation mitteln

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.