A számítógép jarvis hangvezérlése. Típus - a számítógép hangvezérlése


Sokáig nem hagytam abba a gondolatot, hogy a „Jarvis”-em és a hangommal vezéreljem a ház berendezéseit. És végül eljutottunk ahhoz, hogy megalkossuk ezt a csodát. Nem kellett sokáig gondolkodnom az „agyon” a Raspberry Pi tökéletesen illeszkedik.

Szóval, vas:

  • Raspberry pi 3 modell b
  • logitech usb kamera

Végrehajtás

Asszisztensünk az Alexa/Hub elv szerint fog dolgozni:
  1. Az offline mód aktiválása egy adott szó használatával
  2. Ismerjen fel egy csapatot a felhőben
  3. Futtassa a parancsot
  4. Beszámol az elvégzett munkáról, vagy felvilágosítást kér
Mert a kamerám már a dobozból támogatott, nem kellett az illesztőprogramokkal bajlódnom, úgyhogy térjünk át közvetlenül a szoftveres részre.

Offline aktiválás

Az aktiválás a CMU Sphinx segítségével fog megtörténni, és minden rendben is lenne, de az out of the box felismerés nagyon lassú, több mint 10 másodperc, ami abszolút nem megfelelő, a probléma megoldásához meg kell tisztítani a szótárt a felesleges szavaktól.

Mindent telepítünk, amire szüksége van:

Pip3 telepítése SpeechRecognition pip3 install pocketsphinx
További

Sudo nano /usr/local/lib/python3.4/dist-packages/speech_recognition/pocketsphinx-data/en-US/pronounciation-dictionary.dict
Mindent törölünk, kivéve a szükséges Jarvist:

Jarvis JH AA R V AH S
Most a pocketsfinx elég gyorsan felismeri.

Beszédfelismerés

Eleinte az volt az ötlet, hogy a Google szolgáltatását használjuk, ráadásul SpeechRecognition is támogatja. De mint kiderült, a Google pénzt vesz fel ezért, és nem dolgozik magánszemélyekkel. személyek.

Szerencsére a Yandex is biztosítja ezt a lehetőséget, ingyenesen és rendkívül egyszerűen.

Regisztrálunk és kapunk egy API KULCSOT. Minden munka elvégezhető curl'ommal.

Curl -X POST -H "Content-Type: audio/x-wav" --data-binary "@file" "https://asr.yandex.net/asr_xml?uuid=ya_uid&key=yf_api_key&topic=queries"

Beszédszintézis

Itt a Yandex ismét segítségünkre lesz. Válaszként szöveget küldünk, és szintetizált szöveget tartalmazó fájlt kapunk

Curl "https://tts.voicetech.yandex.net/generate?format=wav&lang=ru-RU&speaker=zahar&emotion=good&key=ya_api_key" -G --data-urlencode "text=text" > fájl

Jarvis

Mindent összerakunk, és megkapjuk ezt a forgatókönyvet.

#! /usr/bin/env python # -*-coding:utf-8-*- import os beszédfelismerés importálása sr-ként xml.dom-ból import minidom import sys import véletlenszerű r = sr.Recognizer() ya_uuid = "" ya_api_key = "" # os.system("echo "Assist+ent za+ushchen" |fesztivál --tts --language russian") def convert_ya_asr_to_key(): xmldoc = minidom.parse("./asr_answer.xml") itemlist = xmldoc.getElementsByTagName ("változat") if len(itemlist) > 0: return itemlist.firstChild.nodeValue else: return False def jarvis_on(): sr.WavFile("send.wav") forrásként: audio = r.record(source) try: t = r.recognize_sphinx(audio) print(t) kivéve LookupError: print("Nem sikerült értelmezni a hangot") return t == ("jarvis") def jarvis_say(phrase): os.system("curl "https: //tts.voicetech.yandex.net/generate?format=wav&lang=ru-RU&speaker=zahar&emotion=good&key="+ya_api_key+"" -G --data-urlencode "text=" + kifejezés + "" > jarvis_speech.wav" ) os.system("aplay jarvis_speech.wav") def jarvis_say_good(): kifejezések = ["Kész", "Kész", "Igen", "Van-e", "Még valami?", ] randitem = random.choice ( kifejezések) jarvis_say(randitem) try: while True: os.system("arecord -B --buffer-time=1000000 -f dat -r 16000 -d 3 -D plughw:1,0 send.wav") if jarvis_on ( ): os.system("aplay jarvis_on.wav") os.system("arecord -B --buffer-time=1000000 -f dat -r 16000 -d 3 -D plughw:1,0 send.wav") os .system("curl -X POST -H "Content-Type: audio/x-wav" --data-binary "@send.wav" "https://asr.yandex.net/asr_xml?uuid="+ ya_uuid+ "&key="+ya_api_key+"&topic=queries" > asr_answer.xml") command_key = convert_ya_asr_to_key() if (command_key): if (command_key in ['kulcsszó", "kulcsszó1", "kulcsszó2"]): os.system ( '') jarvis_say_good() folytatás, kivéve a kivételt: jarvis_say("Valami hiba történt")
Mi folyik itt. Elindítunk egy végtelen ciklust, rögzítünk három másodpercet az arecord'om segítségével, és elküldjük a szfinxet felismerésre, ha a „jarvis” szó található a fájlban

Ha jarvis_on():
lejátssza az előre rögzített aktiválási értesítési fájlt.

Ismét rögzítünk 3 másodpercet, és elküldjük a Yandexnek, válaszul megkapjuk a parancsot. Ezután a parancs alapján műveleteket hajtunk végre.

Ez minden. Nagyon sokféle végrehajtási forgatókönyvet találhat ki.

Használati eset

Most néhány példa a valós felhasználásomra

Philips Hue

Telepítés

Pip install phue
A Hue alkalmazásban beállítunk egy statikus IP-t:

Indítsuk el:

#!/usr/bin/python import sys from phue import Bridge b = Bridge("192.168.0.100") # Ide írja be a híd IP-címét. #Ha először fut, nyomja meg a gombot a hídon, és futtassa a b.connect() megjegyzés nélkül #b.connect() print (b.get_scene())
Felírjuk a szükséges áramkörök azonosítóit, például „470d4c3c8-on-0”

Végső forgatókönyv:

#!/usr/bin/python import sys from phue import Bridge b = Bridge("192.168.0.100") # Ide írja be a híd IP-címét. #Ha először fut, nyomja meg a gombot a hídon, és futtassa a b.connect() parancsot megjegyzés nélkül #b.connect() if (sys.argv == "off"): b.set_light(,"on", False) más: b.activate_scene(1,sys.argv)
A Jarvisben hozzáadjuk:

If (command_key in ["kapcsolja be a lámpát", "kapcsolja be a lámpát", "light"]): os.system("python3 /home/pi/smarthome/hue/hue.py a1167aa91-on-0") jarvis_say_good() folytassa, ha (command_key a ["fények tompítása", "fények tompítása"]-ban): os.system("python3 /home/pi/smarthome/hue/hue.py ac637e2f0-on-0") jarvis_say_good( ) folytassa, ha (command_key in ["kapcsolja le a lámpákat", "kapcsolja le a lámpákat"]): os.system("python3 /home/pi/smarthome/hue/hue.py "off") jarvis_say_good() folytatás

LG TV

Vegyük innen a forgatókönyvet. Az első indítás és a párosítási kód megadása után maga a kód nem változik, így ezt a részt kivághatjuk a szkriptből, és csak a vezérlő részt hagyhatjuk meg.

A Jarvisben hozzáadjuk:

#1 - POWER #24 - VOLUNE_UP #25 - VOLUME_DOWN #400 - 3D_VIDEO if (command_key in ["kapcsolja ki a TV-t", "kapcsolja ki a TV-t"]): os.system("python3 /home/pi/smarthome/ TV/tv2. py 1") jarvis_say_good() folytatás, ha (command_key in ['hangosabb", "hangosabb"]): os.system("python3 /home/pi/smarthome/TV/tv2.py 24" ) jarvis_say_good() folytatás

Rádió

sudo apt-get install mpg123
A Jarvisben hozzáadjuk:

If (command_key in ["news", "turn off the news", "mi történik"]): os.system('mpg123 URL") folytassa
Telepíthetsz homebridge-et és irányíthatsz mindent Siri-n keresztül, ha nem tudsz Jarvisnek kiabálni.

Ami a beszédfelismerés minőségét illeti, természetesen nem Alexa, de akár 5 méteres távolságban is megfelelő a helyes találatok aránya. A fő probléma az, hogy a TV/hangszórók beszéde a parancsokkal együtt rögzítésre kerül, és zavarja a felismerést.

Ez minden Köszönöm.

Címkék:

  • Raspberry Pi
  • piton
Címkék hozzáadása

Ma a beszédünkről fogunk beszélni. kívánok neked hangjával vezérelheti számítógépét, ujjai használata nélkül? És ahogy mondani szokás, a gondolat erejével! Igaz, nem a gondolat erejével fogjuk irányítani a számítógépet, de a hangunk erejével ez teljesen lehetséges.

Típusos program az egyik legjobb program a számítógép hangon keresztüli vezérlésére. A programhoz fűzött megjegyzésekben szereplő webhelyeken a vélemények egybeesnek.

Igaz, vannak hiányosságai. De erről majd később. Egyébként, ha érdekel, olvasd el a véleményemet.

A programot innen töltheti le: http://freesoft.ru/type

Hogyan kell használni? Először indítsuk el, és nézzük meg a fő vezérlőgombokat:

A program szívesen lát minket, és azonnal tippeket ad a Typle használatához. Először kattintson a „hozzáadás” gombra, és írjon le egy szót, például „megnyitás”. Ehhez mondjuk ezt a szót a mikrofonba:

Ezután kattintson a Hozzáadás gombra. Tehát a „Megnyitás” szót a hangunkkal mentettük el a programban. Bármilyen más szót bemondhat a mikrofonba. A lényeg, hogy ne keveredj össze.

A következő lépés a parancsok hozzáadása. Ehhez menjünk erre a pontra:

Ezután bejelöljük a szükséges elem melletti négyzetet:

Válasszon ki egy programot, alkalmazást vagy műveletet, és kattintson a piros rögzítés gombra. Ha a számítógép elfogadta a hangunkat, kattintson a „Hozzáadás” gombra:

És most egy hangutasítás lesz látható a profilunkban. Ebben az esetben az, amelyik megnyitja a 7-Zip-et:

És most, az utolsó „Beszédkezdés” gombra kattintva

Azt mondjuk, hogy „nyissa ki a Seven Zip-et”. Az én esetemben minden működni fog. És megnyílik a 7-zip program. Emlékezz erre a mondatra: Csak nyisd ki magad? Ez nagyjából ugyanaz.

A program nem mindig működik megfelelően. A hatalmas orosz nyelvet a nyelvész programozók még nem tanulmányozták teljesen... De még mindig jó, ha a számítógép hallgat rád.

Ezért a teszteléshez és a banális kíváncsisághoz a Typle program 100% -ban alkalmas.

Ebben a videóban megtekintheti az első hangmotorok létrehozásának történetét és azt, hogy min kell még dolgoznunk:

A program más analógjainak olyan szörnyű nevei vannak, mint Gorynych, Perpetuum, Dictograph, Voice Commander. De mindegyik "téved". Nem bírják ki a kritikát egy méltó program kapcsán.

5 percbe telt, mire elsajátítottam ezt a programot. Ez elég hosszú idő (többnyire 1-2 perc alatt megértem az ilyen programokat). Ha kérdésed van írj. Hamarosan találkozunk, barátaim :)!

A legtöbb felhasználó tudja, hogy a Siri rendszert tartják a legnépszerűbb személyi asszisztensnek és kérdés-felelet technológiának az iOS kütyüjében. Szerencsére nem a Siri az egyetlen elérhető rendszer a piacon. Így a Marvel által készített sci-fi és képregények rajongói számára felajánlják JARVIS személyi asszisztenst a „Vasember” című filmből.

Ha az eszköz tulajdonosa látta az Iron Man című filmet, akkor valószínűleg ismeri Tony Stark komornyikját, akinek Jarvis a neve. Következésképpen a felhasználó saját hordozható eszközén veheti igénybe a virtuális szolga segítségét. Ráadásul a JARVIS program egy egyedülálló fejlesztés, amely a Jarvis karakter hangját és képét használja fel.

A JARVIS segédprogram a szokásos hangutasításokkal kezdődik a megadott eszköz használatához és kezeléséhez. A beállítás befejezése után a felhasználónak meg kell adnia a nemét (hogy a virtuális asszisztens helyesen tudja megszólítani az eszköz tulajdonosát). Ezenkívül itt be kell állítania az alapvető hőmérsékleti feltételek mértékegységét (különösen Kelvin, Fahrenheit vagy természetesen Celsius fok).


Az utasítások részletes listája a kijelző felső sarkában található ikon megérintésével érhető el. Ebben az esetben minden parancsnak a „Jarvis” címmel kell kezdődnie, és általában egy szót kell tartalmaznia (például „Jarvis, időjárás előrejelzés”). A JARVIS értesítheti az eszköz tulajdonosát a jövőbeli találkozókról, és megjelenítheti az aktuális időt. A programban különféle hangos emlékeztetőket is létrehozhat.

Fontos megjegyezni, hogy a JARVIS segédprogram további lehetőségeket biztosít az optikai lemezek tulajdonosai számára az Iron Man című kasszasiker filmben. Például a felhasználó egyszerűen vezérelheti a megfelelő film lejátszását ezzel a virtuális inassal.


Hasznos információk: ha feltesz egy kérdést a virtuális asszisztensnek: vegyek BMW 740-et (http://www.bmw-avtoport.ru/auto/7/), akkor száz százalékos valószínűséggel igenlő lesz a válasza! Egyébként most a legkedvezőbb feltételekkel vásárolhat egy hetedik BMW-t! Ehhez nem kell mást tennie, mint ellátogatni a www.bmw-avtoport.ru weboldalra.