Наверняка, каждый мечтает о своем голосовом ассистенте, под катом еще одна реализация «Джарвиса» из известного фильма.
Давно не покидала мысль о своем «Jarvis» и управлении техникой в доме голосом. И вот, наконец, руки дошли до создания сего чуда. Над «мозгами» долго думать не пришлось, Raspberry Pi подходит идеально.
- Raspberry pi 3 model b
- USB камера logitech
Реализация
Работать наш ассистент будет по принципу Alexa/Hub:
- Активироваться оффлайн по определенному слову
- Распознать команду в облаке
- Выполнить команду
- Отчитаться о проделай работе либо сообщить запрашиваем информацию
Оффлайн активация
Активация будет происходить с помощью CMU Sphinx, и все бы хорошо, но из коробки распознание происходит очень медленно, больше 10 сек, что абсолютно не подходит, для решения проблемы нужно очистить словарь от ненужных слов.
Как сделать Jarvis: Знакомство с нужным софтом для создания виртуального ассистента.
Устанавливаем все необходимое:
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
Теперь pocketsphinx распознает довольно быстро.
Распознавание речи
Сначала была идея воспользоваться сервисом гугла, к тому же его поддержка есть в SpeechRecognition. Но как оказалось гугл берет за это деньги и не работает с физ. лицами.
Благо Яндекс тоже предоставляет такую возможность, бесплатно и предельно просто.
Регистрируемся, получаем API KEY. Все работу можно производить curl’om.
Синтез речи
Тут нам опять поможет Яндекс. Посылаем текст в ответ получаем файл с синтезированным текстом
curl «https://tts.voicetech.yandex.net/generate?format=wavspeaker=zaharkey=ya_api_key» -G —data-urlencode «text=text» > file
Jarvis
Собираем все вместе и получаем такой скрипт.
Что тут происходит. Запускаем бесконечный цикл, arecord’om записываем три секунды и отправляем sphinx на распознание, если в файле встречается слово «jarvis»
if jarvis_on():
проигрываем заранее записанный фаил оповещения об активации.
Опять записываем 3 секунды и отправляем Яндексу, в ответ получаем нашу команду. Далее выполняем действия исходя из команды.
На этом собственно все. Сценариев выполнения можно придумать великое множество.
Use-case
Теперь немного примеров реального моего использования
Philips Hue
pip install phue
В приложении Hue устанавливаем статический IP:
#!/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())
Выписываем ID нужных схем, вида «470d4c3c8-on-0»
Я сделал НАСТОЯЩЕГО ДЖАРВИСА! | Siri и Алиса больше не нужны :3
Конечный вариант скрипта:
#!/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
LG TV
Берем скрипт отсюда. После первого запуска и ввода кода сопряжения, сам код не меняется, поэтому можно выпилить эту часть из скрипта и оставить только управляющую.
В джарвиса добавляем:
#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
Еще можно поставить homebridge и управлять всем через Siri, в случае если до джарвиса не докричаться.
Что касается качества распознавания речи, не Alexa конечно, но на расстоянии до 5 метров процент верного попадания приличный. Главная проблема — речь из телевизораколонок записывается вместе с командами и мешает распознаванию.
На этом все, спасибо.
Источник: habr.com
Cвой Джарвис на языке программирования Python
помогите пожалуйста у меня при установке пай аудио выходит ERROR: Command errored out with exit status 1: ‘c:python projectsvasvenvscriptspython.exe’ -u -c ‘import sys, setuptools, tokenize; sys.argv[0] = ‘»‘»‘C:\Users\9
B80~1\AppData\Local\Temp\pip-install-ue3zpsmx\PyAudio\setup.py'»‘»‘; __file__='»‘»‘C:\Users\9B80~1\AppData\Local\Temp\pip-install-ue3zpsmx\PyAudio\setup.p
y'»‘»‘;f=getattr(tokenize, ‘»‘»‘open'»‘»‘, open)(__file__);code=f.read().replace(‘»‘»‘rn'»‘»‘, ‘»‘»‘n'»‘»‘);f.close();exec(compile(code, __file__, ‘»‘»‘exec'»‘»‘))’
install —record ‘C:Users9B80~1AppDataLocalTemppip-record-k4o2but4install-record.txt’ —single-version-externally-managed —compile —install-headers ‘c:python
projectsvasvenvincludesitepython3.7PyAudio’ Check the logs for full command output.
Развернуть ветку
скорее-всего у тебя новая версия питона. Попробуй откатить до 3.6 или скачать готовый установочный пакет, вместо установки через pip.
Развернуть ветку
Скачай отсюда whl файл PyAudio под твою версию питона и ОС
https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyaudio
введи в консоль: pip install название файла PyAudio
например:
pip install PyAudio‑0.2.11‑cp38‑cp38‑win_amd64.whl
Python Extension Packages for Windows — Christoph Gohlke
www.lfd.uci.edu
Развернуть ветку
подскажите, funcs подчеркивается красным и при запуске такая ошибка
Traceback (most recent call last):
File «D:/Python/Джарвис/start.py», line 1, in
import functions
File «D:PythonДжарвисfunctions.py», line 8, in
import calculator
File «D:PythonДжарвисcalculator.py», line 1, in
import funcs
ModuleNotFoundError: No module named ‘funcs’
Развернуть ветку
походу автор опечатался и имел ввиду import functions вместо funcs.
Развернуть ветку
Подскажите как решить
Traceback (most recent call last):
File «start.py», line 16, in
functions.listen()
File «C:UsersRDesktopНовая папкаПятницаFridayfunctions.py», line 68, in listen
while True: time.sleep(0.1)
NameError: name ‘time’ is not defined
Развернуть ветку
import time
в фaйле functions.py
Источник: vc.ru
Джарвис для самых маленьких
Думаю, что многие смотрели фильм про эксцентричного изобретателя Тони Старка, и видели, как работает его ИИ Джарвис. Многие хотели создать такого же, чтобы можно было также быстро, с помощью голоса, контролировать собственный компьютер. На данную тематику написано много статей. Все они довольно сложны, в них используется много строк кода, библиотек и совсем непростые алгоритмы.
Но…я попробую создать рабочий прототип голосового ассистента используя буквально 4-5 библиотек и не самый замысловатый скрипт, что позволит, на начальном уровне знания python создать полезного помощника для работы.
Нам понадобятся библиотеки:
- pyAudio
- speech_recognition
- Os
- PyAutogui
- time