Willst du ein USB-Mini-Mikrofon-Array. Ist es möglich?


13

Ich habe viel über adaptives Beamforming gelernt und mich mit verschiedenen Sims in MATLAB usw. beschäftigt.

Aber wie kann man etwas besser verstehen - wirklich verstehen - als mit dem gesamten System zu spielen?

Zu diesem Zweck möchte ich ein über USB angeschlossenes Mikrofonarray mit beispielsweise 5 Mikrofonen finden (bauen?). Sie könnten Signale aus der Umgebung erfassen (auch bekannt als, wo immer sich mein Laptop befindet), und ich wäre dann in der Lage, diese Signale in MATLAB oder was auch immer zu verarbeiten.

Ich würde wirklich lieber nicht das ganze Ding bauen, also hoffe ich, dass jemand in der Vergangenheit bereits über USB verbundene Mikrofon-Arrays verwendet hat und in die richtige Richtung weisen kann?

Die Mikrofone müssen nichts Besonderes sein, wenn es um die Bit-Auflösung ihres A / D usw. geht. KISS-Mikrofone von respektabler Qualität sind in Ordnung.

Antworten:


8

Die Playstation Eye -Videokamera verfügt über ein lineares 4-Element-Mikrofonarray. Es liefert 16-Bit-Samples bei 48 kHz mit einem SNR von 90 dB. Es ist einfach zu bedienen: Es wird als Standard-USB-Audiogerät mit vier separaten Kanälen aufgeführt.

Ein Beispiel für diese Art der Verwendung finden Sie unter: 4-Kanal-Audiotests für PS3 Eye unter Ubuntu Karmic


1
@Mohammad Dies wäre wahrscheinlich eine gute Lösung, wenn Sie sich gerne auf vier Kanäle beschränken würden. Mit vier Kanälen erhalten Sie eine Strahlformungsverstärkung von ca. 12 dB. Der Nachteil ist, dass Sie aufgrund der geringen Gesamtausdehnung des Arrays einen recht großen strahlformenden Brennpunkt haben: Sie können zu nahe beieinander liegende Schallquellen nicht trennen. Ihre Hauptanwendung für dieses Array wäre daher wahrscheinlich nicht das Isolieren von Schallquellen, sondern das Verfolgen einer einzelnen Schallquelle durch den Raum. Ich weiß, wo eine Person von ihrer Stimme steht ...
ARF

1
@ArikRaffaelFunke Hmm, ich weiß nicht genug über adaptive Strahlformung, um zu wissen, was ein Brennpunkt ist. :-) Allerdings denke ich, dass ich weiterhin in der Lage sein würde, Quellen mithilfe von nicht sofortigem ICA zu trennen. (Eigentlich konzentriere ich mich im Moment auf ICA). Auch ja 4 ist nicht so viel wie ich gehofft hatte ... Aber vielleicht kann dies ein Anfang sein ... c
Spacey

3

Nachdem ich mich intensiv mit adaptivem Beamforming beschäftigt hatte, scheute ich mich wirklich davor, selbst etwas dafür zu hacken, bis ich etwas Erfahrung hatte. (Hinweis: Professionelle Lösungen mit ca. 60 Kanälen kosten ca. 100.000 €. Bei vielen Kanälen wird die räumliche Auflösung wesentlich besser, aber Sie erhalten nur eine begrenzte Menge an Informationen über einen USB-Anschluss ...)

Für eine zuverlässige Strahlformung ist es wichtig, dass alle Mikrofone dieselbe Zeitbasis verwenden. Dies erreichen Sie am einfachsten mit einer externen USB-Soundkarte mit mehreren Eingangskanälen. Die sind aber nicht wirklich billig. Haben Sie sich angesehen, was bei ebay zu finden ist?

Eine Alternative besteht darin, die gemeinsame Zeitbasis zu opfern, indem mehrere USB-Soundkarten mit z. B. jeweils zwei Kanälen verwendet werden. Sie müssen jedoch Ihr Erfassungssystem kalibrieren. Das ist wirklich nicht so schwierig, wie es sich anhört:

Zum Kalibrieren richten Sie Ihr Array ein und erzeugen einen kurzen Ton (z. B. ein Knacken / Klatschen usw.) in einer Entfernung von Ihrem Array, die in der Größenordnung der Ausdehnung Ihres Arrays liegt. Sie nehmen dann diesen Ton auf und verwenden Matlab oder Ähnliches, um die Kreuzkorrelation zwischen dem Klatschen / Riss / etc. Zu berechnen. auf den verschiedenen Kanälen. Auf diese Weise erhalten Sie eine Liste der Zeitversätze, die Sie auf Ihre Kanäle anwenden müssen, um sie auszurichten, bevor Sie die Daten an Ihren Beamforming-Algorithmus weiterleiten.

Um das adaptive Beamforming zu erkunden, ist dies wahrscheinlich der richtige Weg, es sei denn, Sie können mit einer Mehrkanal-Soundkarte ein Schnäppchen machen.


Bearbeiten 1

Diese Änderung dient zur Beantwortung der in den Kommentaren gestellten Fragen.

Die Grundidee der Verzögerung und Summenstrahlformung besteht darin, Verzögerungen auf verschiedene Erfassungskanäle anzuwenden, so dass die Töne, die von einem Punkt im Raum stammen, ausgerichtet und "verstärkt" werden, wenn Signale von den verschiedenen Kanälen hinzugefügt werden. Geräusche, die aus anderen Regionen des Weltraums stammen, werden nicht ausgerichtet und daher nicht "verstärkt".

Der Punkt im Raum, an dem sich die Töne mit einer bestimmten Anzahl von Verzögerungen ausrichten, wird als Fokus des Mikrofonarrays (oder Brennpunkts) bezeichnet. In der Realität ist der Fokus jedoch kein idealer Punkt, sondern ein kleiner (ish) (abhängig vom Array) Raumbereich, für den die Klänge gut ausgerichtet sind. Die Größe dieser Region wird als Größe des Brennflecks bezeichnet.

Die Geometrie (Größe, Form usw.) hängt von den genauen Details des Arrays ab: Anzahl der Mikrofone, Mikrofonabstand, Frequenzgehalt der interessierenden Signale. Siehe zB diesen Artikel .

Weitere Informationen finden Sie in Texten zur Fokussierung von "Phased Arrays" oder "Linear Arrays" in Ultraschall. Beamforming kann beim Empfang verwendet werden (um Signale von einem bestimmten Punkt im Raum zu verstärken) oder beim Aussenden (um einen "lauten" Punkt in einem Raum zu erzeugen). Die Prinzipien sind identisch: Ersetzen Sie einfach "Mikrofon" durch "Lautsprecher" in Ihrem Denken.

Zum Kalibriervorgang: Sie haben Recht. Das beschriebene Verfahren ist zu einfach. Dies funktioniert nur dann gut, wenn Sie die Kalibrierungsklappe aus einer viel größeren Entfernung als der Region des Raums erstellen können, an der Sie interessiert sind.

Ist dies nicht möglich, müssen Sie die Position des Klatschens berücksichtigen. In diesem Fall besteht die einfachste Prozedur darin, die Verzögerungen durch Kreuzkorrelation wie beschrieben zu korrigieren, dann aber die Krümmung der Wellenfront wieder zum Signal hinzuzufügen, indem ein Satz von Verzögerungen mit "inverser Strahlformung" angewendet wird, der mit der Position des Ursprungs von berechnet wird klatschen. (Dh wenn Sie eine Tiefenvariable + t0 (oder + z0) in Ihrem "normalen" Beamforming-Algorithmus verwenden, müssen Sie -t0 (oder -z0) für den inversen Beamforming-Algorithmus verwenden.)

Worum geht es bei dieser Kalibrierung? Sie beseitigt alle Fehler, die dadurch entstehen, dass die verschiedenen Soundkarten ihre Aufzeichnung zu geringfügig unterschiedlichen Zeiten starten. Dies würde normalerweise die korrekte Ausrichtung der Signale auch bei korrekten Verzögerungen und damit den gewünschten Verstärkungseffekt verhindern.


Vielen Dank, Arik. Ich bin mir jedoch nicht sicher, warum Sie hier Zeitverzögerungen ausgleichen wollen. Zum Beispiel ist einige adaptive Strahlformung bekanntermaßen Verzögerung und Summe, sodass Verzögerungsprobleme automatisch behoben werden. Die zweite Sache (ich denke , das ist , was Sie sagen), ist , dass ich es eine gemeinsame Zeitsynchronisation wollen. (dh drücken Sie eine Taste, alle Mikrofone beginnen zur gleichen Zeit mit der Aufnahme), aber ich möchte nicht, dass sie gemeinsame Zeitverzögerungen haben.
Spacey

Ich habe tatsächlich in meinen Laptop ein Mikrofon-Array eingebaut, ich glaube, es sind nur zwei Mikrofone, aber es könnte ein Ausgangspunkt sein, aber ich habe keine Ahnung, wie ich tatsächlich mit minimalem Aufwand separat auf ihre Daten zugreifen kann ...
Spacey

@Mohammad - das Problem kompensiert nicht bekannte Zeitverzögerungen, sondern unbekannte Zeitverzögerungen. Grundsätzlich gibt es eine gewisse Verarbeitungszeit für jede einzelne USB-Soundkarte. Diese kann von Gerät zu Gerät unterschiedlich sein (in diesem Fall könnte sie kompensiert werden) oder sie kann je nach USB-Bus-Belastung auch nicht konstant sein / sich ändern.
Connor Wolf

@Mohammad Was FakeName gesagt hat ... Um es vielleicht noch klarer zu machen: Die Zeitbasis für jede Strahlformung muss besser sein als die Halbperiode der höchsten Frequenzkomponente, die Sie berücksichtigen möchten. Ich glaube, dass dies mit unabhängigen Soundkarten unmöglich ist, wenn man sie einfach gleichzeitig aufnimmt. Das ist anders, wenn Sie eine einzelne Soundkarte mit mehreren Kanälen haben.
ARF

@ArikRaffaelFunke Ich verstehe, was du mit Kalibrierung meinst, ich habe deine Aussage falsch verstanden. Ich sehe jedoch nicht ein, wie man die Zeitverzögerung von der ungewöhnlichen Zeitbasis entfernen könnte, ohne auch versehentlich die Zeitverzögerung von dem Kanal zu entfernen (den Sie behalten möchten). Die einzige Möglichkeit besteht darin, sicherzustellen, dass der Abstand zwischen Mikrofon und Clap gleich ist. Dies ist jedoch bei linearen Arrays> 2 nicht möglich. Wenn der Abstand groß genug ist (also ebene Wellenfronten), spielt dies möglicherweise keine Rolle.
Spacey
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.