Innehållsförteckning:

Speaker-Aware Camara System (SPACS): 8 steg
Speaker-Aware Camara System (SPACS): 8 steg

Video: Speaker-Aware Camara System (SPACS): 8 steg

Video: Speaker-Aware Camara System (SPACS): 8 steg
Video: Mobile Concert Stage Setup-SINOSWAN Gospel Truck for Church Crusade,Evangelism, Minister Mission 2024, November
Anonim
Image
Image
Hårdvara - 3D -utskrift
Hårdvara - 3D -utskrift

Tänk dig ett konferenssamtal där flera högtalare omger en kamera. Vi möter ofta där den begränsade betraktningsvinkeln på en kamera ofta misslyckas med att titta på personen som talar. Denna maskinvarubegränsning försämrar användarupplevelsen avsevärt. Om kameran kan titta på aktiva högtalare, skulle den avlägsna publiken vara mer engagerad i en konversation under samtalet. I detta projekt föreslår vi ett (prototyp) kamerasystem som detekterar och följer den aktiva högtalaren genom att vrida kameran mot högtalaren. Systemet använder både visuellt och ljudbaserat tillvägagångssätt. När ansikten detekteras från kameran bestämmer den personen som talar och beräknar vinkeln att rotera. När ansikten inte detekteras i den aktuella vinkeln söker systemet efter högtalaren baserat på riktningen för ankomstljudsignalerna.

Steg 1: Material

Adafruit Feather nRF52840 Express X 1

www.adafruit.com/product/4062

Electret mikrofonförstärkare - MAX4466 X 2

www.adafruit.com/product/1063

Micro Servo Motor X 1

www.adafruit.com/product/169

Android smartphone X 1

Steg 2: Hårdvara - 3D -utskrift

Hårdvara - 3D -utskrift
Hårdvara - 3D -utskrift
Hårdvara - 3D -utskrift
Hårdvara - 3D -utskrift

