Cuprins:

Sistem Camara conștient de difuzor (SPACS): 8 pași
Sistem Camara conștient de difuzor (SPACS): 8 pași

Video: Sistem Camara conștient de difuzor (SPACS): 8 pași

Video: Sistem Camara conștient de difuzor (SPACS): 8 pași
Video: - Cum sa iti îmbunătățești sistemul audio - Tips & Triks 2024, Noiembrie
Anonim
Image
Image
Hardware - Imprimare 3D
Hardware - Imprimare 3D

Imaginați-vă o conferință în care mai multe difuzoare înconjoară o cameră. Ne întâlnim adesea în cazul în care unghiul limitat de vedere al unei camere nu reușește adesea să privească persoana care vorbește. Această limitare hardware degradează semnificativ experiența utilizatorului. Dacă camera poate privi difuzoarele active, publicul aflat la distanță ar fi mai implicat într-o conversație în timpul apelului. În acest proiect, propunem un sistem de camere (prototip) care detectează și urmărește difuzorul activ prin rotirea camerei spre difuzor. Sistemul folosește atât abordarea vizuală, cât și cea audio. Când fețele sunt detectate din cameră, aceasta determină persoana care vorbește și calculează unghiul de rotit. Când fețele nu sunt detectate la unghiul curent, sistemul caută difuzorul pe baza direcției semnalelor audio de sosire.

Pasul 1: Materiale

Adafruit Feather nRF52840 Express X 1

www.adafruit.com/product/4062

Amplificator de microfon Electret - MAX4466 X 2

www.adafruit.com/product/1063

Micro servomotor X 1

www.adafruit.com/product/169

Smartphone Android X 1

Pasul 2: Hardware - Imprimare 3D

Hardware - Imprimare 3D
Hardware - Imprimare 3D
Hardware - Imprimare 3D
Hardware - Imprimare 3D

Pentru o implementare rapidă, am decis să imprimăm 3D carcasele de care avem nevoie. Există două componente principale pentru carcase; un platan rotativ și un suport pentru smartphone. Am folosit platanul din acest link (https://www.thingiverse.com/thing:141287), unde oferă carcasa Arduino în partea de jos și o masă rotativă care poate fi conectată cu un servomotor. Am folosit un suport pentru smartphone de pe acest link (https://www.thingiverse.com/thing:2673050), care este pliabil și reglabil în unghi, astfel încât să ne permită calibrarea unghiului în mod convenabil. Figura de mai jos prezintă părțile imprimate 3D asamblate împreună.

Pasul 3: Hardware - Componente electronice

Hardware - Componente electronice
Hardware - Componente electronice
Hardware - Componente electronice
Hardware - Componente electronice

Există patru componente cablate; Adafruit Feather, două microfoane și un motor. Pentru ambalajul compact, am lipit firele (cercuri gri) fără a utiliza o placă de tratare. Mai jos descrie schema de circuit și artefactul real.

Pasul 4: Software

Sistemul nostru folosește în primul rând informațiile vizuale din recunoașterea feței pentru a urmări difuzorul, deoarece este mai precis. Pentru ca Feather să obțină informații vizuale din aplicația Android, folosim Bluetooth Low Energy ca metodă principală de comunicare.

Când este detectată orice față, aplicația calculează unghiul pe care motorul trebuie să îl rotească pentru a focaliza difuzorul în centrul cadrului. Am descompus scenariile posibile și ne-am ocupat de următoarele:

  1. Dacă fața (fețele) este detectată și vorbită, calculează punctul mediu al difuzoarelor și returnează unghiul relativ la Pene.
  2. Dacă sunt detectate fețe, dar niciuna nu vorbește, se calculează și punctul de mijloc al fețelor și returnează unghiul în consecință.
  3. Dacă nicio față nu este detectată, sistemul schimbă logica de urmărire a difuzoarelor de la vizual la audio.

Software-ul SPACS este situat la

Pasul 5: Software - Sunet

Software - Sunet
Software - Sunet

Sunet (YH)

Pentru a localiza sursa sunetului primit, am încercat mai întâi să folosim diferența de timp dintre cele două microfoane. Dar nu a fost exact atât cât ne-am așteptat, deoarece rata de eșantionare (~ 900Hz) a Arduino Leopard, unde am testat semnalele sonore, a fost lentă, astfel încât să nu poată prelua diferența de timp dintre microfoanele separate la 10 cm.

Am schimbat planul pentru a utiliza diferența de intensitate dintre cele două semnale sonore de intrare. Ca urmare, penei ia două semnale sonore și le procesează pentru a detecta de unde provenea sunetul. Prelucrarea poate fi descrisă prin următorii pași:

  1. Luați intrările de la două microfoane și scădeți offsetul pentru a obține amplitudinile semnalelor.
  2. Acumulați valorile absolute ale amplitudinilor per MIC pentru 500 de pickup-uri.
  3. Salvați diferența valorilor acumulate în coada cu 5 sloturi.
  4. Returnează suma cozilor ca valoare diferență finală.
  5. Comparați valoarea finală cu pragurile pentru a decide de unde provine sunetul.

Am găsit pragul trasând valoarea finală în diferite circumstanțe, inclusiv sunetul provenit din stânga și din dreapta. În plus față de pragurile pentru valoarea finală, am stabilit și un alt prag pentru media amplitudinilor acumulate în pasul 2 pentru a filtra zgomotele.

Pasul 6: Software - Detectarea feței și a vorbirii

Pentru recunoașterea feței, am folosit ML Kit pentru Firebase lansat de Google (https://firebase.google.com/docs/ml-kit). ML Kit oferă API-ul de detectare a feței care returnează cutia de delimitare a fiecărei fețe și reperele sale, inclusiv ochi, nas, urechi, obraji și diferite puncte de pe gură. Odată detectate fețele, aplicația urmărește mișcarea gurii pentru a determina dacă persoana vorbește. Folosim o abordare simplă bazată pe prag, care oferă performanțe fiabile. Am valorificat faptul că mișcarea gurii crește atât pe orizontală, cât și pe verticală atunci când o persoană vorbește. Calculăm distanța verticală și orizontală a gurii și calculăm abaterea standard pentru fiecare distanță. Distanța este normalizată la dimensiunea feței. Abaterea standard mai mare indică vorbirea. Această abordare are limitarea faptului că fiecare activitate implică mișcarea gurii, inclusiv mâncarea, băutura sau căscatul, pot fi recunoscute ca vorbind. Dar are o rată fals falsă negativă.

Pasul 7: Software - Motor rotativ

Software - Motor rotativ
Software - Motor rotativ

Rotația motorului nu a fost atât de simplă pe cât ne așteptam datorită controlului vitezei de rotație. Pentru a controla viteza, declarăm o variabilă globală de contor care permite motorului să se întoarcă numai atunci când variabila atinge o anumită valoare. De asemenea, am declarat o altă variabilă globală care indică dacă motorul se mișcă pentru a anunța microfoanele, astfel încât să poată evita sunetul provenit de la rotația motorului.

Pasul 8: Îmbunătățiri viitoare

Una dintre limitări este că motorul devine oscilant în anumite unghiuri. Se pare că motorul nu este suficient de puternic pentru a depăși cuplul generat de rotirea smartphone-ului. Poate fi rezolvat folosind un motor mai puternic sau reglând poziția smartphone-ului spre centrul rotației pentru a reduce cuplul.

Detectarea direcției sunetului bazată pe audio ar putea fi îmbunătățită cu o metodă mai sofisticată. Am dori să încercăm o abordare acustică de formare a fasciculului pentru a determina direcția sunetului primit. Am încercat cu momentul sosirii semnalelor audio. Dar, rata de eșantionare a Penei este limitată pentru a detecta diferența de timp când microfoanele sunt la doar 10 cm distanță.

Ultima piesă lipsă a acestui prototip este evaluarea utilizabilității. O modalitate promițătoare de evaluare este integrarea sistemului cu platforma de apel video existentă și observarea răspunsurilor utilizatorilor. Aceste răspunsuri vor ajuta la îmbunătățirea sistemului și la următoarea iterație a acestui prototip.

Recomandat: