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! :-)
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.
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.
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.
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.
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.
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.
Bei GPS braucht man mindestens 4 Satelliten, weil es 4 Unbekannte gibt: x, y, z und die Zeitdifferenz zwischen Empfängeruhr und Satellitenuhr.
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.
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.
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?
@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! :)
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.
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
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!
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
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.
Man kann die Signale korrelieren und damit die Zeitverschiebung schätzen, welche Rückschlüsse auf den Winkel zulässt. Darauf basiert GCC-PHAT.
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
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?
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.
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.