Forum: Digitale Signalverarbeitung / DSP / Machine Learning Sprecher Lokalisation - Welche HW? Wie ansetzen?


von Marc (Gast)


Lesenswert?

Hallo!

Ich möchte für ein Uni-Projekt den Sprecher lokalisieren.
Anwendung soll das ganze im Fahrzeug finden, d.h. es interessiert im 
Grunde nur eine Ebene.

Leider gibt es bei uns am Lehrstuhl kaum Erfahrungen damit. Es wäre toll 
wenn ihr mir ein wenig bei den grundsätzlichen Anforderungen helfen 
könntet!

Mein erster Gedanke war es, drei oder vier Mikrophone nebeneinander 
anzuordnen, via Matlab einzulesen und zu verarbeiten. Jetzt bin ich mir 
aber gar nicht sicher ob Matlab überhaupt simultan 4 Audiosignale 
erfassen kann (die Hilfe des audiorecorders spricht nur von max. 2) und 
ob die Anforderungen bzgl. Leistung nicht vielleicht zu hoch sind..


Hier mal einige Fragen die sich mir stellen, vielleicht weiß ja jemand 
zu einer oder mehreren die Antwort:
- Wieviele Mikrophone wird man für eine halbwegs zuverlässige Lösung 
brauchen? 2,3,4 oder sogar mehr?

- Wieviele Audiosignale kann Matlab über eine angeschlossene Soundkarte 
denn überhaupt verarbeiten? Hat da wer Erfahrungen vllt. sogar Hardware 
Tipps?

- Muss ich zwangsweise einen DSP verwenden? Falls ja, brauche ich dann 
etwas vom Kaliber eines TI TMS320C6713 ?


Ihr merkt schon, ich bin etwas ratlos und habe leider keine brauchbaren 
Projekte im Netz finden können die sich wirklich mit Sprache (also kein 
Klatschen etc.) beschäftigen. Gerne würde ich das auch über einen 
Mikrocontroller lösen, aber die werden wohl nicht leistungsfähig genug 
sein.


Danke! :-)

von BöserFisch (Gast)


Lesenswert?

Mach das doch erst mal offline und nimm ein paar Wellenformen auf.
Das Stichwort um die Phasendifferenzen rauszubekommen heisst 
"Korrelation". Es gibt allerdings schon (n+1) Projekte und Patente, die 
das Problem abdecken. Manche werten auch die Spektren aus um mit nur 2 
Mikrofonen die Richtung zu orten, im Fahrzeug sähe das Problem aber 
anders aus, da fallen dann eher die Mehrdeutigkeiten wegen der Anordnung 
weg. 3 brauchst du min. für die Position in der Ebene, ist wie beim GPS. 
Mehr Redundanz hilft.

Ziemlich brauchbar um sowas ähnliches umzusetzen (Echo-Peilung) fand ich 
das BF533 EZKIT mit 6-Kanal Codec. Ist allerdings schon einige Jahre 
her. Die offiziellen Tools von Analog Devices waren damals allerdings 
unbrauchbar (soll heute zum Einsteigen besser geworden sein). Benutze 
allerdings nur GCC und den USB-Debugger von section5, der kostete zwar 
mehr als das Board aber war irre schnell und kackte nicht andauernd ab 
wie der VDSP++ Debugger.
Auf jeden Fall würd ich einen leistungsfähigen DSP nehmen und erst 
später auf einen µC gehen wenn die Anforderungen feststehen.

von Selbständiger (Gast)


Lesenswert?

Aus Sicht eines Toningenieurs würde man einwerfen, dass eine Abbildung 
des Raumes bereits mit Koinzidenzaufnahmen mit 2 Mikrofonen gelingt. Die 
Tiefen und Höhenlokalisation erfordert mindesten 1 Mikrofone mehr.

Theoretisch kommt man damit perfekt hin, aufgrund der Ungenauigkeiten 
sind mehr Mikros aber hilfreich.

von Pascal O. (raven761)


Lesenswert?

Du könntest es mit Beamforming der Mikrofoncharakteristiken versuchen. 
Dann kommt es nämlich genau darauf an, wieviele Mikrofone du benötigst. 
Wenn du zum Beispiel eine Nachführung des Sprechers möchtest, benötigst 
du mehr als 2 Antennen, 4 wären dafür sehr gut geeignet. Damit könntest 
du andere Störquellen dann auch einfach abdämpfen. Dafür gibts ein paar 
nette Algorithmen, die das Maximum detektieren und dir dann deine 
Koeffizienten für die Mikrofone so berechnen, dass nur das Maximum 
durchgelassen wird. Schau mal nach "Maximal Ratio Combining", 
"Antennendiagrammen" oder "Richtcharakteristik".
Zur Hardware würde ich sagen, dass du um ein DSP nicht rumkommst. Ich 
weiß nicht ob es Mehrkanalboards gibt, aber mit dem C6713 habe ich auch 
schon Audioverarbeitung gemacht und das klappt extrem gut. Mit dem PC 
kannst du nicht arbeiten, der kommt da gar nicht hinterher dir alles zu 
berechnen und in Echtzeit auszuspucken. Aber ich würde erst mal wie die 
anderen schon gesagt haben ein paar Tonquellen aufnehmen und dann 
versuchen deine Algorithmen drüberzujagen. Über die Echtzeitgeschichte 
würde ich mir erst später Gedanken machen. Achso, achte darauf in 
welchem Abstand deine Mikrofone sitzen, falls du mit Richtcharakteristik 
arbeiten möchtest. Je nach dem ob in welchem Abstand die sitzen, wirst 
du andere Mikrofondiagramme erhalten.

von Matthias (Gast)


Lesenswert?

http://www.irf.tu-dortmund.de/cms/en/IS/Research/ASP/index.html#acousticlocalization

Frag doch da mal nach, falls du nicht an dieser Uni studierst.

von Matthias (Gast)


Lesenswert?

Marc schrieb:
> - Wieviele Mikrophone wird man für eine halbwegs zuverlässige Lösung
> brauchen? 2,3,4 oder sogar mehr?

Die Mindestanforderung läßt sich schnell mathematisch herausfinden. Bei 
2 Mics liegen die Orte gleicher Laufzeitdifferenz auf zwei Hyperbeln, 
d.h. man braucht mindestens drei. Damit ist die Zahl der Lösungen schon 
so weit eingeschränkt, dass das je nach Mikrophonplazierung und 
Vorwissen über mögliche Sprecherpositionen schon für eine eindeutige 
Lösung reichen kann.

von Matthias (Gast)


Lesenswert?

BöserFisch schrieb:
> 3 brauchst du min. für die Position in der Ebene, ist wie beim GPS.

Falsch.

Beim GPS läuft das ganz anders. Dort wird die Signallaufzeit vom Sat zum 
Nutzer gemessen, d.h. Orte gleicher Laufzeit liegen auf einer Kugel, die 
eine Ebene in einem Kreis schneidet. Mit zwei Satelliten gibt es nur 
noch 2 mögliche Punkte, von denen man einen wegen der Bewegung der 
Satelliten schnell als Lösung ausschließen kann. Der dritte Satellit 
wird nur benötigt, falls der Empfänger keine genügend genaue Uhr 
besitzt.

Bei Korrelation der Schallsignale braucht man schon mal zwei, um in der 
Ebene auf eine Hyperbel (bzw. deren Spiegelung) mit der gemessenen 
Laufzeitdifferenz zu kommen. Das dritte ist für eine Lösungsmenge aus 
Einzelpunkten zwingend.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Bei GPS braucht man mindestens 4 Satelliten, weil es 4 Unbekannte gibt: 
x, y, z und die Zeitdifferenz zwischen Empfängeruhr und Satellitenuhr.

von Matthias (Gast)


Lesenswert?

