Sisällysluettelo:

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

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

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

Kuvittele neuvottelupuhelu, jossa useita kaiuttimia ympäröi yhtä kameraa. Kohtaamme usein tilanteita, joissa kameran rajallinen katselukulma ei useinkaan pysty katsomaan puhuvaa henkilöä. Tämä laitteiston rajoitus heikentää käyttökokemusta merkittävästi. Jos kamera voi katsoa aktiivisia kaiuttimia, etäyleisö osallistuu enemmän keskusteluun puhelun aikana. Tässä projektissa ehdotamme (prototyyppistä) kamerajärjestelmää, joka tunnistaa ja seuraa aktiivista kaiutinta kääntämällä kameraa kaiutinta kohti. Järjestelmä käyttää sekä visuaalista että äänipohjaista lähestymistapaa. Kun kasvot tunnistetaan kamerasta, se määrittää puhujan ja laskee pyörimiskulman. Jos kasvoja ei tunnisteta kulmassa, järjestelmä etsii kaiutinta saapuvien äänisignaalien suunnan perusteella.

Vaihe 1: Materiaalit

Adafruit Feather nRF52840 Express X 1

www.adafruit.com/product/4062

Elektret -mikrofonivahvistin - MAX4466 X 2

www.adafruit.com/product/1063

Mikroservomoottori X 1

www.adafruit.com/product/169

Android -älypuhelin X 1

Vaihe 2: Laitteisto - 3D -tulostus

Laitteisto - 3D -tulostus
Laitteisto - 3D -tulostus
Laitteisto - 3D -tulostus
Laitteisto - 3D -tulostus

Nopean käyttöönoton vuoksi päätimme tulostaa tarvitsemamme kotelot 3D-painatuksella. Koteloille on kaksi pääkomponenttia; kääntöpöytä ja älypuhelinteline. Käytimme levysoitinta tästä linkistä (https://www.thingiverse.com/thing:141287), jossa sen alaosassa on Arduino -kotelo ja pyörivä pöytä, joka voidaan liittää servomoottoriin. Käytimme tästä linkistä (https://www.thingiverse.com/thing:2673050) peräisin olevaa älypuhelintelineä, joka on taitettava ja kulmaa säädettävä, jotta voimme kalibroida kulman kätevästi. Alla oleva kuva esittää 3D -painetut osat koottuna yhteen.

Vaihe 3: Laitteisto - elektroniset komponentit

Laitteisto - elektroniset komponentit
Laitteisto - elektroniset komponentit
Laitteisto - elektroniset komponentit
Laitteisto - elektroniset komponentit

Langallisia osia on neljä; Adafruit Feather, kaksi mikrofonia ja moottori. Kompaktissa pakkauksessa juotimme (harmaat ympyrät) johdot ilman leipälevyä. Alla kuvataan piirikaavio ja varsinainen esine.

Vaihe 4: Ohjelmisto

Järjestelmämme käyttää ensisijaisesti kasvojentunnistuksen visuaalista tietoa seuratakseen kaiutinta, koska se on tarkempaa. Jotta Feather saisi visuaalista tietoa Android -sovelluksesta, käytämme Bluetooth Low Energy -järjestelmää pääasiallisena viestintämenetelmänä.

Kun kasvot havaitaan, sovellus laskee kulman, jonka moottorin on pyöritettävä, jotta kaiutin voidaan tarkentaa kehyksen keskelle. Purimme mahdolliset skenaariot ja toimimme seuraavasti:

  1. Jos kasvot tunnistetaan ja he puhuvat, se laskee kaiuttimien keskipisteen ja palauttaa höyhenen suhteellisen kulman.
  2. Jos kasvot tunnistetaan, mutta kukaan niistä ei puhu, se laskee myös kasvojen keskipisteen ja palauttaa kulman vastaavasti.
  3. Jos kasvoja ei tunnisteta, järjestelmä muuttaa kaiuttimien seuraamislogiikan visuaalisesta audioksi.

SPACS-ohjelmisto sijaitsee osoitteessa

Vaihe 5: Ohjelmisto - Ääni

Ohjelmisto - Ääni
Ohjelmisto - Ääni

Ääni (YH)

Saapuvan äänen lähteen paikantamiseksi yritimme ensin käyttää kahden mikrofonin aikaeroa. Mutta se ei ollut niin tarkka kuin odotimme, koska Arduino Leopardin näytteenottotaajuus (~ 900 Hz), jossa testasimme äänisignaaleja, olivat hitaita, joten se ei voi poimia 10 cm: n etäisyydellä olevien mikrofonien aikaeroa.

Muutimme suunnitelmaa käyttää kahden tulosignaalin voimakkuuseroa. Tämän seurauksena sulka ottaa kaksi äänisignaalia ja käsittelee ne havaitsemaan, mistä ääni tuli. Käsittely voidaan kuvata seuraavilla vaiheilla:

  1. Ota tulot kahdesta mikrofonista ja vähennä siirtymä saadaksesi signaalien amplitudit.
  2. Kerää amplitudien absoluuttiset arvot MIC: tä kohti 500 noutoa varten.
  3. Tallenna kertyneiden arvojen ero jonoon, jossa on 5 paikkaa.
  4. Palauta jonojen summa lopullisena eroarvona.
  5. Vertaa lopullista arvoa kynnyksiin päättääksesi, mistä ääni tulee.

Löysimme kynnyksen piirtämällä lopullisen arvon eri olosuhteissa, mukaan lukien ääni vasemmalta ja oikealta. Lopullisen arvon kynnysten lisäksi asetimme myös toisen kynnyksen kertyneiden amplitudien keskiarvolle vaiheessa 2 melun suodattamiseksi.

Vaihe 6: Ohjelmisto - Kasvojen ja puhumisen tunnistus

Kasvontunnistuksessa käytimme Googlen julkaisemaa ML Kit for Firebasea (https://firebase.google.com/docs/ml-kit). ML Kit tarjoaa kasvojentunnistusliittymän, joka palauttaa jokaisen kasvon ja sen maamerkkien, mukaan lukien silmät, nenä, korvat, posket ja suun eri kohdat, rajauslaatikon. Kun kasvot on havaittu, sovellus seuraa suun liikkeitä määrittääkseen, puhuuko henkilö. Käytämme yksinkertaista kynnyspohjaista lähestymistapaa, joka tuottaa luotettavaa suorituskykyä. Hyödynnämme sitä tosiasiaa, että suun liike kasvaa sekä vaakasuoraan että pystysuoraan, kun henkilö puhuu. Laskemme suun pystysuoran ja vaakasuoran etäisyyden ja laskemme keskihajonnan kullekin etäisyydelle. Etäisyys normalisoidaan kasvojen koon mukaan. Suurempi keskihajonta osoittaa puhumista. Tällä lähestymistavalla on se rajoitus, että jokainen toiminta sisältää suun liikkeitä, mukaan lukien syöminen, juominen tai haukottelu, voidaan tunnistaa puhuviksi. Mutta sillä on alhainen vääriä negatiivisia prosentteja.

Vaihe 7: Ohjelmisto - pyörivä moottori

Ohjelmisto - Pyörivä moottori
Ohjelmisto - Pyörivä moottori

Moottorin pyöriminen ei ollut niin suoraviivaista kuin odotimme pyörimisnopeuden säätämisen vuoksi. Nopeuden hallitsemiseksi ilmoitamme globaalin laskurin muuttujan, joka sallii moottorin kääntyä vasta, kun muuttuja saavuttaa tietyn arvon. Ilmoitimme myös toisen globaalin muuttujan, joka osoittaa, liikkuuko moottori, jotta mikrofonit saisivat tietää, jotta se voi välttää moottorin pyörimisestä tulevan äänen.

Vaihe 8: Tulevia parannuksia

Yksi rajoituksista on, että moottori heiluu tietyissä kulmissa. Näyttää siltä, että moottori ei ole tarpeeksi tehokas voittamaan älypuhelimen pyörittämisen aiheuttamaa vääntömomenttia. Se voidaan ratkaista käyttämällä tehokkaampaa moottoria tai säätämällä älypuhelimen asentoa pyörimiskeskusta kohti vääntömomentin pienentämiseksi.

Äänipohjaista äänen suunnan tunnistusta voitaisiin parantaa kehittyneemmällä menetelmällä. Haluaisimme kokeilla akustista säteenmuodostusmenetelmää tulevan äänen suunnan määrittämiseksi. Olemme yrittäneet audiosignaalien saapumisajan kanssa. Höyhenen näytteenottotaajuus on kuitenkin rajoitettu havaitsemaan aikaero, kun mikrofonit ovat vain noin 10 cm: n päässä.

Tämän prototyypin viimeinen puuttuva osa on käytettävyyden arviointi. Yksi lupaava tapa arvioida on integroida järjestelmä olemassa olevaan videopuhelualustaan ja tarkkailla käyttäjien vastauksia. Nämä vastaukset auttavat parantamaan järjestelmää ja tekemään tämän prototyypin seuraavan iteraation.

Suositeltava: