Sommario:

Sistema Camara con riconoscimento dell'altoparlante (SPACS): 8 passaggi
Sistema Camara con riconoscimento dell'altoparlante (SPACS): 8 passaggi

Video: Sistema Camara con riconoscimento dell'altoparlante (SPACS): 8 passaggi

Video: Sistema Camara con riconoscimento dell'altoparlante (SPACS): 8 passaggi
Video: Quando provi a fare un complimento a una ragazza... 2024, Dicembre
Anonim
Image
Image
Hardware - Stampa 3D
Hardware - Stampa 3D

Immagina una teleconferenza in cui più oratori circondano una telecamera. Ci imbattiamo spesso in punti in cui l'angolo di visione limitato di una telecamera spesso non riesce a fissare la persona che parla. Questa limitazione hardware degrada notevolmente l'esperienza dell'utente. Se la telecamera può guardare gli oratori attivi, il pubblico remoto sarebbe più coinvolto in una conversazione durante la chiamata. In questo progetto, proponiamo un sistema di telecamere (prototipo) che rileva e segue l'oratore attivo ruotando la fotocamera verso l'altoparlante. Il sistema utilizza un approccio sia visivo che audio. Quando vengono rilevati volti dalla fotocamera, determina la persona che parla e calcola l'angolo da ruotare. Quando i volti non vengono rilevati all'angolazione corrente, il sistema cerca l'altoparlante in base alla direzione dei segnali audio di arrivo.

Passaggio 1: materiali

Adafruit Feather nRF52840 Express X 1

www.adafruit.com/product/4062

Amplificatore per microfono elettrete - MAX4466 X 2

www.adafruit.com/product/1063

Micro Servomotore X 1

www.adafruit.com/product/169

Smartphone Android X 1

Fase 2: Hardware - Stampa 3D

Hardware - Stampa 3D
Hardware - Stampa 3D
Hardware - Stampa 3D
Hardware - Stampa 3D

Per una rapida implementazione, abbiamo deciso di stampare in 3D le custodie di cui abbiamo bisogno. Ci sono due componenti principali per le custodie; un giradischi e un supporto per smartphone. Abbiamo usato il giradischi da questo link (https://www.thingiverse.com/thing:141287), dove fornisce la custodia Arduino nella parte inferiore e una tavola rotante che può essere collegata a un servomotore. Abbiamo utilizzato un supporto per smartphone da questo link (https://www.thingiverse.com/thing:2673050), che è pieghevole e regolabile in angolazione in modo tale da consentirci di calibrare comodamente l'angolo. La figura seguente mostra le parti stampate in 3D assemblate insieme.

Passaggio 3: hardware - componenti elettronici

Hardware - Componenti elettronici
Hardware - Componenti elettronici
Hardware - Componenti elettronici
Hardware - Componenti elettronici

Ci sono quattro componenti cablati; Adafruit Feather, due microfoni e un motore. Per la confezione compatta, abbiamo saldato (cerchi grigi) i fili senza utilizzare una breadboard. Di seguito viene descritto lo schema del circuito e l'artefatto effettivo.

Passaggio 4: software

Il nostro sistema utilizza principalmente le informazioni visive del riconoscimento facciale per seguire l'oratore in quanto è più accurato. Affinché Feather possa ottenere informazioni visive dall'app Android, utilizziamo il Bluetooth Low Energy come metodo di comunicazione principale.

Quando viene rilevato un volto, l'app calcola l'angolo che il motore deve ruotare per mettere a fuoco l'altoparlante al centro dell'inquadratura. Abbiamo scomposto i possibili scenari e gestito come segue:

  1. Se vengono rilevati volti che parlano, calcola il punto medio degli altoparlanti e restituisce l'angolo relativo alla piuma.
  2. Se viene rilevata una o più facce e nessuna di esse sta parlando, calcola anche il punto medio delle facce e restituisce l'angolo di conseguenza.
  3. Se non viene rilevato alcun volto, il sistema cambia la logica di tracciamento dell'altoparlante da visiva a audio.

Il software SPACS si trova su

Passaggio 5: Software - Audio

Software - Suono
Software - Suono

Suono (YH)

Per individuare la sorgente del suono in ingresso, abbiamo prima provato a utilizzare la differenza di tempo tra i due microfoni. Ma non era accurato quanto ci aspettavamo poiché la frequenza di campionamento (~900Hz) di Arduino Leopard, dove abbiamo testato i segnali sonori, era lenta in modo tale da non poter rilevare la differenza di tempo tra i microfoni a 10 cm di distanza.

Abbiamo cambiato il piano per utilizzare la differenza di intensità tra i due segnali audio in ingresso. Di conseguenza, la piuma prende due segnali sonori e li elabora per rilevare da dove proveniva il suono. Il trattamento può essere descritto dai seguenti passaggi:

  1. Prendi gli ingressi da due microfoni e sottrai l'offset per ottenere le ampiezze dei segnali.
  2. Accumula i valori assoluti delle ampiezze per MIC per 500 pickup.
  3. Salva la differenza dei valori accumulati nella coda a 5 slot.
  4. Restituisce la somma delle code come valore della differenza finale.
  5. Confronta il valore finale con le soglie per decidere da dove proviene il suono.

Abbiamo trovato la soglia tracciando il valore finale in varie circostanze compreso il suono proveniente da sinistra e da destra. Oltre alle soglie per il valore finale, impostiamo anche un'altra soglia per la media delle ampiezze accumulate nel passaggio 2 per filtrare i rumori.

Passaggio 6: Software - Rilevamento del volto e del parlato

Per il riconoscimento facciale, abbiamo utilizzato ML Kit per Firebase rilasciato da Google (https://firebase.google.com/docs/ml-kit). ML Kit fornisce l'API di rilevamento dei volti che restituisce il riquadro di delimitazione di ciascun volto e i relativi punti di riferimento, inclusi occhi, naso, orecchie, guance e diversi punti della bocca. Una volta rilevati i volti, l'app tiene traccia del movimento della bocca per determinare se la persona sta parlando. Usiamo un semplice approccio basato sulla soglia che produce prestazioni affidabili. Abbiamo sfruttato il fatto che il movimento della bocca diventa più ampio sia in orizzontale che in verticale quando una persona parla. Calcoliamo la distanza verticale e orizzontale della bocca e calcoliamo la deviazione standard per ciascuna distanza. La distanza è normalizzata alla dimensione del viso. Una deviazione standard maggiore indica il parlare. Questo approccio ha il limite che ogni attività che coinvolge il movimento della bocca, incluso mangiare, bere o sbadigliare, può essere riconosciuta come parlare. Ma ha un basso tasso di falsi negativi.

Passaggio 7: Software - Motore rotante

Software - Motore rotante
Software - Motore rotante

La rotazione del motore non è stata così semplice come ci aspettavamo a causa del controllo della velocità di rotazione. Per controllare la velocità, dichiariamo una variabile contatore globale tale che permetta al motore di girare solo quando la variabile raggiunge un certo valore. Abbiamo anche dichiarato un'altra variabile globale che indica se il motore si sta muovendo per far sapere ai microfoni in modo che possa evitare il suono proveniente dalla rotazione del motore.

Passaggio 8: miglioramenti futuri

Uno dei limiti è che il motore oscilla a determinate angolazioni. Sembra che il motore non sia abbastanza potente per vincere la coppia generata ruotando lo smartphone. Può essere risolto utilizzando un motore più potente o regolando la posizione dello smartphone verso il centro di rotazione per ridurre la coppia.

Il rilevamento della direzione del suono basato sull'audio potrebbe essere migliorato con un metodo più sofisticato. Vorremmo provare un approccio di beamforming acustico per determinare la direzione del suono in ingresso. Abbiamo provato con l'orario di arrivo dei segnali audio. Tuttavia, la frequenza di campionamento del Feather è limitata per rilevare la differenza di tempo quando i microfoni sono solo a circa 10 cm di distanza.

L'ultimo pezzo mancante di questo prototipo è la valutazione dell'usabilità. Un modo promettente per valutare è l'integrazione del sistema con la piattaforma di videochiamata esistente e osservare le risposte degli utenti. Queste risposte aiuteranno a migliorare il sistema ea realizzare la prossima iterazione di questo prototipo.

Consigliato: