Виртуальный джарвис. Typle — голосовое управление компьютером


Давно не покидала мысль о своем «Jarvis» и управлении техникой в доме голосом. И вот, наконец, руки дошли до создания сего чуда. Над «мозгами» долго думать не пришлось, Raspberry Pi подходит идеально.

Итак, железо:

  • Raspberry pi 3 model b
  • USB камера logitech

Реализация

Работать наш ассистент будет по принципу Alexa/Hub:
  1. Активироваться оффлайн по определенному слову
  2. Распознать команду в облаке
  3. Выполнить команду
  4. Отчитаться о проделай работе либо сообщить запрашиваем информацию
Т.к. моя камера поддерживается из коробки, с драйверами возиться не пришлось, поэтому сразу переходим к программной части.

Оффлайн активация

Активация будет происходить с помощью CMU Sphinx, и все бы хорошо, но из коробки распознание происходит очень медленно, больше 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
Теперь pocketsphinx распознает довольно быстро.

Распознавание речи

Сначала была идея воспользоваться сервисом гугла, к тому же его поддержка есть в SpeechRecognition. Но как оказалось гугл берет за это деньги и не работает с физ. лицами.

Благо Яндекс тоже предоставляет такую возможность, бесплатно и предельно просто.

Регистрируемся, получаем 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»

Синтез речи

Тут нам опять поможет Яндекс. Посылаем текст в ответ получаем файл с синтезированным текстом

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

Jarvis

Собираем все вместе и получаем такой скрипт.

#! /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.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 записываем три секунды и отправляем 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»

Конечный вариант скрипта:

#!/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 == "off"): b.set_light(,"on", False) else: b.activate_scene(1,sys.argv)
В джарвиса добавляем:

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 метров процент верного попадания приличный. Главная проблема - речь из телевизора\колонок записывается вместе с командами и мешает распознаванию.

На этом все, спасибо.

Теги:

  • raspberry pi
  • python
Добавить метки

Сегодня речь пойдет о нашей речи. Хотелось бы вам управлять компьютером голосом , без помощи пальцев? А, как это говорят, — силой мысли! Правда, мы не будем управлять компьютер силой мысли, но вот силой голоса вполне реально.

Программа Typle — это одна из лучших на сегодняшний день программа для управления компьютером через голос. На сайтах в комментариях к этой программе мнения сходятся.

Правда есть свои недочеты. Но об этом чуть позже. Кстати, если вас интересует — читайте мой обзор.

Скачать программу можно здесь: http://freesoft.ru/typle

Как же ее использовать? В начале запустим ее и посмотрим главные кнопки управления:

Программа нас приветствует и сразу нам даются подсказки, как использовать Typle. В начале нажмем кнопку «добавить» и запишем слово, например «открой». Для этого произнесем это слово в микрофон:

Затем жмем добавить. Итак, мы сохранили в программе своим голосом слово «Открой». Вы можете говорить в микрофон любые другие слова. Главное — не запутаться.

Следующим шагом будет добавление команд. Для этого перейдем в этот пункт:

Потом мы устанавливаем галочку напротив того пункта, который нам нужен:

Выбираем программу, приложение или действие и нажимаем на красную кнопку записи. Если компьютер воспринял наш голос, жмем «Добавить»:

И теперь будет видна в нашем профиле одна голосовая команда. В данном случае та, которая открывает 7-Zip:

И теперь, нажав завершающую кнопку «начать говорить»

говорим фразу «открой Севен Зип». В моем случае, все сработает. И программа 7-zip откроется. Помните такую фразу: Сим сим откройся? Вот это что-то приблизительно такое же.

Программа не всегда работает адекватно. Сейчас могучий русский язык не до конца изучен программистами-лингвистами… Но все-таки приятно, когда тебя слушается компьютер.

Поэтому для тестирования и банального любопытства программа Typle подойдет на все 100%.

В этом видео можно увидеть историю создания первых голосовых движков и то, над чем еще нам следует поработать:

Есть такие страшные названия других аналогов программы, как Горыныч, Перпетуум, Диктограф, Voice Commander. Но все они — «не того». Не проходят критику достойной программы.

На освоение этой программы у меня ушло 5 минут. Это довольно-таки длительное время (в основном, в таких программах я разбираюсь за 1-2 минуту). Если возникнут вопросы — пишите. До скорых встреч, друзья:)!

Большинству пользователей известно, что система Siri считается наиболее востребованным личным помощником и вопросно-ответной технологией на iOS-гаджетах. К счастью, не только система Siri доступна на рынке. Так, поклонникам фантастики и комиксов, созданных фирмой Marvel, предлагается персональный помощник JARVIS из кинофильма «Железный Человек».

Если владелец девайса видел киноленту «Железный Человек», то ему наверняка известен дворецкий Тони Старка, которого зовут Джарвис. Следовательно, пользователь сможет прибегать к помощи виртуального слуги на собственном портативном аппарате. К тому же, программа JARVIS является уникальной разработкой, применяющей голос и образ персонажа Джарвиса.

Работа утилиты JARVIS начинается с обычных аудиоинструкций по использованию и управлению указанным инструментом. По окончании настройки пользователю понадобится указать свой пол (чтобы виртуальный помощник смог корректно обращаться к владельцу устройства). Кроме того, здесь придется задать единицу измерения основных температурных условий (в частности, градусы по Кельвину, Фаренгейту либо, разумеется, Цельсию).


С детальным перечнем инструкций можно ознакомиться, коснувшись иконки, размещенной в верхнем углу дисплея. При этом все команды должны непременно начинаться с обращения «Джарвис» и обычно содержать одно слово (к примеру, «Джарвис, прогноз погоды»). Также JARVIS умеет уведомлять обладателя девайса о будущих встречах и отображать текущее время. Еще в программе можно создавать разнообразные аудионапоминания.

Важно отметить, что владельцам оптических дисков с киноблокбастером «Железный Человек» утилита JARVIS предоставляет дополнительные возможности. Например, пользователь сможет легко управлять проигрыванием соответствующего фильма при помощи данного виртуального дворецкого.


Полезная информация : если Вы зададите своему виртуальному помощнику вопрос: стоит ли мне купить бмв 740 (http://www.bmw-avtoport.ru/auto/7/), то его ответ со сто процентной вероятностью будет утвердительным! Кстати, приобрести BMW седьмой серии Вы можете прямо сейчас на самых выгодных для себя условиях! Все, что Вам для этого нужно сделать, это посетить сайт www.bmw-avtoport.ru.
Поделитесь с друзьями или сохраните для себя:

Загрузка...