рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╣рд░ рдХреЛрдИ рдЕрдкрдиреА рдЖрд╡рд╛рдЬ рд╕рд╣рд╛рдпрдХ рдХрд╛ рд╕рдкрдирд╛ рджреЗрдЦрддрд╛ рд╣реИ, рдкреНрд░рд╕рд┐рджреНрдз рдлрд┐рд▓реНрдо рд╕реЗ "рдЬрд╛рд░реНрд╡рд┐рд╕" рдХреЗ рдПрдХ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рддрд╣рддред
рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдореИрдВрдиреЗ рдЕрдкрдиреЗ "рдЬрд╛рд░реНрд╡рд┐рд╕" рдХреЗ рд╡рд┐рдЪрд╛рд░ рдФрд░ рдШрд░ рдореЗрдВ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рдЕрдкрдиреА рдЖрд╡рд╛рдЬ рд╕реЗ рдирд╣реАрдВ рдЫреЛрдбрд╝рд╛ред рдФрд░ рдЕрдВрдд рдореЗрдВ, рд╣рд╛рде рдЗрд╕ рдЪрдорддреНрдХрд╛рд░ рдХреЗ рдирд┐рд░реНрдорд╛рдг рддрдХ рдкрд╣реБрдВрдЪ рдЧрдПред рдореБрдЭреЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ "рджрд┐рдорд╛рдЧ" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рдереА, рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдлрд┐рдЯ рдмреИрдарддреА рд╣реИредрддреЛ, рд▓реЛрд╣рд╛:- рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ 3 рдореЙрдбрд▓ рдмреА
- USB Logitech рдХреИрдорд░рд╛
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рд╣рдорд╛рд░реЗ рд╕рд╣рд╛рдпрдХ рдПрд▓реЗрдХреНрд╕рд╛ / рд╣рдм рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд░ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ:- рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╢рдмреНрдж рдХреЗ рд▓рд┐рдП рдСрдлрд╝рд▓рд╛рдЗрди рд╕рдХреНрд░рд┐рдп рдХрд░реЗрдВ
- рдмрд╛рджрд▓ рдореЗрдВ рдПрдХ рдЯреАрдо рдХреЛ рдкрд╣рдЪрд╛рдиреЛ
- рд░рди рдХрдорд╛рдВрдб
- рдкреНрд░рдЧрддрд┐ рдкрд░ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реЗрдВ рдпрд╛ рдЕрдиреБрд░реЛрдз рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░реЗрдВ
рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░рд╛ рдХреИрдорд░рд╛ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рд╕рдорд░реНрдерд┐рдд рд╣реИ, рдореБрдЭреЗ рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рд╕реЗ рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рд╣реЛрдирд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рддреБрд░рдВрдд рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рднрд╛рдЧ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВредрдСрдлрд╝рд▓рд╛рдЗрди рд╕рдХреНрд░рд┐рдпрдг
рд╕рдХреНрд░рд┐рдпрдг CMU рд╕реНрдлрд┐рдВрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣реЛрдЧрд╛, рдФрд░ рд╕рдмрдХреБрдЫ рдареАрдХ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдЖрдЙрдЯ рдСрдл рдж рдмреЙрдХреНрд╕ рдорд╛рдиреНрдпрддрд╛ рдмрд╣реБрдд рдзреАрдореА рд╣реИ, 10 рд╕реЗрдХрдВрдб рд╕реЗ рдЕрдзрд┐рдХ, рдЬреЛ рдмрд┐рд▓реНрдХреБрд▓ рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИ, рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╢рдмреНрджреЛрдВ рдХреЗ рд╢рдмреНрджрдХреЛрд╢ рдХреЛ рд╕рд╛рдл рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИредрд╡рд╣ рд╕рдм рдХреБрдЫ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдЬреЛ рдЖрдкрдХреЛ рдЪрд╛рд╣рд┐рдП:pip3 install SpeechRecognition
pip3 install 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
рдЕрдм рдкреЙрдХреЗрдЯрдлрд┐рдирдХреНрд╕ рдмрд╣реБрдд рдЬрд▓реНрджреА рдкрд╣рдЪрд╛рди рд▓реЗрддрд╛ рд╣реИредрд╡рд╛рдХреН рдкрд╣рдЪрд╛рди
рдкрд╣рд▓реЗ Google рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╡рд┐рдЪрд╛рд░ рдерд╛, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди SpeechRecognition рдореЗрдВ рд╣реИред рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛, Google рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреИрд╕реЗ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рднреМрддрд┐рдХ рд░реВрдк рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╡реНрдпрдХреНрддрд┐рдпреЛрдВредрд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдпреИрдВрдбреЗрдХреНрд╕ рдореБрдлреНрдд рдФрд░ рдЕрддреНрдпрдВрдд рд╕рд░рд▓ рдХреЗ рд▓рд┐рдП рднреА рдРрд╕рд╛ рдЕрд╡рд╕рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИредрд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░реЗрдВ, рдПрдкреАрдЖрдИ рдХреБрдВрдЬреА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред рд╕рднреА рдХрд╛рдо рдХрд░реНрд▓реЛрдо рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред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┬╗
рд╡рд╛рдХреН рд╕рдВрд╢реНрд▓реЗрд╖рдг
рдпрд╣рд╛рдВ рдпрд╛рдВрдбреЗрдХреНрд╕ рд╣рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдорджрдж рдХрд░реЗрдЧрд╛ред рд╣рдо рдкрд╛рда рдХреЛ рднреЗрдЬрддреЗ рд╣реИрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╣рдо рд╕рдВрд╢реНрд▓реЗрд╖рд┐рдд рдкрд╛рда рдХреЗ рд╕рд╛рде рдлрд╛рдЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ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" > file
рдЬрд╛рд░реНрд╡рд┐рд╕
рдпрд╣ рд╕рдм рдПрдХ рд╕рд╛рде рд░рдЦрдирд╛ рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ред
import os
import speech_recognition as sr
from xml.dom import minidom
import sys
import random
r = sr.Recognizer()
ya_uuid = ''
ya_api_key = ''
def convert_ya_asr_to_key():
xmldoc = minidom.parse('./asr_answer.xml')
itemlist = xmldoc.getElementsByTagName('variant')
if len(itemlist) > 0:
return itemlist[0].firstChild.nodeValue
else:
return False
def jarvis_on():
with sr.WavFile("send.wav") as source:
audio = r.record(source)
try:
t = r.recognize_sphinx(audio)
print(t)
except LookupError:
print("Could not understand audio")
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=' + phrase + '" > jarvis_speech.wav')
os.system('aplay jarvis_speech.wav')
def jarvis_say_good():
phrases = ["", "", "", "", "- ?", ]
randitem = random.choice(phrases)
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 [тАШkey_word', тАШkey_word1тАЩ, тАШkey_word2']):
os.system(тАШтАЩ)
jarvis_say_good()
continue
except Exception:
jarvis_say('- ')
рдпрд╣рд╛рдБ рдХреНрдпрд╛ рдЪрд▓ рд░рд╣рд╛ рд╣реИ рд╣рдо рдПрдХ рдЕрдВрддрд╣реАрди рд▓реВрдк рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, arecord'om рд╣рдо рддреАрди рд╕реЗрдХрдВрдб рд░рд┐рдХреЙрд░реНрдб рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдорд╛рдиреНрдпрддрд╛ рдХреЗ рд▓рд┐рдП рд╕реНрдлрд┐рдВрдХреНрд╕ рднреЗрдЬрддреЗ рд╣реИрдВ рдпрджрд┐ рд╢рдмреНрдж "рдЬрд╛рд░реНрд╡рд┐рд╕" рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ if jarvis_on():
рдПрдХ рдкреВрд░реНрд╡-рджрд░реНрдЬ рд╕рдХреНрд░рд┐рдпрдг рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдлрд╝рд╛рдЗрд▓ рдЪрд▓рд╛рдПрдБредрдлрд┐рд░ рд╕реЗ рд╣рдо 3 рд╕реЗрдХрдВрдб рд░рд┐рдХреЙрд░реНрдб рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдпреИрдВрдбреЗрдХреНрд╕ рдХреЛ рднреЗрдЬрддреЗ рд╣реИрдВ, рдЬрд╡рд╛рдм рдореЗрдВ рд╣рдореЗрдВ рд╣рдорд╛рд░реА рдЯреАрдо рдорд┐рд▓рддреА рд╣реИред рдЕрдЧрд▓рд╛, рд╣рдо рдХрдорд╛рдВрдб рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреНрд░рд┐рдпрд╛ рдХрд░рддреЗ рд╣реИрдВредрдмрд╕ рдЗрддрдирд╛ рд╣реАред рдирд┐рд╖реНрдкрд╛рджрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХ рдорд╣рд╛рди рдХрдИ рдХреЗ рд╕рд╛рде рдЖ рд╕рдХрддреА рд╣реИредрдпреВрдЬ-рдХреЗрд╕
рдЕрдм рдореЗрд░реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдгрдлрд┐рд▓рд┐рдкреНрд╕ рд╣реНрдпреВ
рд╕реНрдерд╛рдкрд┐рддpip install phue
рд╣реНрдпреВ рдЖрд╡реЗрджрди рдореЗрдВ, рдПрдХ рд╕реНрдерд┐рд░ рдЖрдИрдкреА рд╕реЗрдЯ рдХрд░реЗрдВ:
рдЪрд▓рд╛рдПрдБ:
import sys
from phue import Bridge
b = Bridge('192.168.0.100')
print (b.get_scene())
рд╣рдо "470d4c3c8-on-0" рдлрд╝реЙрд░реНрдо рдХреЗ рдЖрд╡рд╢реНрдпрдХ рд╕рд░реНрдХрд┐рдЯ рдХреА рдЖрдИрдбреА рд▓рд┐рдЦрддреЗ рд╣реИрдВ,рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг:
import sys
from phue import Bridge
b = Bridge('192.168.0.100')
if (sys.argv[1] == 'off'):
b.set_light([1,2,3],'on', False)
else:
b.activate_scene(1,sys.argv[1])
рдЬрд╛рд░реНрд╡рд┐рд╕ рдРрдб рдореЗрдВ: if (command_key in [' ', ' ', '']):
os.system('python3 /home/pi/smarthome/hue/hue.py a1167aa91-on-0')
jarvis_say_good()
continue
if (command_key in [' ', ' ']):
os.system('python3 /home/pi/smarthome/hue/hue.py ac637e2f0-on-0')
jarvis_say_good()
continue
if (command_key in [' ', ' ']):
os.system('python3 /home/pi/smarthome/hue/hue.py "off"')
jarvis_say_good()
continue
рдПрд▓рдЬреА рдЯреАрд╡реА
рд╣рдо рдпрд╣рд╛рдВ рд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реЗрддреЗ рд╣реИрдВ ред рдкрд╣рд▓реЗ рд▓реЙрдиреНрдЪ рдФрд░ рдпреБрдЧреНрдорди рдХреЛрдб рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдХреЛрдб рд╕реНрд╡рдпрдВ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЗрд╕ рднрд╛рдЧ рдХреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдХрд╛рдЯ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ рдПрдХ рдирд┐рдпрдВрддреНрд░рдг рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВредрдЬрд╛рд░реНрд╡рд┐рд╕ рдРрдб рдореЗрдВ:
if (command_key in [' ', ' ']):
os.system('python3 /home/pi/smarthome/TV/tv2.py 1')
jarvis_say_good()
continue
if (command_key in [тАШ ', '']):
os.system('python3 /home/pi/smarthome/TV/tv2.py 24')
jarvis_say_good()
continue
рд░реЗрдбрд┐рдпреЛ
sudo apt-get install mpg123
рдЬрд╛рд░реНрд╡рд┐рд╕ рдРрдб рдореЗрдВ:
if (command_key in ['', тАШ тАЩ,тАЩ тАЩ]):
os.system(тАШmpg123 URL')
continue
рдпрджрд┐ рдЖрдк рдЬрд╛рд░реНрд╡рд┐рд╕ рдХреЗ рд▓рд┐рдП рдЪрд┐рд▓реНрд▓рд╛рддреЗ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдЖрдк рд╕рд┐рд░реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рд╣реЛрдордмреНрд░рд┐рдЬ рднреА рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рдм рдХреБрдЫ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВредрдХреЗ рд░реВрдк рдореЗрдВ рднрд╛рд╖рдг рдорд╛рдиреНрдпрддрд╛ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХреЗ рд▓рд┐рдП, рдПрд▓реЗрдХреНрд╕рд╛ рдмреЗрд╢рдХ, рд▓реЗрдХрд┐рди 5 рдореАрдЯрд░ рдХреА рджреВрд░реА рдкрд░ рдирд┐рд╢реНрдЪрд┐рдд рд╣рд┐рдЯ рдХрд╛ рдкреНрд░рддрд┐рд╢рдд рд╕рднреНрдп рдирд╣реАрдВ рд╣реИред рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЯреАрд╡реА / рд╡рдХреНрддрд╛рдУрдВ рд╕реЗ рднрд╛рд╖рдг рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдорд╛рдиреНрдпрддрд╛ рдХреЗ рд╕рд╛рде рд╣рд╕реНрддрдХреНрд╖реЗрдк рд╣реЛрддрд╛ рд╣реИредрд╡рд╣ рд╕рдм, рдзрдиреНрдпрд╡рд╛рджред