Stemmestyring af din computer jarvis. Marvel JARVIS – personlig assistent til iOS-enheder


I lang tid har jeg ikke forladt tanken om min "Jarvis" og at styre udstyret i huset med min stemme. Og endelig fik vi skabt dette mirakel. Jeg behøvede ikke at tænke længe på "hjernerne"; Raspberry Pi passer perfekt.

Så strygejern:

  • Raspberry pi 3 model b
  • logitech usb kamera

Implementering

Vores assistent vil arbejde efter Alexa/Hub-princippet:
  1. Aktiver offline ved hjælp af et bestemt ord
  2. Genkend et team i skyen
  3. Kør kommando
  4. Rapporter om det udførte arbejde eller rapport med anmodning om oplysninger
Fordi mit kamera understøttes ud af boksen, jeg behøvede ikke at rode med drivere, så lad os gå direkte til softwaredelen.

Offline aktivering

Aktivering vil finde sted ved hjælp af CMU Sphinx, og alt ville være fint, men ud af boksen er genkendelse meget langsom, mere end 10 sekunder, hvilket absolut ikke er egnet, for at løse det problem, du har brug for for at rydde ordbogen for unødvendige ord.

Vi installerer alt hvad du skal bruge:

Pip3 installer SpeechRecognition pip3 installer pocketsfinx
Yderligere

Sudo nano /usr/local/lib/python3.4/dist-packages/speech_recognition/pocketsphinx-data/en-US/pronounciation-dictionary.dict
Vi sletter alt undtagen den Jarvis, vi har brug for:

Jarvis JH AA R V AH S
Nu genkender pocketsphinx det ret hurtigt.

Tale genkendelse

Først var tanken at bruge Googles tjeneste, og desuden er den understøttet i SpeechRecognition. Men som det viste sig, tager Google penge for dette og arbejder ikke med enkeltpersoner. personer.

Heldigvis giver Yandex også denne mulighed, gratis og ekstremt enkelt.

Vi registrerer os og modtager en API-KEY. Alt arbejde kan udføres med curl'om.

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"

Talesyntese

Her vil Yandex hjælpe os igen. Vi sender tekst som svar og modtager en fil med syntetiseret tekst

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" > fil

Jarvis

Vi sætter alt sammen og får dette manuskript.

#! /usr/bin/env python # -*-coding:utf-8-*- import os import speech_recognition som sr fra xml.dom import minidom import sys import random r = sr.Recognizer() ya_uuid = "" ya_api_key = "" # os.system("echo "Assist+ent za+ushchen" |festival --tts --language russian") def convert_ya_asr_to_key(): xmldoc = minidom.parse("./asr_answer.xml") itemlist = xmldoc.getElementsByTagName ("variant") if len(itemlist) > 0: return itemlist.firstChild.nodeValue else: return False def jarvis_on(): med sr.WavFile("send.wav") som kilde: audio = r.record(source) prøv: t = r.recognize_sphinx(audio) print(t) undtagen LookupError: print("Kunne ikke forstå lyd") returner 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=" + sætning + "" > jarvis_speech.wav" ) os.system("aplay jarvis_speech.wav") def jarvis_say_good(): phrases = ["Done", "Done", "Ja", "Er der", "Noget andet?", ] randitem = random.choice ( sætninger) 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 i ['key_word", 'key_word1', 'key_word2"]): os.system ( '') jarvis_say_good() fortsæt undtagen Undtagelse: jarvis_say("Noget gik galt")
Hvad sker der her. Vi starter en uendelig loop, optager tre sekunder med arecord'om og sender sfinx til genkendelse, hvis ordet "jarvis" findes i filen

Hvis jarvis_on():
afspil den forudindspillede aktiveringsmeddelelsesfil.

Igen optager vi 3 sekunder og sender det til Yandex, som svar modtager vi vores kommando. Dernæst udfører vi handlinger baseret på kommandoen.

Det er alt. Du kan komme med et stort udvalg af udførelsesscenarier.

Use-case

Nu nogle eksempler på min virkelige brug

Philips Hue

Installere

Pip installation phue
I Hue-appen indstiller vi en statisk IP:

Lad os starte:

#!/usr/bin/python import sys fra phue import Bridge b = Bridge("192.168.0.100") # Indtast bro IP her. #Hvis du kører for første gang, skal du trykke på knappen på broen og køre med b.connect() ukommenteret #b.connect() print (b.get_scene())
Vi skriver ned ID'erne for de nødvendige kredsløb, som "470d4c3c8-on-0"

Endeligt manuskript:

#!/usr/bin/python import sys fra phue import Bridge b = Bridge("192.168.0.100") # Indtast bro IP her. #Hvis du kører for første gang, skal du trykke på knappen på broen og køre med b.connect() ukommenteret #b.connect() if (sys.argv == "off"): b.set_light(,"on", False) andet: b.activate_scene(1,sys.argv)
I Jarvis tilføjer vi:

If (command_key in ["tænd lyset", "tænd lyset", "lys"]): os.system("python3 /home/pi/smarthome/hue/hue.py a1167aa91-on-0") jarvis_say_good() fortsæt if (command_key in ["dæmp lysene", "dæmp lysene"]): os.system("python3 /home/pi/smarthome/hue/hue.py ac637e2f0-on-0") jarvis_say_good( ) fortsæt hvis (command_key in ["sluk lyset", "sluk lyset"): os.system("python3 /home/pi/smarthome/hue/hue.py "sluk"") jarvis_say_good() fortsæt

LG TV

Lad os tage manuskriptet herfra. Efter den første lancering og indtastning af parringskoden ændres selve koden ikke, så du kan klippe denne del ud af scriptet og kun lade kontroldelen stå.

I Jarvis tilføjer vi:

#1 - POWER #24 - VOLUNE_UP #25 - VOLUME_DOWN #400 - 3D_VIDEO if (command_key in ["sluk TV'et", "sluk TV'et")): os.system("python3 /home/pi/smarthome/ TV/tv2. py 1") jarvis_say_good() fortsæt if (command_key in ['skru op for lydstyrken", "højere")): os.system("python3 /home/pi/smarthome/TV/tv2.py 24" ) jarvis_say_good() fortsæt

Radio

sudo apt-get install mpg123
I Jarvis tilføjer vi:

If (command_key in ["nyheder", "sluk nyheder", "hvad sker der"]): os.system('mpg123 URL") fortsæt
Du kan også installere homebridge og styre alt gennem Siri, hvis du ikke kan råbe til Jarvis.

Hvad angår kvaliteten af ​​talegenkendelse, er det selvfølgelig ikke Alexa, men i en afstand på op til 5 meter er procentdelen af ​​korrekte hits anstændig. Hovedproblemet er, at tale fra tv'et/højttalerne optages sammen med kommandoer og forstyrrer genkendelsen.

Det er alt, tak.

Tags:

  • hindbær pi
  • python
Tilføj tags

De fleste brugere ved, at Siri-systemet betragtes som den mest populære personlige assistent og spørgsmål-og-svar-teknologi på iOS-gadgets. Heldigvis er Siri ikke det eneste system, der er tilgængeligt på markedet. Således tilbydes fans af science fiction og tegneserier skabt af Marvel den personlige assistent JARVIS fra filmen "Iron Man".

Hvis ejeren af ​​enheden har set filmen "Iron Man", så kender han nok Tony Starks butler, hvis navn er Jarvis. Som følge heraf vil brugeren være i stand til at ty til hjælp fra en virtuel tjener på sin egen bærbare enhed. Derudover er JARVIS-programmet en unik udvikling, der bruger Jarvis-karakterens stemme og image.

JARVIS-værktøjet begynder med de sædvanlige lydinstruktioner til brug og styring af det specificerede værktøj. Når opsætningen er fuldført, skal brugeren angive sit køn (så den virtuelle assistent korrekt kan henvende sig til ejeren af ​​enheden). Derudover skal du her indstille måleenheden for de grundlæggende temperaturforhold (især grader Kelvin, Fahrenheit eller selvfølgelig Celsius).


En detaljeret liste over instruktioner kan findes ved at trykke på ikonet i det øverste hjørne af displayet. I dette tilfælde skal alle kommandoer begynde med adressen "Jarvis" og normalt indeholde ét ord (f.eks. "Jarvis, vejrudsigt"). JARVIS kan også underrette enhedsejeren om fremtidige møder og vise det aktuelle tidspunkt. Du kan også oprette en række lydpåmindelser i programmet.

Det er vigtigt at bemærke, at JARVIS-værktøjet giver yderligere muligheder for ejere af optiske diske med storfilmen "Iron Man". For eksempel kan brugeren nemt styre afspilningen af ​​den tilsvarende film ved hjælp af denne virtuelle butler.


Nyttig information: hvis du stiller din virtuelle assistent et spørgsmål: skal jeg købe en BMW 740 (http://www.bmw-avtoport.ru/auto/7/), så vil hans svar med hundrede procent sandsynlighed være bekræftende! Du kan i øvrigt købe en BMW syvende serie lige nu på de mest fordelagtige vilkår for dig selv! Alt du skal gøre for dette er at besøge webstedet www.bmw-avtoport.ru.

I dag vil vi tale om vores tale. jeg ønsker dig styre din computer med din stemme uden at bruge fingrene? Og, som man siger, med tankens kraft! Sandt nok vil vi ikke styre computeren med tankens kraft, men med kraften i vores stemme er det meget muligt.

Type program er et af de bedste programmer til dato til at styre en computer via stemmen. På webstederne i kommentarerne til dette program konvergerer meninger.

Sandt nok har det sine mangler. Men mere om det senere. Forresten, hvis du er interesseret, så læs min anmeldelse.

Du kan downloade programmet her: http://freesoft.ru/type

Brugsvejledning? Lad os først starte det og se på hovedkontrolknapperne:

Programmet byder os velkommen og giver os straks tips til, hvordan man bruger Typle. Først skal du klikke på "tilføj"-knappen og skrive et ord ned, for eksempel "åbn". For at gøre dette, lad os sige dette ord i mikrofonen:

Klik derefter på Tilføj. Så vi gemte ordet "Åben" i programmet med vores stemme. Du kan tale andre ord ind i mikrofonen. Det vigtigste er ikke at blive forvirret.

Det næste trin er at tilføje kommandoer. For at gøre dette, lad os gå til dette punkt:

Så markerer vi feltet ud for den vare, vi skal bruge:

Vælg et program, program eller handling, og klik på den røde optageknap. Hvis computeren har accepteret vores stemme, skal du klikke på "Tilføj":

Og nu vil én stemmekommando være synlig i vores profil. I dette tilfælde, den, der åbner 7-Zip:

Og nu, ved at klikke på den sidste "begynd at tale"-knap

Vi siger sætningen "åbn Seven Zip." I mit tilfælde vil alt fungere. Og 7-zip-programmet åbnes. Husk denne sætning: Bare åben dig selv? Dette er noget omtrent det samme.

Programmet fungerer ikke altid tilstrækkeligt. Nu er det mægtige russiske sprog ikke fuldt ud undersøgt af sproglige programmører... Men det er stadig rart, når computeren lytter til dig.

Derfor er Typle-programmet 100% velegnet til test og banal nysgerrighed.

I denne video kan du se historien om oprettelsen af ​​de første stemmemotorer, og hvad vi ellers skal arbejde på:

Der er sådanne forfærdelige navne på andre analoger af programmet som Gorynych, Perpetuum, Dictograph, Voice Commander. Men de er alle "forkerte". De sender ikke kritik af et værdigt program.

Det tog mig 5 minutter at mestre dette program. Dette er ret lang tid (for det meste forstår jeg sådanne programmer på 1-2 minutter). Hvis du har spørgsmål, så skriv. Vi ses snart, venner :)!