För snabb implementering bestämde vi oss för att 3D-skriva ut de kapslingar vi behöver. Det finns två huvudkomponenter för kapslingar; en skivspelare och ett smarttelefonstativ. Vi använde skivspelaren från den här länken (https://www.thingiverse.com/thing:141287), där den har ett Arduino -fodral längst ner och ett roterande bord som kan anslutas med en servomotor. Vi använde ett smarttelefonstativ från den här länken (https://www.thingiverse.com/thing:2673050), som är vikbar och vinkeljusterbar så att vi kan kalibrera vinkeln bekvämt. Bilden nedan visar de 3D -tryckta delarna monterade ihop.

Steg 3: Hårdvara - elektroniska komponenter

Hårdvara - Elektroniska komponenter
Hårdvara - Elektroniska komponenter
Hårdvara - Elektroniska komponenter
Hårdvara - Elektroniska komponenter

Det finns fyra trådbundna komponenter; Adafruit Feather, två mikrofoner och en motor. För den kompakta förpackningen lödde vi (gråa cirklar) trådarna utan att använda en brödbräda. Nedan beskrivs kretsschemat och den faktiska artefakten.

Steg 4: Programvara

Vårt system använder främst den visuella informationen från ansiktsigenkänningen för att följa högtalaren eftersom den är mer exakt. För att fjädern ska få visuell information från Android -appen använder vi Bluetooth Low Energy som huvudkommunikationsmetod.

När något ansikte detekteras beräknar appen vinkeln som motorn behöver rotera för att fokusera högtalaren i bildens mitt. Vi sönderdelade de möjliga scenarierna och hanterade så här:

  1. Om ansikte / ansikten detekteras och talar beräknar det mittpunkten för högtalarna och returnerar den relativa vinkeln till fjädern.
  2. Om ansikte / ansikten upptäcks men ingen av dem talar beräknar det också mittpunkten för ansiktena och returnerar vinkeln därefter.
  3. Om något ansikte inte upptäcks ändrar systemet högtalarspårningslogiken från det visuella till ljudet.

SPACS-programvaran finns på

Steg 5: Programvara - Ljud

Programvara - Ljud
Programvara - Ljud

Ljud (YH)

För att hitta källan till inkommande ljud försökte vi först använda tidsskillnaden mellan de två mikrofonerna. Men det var inte exakt så mycket som vi förväntade oss eftersom samplingsfrekvensen (~ 900Hz) för Arduino Leopard, där vi testade ljudsignalerna, var långsam så att den inte kan ta upp tidsskillnaden mellan 10 cm-separata mikrofoner.

Vi ändrade planen för att använda intensitetsskillnaden mellan de två ingångssignalerna. Som ett resultat tar fjädern två ljudsignaler och bearbetar dem för att upptäcka var ljudet kom ifrån. Behandlingen kan beskrivas med följande steg:

  1. Ta ingångarna från två mikrofoner och subtrahera förskjutningen för att få signalernas amplituder.
  2. Ackumulera de absoluta värdena för amplituderna per MIC för 500 pickuper.
  3. Spara skillnaden mellan de ackumulerade värdena i kön med 5 platser.
  4. Returnera summan av köerna som det slutliga skillnadsvärdet.
  5. Jämför slutvärdet med trösklar för att avgöra var ljudet kommer ifrån.

Vi hittade tröskeln genom att rita det slutliga värdet under olika omständigheter, inklusive ljud som kommer från vänster och höger. Utöver trösklarna för det slutliga värdet sätter vi också en annan tröskel för medelvärdet för de ackumulerade amplituderna i steg 2 för att filtrera bort ljuden.

Steg 6: Programvara - Ansikts- och talande upptäckt

För ansiktsigenkänning använde vi ML Kit för Firebase som släpptes av Google (https://firebase.google.com/docs/ml-kit). ML Kit tillhandahåller ansiktsdetekterings -API som returnerar gränsytan för varje ansikte och dess landmärken, inklusive ögon, näsa, öron, kinder och olika punkter på en mun. När ansikten upptäcks spårar appen munrörelsen för att avgöra om personen talar. Vi använder en enkel tröskelbaserad metod som ger tillförlitlig prestanda. Vi utnyttjade det faktum att munrörelsen blir större både horisontellt och vertikalt när en person talar. Vi beräknar det vertikala och horisontella avståndet för munnen och beräknar standardavvikelsen för varje avstånd. Avståndet normaliseras till ansiktsstorleken. Större standardavvikelse indikerar tal. Detta tillvägagångssätt har begränsningen att varje aktivitet involverar munrörelsen, inklusive att äta, dricka eller gäspa, kan kännas igen som talande. Men den har en låg falsk negativ hastighet.

Steg 7: Programvara - roterande motor

Programvara - Roterande motor
Programvara - Roterande motor

Motorrotationen var inte så rak som vi förväntade oss på grund av kontrollen av rotationshastigheten. För att kontrollera hastigheten deklarerar vi en global motvariabel så att motorn bara kan rotera när variabeln når ett visst värde. Vi förklarade också en annan global variabel som indikerar om motorn rör sig för att meddela mikrofoner så att det kan undvika ljud från motorrotationen.

Steg 8: Framtida förbättringar

En av begränsningarna är att motorn blir vinglig i vissa vinklar. Det verkar som om motorn inte är tillräckligt kraftfull för att övervinna det vridmoment som genereras genom att rotera smarttelefonen. Det kan lösas genom att använda en kraftfullare motor eller justera smarttelefonens position mot rotationscentrum för att minska vridmomentet.

Ljudbaserad detektering av ljudriktning kan förbättras med en mer sofistikerad metod. Vi vill prova ett akustiskt strålformande tillvägagångssätt för att bestämma riktningen för det inkommande ljudet. Vi har försökt med ankomsttiden för ljudsignalerna. Men fjäderns samplingshastighet är begränsad för att upptäcka tidsskillnaden när mikrofonerna bara är cirka 10 cm bort.

Den sista saknade delen av denna prototyp är användbarhetsbedömningen. Ett lovande sätt att utvärdera är att integrera systemet med den befintliga videosamtalsplattformen och observera användarens svar. Dessa svar kommer att hjälpa till att förbättra systemet och göra nästa iteration av denna prototyp.

Rekommenderad: