Inhaltsverzeichnis:
- Schritt 1: Materialien
- Schritt 2: Hardware - 3D-Druck
- Schritt 3: Hardware - Elektronische Komponenten
- Schritt 4: Software
- Schritt 5: Software - Ton
- Schritt 6: Software - Gesichts- und Sprecherkennung
- Schritt 7: Software - Rotierender Motor
- Schritt 8: Zukünftige Verbesserungen
Video: Speaker-Aware Camara System (SPACS) - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:18
Stellen Sie sich eine Telefonkonferenz vor, bei der mehrere Lautsprecher eine Kamera umgeben. Wir stoßen oft darauf, dass der begrenzte Blickwinkel einer Kamera oft nicht auf die sprechende Person blickt. Diese Hardwareeinschränkung verschlechtert die Benutzererfahrung erheblich. Wenn die Kamera aktive Lautsprecher anstarren kann, wäre das entfernte Publikum während des Anrufs stärker in ein Gespräch eingebunden. In diesem Projekt schlagen wir ein (Prototyp-)Kamerasystem vor, das den aktiven Sprecher erkennt und verfolgt, indem es die Kamera in Richtung des Sprechers dreht. Das System verwendet sowohl einen visuellen als auch einen audiobasierten Ansatz. Wenn die Kamera Gesichter erkennt, ermittelt sie die sprechende Person und berechnet den zu drehenden Winkel. Wenn die Gesichter im aktuellen Winkel nicht erkannt werden, sucht das System basierend auf der Richtung der ankommenden Audiosignale nach dem Sprecher.
Schritt 1: Materialien
Adafruchtfeder nRF52840 Express X 1
www.adafruit.com/product/4062
Elektret-Mikrofonverstärker - MAX4466 X 2
www.adafruit.com/product/1063
Mikro-Servomotor X 1
www.adafruit.com/product/169
Android-Smartphone X 1
Schritt 2: Hardware - 3D-Druck
Für eine schnelle Umsetzung haben wir uns für den 3D-Druck der benötigten Gehäuse entschieden. Es gibt zwei Hauptkomponenten für Gehäuse; ein Plattenspieler und ein Smartphone-Ständer. Wir haben den Plattenspieler von diesem Link (https://www.thingiverse.com/thing:141287) verwendet, wo er unten ein Arduino-Gehäuse und einen Drehtisch bietet, der mit einem Servomotor verbunden werden kann. Wir haben einen Smartphone-Ständer von diesem Link (https://www.thingiverse.com/thing:2673050) verwendet, der klappbar und winkelverstellbar ist, sodass wir den Winkel bequem kalibrieren können. Die folgende Abbildung zeigt die zusammengebauten 3D-gedruckten Teile.
Schritt 3: Hardware - Elektronische Komponenten
Es gibt vier verdrahtete Komponenten; Adafruit Feather, zwei Mikrofone und ein Motor. Für die kompakte Verpackung haben wir die Drähte gelötet (graue Kreise), ohne ein Steckbrett zu verwenden. Im Folgenden werden der Schaltplan und das eigentliche Artefakt beschrieben.
Schritt 4: Software
Unser System verwendet hauptsächlich die visuellen Informationen der Gesichtserkennung, um dem Sprecher zu folgen, da es genauer ist. Damit der Feather visuelle Informationen von der Android-App erhält, verwenden wir Bluetooth Low Energy als Hauptkommunikationsmethode.
Wenn ein Gesicht erkannt wird, berechnet die App den Winkel, den der Motor drehen muss, um den Lautsprecher auf die Mitte des Rahmens zu fokussieren. Wir haben die möglichen Szenarien zerlegt und wie folgt gehandhabt:
- Wenn Gesichter erkannt werden und sprechen, berechnet es den Mittelpunkt der Lautsprecher und gibt den relativen Winkel zur Feder zurück.
- Wenn Gesichter erkannt werden und keines davon spricht, berechnet es auch den Mittelpunkt der Gesichter und gibt den Winkel entsprechend zurück.
- Wenn kein Gesicht erkannt wird, ändert das System die Sprecherverfolgungslogik von visuell auf Audio.
Die SPACS-Software befindet sich unter
Schritt 5: Software - Ton
Ton (JH)
Um die Quelle des eingehenden Schalls zu lokalisieren, haben wir zunächst versucht, den Zeitunterschied zwischen den beiden Mikrofonen zu nutzen. Aber es war nicht so genau wie erwartet, da die Abtastrate (~ 900 Hz) von Arduino Leopard, wo wir die Tonsignale getestet haben, langsam war, so dass es den Zeitunterschied zwischen 10 cm entfernten Mikrofonen nicht erfassen kann.
Wir haben den Plan geändert, um den Intensitätsunterschied zwischen den beiden Eingangstonsignalen zu verwenden. Als Ergebnis nimmt die Feder zwei Schallsignale und verarbeitet sie, um zu erkennen, woher das Geräusch kommt. Die Verarbeitung kann durch die folgenden Schritte beschrieben werden:
- Nehmen Sie die Eingänge von zwei Mikrofonen und subtrahieren Sie den Offset, um die Amplituden der Signale zu erhalten.
- Akkumulieren Sie die Absolutwerte der Amplituden pro MIC für 500 Tonabnehmer.
- Speichern Sie die Differenz der akkumulierten Werte in der Warteschlange mit 5 Slots.
- Gibt die Summe der Warteschlangen als endgültigen Differenzwert zurück.
- Vergleichen Sie den Endwert mit Schwellenwerten, um zu entscheiden, woher der Ton kommt.
Wir haben den Schwellenwert gefunden, indem wir den Endwert unter verschiedenen Umständen aufgetragen haben, einschließlich der Geräusche, die von links und rechts kommen. Zusätzlich zu den Schwellenwerten für den Endwert setzen wir in Schritt 2 noch einen Schwellenwert für den Mittelwert der akkumulierten Amplituden, um das Rauschen herauszufiltern.
Schritt 6: Software - Gesichts- und Sprecherkennung
Für die Gesichtserkennung haben wir ML Kit for Firebase von Google (https://firebase.google.com/docs/ml-kit) verwendet. ML Kit bietet die Gesichtserkennungs-API, die den Begrenzungsrahmen jedes Gesichts und seiner Orientierungspunkte zurückgibt, einschließlich Augen, Nase, Ohren, Wangen und verschiedene Punkte auf einem Mund. Sobald Gesichter erkannt werden, verfolgt die App die Mundbewegung, um festzustellen, ob die Person spricht. Wir verwenden einen einfachen schwellenwertbasierten Ansatz, der eine zuverlässige Leistung liefert. Wir haben uns die Tatsache zunutze gemacht, dass die Mundbewegung sowohl horizontal als auch vertikal größer wird, wenn eine Person spricht. Wir berechnen die vertikale und horizontale Entfernung der Mündung und berechnen die Standardabweichung für jede Entfernung. Die Entfernung wird auf die Größe des Gesichts normalisiert. Eine größere Standardabweichung zeigt das Sprechen an. Dieser Ansatz hat die Einschränkung, dass jede Aktivität, die die Mundbewegung beinhaltet, einschließlich Essen, Trinken oder Gähnen, als Sprechen erkannt werden kann. Aber es hat eine niedrige Falsch-Negativ-Rate.
Schritt 7: Software - Rotierender Motor
Die Motordrehung war aufgrund der Steuerung der Drehzahl nicht so einfach wie erwartet. Um die Geschwindigkeit zu steuern, deklarieren wir eine globale Zählervariable, die es dem Motor ermöglicht, sich nur zu drehen, wenn die Variable einen bestimmten Wert erreicht. Wir haben auch eine weitere globale Variable deklariert, die anzeigt, ob sich der Motor bewegt, um die Mikrofone zu informieren, damit das Geräusch von der Motordrehung vermieden werden kann.
Schritt 8: Zukünftige Verbesserungen
Eine der Einschränkungen besteht darin, dass der Motor bei bestimmten Winkeln wackelt. Es scheint, dass der Motor nicht stark genug ist, um das Drehmoment zu überwinden, das durch das Drehen des Smartphones erzeugt wird. Dies kann durch die Verwendung eines stärkeren Motors oder durch eine Anpassung der Position des Smartphones in Richtung des Drehzentrums behoben werden, um das Drehmoment zu reduzieren.
Die Audio-basierte Schallrichtungserkennung könnte durch ein ausgeklügelteres Verfahren verbessert werden. Wir möchten einen akustischen Beamforming-Ansatz ausprobieren, um die Richtung des einfallenden Schalls zu bestimmen. Wir haben es mit der Ankunftszeit der Audiosignale versucht. Die Abtastrate des Feather ist jedoch begrenzt, um den Zeitunterschied zu erkennen, wenn die Mikrofone nur etwa 10 cm entfernt sind.
Das letzte fehlende Stück dieses Prototyps ist die Usability-Evaluation. Eine vielversprechende Möglichkeit zur Evaluierung besteht darin, das System in die bestehende Videoanrufplattform zu integrieren und die Reaktionen der Benutzer zu beobachten. Diese Antworten werden dazu beitragen, das System zu verbessern und die nächste Iteration dieses Prototyps durchzuführen.
Empfohlen:
So bauen Sie ein Wifi-System, das die Beleuchtung und Heizung Ihres Aquariums steuert – wikiHow
So erstellen Sie ein Wifi-System, das die Beleuchtung und Heizung Ihres Aquariums steuert: Was macht es? Ein System, das Ihr Aquarium automatisch nach einem Zeitplan oder manuell mit einem Druckknopf oder einer Internetanfrage ein- / ausschaltet. Ein System, das die Wassertemperatur überwacht und E-Mails und Warnungen sendet, falls es unter
Serge-System 2: 4 Schritte
Serge System 2: Dies ist das zweite Panel, das ich gebaut habe. Es ist ein zusammengestückeltes System, das diese ursprüngliche Frontplatte hier verwendet hat, aber es ernsthaft vermasselt und meine 2 Monate Arbeit ausgeweidet hat. Dann fing ich an, verschiedene andere Module zusammenzurätseln, auf die ich im Laufe der Zeit gestoßen bin. Viele Neubearbeitungen a