Andreas Schwarz schrieb:
> Bei GPS braucht man mindestens 4 Satelliten, weil es 4 Unbekannte gibt:
> x, y, z und die Zeitdifferenz zwischen Empfängeruhr und Satellitenuhr.

Sag ich ja.
In der Ebene (x,y) bei genauer Empfängeruhr (=keine Unsicherheit in der 
Zeitdifferenz) eben nur zwei.

Dass das gemeine GPS-Modul für 30 Eur keine Atomuhr hat, ist keine Frage 
des Prinzips. Der zusätzliche Satellite wird quasi benutzt, um 
Mehrfachnutze aus dem GPS zu ziehen, i.e. Lieferung einer genauen Zeit 
an den Nutzer.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Marc schrieb:
> Ich möchte für ein Uni-Projekt den Sprecher lokalisieren.

Was heißt lokalisieren? Winkel oder Winkel+Entfernung? Wie genau, wie 
zuverlässig? Kurz, was willst du mit den Ergebnissen anfangen?

Winkelschätzung ist mit zwei Mikrofonen praktikabel. Die klassischen 
Verfahren mit denen man bei der Sprecherlokalisierung brauchbare 
Ergebnisse bekommt sind GCC-PHAT und SRP-PHAT, letzteres kann auch mit 
mehr als zwei Mikrofonen umgehen. Entfernung ist deutlich schwerer. Hier 
braucht man mehr und in größerem Abstand angeordnete Mikrofone.

Hilfreich wäre es zu wissen, was du messen willst, wie genau, und welche 
Einschränkungen bzgl. Mikrofonplatzierung es gibt. Auf jeden Fall ist es 
noch viel zu früh sich um eine Hardwareplattform Gedanken zu machen. Das 
macht man erst wenn man mal Testsignale aufgenommen und mit dem PC 
erfolgreich ausgewertet hat.

Marc schrieb:
> Leider gibt es bei uns am Lehrstuhl kaum Erfahrungen damit.

Dann würde ich das Projekt mal sehr genau hinterfragen. Wenn das nur ein 
Teil einer Bachelor- oder Masterarbeit sein soll, dann würde ich mir 
Sorgen machen.

von Marc (Gast)


Lesenswert?

Danke für eure Antworten!

Ich habe mir schon überlegt das ganze mittels TDOA und 3-4 Mikrophonen 
zu machen.
Ich würde nur gerne Matlab verwenden und habe nur etwas bedenken dass 
eich z.B. mit 3 Mikrophonen anfange und dann feststellen muss, dass ich 
doch mehr benötige und dann plötzlich mit einen ganz anderen 
Hardwareaufbau benötige.

Ich bin inzwischen auf folgendes gestoßen:
http://sinusmess.de/produkte/apollo.htm

Die versprechen ja eigentlich genau das wonach ich suche: mehrere 
Mikrophone nach Matlab bringen - oder?

von Marc (Gast)


Lesenswert?

@Andreas:
Der Winkel würde im Grunde reichen.
Es soll eine Art Roboterkopf angesteuert werden der immer den Sprecher 
anschauen soll. Das muss auch nicht extrem genau sein, sollte aber 
natürlich in etwa stimmen.
Glaubst du wirklich dass es mit 2 Mikrophonen brauchbare Ergebnisse bei 
normalen Sprachsignalen gibt?

Zur Platzierung... naja sollte nicht allzu sehr auffallen (also besser 
ein Linienarray und kein Kreis) und ich nehme einfach an, dass es mittig 
vorne am meisten Sinn macht.

Zur Aufnahme von Testsignalen brauche ich doch auch bereits eine 
Soundkarte und Mikrofone, da kann/will ich nicht alles 2x kaufen müssen 
sondern direkt die richtige Ausrüstung kaufen. Darum geht's mir gerade 
hauptsächlich

Danke! :)

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Marc schrieb:
> Ich bin inzwischen auf folgendes gestoßen:
> http://sinusmess.de/produkte/apollo.htm

Da zahlst du vermutlich furchtbar viel für die Software und die 
Kalibrierung, die du für deine Anwendung nicht brauchst. Eine einfache 
Mehrkanal-Soundkarte tut's auch, wenn sie unter Windows ASIO oder unter 
Linux ALSA unterstützt; aus MATLAB lässt sich die Karte mit playrec 
(http://www.playrec.co.uk/) ansprechen.

> Glaubst du wirklich dass es mit 2 Mikrophonen brauchbare Ergebnisse bei
> normalen Sprachsignalen gibt?

Im Prinzip schon, kommt auf die Hintergrundgeräusche in deinem Fall an. 
Wenn das Auto mit offenem Verdeck auf der Autobahn fährt, dann sicher 
nicht.

von Martin S. (strubi)


Lesenswert?

Moin,

nur so ein Gedanke, aber vielleicht brauchst du ein drittes Mikro im 
Bodenbereich, o.ae. welches vor allem die (omnipräsenten) Nebengeräusche 
erfasst. Das Motorengebrumm kriegst Du ev. gut rausgefiltert, kann aber 
auch sein, dass der Filter adaptiv arbeiten muss ("Noise Cancelling")
Das knifflige wird vermutlich die Wahl der richtigen Mikrophone und 
einer guten "Zeitbasis" für die A/D-Wandlung.

Grüsse,

- Strubi

von Fredo (Gast)


Lesenswert?

Vorsicht mit den Billigsoundkarten. Die haben nicht selten interlacte 
Takte, da im SPDIF Stereo sowie sequenziell versendet wird. Das kann man 
hier eher nicht gebrauchen.

Ausserdem muss man die Kanäle und die Mikros kalibieren!

von Max G. (l0wside) Benutzerseite


Lesenswert?

Martin S. schrieb:
> Moin,
>
> nur so ein Gedanke, aber vielleicht brauchst du ein drittes Mikro im
> Bodenbereich, o.ae. welches vor allem die (omnipräsenten) Nebengeräusche
> erfasst. Das Motorengebrumm kriegst Du ev. gut rausgefiltert, kann aber
> auch sein, dass der Filter adaptiv arbeiten muss ("Noise Cancelling")
> Das knifflige wird vermutlich die Wahl der richtigen Mikrophone und
> einer guten "Zeitbasis" für die A/D-Wandlung.

Motorengeräusche sind relativ einfach, wenn man an den CAN geht: die 
Störungen liegen (bei einem Vierzylinder) bei der halben Drehzahl und 
den zugehörigen Harmonischen.
Reifen- und Windgeräusche dominieren ab einer gewissen Geschwindigkeit, 
diese sind aber deutlich schwieriger zu schätzen.

Noise Cancellation ist eine ziemlich unexakte Wissenschaft mit vielen 
handgerührten Korrekturfaktoren. In einem hochgradig nichtstationären 
Umfeld wie einem fahrenden Kfz wird´s nicht besser. Der TE sollte die 
Finger davon lassen, wenn er nicht eine komplette Promotion aus der 
Arbeit machen will.

Für einen Demonstrator müsste es doch reichen, wenn das ganze im Stand 
oder bei langsamer Fahrt funktioniert. Matlab und Realtime passt meist 
nicht wirklich zusammen, aber wenn die Nachführung nur z.B. einmal pro 
Sekunde funktioniert, muss das für den Demonstrator doch reichen.

Nachtrag: ich habe eben bei einer kurzen Google-Suche das hier gefunden: 
http://www.mathworks.com/matlabcentral/fileexchange/24352-acoustic-source-localization-using-srp-phat. 
Vielleicht hilft es Dir ja.

Max

von Filterer (Gast)


Lesenswert?

Kann man das nicht mit einem common mode Filter machen? Man müsste doch 
nur die Kanäle miteinander falten und die Phasenverschiebeung berechnen. 
Aus der lässt sich ein Winkel berehnen, meine ich.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Man kann die Signale korrelieren und damit die Zeitverschiebung 
schätzen, welche Rückschlüsse auf den Winkel zulässt. Darauf basiert 
GCC-PHAT.

von Frank K. (fchk)


Lesenswert?

Marc schrieb:
> Hallo!
>
> Ich möchte für ein Uni-Projekt den Sprecher lokalisieren.
> Anwendung soll das ganze im Fahrzeug finden, d.h. es interessiert im
> Grunde nur eine Ebene.
>
> Leider gibt es bei uns am Lehrstuhl kaum Erfahrungen damit. Es wäre toll
> wenn ihr mir ein wenig bei den grundsätzlichen Anforderungen helfen
> könntet!

Ich habe das ganze anno 93/94 an der Uni Bremen auf einem AT&T DSP32C 
mit 25 MHz in Zusammenhang mit adaptiver Störgeräuschunterdrückung 
implementiert. Wenn Du mir Deine Mailadresse rüberreichst, kann ich die 
die Studienarbeit von damals zumailen.

fchk

von Rechenfreak (Gast)


Lesenswert?

Filterer schrieb:
> Kann man das nicht mit einem common mode Filter machen? Man müsste doch
> nur die Kanäle miteinander falten und die Phasenverschiebeung berechnen.
> Aus der lässt sich ein Winkel berehnen, meine ich.

Ich habe eine ähnliche Anwendung und diesen thread gefunden. Wie faltet 
man die Kanäle mit einander?

Ich bekomme einen Nachrichtensprecher über ein Stereomikrofon, dass den 
vollständigen Halbkreis in einer Moderatorenkabine abdeckt. Der Sprecher 
kann aber links und rechts sitzen, weil es mehrere Stühle und Positionen 
gibt. Die momentane Technik wird mit 2 auf die Hauptpositionen 
ausgerichteten Mikrophone gelöst, die aktiv umgeschaltet werden. Das 
soll ab sofort automatisch geschehen. Zum Beispiel wenn der Sprecher 
etwas verrutscht, oder mehrere Stühle besetzt sind mit Gästen sollen die 
Mikrofone aktiv werden, die auch besprochen werden.

Am Ende sollen bis zu 4 Mikrofone vor den Sprecherpositionen eingesetzt 
werden und nur die aktiv werden, die auch verwendet werden. Der letzte 
Schritt ist, die Positionen flexibel durchzufahren, wenn eine Person 
sich in der Kabine bewegt. Also z.B. ein auf und ab laufender Moderator.

Das Ganze soll dann auch im Studio eingesetzt werden.

Wie geht man da ran?

von Audiomann (Gast)


Lesenswert?

Marc schrieb:
> Glaubst du wirklich dass es mit 2 Mikrophonen brauchbare Ergebnisse bei
> normalen Sprachsignalen gibt?

Rechne mal nach: Mit 2 Punkten kann man nur eine Gerade definieren und 
nicht vorne und hinten. Es braucht immer 3 oder mehr.

von Max G. (l0wside) Benutzerseite


Lesenswert?

Für die beschriebene Anwendung sollte das reichen. Eine Sprecherkabine 
sollte ein einigermaßen hallfreier Raum sein, so dass eine 
Kreuzkorrelation recht brauchbare Ergebnisse liefern sollte, wo der 
Sprecher denn nun ist.

Alternativ (immer noch unter der Annahme eines hallfreien Raums, also 
einer näherungsweise diracförmigen Impulsantwort) geht natürlich auch 
der zweite Ansatz ("flexible Mikrofone"). Im Grund braucht es nur eine 
Laufzeitkorrektur, dann kann man einfach aufsummieren.

In halligen Umgebungen sieht das schon wieder ganz anders aus. Ist hier 
aber nicht gegeben.

von Christoph M. (mchris)


Lesenswert?

Respeaker sollte hier vielleicht noch erwähnt werden:

http://wiki.seeedstudio.com/ReSpeaker_4_Mic_Array_for_Raspberry_Pi/

Gibt's auch mit 6 Mikrofonen.

von Rolf S. (audiorolf)


Lesenswert?

Das gibt es sogar mit 12 und mehr Mikrofonen :-)

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.