Hallo Leute, ich möchte ein Mikrofonarray aufbauen und bin auf der Suche nach einem sehr einfach zu implementierenden Beamforming-Allgorithmus. Leider bin ich auf dem Gebiet nicht sehr bewandert und weiß daher nicht mit wie viel Aufwand ein Beamforming verbunden ist. Die Richtung des Beams möchte ich jedoch nicht verändern. Sprich der Hauptbeam soll nach vorne zeigen. Ich möchte, dass Signale die von vorne auf das Array treffen möglichst unverändert bleiben und andere Signale die seitlich auf das Array fallen, möglichst gedämpft werden. Verringert das den Aufwand? Außerde, soll die Arraygröße jedoch max. 4 betragen. Besser wäre jedoch, wenn es eine Möglichkeit mit 2 Mikrofonen gäbe. Hat jemand schon Erfahrungen damit gemacht und kann mir ein einfaches Verfahren empfehlen? und wenn ja mit wie viel Aufwand ist das verbunden und was benötige ich dazu? Benötige ich dafür einen DSP oder würde ein micro Controller ausreichen? Im Vorraus schon einmal besten Dank. Gruß Chris
Chris S. schrieb: > Leider bin > ich auf dem Gebiet nicht sehr bewandert Dann solltest Du vielleicht damit anfangen Dir zu überlegen, wie Beamforming prinzipiell funktioniert und das mal mit den Wellenlängen von (hörbarem ?) Schall vergleichen. Wobei ich hier nur unterstelle dass es hörbarer Schall sein soll. Du hast da leider nichts zu geschrieben. Grüße Andreas
Andreas H. schrieb: > Chris S. schrieb: >> Leider bin >> ich auf dem Gebiet nicht sehr bewandert > > Dann solltest Du vielleicht damit anfangen Dir zu überlegen, wie > Beamforming prinzipiell funktioniert und das mal mit den Wellenlängen > von (hörbarem ?) Schall vergleichen. > > Wobei ich hier nur unterstelle dass es hörbarer Schall sein soll. Du > hast da leider nichts zu geschrieben. > > Grüße > Andreas Warum soll das nicht funktionieren? Wird zum Beispiel bei den sogenannten "Akustik-Kameras" so gemacht, um Schallquellen zu lokalisieren. Aber so weit will Chris ja gar nicht gehen, wenn ich das richtig verstanden habe. Er möchte nur eine Richtwirkung erzielen. Ich habe mal ein Beispiel angehängt...
Ja es geht um Sprach signale .. also ungefähr im Frequenzbereich zwischen 300 Hz und ca. 4 kHz. Pinzipiell wie Beamforming funktioniert weiß ich natzürlich. Hab mir unter anderem das Delay Sum verfahren angesehen. Das ist so ziemlich das einfachste Verfahren. Habe es auch mit Matlab simuliert. Leider ist die Dämpfung von seitlich einfallenden Schallwellen bei diesem Verfahren im gewünschten Frequenzbereich eher dürftig.
Suche nach "delay-and-sum" beamformer, da wirst gute karten haben und kannst Dich einlesen. Da benötigst Du ansich Verzögerungselemente und Addierer. Das funktioniert natürlich auch schon mit 2 Mikrophonen. Willst Du zB. (bei 2 Mics) einen Beam nach vorne und eine Cardoide als Richtcharakteristik musst Du das Signal vom hinteren Microphon um die (akkustische) Laufzeit des Signals zwischen vorderem und hinterem Mic verzögern. Der Teufel liegt natürlich im Detail: Die Mics sollten "Matched Pairs" sein, andernfalls wirst Du nicht so eine schöne Richtwirkung haben. Weiters, je nach Abstand zwischen den Mics, hast Du "fractional delays". Die müssen natürlich auch gut sein, sonst wirds nix gutes. Der Beamformer hat zusätzlich natürlich auch noch eine Hochtoncharakteristik, entzerren ist da auch nicht so schlecht. lg Markus
Chris S. schrieb: > Leider ist die Dämpfung von seitlich einfallenden > Schallwellen bei diesem Verfahren im gewünschten Frequenzbereich eher > dürftig. Dabei ist es natürlich nicht gerade hilfreich, wenn du das Array auf "maximal 4 Mikrofone, möglichst aber nur zwei" beschränken willst. Im genannten Beispiel wurden 32 Mikrofone benutzt, ich habe aber auch schon wesentlich mehr gesehen. Klar, daß damit dann auch der Rechenaufwand steigt. Da muß man einen Kompromiss eingehen zwischen Aufwand und beabsichtigem Nutzen.
npn schrieb: > Warum soll das nicht funktionieren? Ich habe nicht gesagt, dass es nicht funktioniert. Nur dass er sich die Grundlagen von Beamforming auch mal bei Audiofrequenzen ansehen soll. > Ich habe mal ein Beispiel angehängt... Chris S. schrieb: > Ja es geht um Sprach signale .. also ungefähr im Frequenzbereich > zwischen 300 Hz und ca. 4 kHz. Da passt Dein Besipiel eher nicht^^ Grüße Andreas
Andreas H. schrieb: > Da passt Dein Besipiel eher nicht^^ Warum nicht? Die Algorithmen und das Prinzip sind die gleichen. Nur daß du bei niedrigeren Frequenzen noch weniger Rechenleistung und eine kleinere Abtastrate brauchst als im PDF-Beispiel. Und die Grundlagen hat er schon angesehen und dieses auch schon in Matlab nachvollzogen.
Markus B. schrieb: > > Da benötigst Du ansich Verzögerungselemente und Addierer. > > Das heißt das Delay Sum verfahren wäre theoretisch mit einem "normalen" Microcontroler zu bewerkstelligen? Eigentlich wollte ich zunächst ganz normal ein Sprachsignal aufzeichnen. Bei meinen Recherchen bin ich aber auf die Beamforming Verfahren gestoßen. Eben auch auf das Delay Sum Verfahren. Da ich sowieso nur Sprachsignale betrachten wollte, die direkt von vorn ins Mikrofon gesprochen wurden, dachte ich wär es ja ganz nett eine Richtcharakteristik zu haben. Signale (vor allem Sprache) die nicht von vorn auf das Mikrofon treffen betrachte ich in meinem Fall sowieso als Störung.Meine Frage war ob es eine einfache aber für meinen Fall ausreichend gute Dämpfung von Sprachsignalen zu erziehlen die von der Seite einfallen.
Chris S. schrieb: > Das heißt das Delay Sum verfahren wäre theoretisch mit einem "normalen" > Microcontroler zu bewerkstelligen? Wenn das Ding genug Rechenleistung bringt... Chris S. schrieb: > Meine Frage war ob es eine einfache aber für meinen Fall > ausreichend gute Dämpfung von Sprachsignalen zu erziehlen die von der > Seite einfallen. Definiere "Gute Dämpfung"! von hinten hast Du im besten Fall unendliche Dämpfung, sogar mit 2 Mics. lg Markus PS: Du hast ja MATLAB - da kannst Du Dir ja eim einfachsten Fall die Polarplots zeichnen lassen für 2 Mics.
Markus B. schrieb: > Chris S. schrieb: >> Das heißt das Delay Sum verfahren wäre theoretisch mit einem "normalen" >> Microcontroler zu bewerkstelligen? > > Wenn das Ding genug Rechenleistung bringt... > Ja genau das ist die Frage wie viel Rechenleistung würde das benötigen? Was ich auch nicht ganz verstehe ist, was ihr als hinteres Microphon bezeichnet? Ich glaube ich sollte nochmal konkret erklären was ich genau machen will. Ich glaube wir reden aneinander vorbei. Ich möchte ein Mikrofonarray mit 2 bis 4 Mikrofonen aufbauen. Die Mikrofone sollen nebeneinander angebracht sein. Des weiter möchte ich, dass Signale die von vorn also in einem Winkel von 0 Grad auf das Mikrofonarray fallen nicht gedämpft werden. Sprachsignale die allerdings von der Seite (ca, 45 Grad)einfallen sollen gedämpft werden, sodass sie kaum ins Gewicht fallen. Als Beispiel: ein Sprachsignal das in einem Winkel von ca. 60 Grad einfällt soll gedämpft werden. Es erreicht ja logischer weiße das linke der beiden verbauten Mikrofone zuerst. Dannach das rechte. das heißt die Signale sind ja sowieso schon Phasenverschoben zueinander. Muss ich dann, da ich den Beam ja nicht in eine andere Richtung lenken will, die Signale nocheinmal (von Hand) gegeneinander verzögern? Ich meinewenn ich das Signal des linken Mikrofons nochmal um die Schalllaufzeit vom linken zum rechten Mikrofon verzögern würde, wären sie ja wieder in Phase oder? das will man ja nicht oder?
npn schrieb: > Warum nicht? Die Algorithmen und das Prinzip sind die gleichen. Mach mal :-) Drei Sprecher, r=10m, \phi=15°. Vereinfachung: Es spricht jeweils nur ein Sprecher. Und nun trenn die Sprecher^^. Ach ja, ich vergass: Max. vier Mikros :-) Targeting im Sprachbereich ist nicht wirklich trivial. Da trifft die schöne Theorie/Laborwelt plötzlich auf die pöse Realität ;-) Grüße Andreas P.S: Chris S. schrieb: > Meine Frage war ob es eine einfache aber für meinen Fall > ausreichend gute Dämpfung von Sprachsignalen zu erziehlen die von der > Seite einfallen. Ich habe sowas ähnliches mal probiert. Ergebniss: In der Simulation war alles hübsch, in der Praxis kamen da haufenweise Störeffekte dazu, die das Ganze weitgehend wirkungslos gemacht haben. Raumhall kann da z.B. sehr "putzige" Effekte haben. Auch die reale Auflösung der DACs am uP wurde ein Problem, da bei niedrigen Frequenzen der Phasedelay zwischen zwei Kanälen extrem klein wird und die DACs das nicht mehr sauber auflösen. Es ging "irgendwie", eine robuste Lösung wars aber nicht. Da hätte man vermutlich deutlich mehr Aufwand treiben müssen (z.B. mit vorgeschalteten Filterbänken)
Andreas H. schrieb: > Ach ja, ich vergass: Max. vier Mikros :-) Ich nicht: npn schrieb: > Dabei ist es natürlich nicht gerade hilfreich, wenn du das Array auf > "maximal 4 Mikrofone, möglichst aber nur zwei" beschränken willst. Da wird man nicht sehr viel Richtwirkung erzielen können. Nicht umsonst arbeiten andere mit 32 (und mehr) Mikrofonen. Hatte ich alles aber schon geschrieben.
@Chris S.: Abgesehen von der Herausforderung, sich mit Beamforming zu beschäftigen, wäre es vielleicht überlegenswert, ein Richtmikrofon einzusetzen, z.B. mit einem Parabolreflektor. Oder käme das aus irgendwelchen Gründen nicht in Frage?
Es gibt die sogenannte "Endfire" und die "Broadside" Konfiguration. Bei Broadside sind die Mics nebeneinander, bei Endfire hintereinander. Bei zwei Mics, Endfire, Cardoid-Konfig hast Du auf 45° ca. 2dB, bei 90° ca.6dB, bei 135° ca. 13dB und bei 180 dB -Inf dB. (Den plot kann ich nicht einstellen...) Die Frage ist was Du benötigst und bereit bist zu inverstieren.
...wenn du den "beam" nicht formen willst brauchst du keine rechenleistung. Du kannst die Signale einfach analog addieren. Willst fokusieren und schwemken brauchst du "delays", ansonsten nicht. Und zwei Mics würde ich kein Array nennen. Wenn du einfach nur gerichtet aufnehmen willst, nimm ein "Richtmikrofon" oder bau dir eins.
http://www.beyerdynamic.de/shop/ct/conference-technology/product-line/microphones/desktop-microphones-and-microphone-units/mpr-210-b-1.html ... ich habe eben keine Quelle gefunden, meine mich aber zu erinnern, dass da 17 Einzelmikros verbaut sind.
Bei zwei Mikrofonen gewinnt man mit einem Delay&Sum-Beamformer nicht viel. Bei Hörgeräten und ähnlichem verwendet man einen adaptiven differentiellen Beamformer (http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=482983), das ist immer noch relativ einfach zu implementieren und zumindest bei nicht allzu weit entfernten Schallquellen sehr effektiv. Um Nachhall oder diffuses Hintergrundgeräusch zu unterdrücken verwendet man andere Verfahren (Postfilter), die sind dann allerdings sowohl von der Implementierung als auch vom Rechenaufwand her um einiges komplexer. Erzähl mal etwas mehr über die Anwendung, sonst kann man dir nicht wirklich helfen: - möglicher Abstand und Anordnung der Mikrofone - Entfernung des Sprechers - Art, Richtung und Entfernung der Störquellen.
Chris S. schrieb: > ich möchte ein Mikrofonarray aufbauen und bin auf der Suche nach einem > sehr einfach zu implementierenden Beamforming-Allgorithmus. Kann ja alles sein, vom simplen "wie mache ich aus einem Kugelcharacteristik-Mikro ein Nierenmikro" (2 Mikros hintereinander, delay and sum) bis hin zu "wie erzeuge ich ein 2d Mikroskopbild eintreffender Schallwellen", da sind dann viele nötig. Gut, dass du es wenigstens auf den Sprachbereich einschränken kannst, denn tiefe Töne sind schwer zu orten, erfordern grosse Mikrophonabstände. Adaptive Filter auf die real betrachtete Frequenz wäre nich besser, da macht ein DSP Sinn.
Also eigentlich wollte ich nur Sprache aufnehmen, wobei nur die Sprache einer Person berücksichtigt werden soll, die sich direkt vor dem Mikrofon befindet(ca. 0.5 bis 1m Abstand). Dann bin ich auf die Beamforming Verfahren gestoßen und dachte das wäre vielleicht schoneinmal eine Idee zur Unterdrückung anderer Schallwellen. Sprich Personen die schräg daneben stehen und ebenfalls etwas sagen. Das heißt da die Störquelle Ebenfalls Sprache ist liegt sie im selben Frequenzbereich wie mein eigtl. Nutzsignal. Andere Störungen wären zB Brummen oder Rauschen von Lüftern. Wie gesagt bin ich aus Kostengründen auf max. 4 Mikrofone beschränkt. Besser wären weniger. Der Abstand der Mirkrofone sollte ca. 10 bis 20cm sein. Wobei wieder weniger besser wäre. Abtansten wollte ich mit 16 kHz.. Eine Dämpfung der Störsignale (Ich betrachte einfach mal alles als Störsignal was in einem Winkel größer bzw kleiner von +-60 Grad einfällt) von größer ca. -20 dB (wäre ja Faktor 10) wäre gut.
Wie wäre es mit einem M/S-Mikro? Seiteninformation mit Niere statt mit Keulen/Achter ergibt eine schärfere Lokalisation. Auch eine Hyperniere als M kann helfen. Im Übrigen sind Nieren/Hypernieren mechanisch genau so aufgebaut, nämlich mit akustischem Laufzeitglied und (negativer Addition).
Chris S. schrieb: > Brummen oder Rauschen von Lüftern. Wie gesagt bin ich aus Kostengründen > auf max. 4 Mikrofone beschränkt. Besser wären weniger. Unter vier Mikrofone macht es keinen Sinn, weil Du dann eine räumliche Filterung nur in einer Ebene durchführen kannst. 9 oder 8 Mikrofone wären besser, erst hier kannst Du eine Teilbandfilterung machen, weil Du dann verschiedene Mikrofonabstände hast, die Du dann auf die verschiedenen Teilbänder anwenden kannst. Zusätzlich solltest Du weitere Filterungsmaßnahmen im Frequenzbereich durchführen. Lies das: http://www.ant.uni-bremen.de/sixcms/media.php/102/4865/DAGA_2003_simmer.pdf Wenn Dein Budget so eng begrenzt ist, solltest Du Dir ernsthaft überlegen, dieses Vorhaben oder zumindest diesen Ansatz in die Tonne zu treten, da das so wie Du es Dir vorstellst nicht sinnvoll zu realisieren ist. Und das meine ich ernst. PS: Ich habe vor 20 Jahren meine Diplomarbeit genau über dieses Thema geschrieben. fchk
Soll denn die Richtung selektiv änderbar sein? Wenn es nur um eine hohe Lokalisation geht, wäre eine Richtmikroanordnung anzuraten. Hier eine kleine Anregung, was mit 4 Mikros geht: Eine Schallquelle lokalisieren und die Störung (mehr oder weniger abziehen). http://www.96khz.org/oldpages/soundsourcelocalisation.htm
Ok aber wir machen die Jungs von Nokia das? Hab das hier im Netz gefunden http://lumiaconversations.microsoft.com/2013/11/11/new-direction-audio-recording-lumia-1520/ Die haben ja auch vier Microphone .. sogar in einem deutlich kleineren Abstand ... Oder funktioniert das garnicht richtig? Ist ja eigentlich ne ähnliche anwendung
Nun ja, die werden damit kaum Lokalisationsmessungen durchführen. Eher schon kann man damit eine Art von M/S-Mikro aufziehen. Allerdings fehlen solchen Mikroanordnungen zwangsläufig die Phasendifferenzen, die 50% der Stereoinformation ausmachen. Ohne diese bildet sich keine Tiefenstaffelung. Ich habe mir mal die weiterführenden Info angesehen und das White paper geladen. Kaum ein Paer verdient den Begriff "White" so sehr, denn technische Infos, wie man sie bei Mikroherstellern gewöhnt ist, sind da nicht zu finden :-) Andererseits ist das wohl auch nicht nötig, weil Nokia offenbar das "Distortion-free, full bandwidth Stereo recording" System erfunden hat. Man kann von der Weiterentwicklung von Smartphones halten, was man will, aber mit derart winzigen Kapseln geht einfach nicht das, was mit vernünftigen Halbzollmembranen ("Kleinmembranmikros" möglich ist. Nicht von der Physik her und auch nicht von der analogen Qualität her. Einzig, das Echo-Reduction ist plausibel und wertig.
Chris S. schrieb: > Ok aber wir machen die Jungs von Nokia das? Hab das hier im Netz > gefunden > http://lumiaconversations.microsoft.com/2013/11/11... > Die haben ja auch vier Microphone .. sogar in einem deutlich kleineren > Abstand ... Oder funktioniert das garnicht richtig? Ist ja eigentlich ne > ähnliche anwendung Das sind vermutlich zwei einfache differentielle Beamformer zwischen jeweils einem vorder- und einem rückseitigen omnidirektionalen Mikrofon. Dieses Patent scheint das zu bestätigen: https://www.google.com/patents/US8548176 "3. An apparatus according to claim 1, wherein said sensitivity pattern is a first order gradient pattern. 4. An apparatus according to claim 3, wherein said first order gradient pattern is a cardioid or super-cardioid." Viel mehr kann man da auch gar nicht machen. Eventuell noch eine Windgeräuschunterdrückung. Komplexere adaptive Verarbeitungsschritte wie man sie für Sprache verwendet sind für "Hifi"-Audio, d.h. Musik, weniger geeignet, weil fast immer irgendwelche hörbaren Artefakte zurückbleiben. Jürgen Schuhmacher schrieb: > Man kann von der Weiterentwicklung von Smartphones halten, was man will, > aber mit derart winzigen Kapseln geht einfach nicht das, was mit > vernünftigen Halbzollmembranen ("Kleinmembranmikros" möglich ist. Es ist richtig dass MEMS-Mikrofone einen viel höheren Rauschpegel als größere Elektretkapseln haben. Aber wenn man nicht im Studio aufnimmt sondern in realen Umgebungen mit einem sowieso schon hohen Hintergrundgeräuschpegel, dann spielt das gar keine so große Rolle.
Chris S. schrieb: > Also eigentlich wollte ich nur Sprache aufnehmen, wobei nur die Sprache > einer Person berücksichtigt werden soll, die sich direkt vor dem > Mikrofon befindet(ca. 0.5 bis 1m Abstand). Mal ein anderer Ansatz: Kannst Du nicht vielleicht versuchen, bereits den Schall zu addieren, so dass das Mikro bereits das beamforming-Summensignal sieht? Sichwort: http://de.wikipedia.org/wiki/Richtrohrmikrofon
Hey. Danke mal für die Anregungen. Das Richtrohrmikrofon hört sich auf jeden Fall mal interessant an. Aber ich denke für meinen Anwendungsfall ist es eher weniger tauglich. Allein schon wegen der Größe. Ich habe Sprache aufgenommen und mit Matlab eine FFT durchgeführt. Erste Anteile waren schon bei ca. 80 -100 Hz vorhanden. Im Wikipedia-Artikel stand ja dass das Richtrohrmikrofon wenn es ab 100Hz aktiv sein soll 3 Meter lang sein muss.. Das ist ein bissel lang oder? selbst bei 1kHz wären es noch 30cm. So viel Platz hab ich schlichtweg nicht. Für andere Anwendungen ist dieses Verfahren aber sicherlich interessant. Eigentlich hatte ich vor Electret Microfone einsetzen.
ich habe "damals" ein Resonanzröhrenmikrofon gebaut. Dort waren acht elektretkapseln in verschieden lange AluRohre gesteckt. DAS ging gut. Acht (möglichst gleiche) Verstärker und das ganze summiert. alles rein analog. Waren natürgemäß auch einige längere Alurohre dabei. Wenn Du Detektiv spielen willst/musst, probier ein kleine Grabvase und mach dort, wo die Vase für gewöhnlich in die Erde gesteckt wird, ein Loch rein und steck dort deine Elektretmikrokapsel rein. Geht auch ganz gut. edit geh von einer Fu vopn ca.800Hz aus. Schon des Windes wegen.
Das ist auch noch ein Thema bei dem ich mir nicht ganz im klaren bin. Wenn ich ein Delay und Sum Verfahren anwende und die Signale analog summieren möchte ist es dann besser die einzelnen Signale einzeln zu Verstärken und dann zu summieren oder gleich mit einem Summierverstärkeraddieren und summieren? Die zweite Frage noch einmal wegen möglichen anderen Beamforming Algorithmen. Gibt es außer dem Delay und sum Verfahren ein anderes Verfahren das man evtl auf einem Cortex m3 oder m4 implementieren könnte? Noch mal zur erinnerung ich möchte den Beam nicht verändern sondern nach Vorne gerichtet lassen.
npn schrieb: > wäre es vielleicht überlegenswert, ein Richtmikrofon einzusetzen, z.B. > mit einem Parabolreflektor Bei so kurzen Entfernungen nimmt man besser ein elliptischen Reflektor. Die Ellipse hat bekanntlich zwei Brennpunkte. In einen kommt das Mikrofon in den anderen die Schallquelle. Wie man an den Satellitenschüsseln sehen kann, müssen solche reflektierende Flächen nicht voll ausgebildet sein, sondern man kann ein Stück der Oberfläche herausschneiden, was dann ein Offset-Paraboloid oder Ellipsoid egibt.
Andreas Schwarz schrieb: > Es ist richtig dass MEMS-Mikrofone einen viel höheren Rauschpegel als > größere Elektretkapseln haben. Aber wenn man nicht im Studio aufnimmt > sondern in realen Umgebungen mit einem sowieso schon hohen > Hintergrundgeräuschpegel, dann spielt das gar keine so große Rolle. Das sind aber schon 2 verschiedene Punkte. Die Hintergrundgeräusche sind ja mehr oder weniger dieselben und deshalb teilweise eliminierbar. Das Rauschen ist praktisch zufällig. Zudem bezog ich mich speziell auf die Anwendung von Nokia, Musik aufzuzeichnen. Ohne einen ausreichenden Abstand der Mikros ist da nicht viel möglich. Mit einem Tablet-PC bei 20cm Abstand ginge das schon eher. Diese Idee ist hiermit von mir patentiert! :-D
Chris S. schrieb: > Das ist auch noch ein Thema bei dem ich mir nicht ganz im klaren bin. > Wenn ich ein Delay und Sum Verfahren anwende und die Signale analog > summieren möchte ist es dann besser die einzelnen Signale einzeln zu > Verstärken und dann zu summieren oder gleich mit einem > Summierverstärkeraddieren und summieren? Wenn Du die Signale analog summerst, verlierst Du die Möglichkeit der Nachverarbeitung im Frequenzbereich. Dafür brauchst Du die Einzelsignale in digitalisierter Form. fchk
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.