Ich habe viel über adaptive Strahlformung gelernt und mit verschiedenen Sims in MATLAB usw. herumgespielt.
Aber wie könnte man etwas besser verstehen – wirklich verstehen – als mit dem gesamten System zu spielen?
Zu diesem Zweck würde ich gerne ein über USB angeschlossenes Mikrofonarray mit beispielsweise 5 Mikrofonen oder so finden (bauen?). Sie wären in der Lage, Signale aus der Umgebung zu erfassen (auch bekannt als wo auch immer mein Laptop ist), und ich könnte diese Signale dann nehmen und sie in MATLAB oder was auch immer verarbeiten.
Ich würde das ganze Ding wirklich lieber nicht bauen, also hoffe ich, dass jemand in der Vergangenheit bereits USB-verbundene Mikrofon-Arrays verwendet hat und in die richtige Richtung zeigen kann?
Die Mikrofone müssen nichts Besonderes sein, wenn es um Bitauflösungen ihres A/D usw. geht. KISS-Mikrofone von respektabler Qualität reichen vollkommen aus.
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 die Verwendung auf diese Weise finden Sie unter: PS3 Eye 4-channel Audio Tests on Ubuntu Karmic
Nachdem ich mich intensiv mit adaptivem Beamforming beschäftigt habe, würde ich wirklich davor zurückschrecken, selbst etwas dafür zu hacken, bis ich etwas Erfahrung hätte. (Hinweis: Professionelle Lösungen mit ca. 60 Kanälen kosten ca. 100.000 €. Mit vielen Kanälen wird Ihre räumliche Auflösung viel besser, aber Sie erhalten nur eine begrenzte Menge an Informationen über einen USB-Anschluss ...)
Für zuverlässiges Beamforming ist es unerlässlich, dass alle Mikrofone die gleiche Zeitbasis verwenden. Am einfachsten erreichen Sie dies mit einer externen USB-Soundkarte mit mehreren Eingangskanälen. Allerdings sind die nicht wirklich günstig. Hast du mal geschaut, was es bei ebay zu finden gibt?
Eine Alternative besteht darin, die gemeinsame Zeitbasis zu opfern, indem mehrere USB-Soundkarten mit zB jeweils zwei Kanälen verwendet werden. Sie müssen jedoch Ihr Erfassungssystem kalibrieren. Das ist wirklich nicht so schwierig, wie es klingt:
Zum Kalibrieren stellen Sie Ihr Array auf und erzeugen einen kurzen Ton (z. B. ein Knacken/Klatschen/usw.) in einem Abstand von Ihrem Array, der 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/Knacken/etc. zu berechnen. auf den verschiedenen Kanälen. Dadurch erhalten Sie eine Liste mit Zeitversätzen, die Sie auf Ihre Kanäle anwenden müssen, um sie auszurichten, bevor Sie die Daten in Ihren Beamforming-Algorithmus einspeisen.
Um adaptives Beamforming zu erkunden, ist dies wahrscheinlich der richtige Weg, es sei denn, Sie können mit einer Mehrkanal-Soundkarte ein Schnäppchen machen.
Diese Änderung soll die in den Kommentaren aufgeworfenen Fragen beantworten.
Die Grundidee von Verzögerungs- und Summen-Beamforming 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. Klänge, die aus anderen Raumregionen stammen, richten sich nicht aus und werden daher nicht „verstärkt“.
Der Punkt im Raum, an dem sich die Klänge mit einem bestimmten Satz von Verzögerungen ausrichten, wird als Fokus des Mikrofonarrays (oder Brennpunkt) bezeichnet. In Wirklichkeit ist der Fokus jedoch kein idealer Punkt, sondern eher ein kleiner (etwas) (je nach Anordnung) Raumbereich, für den die Klänge gut ausgerichtet sind. Die Größe dieses Bereichs 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, Frequenzinhalt der interessierenden Signale. Siehe zB diesen Artikel .
Weitere Informationen finden Sie in Texten zur Fokussierung von "Phased Arrays" oder "Linear Arrays" im Ultraschall. Beamforming kann beim Empfang (zur Verstärkung von Signalen von einem bestimmten Punkt im Raum) oder bei der Emission (um einen "lauten" Punkt in einem Raum zu erzeugen) verwendet werden. Die Prinzipien sind identisch: Ersetzen Sie in Ihrem Denken einfach "Mikrofon" durch "Lautsprecher".
Bezüglich des Kalibrierungsverfahrens: Sie haben Recht. Das von mir skizzierte Verfahren ist zu einfach. Es funktioniert nur gut, wenn Sie das Kalibrierungsklatschen aus einer viel größeren Entfernung als dem Bereich des Raums erzeugen können, an dem Sie interessiert sind. (dh um eine glatte Welle sicherzustellen.)
Ist dies nicht möglich, müssen Sie die Position der Klappe berücksichtigen. In diesem Fall besteht das einfachste Verfahren darin, die Verzögerungen wie beschrieben durch Kreuzkorrelation zu korrigieren, aber dann die Krümmung der Wellenfront wieder auf das Signal zu addieren, indem ein "inverses Beamforming"-Verzögerungsset angewendet wird, das mit der Position des Ursprungs berechnet wird klatschen. (Das heißt, wenn Sie in Ihrem "normalen" Beamforming-Algorithmus eine Tiefenvariable +t0 (oder +z0) verwenden, müssen Sie -t0 (oder -z0) für den inversen Beamforming-Algorithmus verwenden.)
Was ist der Sinn dieser Kalibrierung: Sie eliminiert alle Fehler, die dadurch entstehen, dass die verschiedenen Soundkarten ihre Aufnahme zu leicht unterschiedlichen Zeiten starten. Dies würde normalerweise verhindern, dass sich die Signale auch bei korrekten Verzögerungen richtig ausrichten, und somit den gewünschten Verstärkungseffekt verhindern.
ARF
Spacey