Innholdsfortegnelse:

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

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

Video: Speaker-Aware Camara System (SPACS): 8 trinn
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, November
Anonim
Image
Image
Maskinvare - 3D -utskrift
Maskinvare - 3D -utskrift

Tenk deg en konferansesamtale der flere høyttalere omgir ett kamera. Vi møter ofte der den begrensede visningsvinkelen til et kamera ofte ikke klarer å se på personen som snakker. Denne maskinvarebegrensningen forringer brukeropplevelsen betydelig. Hvis kameraet kan se på aktive høyttalere, ville det eksterne publikummet være mer engasjert i en samtale under samtalen. I dette prosjektet foreslår vi et (prototype) kamerasystem som oppdager og følger den aktive høyttaleren ved å snu kameraet mot høyttaleren. Systemet bruker både visuell og lydbasert tilnærming. Når ansikter oppdages fra kameraet, bestemmer det personen som snakker og beregner vinkelen som skal roteres. Når ansiktene ikke blir oppdaget i den nåværende vinkelen, søker systemet etter høyttaleren basert på retningen for ankomstlydsignalene.

Trinn 1: Materialer

Adafruit Feather nRF52840 Express X 1

www.adafruit.com/product/4062

Electret mikrofonforsterker - MAX4466 X 2

www.adafruit.com/product/1063

Micro Servo Motor X 1

www.adafruit.com/product/169

Android -smarttelefon X 1

Trinn 2: Maskinvare - 3D -utskrift

Maskinvare - 3D -utskrift
Maskinvare - 3D -utskrift
Maskinvare - 3D -utskrift
Maskinvare - 3D -utskrift

For rask implementering bestemte vi oss for å 3D-skrive ut kabinettene vi trenger. Det er to hovedkomponenter for skap; en platespiller og et smarttelefonstativ. Vi brukte dreieskiven fra denne lenken (https://www.thingiverse.com/thing:141287), der den gir Arduino -kabinett nederst og et roterende bord som kan kobles til med en servomotor. Vi brukte et smarttelefonstativ fra denne lenken (https://www.thingiverse.com/thing:2673050), som er sammenleggbar og vinkeljusterbar slik at den lar oss enkelt kalibrere vinkelen. Figuren nedenfor viser 3D -trykte deler satt sammen.

Trinn 3: Maskinvare - elektroniske komponenter

Maskinvare - Elektroniske komponenter
Maskinvare - Elektroniske komponenter
Maskinvare - Elektroniske komponenter
Maskinvare - Elektroniske komponenter

Det er fire kablede komponenter; Adafruit Feather, to mikrofoner og en motor. For den kompakte emballasjen loddet vi (grå sirkler) ledningene uten å bruke et brødbrett. Nedenfor beskriver kretsdiagrammet og den faktiske artefakten.

Trinn 4: Programvare

Systemet vårt bruker først og fremst den visuelle informasjonen fra ansiktsgjenkjenning for å følge høyttaleren, da den er mer nøyaktig. For at fjæren skal få visuell informasjon fra Android -appen, bruker vi Bluetooth Low Energy som hovedkommunikasjonsmetode.

Når et ansikt oppdages, beregner appen vinkelen motoren må rotere for å fokusere høyttaleren i midten av rammen. Vi dekomponerte de mulige scenariene og håndterte slik:

  1. Hvis ansikt (er) oppdages og snakker, beregner det midtpunktet til høyttalerne og returnerer den relative vinkelen til fjæren.
  2. Hvis ansikt (er) oppdages, men ingen av dem snakker, beregner det også midtpunktet til ansiktene og returnerer vinkelen tilsvarende.
  3. Hvis et ansikt ikke blir oppdaget, endrer systemet høyttalersporingslogikken fra det visuelle til lyden.

SPACS-programvaren ligger på

Trinn 5: Programvare - lyd

Programvare - lyd
Programvare - lyd

Lyd (YH)

For å finne kilden til innkommende lyd, prøvde vi først å bruke tidsforskjellen mellom de to mikrofonene. Men det var ikke nøyaktig så mye som vi forventet siden samplingsfrekvensen (~ 900Hz) til Arduino Leopard, hvor vi testet lydsignalene, var treg slik at den ikke kan fange opp tidsforskjellen mellom 10 cm-forskjellige mikrofoner.

Vi endret planen om å bruke intensitetsforskjellen mellom de to inngangssignalene. Som et resultat tar fjæren to lydsignaler og behandler dem for å oppdage hvor lyden kom fra. Behandlingen kan beskrives med følgende trinn:

  1. Ta inngangene fra to mikrofoner og trekk fra forskyvningen for å få amplituden til signalene.
  2. Akkumuler de absolutte verdiene til amplituder per MIC for 500 pickups.
  3. Lagre forskjellen mellom de akkumulerte verdiene i køen med 5 plasser.
  4. Returner summen av køene som den endelige differansen.
  5. Sammenlign den endelige verdien med terskler for å bestemme hvor lyden kom fra.

Vi fant terskelen ved å plotte den endelige verdien under forskjellige omstendigheter, inkludert lyd som kom fra venstre og høyre. På toppen av tersklene for den endelige verdien, satte vi også en annen terskel for gjennomsnittet av de akkumulerte amplituder i trinn 2 for å filtrere ut støyene.

Trinn 6: Programvare - Ansikts- og taledeteksjon

For ansiktsgjenkjenning brukte vi ML Kit for Firebase utgitt av Google (https://firebase.google.com/docs/ml-kit). ML Kit gir ansiktsgjenkjennings -API som returnerer avgrensningsboksen til hvert ansikt og dets landemerker, inkludert øyne, nese, ører, kinn og forskjellige punkter på en munn. Når ansikter er oppdaget, sporer appen munnbevegelsen for å avgjøre om personen snakker. Vi bruker en enkel terskelbasert tilnærming som gir pålitelig ytelse. Vi utnyttet det faktum at munnbevegelsen blir større både horisontalt og vertikalt når en person snakker. Vi beregner den vertikale og horisontale avstanden til munnen og beregner standardavviket for hver avstand. Avstanden normaliseres til størrelsen på ansiktet. Større standardavvik indikerer å snakke. Denne tilnærmingen har grensen for at hver aktivitet involverer munnbevegelsen, inkludert å spise, drikke eller gjespe, kan gjenkjennes som å snakke. Men den har en lav falsk negativ rate.

Trinn 7: Programvare - roterende motor

Programvare - roterende motor
Programvare - roterende motor

Motorrotasjonen var ikke så grei som vi forventet på grunn av kontrollen av rotasjonshastigheten. For å kontrollere hastigheten erklærer vi en global tellervariabel slik at motoren bare kan snu når variabelen når en viss verdi. Vi erklærte også en annen global variabel som indikerer om motoren beveger seg for å gi beskjed til mikrofoner, slik at den kan unngå at lyden kommer fra motorrotasjonen.

Trinn 8: Fremtidige forbedringer

En av begrensningene er at motoren svinger i visse vinkler. Det ser ut til at motoren ikke er kraftig nok til å overvinne dreiemomentet som genereres ved å rotere smarttelefonen. Det kan løses ved å bruke en kraftigere motor eller justere posisjonen til smarttelefonen mot midten av rotasjonen for å redusere dreiemomentet.

Lydbasert deteksjon av lydretning kan forbedres med en mer sofistikert metode. Vi vil prøve en akustisk stråledannende tilnærming for å bestemme retningen til den innkommende lyden. Vi har prøvd med ankomsttiden for lydsignalene. Men samplingshastigheten til fjæren er begrenset til å oppdage tidsforskjellen når mikrofonene bare er rundt 10 cm unna.

Det siste manglende stykket i denne prototypen er brukervennlighetsvurderingen. En lovende måte å evaluere på er å integrere systemet med den eksisterende plattformen for videosamtaler og observere brukernes svar. Disse svarene vil bidra til å forbedre systemet og gjøre neste iterasjon av denne prototypen.

Anbefalt: