Sommario:
- Passaggio 1: materiali
- Fase 2: Hardware - Stampa 3D
- Passaggio 3: hardware - componenti elettronici
- Passaggio 4: software
- Passaggio 5: Software - Audio
- Passaggio 6: Software - Rilevamento del volto e del parlato
- Passaggio 7: Software - Motore rotante
- Passaggio 8: miglioramenti futuri
Video: Sistema Camara con riconoscimento dell'altoparlante (SPACS): 8 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:02
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
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
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:
- Se vengono rilevati volti che parlano, calcola il punto medio degli altoparlanti e restituisce l'angolo relativo alla piuma.
- 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.
- 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
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:
- Prendi gli ingressi da due microfoni e sottrai l'offset per ottenere le ampiezze dei segnali.
- Accumula i valori assoluti delle ampiezze per MIC per 500 pickup.
- Salva la differenza dei valori accumulati nella coda a 5 slot.
- Restituisce la somma delle code come valore della differenza finale.
- 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
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:
Abellcadabra (Sistema di blocco porta con riconoscimento facciale): 9 passaggi
Abellcadabra (Sistema di blocco della porta di riconoscimento facciale): Sdraiato durante la quarantena, ho cercato di trovare un modo per ammazzare il tempo costruendo il riconoscimento facciale per la porta di casa. L'ho chiamato Abellcadabra - che è una combinazione tra Abracadabra, una frase magica con campanello che prendo solo il campanello. LOL
Sistema di riconoscimento ed estinzione incendi basato sull'elaborazione delle immagini: 3 passaggi
Sistema di riconoscimento ed estinzione incendi basato sull'elaborazione delle immagini: Ciao amici, questo è un sistema di rilevamento ed estinzione incendi basato sull'elaborazione delle immagini che utilizza Arduino
Come convertire qualsiasi ALTOPARLANTE in ALTOPARLANTE BLUETOOTH: 5 passaggi
Come convertire qualsiasi SPEAKER in BLUETOOTH SPEAKER: Se hai un vecchio sistema home theater come me, hai scoperto che sul tuo sistema manca un'opzione di connettività molto popolare, chiamata Bluetooth. Senza questa struttura, devi affrontare il pasticcio della normale connessione AUX e, naturalmente, se tu
Sistema di sicurezza con riconoscimento facciale per un frigorifero con Raspberry Pi: 7 passaggi (con immagini)
Sistema di sicurezza a riconoscimento facciale per frigorifero con Raspberry Pi: Navigando in internet ho scoperto che i prezzi dei sistemi di sicurezza variano da 150$ a 600$ e oltre, ma non tutte le soluzioni (anche quelle molto costose) sono integrabili con altre strumenti intelligenti a casa tua! Ad esempio, non è possibile impostare
Aggiungere un microfono al sistema GPS Omnitech per il riconoscimento vocale: 4 passaggi
Aggiunta di un microfono al sistema GPS Omnitech per il riconoscimento vocale: mentre armeggiavo con la mia unità ho trovato un modo semplice e veloce per aggiungere un microfono a questa unità non udenti. Con un microfono, potrai sfruttare il riconoscimento vocale per la navigazione. Implica una piccola quantità di saldatura, ma quasi mai