рдЬрд╛рд░реНрд╡рд┐рд╕ рд╡реНрдпрд╛рдкрд╛рд░ рдореЗрдВ рд╡рд╛рдкрд╕ рдЖ рдЧрдпрд╛ рд╣реИ

рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╣рд░ рдХреЛрдИ рдЕрдкрдиреА рдЖрд╡рд╛рдЬ рд╕рд╣рд╛рдпрдХ рдХрд╛ рд╕рдкрдирд╛ рджреЗрдЦрддрд╛ рд╣реИ, рдкреНрд░рд╕рд┐рджреНрдз рдлрд┐рд▓реНрдо рд╕реЗ "рдЬрд╛рд░реНрд╡рд┐рд╕" рдХреЗ рдПрдХ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рддрд╣рддред

рдЫрд╡рд┐

рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдореИрдВрдиреЗ рдЕрдкрдиреЗ "рдЬрд╛рд░реНрд╡рд┐рд╕" рдХреЗ рд╡рд┐рдЪрд╛рд░ рдФрд░ рдШрд░ рдореЗрдВ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рдЕрдкрдиреА рдЖрд╡рд╛рдЬ рд╕реЗ рдирд╣реАрдВ рдЫреЛрдбрд╝рд╛ред рдФрд░ рдЕрдВрдд рдореЗрдВ, рд╣рд╛рде рдЗрд╕ рдЪрдорддреНрдХрд╛рд░ рдХреЗ рдирд┐рд░реНрдорд╛рдг рддрдХ рдкрд╣реБрдВрдЪ рдЧрдПред рдореБрдЭреЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ "рджрд┐рдорд╛рдЧ" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рдереА, рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдлрд┐рдЯ рдмреИрдарддреА рд╣реИред

рддреЛ, рд▓реЛрд╣рд╛:

  • рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ 3 рдореЙрдбрд▓ рдмреА
  • USB Logitech рдХреИрдорд░рд╛

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди


рд╣рдорд╛рд░реЗ рд╕рд╣рд╛рдпрдХ рдПрд▓реЗрдХреНрд╕рд╛ / рд╣рдм рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд░ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ:

  1. рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╢рдмреНрдж рдХреЗ рд▓рд┐рдП рдСрдлрд╝рд▓рд╛рдЗрди рд╕рдХреНрд░рд┐рдп рдХрд░реЗрдВ
  2. рдмрд╛рджрд▓ рдореЗрдВ рдПрдХ рдЯреАрдо рдХреЛ рдкрд╣рдЪрд╛рдиреЛ
  3. рд░рди рдХрдорд╛рдВрдб
  4. рдкреНрд░рдЧрддрд┐ рдкрд░ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реЗрдВ рдпрд╛ рдЕрдиреБрд░реЛрдз рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░реЗрдВ

рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░рд╛ рдХреИрдорд░рд╛ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рд╕рдорд░реНрдерд┐рдд рд╣реИ, рдореБрдЭреЗ рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рд╕реЗ рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рд╣реЛрдирд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рддреБрд░рдВрдд рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рднрд╛рдЧ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВред

рдСрдлрд╝рд▓рд╛рдЗрди рд╕рдХреНрд░рд┐рдпрдг


рд╕рдХреНрд░рд┐рдпрдг 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

рдЬрд╛рд░реНрд╡рд┐рд╕


рдпрд╣ рд╕рдм рдПрдХ рд╕рд╛рде рд░рдЦрдирд╛ рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ред

#! /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 "+ +" |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[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

рд╣реНрдпреВ рдЖрд╡реЗрджрди рдореЗрдВ, рдПрдХ рд╕реНрдерд┐рд░ рдЖрдИрдкреА рд╕реЗрдЯ рдХрд░реЗрдВ:

рдЫрд╡рд┐

рдЪрд▓рд╛рдПрдБ:


#!/usr/bin/python
import sys
from phue import Bridge

b = Bridge('192.168.0.100') # Enter bridge IP here.

#If running for the first time, press button on bridge and run with b.connect() uncommented
#b.connect()

print (b.get_scene())

рд╣рдо "470d4c3c8-on-0" рдлрд╝реЙрд░реНрдо рдХреЗ рдЖрд╡рд╢реНрдпрдХ рд╕рд░реНрдХрд┐рдЯ рдХреА рдЖрдИрдбреА рд▓рд┐рдЦрддреЗ рд╣реИрдВ,

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг:

#!/usr/bin/python
import sys
from phue import Bridge


b = Bridge('192.168.0.100') # Enter bridge IP here.

#If running for the first time, press button on bridge and run with b.connect() uncommented
#b.connect()


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

рдПрд▓рдЬреА рдЯреАрд╡реА


рд╣рдо рдпрд╣рд╛рдВ рд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реЗрддреЗ рд╣реИрдВ ред рдкрд╣рд▓реЗ рд▓реЙрдиреНрдЪ рдФрд░ рдпреБрдЧреНрдорди рдХреЛрдб рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдХреЛрдб рд╕реНрд╡рдпрдВ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЗрд╕ рднрд╛рдЧ рдХреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдХрд╛рдЯ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ рдПрдХ рдирд┐рдпрдВрддреНрд░рдг рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдЬрд╛рд░реНрд╡рд┐рд╕ рдРрдб рдореЗрдВ:

 
                #1 - POWER 
                #24 - VOLUNE_UP
                #25 - VOLUME_DOWN
                #400 - 3D_VIDEO
                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 рдореАрдЯрд░ рдХреА рджреВрд░реА рдкрд░ рдирд┐рд╢реНрдЪрд┐рдд рд╣рд┐рдЯ рдХрд╛ рдкреНрд░рддрд┐рд╢рдд рд╕рднреНрдп рдирд╣реАрдВ рд╣реИред рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЯреАрд╡реА / рд╡рдХреНрддрд╛рдУрдВ рд╕реЗ рднрд╛рд╖рдг рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдорд╛рдиреНрдпрддрд╛ рдХреЗ рд╕рд╛рде рд╣рд╕реНрддрдХреНрд╖реЗрдк рд╣реЛрддрд╛ рд╣реИред

рд╡рд╣ рд╕рдм, рдзрдиреНрдпрд╡рд╛рджред

Source: https://habr.com/ru/post/hi401049/


All Articles