Indholdsfortegnelse:

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

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

Video: Speaker-Aware Camara System (SPACS): 8 trin
Video: 15 Coolest Gadgets You Can Buy Online 2024, November
Anonim
Image
Image
Hardware - 3D -udskrivning
Hardware - 3D -udskrivning

Forestil dig et konferenceopkald, hvor flere højttalere omgiver et kamera. Vi støder ofte på, hvor den begrænsede synsvinkel på et kamera ofte undlader at se på den person, der taler. Denne hardware begrænsning forringer betydeligt brugeroplevelsen. Hvis kameraet kan se på aktive højttalere, ville det fjerntliggende publikum være mere engageret i en samtale under opkaldet. I dette projekt foreslår vi et (prototype) kamerasystem, der registrerer og følger den aktive højttaler ved at dreje kameraet mod højttaleren. Systemet anvender både visuel og lydbaseret tilgang. Når ansigter registreres fra kameraet, bestemmer det den person, der taler og beregner den vinkel, der skal roteres. Når ansigterne ikke registreres i den aktuelle vinkel, søger systemet efter højttaleren baseret på retningen af ankomstlydsignalerne.

Trin 1: Materialer

Adafruit Feather nRF52840 Express X 1

www.adafruit.com/product/4062

Electret mikrofonforstærker - MAX4466 X 2

www.adafruit.com/product/1063

Mikro servomotor X 1

www.adafruit.com/product/169

Android smartphone X 1

Trin 2: Hardware - 3D -udskrivning

Hardware - 3D -udskrivning
Hardware - 3D -udskrivning
Hardware - 3D -udskrivning
Hardware - 3D -udskrivning

For hurtig implementering besluttede vi at 3D-udskrive de kabinetter, vi har brug for. Der er to hovedkomponenter til kabinetter; en drejeskive og et smartphonestativ. Vi brugte drejeskiven fra dette link (https://www.thingiverse.com/thing:141287), hvor den giver Arduino -kabinet i bunden og et roterende bord, der kan tilsluttes med en servomotor. Vi brugte et smartphonestativ fra dette link (https://www.thingiverse.com/thing:2673050), som er foldbart og vinkeljusterbart, så det giver os mulighed for at kalibrere vinklen bekvemt. Nedenstående figur viser de 3D -udskrevne dele samlet.

Trin 3: Hardware - elektroniske komponenter

Hardware - Elektroniske komponenter
Hardware - Elektroniske komponenter
Hardware - Elektroniske komponenter
Hardware - Elektroniske komponenter

Der er fire kabelforbundne komponenter; Adafruit Feather, to mikrofoner og en motor. Til den kompakte emballage lodde vi (grå cirkler) ledningerne uden at bruge et brødbræt. Nedenfor beskriver kredsløbsdiagrammet og den faktiske artefakt.

Trin 4: Software

Vores system bruger primært de visuelle oplysninger fra ansigtsgenkendelse til at følge højttaleren, da den er mere præcis. For at fjeren kan få visuelle oplysninger fra Android -appen, bruger vi Bluetooth Low Energy som den vigtigste kommunikationsmetode.

Når et ansigt registreres, beregner appen den vinkel, motoren skal rotere for at fokusere højttaleren i midten af rammen. Vi dekomponerede de mulige scenarier og håndterede som følgende:

  1. Hvis ansigt (er) registreres og taler, beregner det højttalernes midtpunkt og returnerer den relative vinkel til fjer.
  2. Hvis ansigt (er) detekteres, men ingen af dem taler, beregner det også ansigternes midtpunkt og returnerer vinklen i overensstemmelse hermed.
  3. Hvis der ikke registreres et ansigt, ændrer systemet højttalersporingslogikken fra det visuelle til det lydlige.

SPACS-softwaren er placeret på

Trin 5: Software - lyd

Software - lyd
Software - lyd

Lyd (YH)

For at finde kilden til indgående lyd forsøgte vi først at bruge tidsforskellen mellem de to mikrofoner. Men det var ikke præcist så meget, som vi havde forventet, da samplingshastigheden (~ 900 Hz) for Arduino Leopard, hvor vi testede lydsignalerne, var langsom, så den ikke kunne opfange tidsforskellen mellem 10 cm-adskilte mikrofoner.

Vi ændrede planen om at bruge intensitetsforskellen mellem de to input lydsignaler. Som et resultat tager fjeren to lydsignaler og behandler dem for at opdage, hvor lyden kom fra. Behandlingen kan beskrives ved følgende trin:

  1. Tag input fra to mikrofoner og træk forskydningen for at få signalernes amplituder.
  2. Akkumuler de absolutte værdier af amplituderne pr. MIC for 500 pickupper.
  3. Gem forskellen mellem de akkumulerede værdier i køen med 5 pladser.
  4. Returner summen af køerne som den endelige differensværdi.
  5. Sammenlign den endelige værdi med tærskler for at afgøre, hvor lyden kom fra.

Vi fandt tærsklen ved at plotte den endelige værdi under forskellige omstændigheder, herunder lyd fra venstre og højre. Oven på tærsklerne for den endelige værdi, sætter vi også en anden tærskel for middelværdien af de akkumulerede amplituder i trin 2 for at filtrere lyde.

Trin 6: Software - Registrering af ansigt og tale

Til ansigtsgenkendelse brugte vi ML Kit til Firebase udgivet af Google (https://firebase.google.com/docs/ml-kit). ML Kit giver ansigtsdetekterings -API, der returnerer afgrænsningsboksen for hvert ansigt og dets vartegn, herunder øjne, næse, ører, kinder og forskellige punkter på en mund. Når ansigter er registreret, sporer appen mundbevægelsen for at afgøre, om personen taler. Vi bruger en simpel tærskelbaseret tilgang, der giver pålidelig ydeevne. Vi udnyttede det faktum, at mundbevægelsen bliver større både vandret og lodret, når en person taler. Vi beregner den lodrette og vandrette afstand for munden og beregner standardafvigelsen for hver afstand. Afstanden normaliseres til ansigtets størrelse. Større standardafvigelse angiver at tale. Denne tilgang har den begrænsning, at enhver aktivitet involverer mundbevægelsen, herunder at spise, drikke eller gabe, kan genkendes som talende. Men den har en lav falsk negativ sats.

Trin 7: Software - roterende motor

Software - Roterende motor
Software - Roterende motor

Motorrotationen var ikke så ligetil som vi forventede på grund af kontrollen af rotationshastigheden. For at kontrollere hastigheden erklærer vi en global tællervariabel, så motoren kun kan dreje, når variablen når en bestemt værdi. Vi erklærede også en anden global variabel, der angiver, om motoren bevæger sig for at lade mikrofoner vide, så den kan undgå, at lyden kommer fra motorens rotation.

Trin 8: Fremtidige forbedringer

En af begrænsningerne er, at motoren svinger i visse vinkler. Det ser ud til, at motoren ikke er kraftig nok til at overvinde det drejningsmoment, der genereres ved at dreje smartphonen. Det kan løses ved at bruge en mere kraftfuld motor eller justere smartphonens position mod midten af rotationen for at reducere drejningsmomentet.

Lydbaseret detektering af lydretning kunne forbedres med en mere sofistikeret metode. Vi vil gerne prøve en akustisk stråledannende tilgang for at bestemme retningen af den indgående lyd. Vi har prøvet med tidspunktet for ankomsten af lydsignalerne. Men fjerens samplingshastighed er begrænset til at registrere tidsforskellen, når mikrofonerne kun er omkring 10 cm væk.

Det sidste manglende stykke af denne prototype er evalueringen af brugervenlighed. En lovende måde at evaluere på er at integrere systemet med den eksisterende videoopkaldsplatform og observere brugernes svar. Disse svar vil bidrage til at forbedre systemet og foretage den næste iteration af denne prototype.

Anbefalede: