Control vocal al computerului dvs. jarvis. Tip - control vocal al computerului


De mult nu am părăsit gândul la „Jarvis” al meu și la controlul echipamentului din casă cu vocea mea. Și, în cele din urmă, am ajuns să creăm acest miracol. Nu a trebuit să mă gândesc mult la „creiere” Raspberry Pi se potrivește perfect.

Deci, fier:

  • Raspberry pi 3 model b
  • cameră usb logitech

Implementarea

Asistentul nostru va funcționa conform principiului Alexa/Hub:
  1. Activați offline folosind un anumit cuvânt
  2. Recunoașteți o echipă în cloud
  3. Executa comanda
  4. Raportați asupra muncii efectuate sau raportați solicitarea de informații
Deoarece camera mea este acceptată din cutie, nu a trebuit să mă încurc cu driverele, așa că să trecem direct la partea software.

Activare offline

Activarea va avea loc folosind CMU Sphinx și totul ar fi bine, dar recunoașterea din cutie este foarte lentă, mai mult de 10 secunde, ceea ce nu este absolut potrivit, pentru a rezolva problema de care trebuie să ștergeți dicționarul de cuvintele inutile.

Instalăm tot ce aveți nevoie:

Pip3 instalează SpeechRecognition pip3 instalează pocketsphinx
Mai departe

Sudo nano /usr/local/lib/python3.4/dist-packages/speech_recognition/pocketsphinx-data/en-US/pronounciation-dictionary.dict
Ștergem totul, cu excepția Jarvis-ului de care avem nevoie:

Jarvis JH AA R V AH S
Acum pocketsphinx îl recunoaște destul de repede.

Recunoaștere a vorbirii

La început, ideea a fost să folosești serviciul Google și, în plus, este acceptat în SpeechRecognition. Dar după cum sa dovedit, Google ia bani pentru asta și nu lucrează cu persoane fizice. persoane.

Din fericire, Yandex oferă și această oportunitate, gratuită și extrem de simplă.

Ne înregistrăm și primim o cheie API. Toate lucrările se pot face cu curl’om.

Curl -X POST -H „Tip de conținut: audio/x-wav” --data-binary „@file” „https://asr.yandex.net/asr_xml?uuid=ya_uid&key=yf_api_key&topic=queries”

Sinteza vorbirii

Aici Yandex ne va ajuta din nou. Trimitem text ca răspuns și primim un fișier cu text sintetizat

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” > fișier

Jarvis

Am pus totul împreună și obținem acest scenariu.

#! /usr/bin/env python # -*-coding:utf-8-*- import os import speech_recognition as sr from 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 ("varianta") if len(itemlist) > 0: return itemlist.firstChild.nodeValue else: return False def jarvis_on(): cu sr.WavFile("send.wav") ca sursa: audio = r.record(source) try: t = r.recognize_sphinx(audio) print(t) except LookupError: print("Nu am putut înțelege audio") return t == ("jarvis") def jarvis_say(frase): 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=" + phrase + "" > jarvis_speech.wav" ) os.system("aplay jarvis_speech.wav") def jarvis_say_good(): fraze = ["Terminat", "Terminat", "Da", "Există", "Mai altceva?", ] randitem = aleatoriu.choice ( fraze) 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 "Tip de conținut: 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 în ['key_word", 'key_word1', 'key_word2"]): os.system ( '') jarvis_say_good() continua, cu excepția excepției: jarvis_say(„Ceva a mers prost”)
Ce se petrece aici. Începem o buclă infinită, înregistrăm trei secunde cu arecord’om și trimitem sfinxul pentru recunoaștere dacă cuvântul „jarvis” este găsit în fișier

Dacă jarvis_on():
redați fișierul de notificare de activare preînregistrat.

Înregistrăm din nou 3 secunde și le trimitem către Yandex, ca răspuns primim comanda noastră. În continuare, efectuăm acțiuni bazate pe comandă.

Asta e tot. Puteți veni cu o mare varietate de scenarii de execuție.

Utilizare caz

Acum câteva exemple de folosirea mea reală

Philips Hue

Instalare

Pip install phue
În aplicația Hue, setăm un IP static:

Hai sa lansam:

#!/usr/bin/python import sys din phue import Bridge b = Bridge("192.168.0.100") # Introduceți aici IP-ul bridge. #Dacă rulați pentru prima dată, apăsați butonul de pe bridge și rulați cu b.connect() necomentat #b.connect() print (b.get_scene())
Notăm ID-urile circuitelor necesare, cum ar fi „470d4c3c8-on-0”

Scenariul final:

#!/usr/bin/python import sys din phue import Bridge b = Bridge("192.168.0.100") # Introduceți aici IP-ul bridge. #Dacă rulați pentru prima dată, apăsați butonul de pe bridge și rulați cu b.connect() necomentat #b.connect() if (sys.argv == "off"): b.set_light(,"on", False) else: b.activate_scene(1,sys.argv)
În Jarvis adăugăm:

Dacă (command_key în [„aprinde lumina”, „aprinde lumina”, „lumină”]): os.system(„python3 /home/pi/smarthome/hue/hue.py a1167aa91-on-0”) jarvis_say_good() continuă dacă (tasta de comandă în ["scăderea luminii", "scăderea luminii"): os.system("python3 /home/pi/smarthome/hue/hue.py ac637e2f0-on-0") jarvis_say_good( ) continuă dacă (tasta_comandă în ["stingi luminile", "stingi luminile"): os.system("python3 /home/pi/smarthome/hue/hue.py "off") jarvis_say_good() continua

TV LG

Să luăm scenariul de aici. După prima lansare și introducerea codului de asociere, codul în sine nu se schimbă, așa că puteți tăia această parte din script și lăsați doar partea de control.

În Jarvis adăugăm:

#1 - POWER #24 - VOLUNE_UP #25 - VOLUME_DOWN #400 - 3D_VIDEO dacă (tasta de comandă în ["opriți televizorul", "opriți televizorul"): os.system("python3 /home/pi/smarthome/ TV/tv2. py 1") jarvis_say_good() continuă dacă (command_key în ['măriți volumul", "mai tare"): os.system("python3 /home/pi/smarthome/TV/tv2.py 24" ) jarvis_say_good() continua

Radio

sudo apt-get install mpg123
În Jarvis adăugăm:

Dacă (command_key în [„știri”, „opriți știrile”, „ce se întâmplă”): os.system('mpg123 URL"), continuați
De asemenea, poți să instalezi homebridge și să controlezi totul prin Siri, dacă nu poți să-i strigi lui Jarvis.

În ceea ce privește calitatea recunoașterii vorbirii, nu este vorba despre Alexa, desigur, dar la o distanță de până la 5 metri procentul de accesări corecte este decent. Principala problemă este că vorbirea de la televizor/difuzoare este înregistrată împreună cu comenzile și interferează cu recunoașterea.

Asta e tot multumesc.

Etichete:

  • raspberry pi
  • piton
Adaugă etichete

Astăzi vom vorbi despre discursul nostru. iti doresc controlează-ți computerul cu vocea ta, fără să-ți folosești degetele? Și, după cum se spune, cu puterea gândirii! Adevărat, nu vom controla computerul cu puterea gândirii, dar cu puterea vocii noastre este foarte posibil.

Program tip este unul dintre cele mai bune programe de până acum pentru controlul unui computer prin voce. Pe site-urile din comentariile acestui program, opiniile converg.

Adevărat, are neajunsurile ei. Dar mai multe despre asta mai târziu. Apropo, dacă sunteți interesat, citiți recenzia mea.

Puteți descărca programul de aici: http://freesoft.ru/type

Cum să-l folosească? Mai întâi, să-l lansăm și să ne uităm la butoanele principale de control:

Programul ne întâmpină și ne oferă imediat sfaturi despre cum să folosim Typle. Mai întâi, faceți clic pe butonul „adăugați” și notați un cuvânt, de exemplu „deschide”. Pentru a face acest lucru, să rostim acest cuvânt în microfon:

Apoi faceți clic pe adăugați. Așadar, am salvat cuvântul „Deschide” în program cu vocea noastră. Puteți rosti orice alte cuvinte în microfon. Principalul lucru este să nu fii confuz.

Următorul pas este să adăugați comenzi. Pentru a face acest lucru, să trecem la acest punct:

Apoi bifăm caseta de lângă articolul de care avem nevoie:

Selectați un program, aplicație sau acțiune și faceți clic pe butonul roșu de înregistrare. Dacă computerul a acceptat vocea noastră, faceți clic pe „Adăugați”:

Și acum o comandă vocală va fi vizibilă în profilul nostru. În acest caz, cel care deschide 7-Zip:

Și acum, făcând clic pe butonul final „începe să vorbești”.

Spunem expresia „deschide Seven Zip”. În cazul meu, totul va funcționa. Și programul 7-zip se va deschide. Amintește-ți această frază: Doar deschide-te? Acesta este ceva aproximativ la fel.

Programul nu funcționează întotdeauna adecvat. Acum, puternica limbă rusă nu a fost studiată pe deplin de programatorii lingvistici... Dar tot e frumos când computerul te ascultă.

Prin urmare, pentru testare și curiozitate banală, programul Typle este 100% potrivit.

În acest videoclip puteți vedea istoria creării primelor motoare de voce și la ce mai trebuie să lucrăm:

Există nume atât de groaznice ale altor analogi ai programului, cum ar fi Gorynych, Perpetuum, Dictograph, Voice Commander. Dar toți sunt „greșiți”. Ei nu trec criticile la adresa unui program demn.

Mi-a luat 5 minute să stăpânesc acest program. Acesta este un timp destul de lung (în mare parte, înțeleg astfel de programe în 1-2 minute). Dacă aveți întrebări, scrieți. Ne vedem curând, prieteni :)!

Majoritatea utilizatorilor știu că sistemul Siri este considerat cel mai popular asistent personal și tehnologie de întrebări și răspunsuri pe gadgeturile iOS. Din fericire, Siri nu este singurul sistem disponibil pe piață. Astfel, fanilor science fiction și benzi desenate create de Marvel li se oferă asistentul personal JARVIS din filmul „Iron Man”.

Dacă proprietarul dispozitivului a văzut filmul „Iron Man”, atunci probabil îl cunoaște pe majordomul lui Tony Stark, al cărui nume este Jarvis. În consecință, utilizatorul va putea recurge la ajutorul unui servitor virtual pe propriul său dispozitiv portabil. În plus, programul JARVIS este o dezvoltare unică care folosește vocea și imaginea personajului Jarvis.

Utilitarul JARVIS începe cu instrucțiunile audio obișnuite pentru utilizarea și gestionarea instrumentului specificat. Odată finalizată configurarea, utilizatorul va trebui să-și indice sexul (pentru ca asistentul virtual să se poată adresa corect proprietarului dispozitivului). În plus, aici va trebui să setați unitatea de măsură pentru condițiile de temperatură de bază (în special, grade Kelvin, Fahrenheit sau, bineînțeles, Celsius).


O listă detaliată de instrucțiuni poate fi găsită atingând pictograma situată în colțul de sus al afișajului. În acest caz, toate comenzile trebuie să înceapă cu adresa „Jarvis” și de obicei să conțină un cuvânt (de exemplu, „Jarvis, prognoza meteo”). JARVIS poate, de asemenea, să notifice proprietarul dispozitivului despre întâlnirile viitoare și să afișeze ora curentă. De asemenea, puteți crea o varietate de mementouri audio în program.

Este important de reținut că utilitarul JARVIS oferă capabilități suplimentare proprietarilor de discuri optice cu filmul de succes „Iron Man”. De exemplu, utilizatorul poate controla cu ușurință redarea filmului corespunzător folosind acest majordom virtual.


Informații utile: dacă îi pui o întrebare asistentului tău virtual: ar trebui să cumpăr un BMW 740 (http://www.bmw-avtoport.ru/auto/7/), atunci răspunsul lui cu probabilitate sută la sută va fi afirmativ! Apropo, poți achiziționa un BMW seria a șaptea chiar acum în cele mai favorabile condiții pentru tine! Tot ce trebuie să faceți pentru aceasta este să vizitați site-ul web www.bmw-avtoport.ru.