Ձեր համակարգչի jarvis-ի ձայնային կառավարում: Typle - համակարգչի ձայնային կառավարում


Ես վաղուց չեմ լքել իմ «Ջարվիսի» և տան սարքավորումները ձայնով կառավարելու միտքը։ Եվ վերջապես, մենք հասանք այս հրաշքի ստեղծմանը: Ես ստիպված չէի երկար մտածել «ուղեղների» մասին, որ Raspberry Pi-ն հիանալի տեղավորվում է:

Այսպիսով, երկաթ.

  • Raspberry pi 3 մոդել բ
  • logitech USB տեսախցիկ

Իրականացում

Մեր օգնականը կաշխատի Alexa/Hub սկզբունքով.
  1. Ակտիվացրեք անցանց՝ օգտագործելով կոնկրետ բառ
  2. Ճանաչեք թիմը ամպի մեջ
  3. Գործարկել հրամանը
  4. Զեկուցել կատարված աշխատանքի մասին կամ զեկուցել՝ տեղեկատվություն խնդրելով
Որովհետեւ իմ տեսախցիկը ապահովված է առանց տուփի, ես ստիպված չէի խառնվել վարորդների հետ, ուստի եկեք անմիջապես անցնենք ծրագրային մասին:

Անցանց ակտիվացում

Ակտիվացումը տեղի կունենա CMU Sphinx-ի միջոցով, և ամեն ինչ լավ կլինի, բայց տուփից դուրս ճանաչումը շատ դանդաղ է, ավելի քան 10 վայրկյան, ինչը բացարձակապես հարմար չէ, խնդիրը լուծելու համար, որն անհրաժեշտ է բառարանը մաքրել ավելորդ բառերից:

Մենք տեղադրում ենք այն ամենը, ինչ ձեզ հարկավոր է.

Pip3 տեղադրեք SpeechRecognition pip3 տեղադրեք pocketsphinx
Հետագա

Sudo nano /usr/local/lib/python3.4/dist-packages/speech_recognition/pocketsphinx-data/en-US/pronounciation-dictionary.dict
Մենք ջնջում ենք ամեն ինչ, բացի մեզ անհրաժեշտ Ջարվիսից.

Jarvis JH AA R V AH S
Այժմ pocketsphinx-ը այն բավականին արագ է ճանաչում:

Խոսքի ճանաչում

Սկզբում գաղափարը եղել է օգտագործել Google-ի ծառայությունը, և բացի այդ, այն աջակցվում է SpeechRecognition-ում։ Բայց ինչպես պարզվեց, Google-ը դրա համար գումար է վերցնում և չի աշխատում անհատների հետ։ անձինք.

Բարեբախտաբար, Yandex-ը նույնպես տրամադրում է այս հնարավորությունը՝ անվճար և չափազանց պարզ:

Մենք գրանցվում և ստանում ենք API KEY: Բոլոր աշխատանքները կարելի է կատարել 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"

Խոսքի սինթեզ

Այստեղ Yandex-ը մեզ նորից կօգնի։ Մենք ի պատասխան ուղարկում ենք տեքստ և ստանում սինթեզված տեքստով ֆայլ

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" > ֆայլ

Ջարվիս

Մենք հավաքեցինք ամեն ինչ և ստացանք այս սցենարը:

#! /usr/bin/env python # -*-coding:utf-8-*- ներմուծել os ներմուծել խոսքի_ճանաչում որպես sr xml.dom ներմուծում minidom ներմուծում sys ներմուծում պատահական 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 («տարբերակ») if len(itemlist) > 0: return itemlist.firstChild.nodeValue else: return False def jarvis_on(): sr.WavFile(«send.wav») որպես աղբյուր՝ audio = r.record (աղբյուր) փորձել՝ t = r.recognize_sphinx(audio) print(t) բացառությամբ Lookup-ի Սխալ՝ print("Չհաջողվեց հասկանալ աուդիո") վերադարձ t == ("jarvis") def jarvis_say(արտահայտություն): 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(): արտահայտություններ = ["Կատարված է", "Կատարված է", "Այո", "Կա՞", "Ուրիշ բան?", ] randitem = random.choice ( արտահայտություններ) 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("record -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 ['key_word", 'key_word1', 'key_word2"]): os.system ( '') jarvis_say_good() շարունակություն, բացառությամբ Բացառության. jarvis_say ("Սխալ առաջացավ")
Ինչ է այստեղ կատարվում։ Մենք սկսում ենք անսահման օղակ, երեք վայրկյան ձայնագրում ենք arecord’om-ով և ուղարկում սֆինքս՝ ճանաչման համար, եթե ֆայլում գտնվի «jarvis» բառը:

Եթե ​​jarvis_on():
նվագարկեք նախապես գրանցված ակտիվացման ծանուցման ֆայլը:

Կրկին արձանագրում ենք 3 վայրկյան և ուղարկում ենք Yandex-ին, ի պատասխան ստանում ենք մեր հրամանը։ Հաջորդը, մենք հրամանի հիման վրա կատարում ենք գործողություններ:

Այսքանը: Դուք կարող եք հանդես գալ կատարման սցենարների մեծ բազմազանությամբ:

Օգտագործման դեպքը

Հիմա իմ իրական օգտագործման որոշ օրինակներ

Philips Hue

Տեղադրեք

Pip install pue
Hue հավելվածում մենք սահմանում ենք ստատիկ IP.

Եկեք գործարկենք.

#!/usr/bin/python ներմուծման sys-ը phue import-ից Bridge b = Bridge("192.168.0.100") # Այստեղ մուտքագրեք կամուրջի IP-ն: #Եթե առաջին անգամ եք աշխատում, սեղմեք կոճակը կամրջի վրա և գործարկեք b.connect() առանց մեկնաբանության #b.connect() print (b.get_scene())
Մենք գրում ենք պահանջվող սխեմաների ID-ները, օրինակ՝ «470d4c3c8-on-0»

Վերջնական սցենար.

#!/usr/bin/python ներմուծման sys-ը phue import-ից Bridge b = Bridge("192.168.0.100") # Այստեղ մուտքագրեք կամուրջի IP-ն: #Եթե առաջին անգամ եք աշխատում, սեղմեք կոճակը կամրջի վրա և գործարկեք b.connect() առանց մեկնաբանության #b.connect() if (sys.argv == "անջատված"): b.set_light("on", False) else՝ b.activate_scene(1,sys.argv)
Ջարվիսում մենք ավելացնում ենք.

Եթե ​​(command_key-ի մեջ ["միացնել լույսը", "միացնել լույսը", "light"]): os.system("python3 /home/pi/smarthome/hue/hue.py a1167aa91-on-0") jarvis_say_good() շարունակեք, եթե (command_key in ["dim the lights", "dim the lights"]): os.system("python3 /home/pi/smarthome/hue/hue.py ac637e2f0-on-0") jarvis_say_good( ) շարունակել, եթե (command_key in ["turn off the lights", "turn off the lights"]): os.system("python3 /home/pi/smarthome/hue/hue.py "off"") jarvis_say_good() շարունակել

LG հեռուստացույց

Վերցնենք սցենարն այստեղից։ Առաջին գործարկումից և զուգակցման կոդը մուտքագրելուց հետո կոդը ինքնին չի փոխվում, այնպես որ կարող եք կտրել այս մասը սցենարից և թողնել միայն կառավարման մասը:

Ջարվիսում մենք ավելացնում ենք.

#1 - POWER #24 - VOLUNE_UP #25 - VOLUME_DOWN #400 - 3D_VIDEO if (command_key in ["turn off the TV", "turn off the TV"]): os.system ("python3 /home/pi/smarthome/): TV/tv2 py 1") jarvis_say_good() շարունակել, եթե (command_key in ['բարձրացրեք ձայնը", "louder"]): os.system ("python3 /home/pi/smarthome/TV/tv2.py 24": ) jarvis_say_good() շարունակել

Ռադիո

sudo apt-get տեղադրել mpg123
Ջարվիսում մենք ավելացնում ենք.

Եթե ​​(command_key-ը [«նորություններում», «անջատել լուրերը», «ինչ է կատարվում»]), os.system («mpg123 URL») շարունակեք
Դուք կարող եք նաև տեղադրել homebridge-ը և կառավարել ամեն ինչ Siri-ի միջոցով, եթե չեք կարող բղավել Ջարվիսին:

Ինչ վերաբերում է խոսքի ճանաչման որակին, դա, իհարկե, Alexa-ն չէ, բայց մինչև 5 մետր հեռավորության վրա ճիշտ հարվածների տոկոսը պատշաճ է: Հիմնական խնդիրն այն է, որ հեռուստացույցի/բարձրախոսների ելույթը ձայնագրվում է հրամանների հետ միասին և խանգարում է ճանաչմանը:

Այսքանը, շնորհակալություն։

Tags:

  • ազնվամորու պ
  • պիթոն
Ավելացնել պիտակներ

Այսօր կխոսենք մեր ելույթի մասին։ ես ցանկանում եմ քեզ կառավարեք ձեր համակարգիչը ձեր ձայնով, առանց ձեր մատների օգտագործման? Եվ, ինչպես ասում են, մտքի ուժով։ Ճիշտ է, մտքի ուժով չենք կառավարելու համակարգիչը, բայց մեր ձայնի ուժով դա միանգամայն հնարավոր է։

Տիպային ծրագիրձայնի միջոցով համակարգիչը կառավարելու լավագույն ծրագրերից մեկն է մինչ օրս: Այս ծրագրի մեկնաբանություններում տեղ գտած կայքերում կարծիքները համընկնում են:

Ճիշտ է, դա իր թերություններն ունի։ Բայց դրա մասին ավելի ուշ: Ի դեպ, եթե ձեզ հետաքրքրում է, կարդացեք իմ կարծիքը:

Ծրագիրը կարող եք ներբեռնել այստեղ՝ http://freesoft.ru/type

Ինչպե՞ս օգտագործել այն: Նախ, եկեք գործարկենք այն և նայենք հիմնական կառավարման կոճակներին.

Ծրագիրը ողջունում է մեզ և անմիջապես խորհուրդներ է տալիս, թե ինչպես օգտագործել Typle-ը: Նախ, սեղմեք «ավելացնել» կոճակը և գրեք որևէ բառ, օրինակ՝ «բաց»: Դա անելու համար խոսափողի մեջ ասենք այս բառը.

Այնուհետև սեղմեք ավելացնել: Այսպիսով, մենք մեր ձայնով պահպանեցինք «Բաց» բառը ծրագրում։ Դուք կարող եք ցանկացած այլ բառ խոսել խոսափողի մեջ: Գլխավորը չշփոթվելն է։

Հաջորդ քայլը հրամաններ ավելացնելն է: Դա անելու համար եկեք գնանք այս կետին.

Այնուհետև մենք նշում ենք մեզ անհրաժեշտ ապրանքի կողքին գտնվող վանդակը.

Ընտրեք ծրագիր, ծրագիր կամ գործողություն և սեղմեք կարմիր ձայնագրման կոճակը: Եթե ​​համակարգիչը ընդունել է մեր ձայնը, սեղմեք «Ավելացնել».

Եվ հիմա մեր պրոֆիլում տեսանելի կլինի մեկ ձայնային հրաման։ Այս դեպքում, 7-Zip-ը բացողը.

Եվ հիմա, սեղմելով վերջնական «սկսել խոսել» կոճակը

Մենք ասում ենք «բացեք Seven Zip» արտահայտությունը: Իմ դեպքում ամեն ինչ կստացվի։ Եվ կբացվի 7-zip ծրագիրը։ Հիշեք այս արտահայտությունը. Պարզապես բացե՞ք ինքներդ: Սա մոտավորապես նույն բանն է։

Ծրագիրը միշտ չէ, որ համարժեք է աշխատում: Այժմ հզոր ռուսաց լեզուն ամբողջությամբ չի ուսումնասիրվել լեզվաբան ծրագրավորողների կողմից... Բայց դեռ հաճելի է, երբ համակարգիչը լսում է քեզ։

Հետևաբար, փորձարկման և սովորական հետաքրքրասիրության համար Typle ծրագիրը 100% հարմար է:

Այս տեսանյութում դուք կարող եք տեսնել առաջին ձայնային շարժիչների ստեղծման պատմությունը և էլի ինչի վրա պետք է աշխատենք.

Ծրագրի այլ անալոգների այնպիսի սարսափելի անուններ կան, ինչպիսիք են Gorynych, Perpetuum, Dictograph, Voice Commander: Բայց նրանք բոլորն էլ «սխալ» են։ Նրանք արժանի ծրագրի քննադատություն չեն անցնում։

Այս ծրագիրը տիրապետելու համար ինձնից պահանջվեց 5 րոպե: Սա բավականին երկար ժամանակ է (հիմնականում, ես նման ծրագրերը հասկանում եմ 1-2 րոպեում): Հարցերի դեպքում գրեք։ Կհանդիպենք շուտով, ընկերներ :)!

Օգտատերերի մեծամասնությունը գիտի, որ Siri համակարգը համարվում է ամենահայտնի անձնական օգնականը և հարց ու պատասխանի տեխնոլոգիան iOS սարքերում: Բարեբախտաբար, Siri-ն միակ համակարգը չէ, որը հասանելի է շուկայում: Այսպիսով, Marvel-ի կողմից ստեղծված գիտաֆանտաստիկայի և կոմիքսների սիրահարներին առաջարկվում է անձնական օգնական ՋԱՐՎԻՍԻՆ «Երկաթե մարդը» ֆիլմից։

Եթե ​​սարքի տերը տեսել է «Երկաթե մարդը» ֆիլմը, ապա հավանաբար ճանաչում է Թոնի Սթարքի սպասավորին, ում անունը Ջարվիս է։ Հետևաբար, օգտատերը կկարողանա դիմել վիրտուալ ծառայողի օգնությանը սեփական շարժական սարքում։ Բացի այդ, JARVIS ծրագիրը յուրահատուկ մշակում է, որն օգտագործում է Ջարվիսի կերպարի ձայնն ու կերպարը:

JARVIS կոմունալ ծրագիրը սկսվում է նշված գործիքն օգտագործելու և կառավարելու սովորական ձայնային հրահանգներով: Կարգավորումն ավարտվելուց հետո օգտատերը պետք է նշի իր սեռը (որպեսզի վիրտուալ օգնականը կարողանա ճիշտ դիմել սարքի տիրոջը): Բացի այդ, այստեղ դուք պետք է սահմանեք չափման միավորը հիմնական ջերմաստիճանի պայմանների համար (մասնավորապես, աստիճաններ Քելվին, Ֆարենհեյթ կամ, իհարկե, Ցելսիուս):


Հրահանգների մանրամասն ցանկը կարելի է գտնել՝ դիպչելով էկրանի վերին անկյունում գտնվող պատկերակին: Այս դեպքում բոլոր հրամանները պետք է սկսվեն «Ջարվիս» հասցեով և սովորաբար պարունակեն մեկ բառ (օրինակ՝ «Ջարվիս, եղանակի կանխատեսում»): JARVIS-ը կարող է նաև տեղեկացնել սարքի սեփականատիրոջը ապագա հանդիպումների մասին և ցուցադրել ընթացիկ ժամը: Ծրագրում կարող եք նաև ստեղծել մի շարք աուդիո հիշեցումներ:

Կարևոր է նշել, որ JARVIS կոմունալ ծրագիրը լրացուցիչ հնարավորություններ է տալիս օպտիկական սկավառակների տերերին «Iron Man» բլոկբաստեր ֆիլմով: Օրինակ՝ օգտատերը կարող է հեշտությամբ կառավարել համապատասխան ֆիլմի նվագարկումը՝ օգտագործելով այս վիրտուալ սպասարկիչը:


Օգտակար տեղեկատվությունԵթե ​​ձեր վիրտուալ օգնականին հարց տաք՝ գնեմ BMW 740 (http://www.bmw-avtoport.ru/auto/7/), ապա նրա պատասխանը հարյուր տոկոս հավանականությամբ դրական կլինի։ Ի դեպ, BMW-ի յոթերորդ սերիան հենց հիմա կարող եք գնել ձեզ համար առավել շահավետ պայմաններով: Դրա համար անհրաժեշտ է միայն այցելել www.bmw-avtoport.ru կայքը: