Spisu treści:

System Camara z obsługą głośników (SPACS): 8 kroków
System Camara z obsługą głośników (SPACS): 8 kroków

Wideo: System Camara z obsługą głośników (SPACS): 8 kroków

Wideo: System Camara z obsługą głośników (SPACS): 8 kroków
Wideo: Instrukcja do kamer ICSee, Połączenie kamer po Wi-Fi i po kablu. Obsługa na telefonie oraz PC 2024, Listopad
Anonim
Image
Image
Sprzęt - Drukowanie 3D
Sprzęt - Drukowanie 3D

Wyobraź sobie połączenie konferencyjne, w którym wielu głośników otacza jedną kamerę. Często spotykamy się, gdy ograniczony kąt widzenia kamery często nie pozwala spojrzeć na osobę, która mówi. To ograniczenie sprzętowe znacznie pogarsza wrażenia użytkownika. Jeśli kamera może patrzeć na aktywnych mówców, zdalna publiczność byłaby bardziej zaangażowana w rozmowę podczas rozmowy. W tym projekcie proponujemy (prototypowy) system kamer, który wykrywa i podąża za aktywnym mówcą, obracając kamerę w kierunku mówcy. System wykorzystuje zarówno podejście wizualne, jak i dźwiękowe. Gdy aparat wykryje twarze, określa osobę, która mówi, i oblicza kąt obrotu. Gdy twarze nie zostaną wykryte pod aktualnym kątem, system wyszuka mówcę na podstawie kierunku nadchodzących sygnałów dźwiękowych.

Krok 1: Materiały

Pióro Adafruit nRF52840 Express X 1

www.adafruit.com/product/4062

Elektretowy wzmacniacz mikrofonowy - MAX4466 X 2

www.adafruit.com/product/1063

Mikrosilnik serwo X 1

www.adafruit.com/product/169

Smartfon z Androidem X 1

Krok 2: Sprzęt - Drukowanie 3D

Sprzęt - Drukowanie 3D
Sprzęt - Drukowanie 3D
Sprzęt - Drukowanie 3D
Sprzęt - Drukowanie 3D

W celu szybkiej realizacji zdecydowaliśmy się na wydrukowanie w 3D potrzebnych nam obudów. Istnieją dwa główne komponenty obudów; gramofon i podstawka pod smartfona. Wykorzystaliśmy gramofon z tego linku (https://www.thingiverse.com/thing:141287), gdzie na spodzie znajduje się obudowa Arduino i stół obrotowy, który można połączyć z serwomotorem. Użyliśmy podstawki do smartfona z tego linku (https://www.thingiverse.com/thing:2673050), która jest składana i regulowana pod kątem, dzięki czemu możemy wygodnie skalibrować kąt. Poniższy rysunek przedstawia zmontowane części wydrukowane w 3D.

Krok 3: Sprzęt - komponenty elektroniczne

Sprzęt - komponenty elektroniczne
Sprzęt - komponenty elektroniczne
Sprzęt - komponenty elektroniczne
Sprzęt - komponenty elektroniczne

Istnieją cztery elementy przewodowe; Adafruit Feather, dwa mikrofony i silnik. Do kompaktowego opakowania przylutowaliśmy (szare kółka) przewody bez użycia płytki stykowej. Poniżej opisano schemat obwodu i rzeczywisty artefakt.

Krok 4: Oprogramowanie

Nasz system wykorzystuje przede wszystkim informacje wizualne z rozpoznawania twarzy, aby podążać za mówcą, ponieważ jest to dokładniejsze. Aby Feather pobierał informacje wizualne z aplikacji na Androida, jako główną metodę komunikacji używamy Bluetooth Low Energy.

Po wykryciu dowolnej twarzy aplikacja oblicza kąt, o który silnik musi się obrócić, aby ustawić ostrość głośnika na środku kadru. Zdekomponowaliśmy możliwe scenariusze i postępowaliśmy w następujący sposób:

  1. Jeśli twarze zostaną wykryte i mówią, oblicza środek głośników i zwraca względny kąt względem Pióra.
  2. Jeśli wykryte zostaną twarze, ale żadna z nich nie mówi, oblicza również punkt środkowy twarzy i odpowiednio zwraca kąt.
  3. Jeśli żadna twarz nie zostanie wykryta, system zmienia logikę śledzenia mówcy z wizualnej na dźwiękową.

Oprogramowanie SPACS znajduje się pod adresem

Krok 5: Oprogramowanie - dźwięk

Oprogramowanie - Dźwięk
Oprogramowanie - Dźwięk

Dźwięk (YH)

Aby zlokalizować źródło przychodzącego dźwięku, najpierw spróbowaliśmy wykorzystać różnicę czasu między dwoma mikrofonami. Nie było to jednak tak dokładne, jak się spodziewaliśmy, ponieważ częstotliwość próbkowania (~900 Hz) Arduino Leopard, w której testowaliśmy sygnały dźwiękowe, była niska, tak że nie mógł wychwycić różnicy czasu między mikrofonami oddalonymi od siebie o 10 cm.

Zmieniliśmy plan wykorzystania różnicy intensywności między dwoma wejściowymi sygnałami dźwiękowymi. W rezultacie pióro odbiera dwa sygnały dźwiękowe i przetwarza je, aby wykryć, skąd dochodzi dźwięk. Przetwarzanie można opisać za pomocą następujących kroków:

  1. Weź wejścia z dwóch mikrofonów i odejmij przesunięcie, aby uzyskać amplitudy sygnałów.
  2. Zgromadź wartości bezwzględne amplitud na MIC dla 500 przetworników.
  3. Zapisz różnicę skumulowanych wartości w kolejce posiadającej 5 slotów.
  4. Zwróć sumę kolejek jako ostateczną wartość różnicy.
  5. Porównaj ostateczną wartość z progami, aby zdecydować, skąd pochodzi dźwięk.

Ustaliliśmy próg, wykreślając ostateczną wartość w różnych okolicznościach, w tym dźwięk dochodzący z lewej i prawej strony. Oprócz progów dla wartości końcowej ustawiliśmy również inny próg dla średniej skumulowanych amplitud w kroku 2, aby odfiltrować szumy.

Krok 6: Oprogramowanie - wykrywanie twarzy i mowy

Do rozpoznawania twarzy wykorzystaliśmy ML Kit for Firebase wydany przez Google (https://firebase.google.com/docs/ml-kit). ML Kit zapewnia interfejs API do wykrywania twarzy, który zwraca obwiednię każdej twarzy i jej punkty orientacyjne, w tym oczy, nos, uszy, policzki i różne punkty na ustach. Po wykryciu twarzy aplikacja śledzi ruch ust, aby określić, czy dana osoba mówi. Stosujemy proste podejście oparte na progach, które zapewnia niezawodną wydajność. Wykorzystaliśmy fakt, że ruch ust zwiększa się zarówno w poziomie, jak iw pionie, gdy osoba mówi. Obliczamy odległość pionową i poziomą ust i obliczamy odchylenie standardowe dla każdej odległości. Odległość jest znormalizowana do wielkości twarzy. Większe odchylenie standardowe oznacza mówienie. Takie podejście ma ograniczenie polegające na tym, że każda czynność związana z ruchem ust, w tym jedzeniem, piciem lub ziewaniem, może być rozpoznana jako mówienie. Ale ma niski wskaźnik wyników fałszywie ujemnych.

Krok 7: Oprogramowanie - silnik obrotowy

Oprogramowanie - silnik obrotowy
Oprogramowanie - silnik obrotowy

Obroty silnika nie były tak proste, jak się spodziewaliśmy, ze względu na kontrolę prędkości obrotowej. Aby kontrolować prędkość, deklarujemy zmienną globalnego licznika, która pozwala silnikowi obracać się tylko wtedy, gdy zmienna osiągnie określoną wartość. Zadeklarowaliśmy również inną zmienną globalną wskazującą, czy silnik się porusza, aby poinformować mikrofony, aby uniknąć dźwięku pochodzącego z obracania się silnika.

Krok 8: Przyszłe ulepszenia

Jednym z ograniczeń jest to, że silnik chybocze się pod pewnymi kątami. Wygląda na to, że silnik nie jest wystarczająco mocny, aby pokonać moment obrotowy generowany przez obracanie smartfona. Można to rozwiązać, stosując mocniejszy silnik lub dostosowując pozycję smartfona do środka obrotu, aby zmniejszyć moment obrotowy.

Wykrywanie kierunku dźwięku w oparciu o dźwięk można ulepszyć za pomocą bardziej wyrafinowanej metody. Chcielibyśmy wypróbować metodę kształtowania wiązki akustycznej, aby określić kierunek dochodzącego dźwięku. Próbowaliśmy z czasem nadejścia sygnałów audio. Jednak częstotliwość próbkowania Pióra jest ograniczona do wykrycia różnicy czasu, gdy mikrofony są oddalone tylko o około 10 cm.

Ostatnim brakującym elementem tego prototypu jest ocena użyteczności. Obiecującym sposobem oceny jest integracja systemu z istniejącą platformą wideorozmów i obserwacja reakcji użytkowników. Te odpowiedzi pomogą ulepszyć system i wykonać kolejną iterację tego prototypu.

Zalecana: