Голосовое управление на основе SDK ОК Гугл (OK Google)
Модератор: immortal
- lanket
- Сообщения: 1168
- Зарегистрирован: Вт окт 14, 2014 11:27 pm
- Откуда: Санкт-Петербург
- Благодарил (а): 260 раз
- Поблагодарили: 163 раза
Re: Реализация голосового управления по типу ОК Гугл (OK Goo
https://developers.google.com/assistant ... run-sample
Отправлено с моего Redmi Note 3 через Tapatalk
Отправлено с моего Redmi Note 3 через Tapatalk
Разработка голосового асистента для Мажордомо по любому ключевому слову.
Обсужение
gitHub 2й версии терминала
GitHub модуля для МД
gitHub сырого модуля 2й версии
Connect
Rasberry Pi 2, MDM, MySensors. И говорящий апельсин.



gitHub сырого модуля 2й версии

Rasberry Pi 2, MDM, MySensors. И говорящий апельсин.
- lanket
- Сообщения: 1168
- Зарегистрирован: Вт окт 14, 2014 11:27 pm
- Откуда: Санкт-Петербург
- Благодарил (а): 260 раз
- Поблагодарили: 163 раза
Re: Реализация голосового управления по типу ОК Гугл (OK Goo
Судя по вышеприведенной статье. С этой штукой как раз таки то что надо и получится. Она реагирует только на одно ключевое слово Ok Google или Хей Google. Дальнейшие слова распознаёт с помощью Google и передаёт в питоновский скрипт. Дальше что хочешь то и делай.
Отправлено с моего Redmi Note 3 через Tapatalk
Отправлено с моего Redmi Note 3 через Tapatalk
Разработка голосового асистента для Мажордомо по любому ключевому слову.
Обсужение
gitHub 2й версии терминала
GitHub модуля для МД
gitHub сырого модуля 2й версии
Connect
Rasberry Pi 2, MDM, MySensors. И говорящий апельсин.



gitHub сырого модуля 2й версии

Rasberry Pi 2, MDM, MySensors. И говорящий апельсин.
- lanket
- Сообщения: 1168
- Зарегистрирован: Вт окт 14, 2014 11:27 pm
- Откуда: Санкт-Петербург
- Благодарил (а): 260 раз
- Поблагодарили: 163 раза
Re: Реализация голосового управления по типу ОК Гугл (OK Goo
Пока еду домой вспомнил свежую тему на форуме о переходе данных из питона в МД.
Спасибо skysilver за наводку:
import urllib
current_url = 'http://192.168.1.10/objects/?script=jso ... %s&rssi=%s' % (list_beacon[0],list_beacon[1])
urllib.urlopen(current_url)
Получается надо склонировать с гитхаба пример от гугла для IoT, в этом питоновском скрипте найти место где гугл отдает текст в питоне для обработки, и просто кодом от skysilver отправить в МД.
Пока кажется всё просто.
Кто-нибудь поправьте строчку от уважаемого skysilver на отправку текстовой переменной в api МД обработчик голосовых команд.
Как мои улягуся спать, буду экспрементировать с микрофоном и скриптом
Отправлено с моего Redmi Note 3 через Tapatalk
Спасибо skysilver за наводку:
import urllib
current_url = 'http://192.168.1.10/objects/?script=jso ... %s&rssi=%s' % (list_beacon[0],list_beacon[1])
urllib.urlopen(current_url)
Получается надо склонировать с гитхаба пример от гугла для IoT, в этом питоновском скрипте найти место где гугл отдает текст в питоне для обработки, и просто кодом от skysilver отправить в МД.
Пока кажется всё просто.
Кто-нибудь поправьте строчку от уважаемого skysilver на отправку текстовой переменной в api МД обработчик голосовых команд.
Как мои улягуся спать, буду экспрементировать с микрофоном и скриптом
Отправлено с моего Redmi Note 3 через Tapatalk
Разработка голосового асистента для Мажордомо по любому ключевому слову.
Обсужение
gitHub 2й версии терминала
GitHub модуля для МД
gitHub сырого модуля 2й версии
Connect
Rasberry Pi 2, MDM, MySensors. И говорящий апельсин.



gitHub сырого модуля 2й версии

Rasberry Pi 2, MDM, MySensors. И говорящий апельсин.
-
- Сообщения: 3006
- Зарегистрирован: Чт авг 21, 2014 8:28 am
- Откуда: Киров, Россия
- Благодарил (а): 400 раз
- Поблагодарили: 1754 раза
- Контактная информация:
Re: Реализация голосового управления по типу ОК Гугл (OK Goo
Не уверен и сам не проверял, но возможно об этом речь:lanket писал(а):на отправку текстовой переменной в api МД обработчик голосовых команд
Код: Выделить всё
import urllib
current_url = 'http://192.168.1.10/command.php?qry=%s' % (переменная_с_текстом)
urllib.urlopen(current_url)
- Рейтинг: 1.16%
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Мой CONNECT | Блоги | Telegram
- lanket
- Сообщения: 1168
- Зарегистрирован: Вт окт 14, 2014 11:27 pm
- Откуда: Санкт-Петербург
- Благодарил (а): 260 раз
- Поблагодарили: 163 раза
Re: Реализация голосового управления по типу ОК Гугл (OK Goo
А ее, эту переменную, не надо както конвертнуть предварительно по аналогии ПХП urlencode ради избавления от пробелов и русских букв?skysilver писал(а):Не уверен и сам не проверял, но возможно об этом речь:lanket писал(а):на отправку текстовой переменной в api МД обработчик голосовых командКод: Выделить всё
import urllib current_url = 'http://192.168.1.10/command.php?qry=%s' % (переменная_с_текстом) urllib.urlopen(current_url)
Разработка голосового асистента для Мажордомо по любому ключевому слову.
Обсужение
gitHub 2й версии терминала
GitHub модуля для МД
gitHub сырого модуля 2й версии
Connect
Rasberry Pi 2, MDM, MySensors. И говорящий апельсин.



gitHub сырого модуля 2й версии

Rasberry Pi 2, MDM, MySensors. И говорящий апельсин.
- lanket
- Сообщения: 1168
- Зарегистрирован: Вт окт 14, 2014 11:27 pm
- Откуда: Санкт-Петербург
- Благодарил (а): 260 раз
- Поблагодарили: 163 раза
Re: Реализация голосового управления по типу ОК Гугл (OK Goo
2й день эксперементов.
Попытка подключения активного микрофона увенчалась провалом.
Во первых активный микрофон выдает линейный сигнал, а у апельсинки нет LineIn. Все равно попытавшись подключить на вход микрофона результатов не дало.
Во вторых для того чтобы подключить микрофон снял шилд, и в надежде услышать ответ асистента подключил динамики на LineOut.
Шумы в динамиках дали понять что с проводными микрофонами фокус не удасться из за наводок.
К сожалению статью я увидел только недавно, в которой говориться что через USB микрофон получается фокус, кстати и гугл рекомендует такой микрофон, и поэтому микрофон заказал на али только сегодня. В городе окажусь только в воскресенье, и если не получиться найти у знакомых до воскресенья придется наверно купить.
Вот пример от гугла питоновского скрипта который, как я понял, просто реагирует на "ОК гугл" и выводит распознанный текст после ключевого слова:
Не зная питона, смею догадываться что строчку от многоуважаемого skysilver надо засунуть после print(event)
и выглядить тогда должно вот так:
К сожалению нет возможности проверить из за отсутствия USB микрофона.
Попытка подключения активного микрофона увенчалась провалом.
Во первых активный микрофон выдает линейный сигнал, а у апельсинки нет LineIn. Все равно попытавшись подключить на вход микрофона результатов не дало.
Во вторых для того чтобы подключить микрофон снял шилд, и в надежде услышать ответ асистента подключил динамики на LineOut.
Шумы в динамиках дали понять что с проводными микрофонами фокус не удасться из за наводок.
К сожалению статью я увидел только недавно, в которой говориться что через USB микрофон получается фокус, кстати и гугл рекомендует такой микрофон, и поэтому микрофон заказал на али только сегодня. В городе окажусь только в воскресенье, и если не получиться найти у знакомых до воскресенья придется наверно купить.
Вот пример от гугла питоновского скрипта который, как я понял, просто реагирует на "ОК гугл" и выводит распознанный текст после ключевого слова:
Код: Выделить всё
#!/usr/bin/env python
# Copyright (C) 2017 Google Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from __future__ import print_function
import argparse
import os.path
import json
import google.oauth2.credentials
from google.assistant.library import Assistant
from google.assistant.library.event import EventType
from google.assistant.library.file_helpers import existing_file
def process_event(event):
"""Pretty prints events.
Prints all events that occur with two spaces between each new
conversation and a single space between turns of a conversation.
Args:
event(event.Event): The current event to process.
"""
if event.type == EventType.ON_CONVERSATION_TURN_STARTED:
print()
print(event)
if (event.type == EventType.ON_CONVERSATION_TURN_FINISHED and
event.args and not event.args['with_follow_on_turn']):
print()
def main():
parser = argparse.ArgumentParser(
formatter_class=argparse.RawTextHelpFormatter)
parser.add_argument('--credentials', type=existing_file,
metavar='OAUTH2_CREDENTIALS_FILE',
default=os.path.join(
os.path.expanduser('~/.config'),
'google-oauthlib-tool',
'credentials.json'
),
help='Path to store and read OAuth2 credentials')
args = parser.parse_args()
with open(args.credentials, 'r') as f:
credentials = google.oauth2.credentials.Credentials(token=None,
**json.load(f))
with Assistant(credentials) as assistant:
for event in assistant.start():
process_event(event)
if __name__ == '__main__':
main()
и выглядить тогда должно вот так:
Код: Выделить всё
#!/usr/bin/env python
# Copyright (C) 2017 Google Inc and MajorDomo Group
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from __future__ import print_function
import argparse
import os.path
import json
import google.oauth2.credentials
from google.assistant.library import Assistant
from google.assistant.library.event import EventType
from google.assistant.library.file_helpers import existing_file
def process_event(event):
"""Pretty prints events.
Prints all events that occur with two spaces between each new
conversation and a single space between turns of a conversation.
Args:
event(event.Event): The current event to process.
"""
if event.type == EventType.ON_CONVERSATION_TURN_STARTED:
print()
print(event)
import urllib
current_url = 'http://ip_majordomo/command.php?qry=%s' % event
urllib.urlopen(current_url)
if (event.type == EventType.ON_CONVERSATION_TURN_FINISHED and
event.args and not event.args['with_follow_on_turn']):
print()
def main():
parser = argparse.ArgumentParser(
formatter_class=argparse.RawTextHelpFormatter)
parser.add_argument('--credentials', type=existing_file,
metavar='OAUTH2_CREDENTIALS_FILE',
default=os.path.join(
os.path.expanduser('~/.config'),
'google-oauthlib-tool',
'credentials.json'
),
help='Path to store and read OAuth2 credentials')
args = parser.parse_args()
with open(args.credentials, 'r') as f:
credentials = google.oauth2.credentials.Credentials(token=None,
**json.load(f))
with Assistant(credentials) as assistant:
for event in assistant.start():
process_event(event)
if __name__ == '__main__':
main()
- Рейтинг: 1.16%
Разработка голосового асистента для Мажордомо по любому ключевому слову.
Обсужение
gitHub 2й версии терминала
GitHub модуля для МД
gitHub сырого модуля 2й версии
Connect
Rasberry Pi 2, MDM, MySensors. И говорящий апельсин.



gitHub сырого модуля 2й версии

Rasberry Pi 2, MDM, MySensors. И говорящий апельсин.
- Gelezako
- Сообщения: 963
- Зарегистрирован: Чт июн 02, 2016 9:33 pm
- Благодарил (а): 205 раз
- Поблагодарили: 106 раз
- Контактная информация:
Re: Реализация голосового управления по типу ОК Гугл (OK Goo
ну если вы боитесь что в эту переменную могут попасть такие символа, то да стоит, надо понимать как формируется значение переменнойА ее, эту переменную, не надо както конвертнуть предварительно по аналогии ПХП urlencode ради избавления от пробелов и русских букв?
---
Попробовал заставить работать скрипт питоновский, после танцев с бубмон, закачкой всех пакетов выяснилось что нужно иметь акаунт в гугл клауде, для этого необходимо прикрепить банковскую карту, они снимают 1 бакс в качестве подтверждения, создать приложение в клауде, включить использование гугл асистент апи и настроить пользователя. Тут я забуксовал т.к. хел гугла не отвечал реалиям интерфейса в клауде

фанат Мажордомо
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
- lanket
- Сообщения: 1168
- Зарегистрирован: Вт окт 14, 2014 11:27 pm
- Откуда: Санкт-Петербург
- Благодарил (а): 260 раз
- Поблагодарили: 163 раза
Re: Реализация голосового управления по типу ОК Гугл (OK Goo
Я делал буквально по инструкции https://www.cnx-software.com/2017/07/30 ... stant-sdk/Gelezako писал(а):...
Попробовал заставить работать скрипт питоновский, после танцев с бубмон, закачкой всех пакетов выяснилось что нужно иметь акаунт в гугл клауде, для этого необходимо прикрепить банковскую карту, они снимают 1 бакс в качестве подтверждения, создать приложение в клауде, включить использование гугл асистент апи и настроить пользователя. Тут я забуксовал т.к. хел гугла не отвечал реалиям интерфейса в клауде
Установка и запуск прошла как по маслу.
Аккаунт в гугл клауде у меня давно, сейчас уже и не помню как заводил. Поэтому с этим проблем не было.
USB микрофон даже в магазинах не нашлось. Друг подкинул идею подключить веб камеру с микрофоном. Там же микрофон как отдельный девайс. Спать лягут у меня, буду пробовать.
Отправлено с моего Redmi Note 3 через Tapatalk
Разработка голосового асистента для Мажордомо по любому ключевому слову.
Обсужение
gitHub 2й версии терминала
GitHub модуля для МД
gitHub сырого модуля 2й версии
Connect
Rasberry Pi 2, MDM, MySensors. И говорящий апельсин.



gitHub сырого модуля 2й версии

Rasberry Pi 2, MDM, MySensors. И говорящий апельсин.
- lanket
- Сообщения: 1168
- Зарегистрирован: Вт окт 14, 2014 11:27 pm
- Откуда: Санкт-Петербург
- Благодарил (а): 260 раз
- Поблагодарили: 163 раза
Re: Реализация голосового управления по типу ОК Гугл (OK Goo
Разработка голосового асистента для Мажордомо по любому ключевому слову.
Обсужение
gitHub 2й версии терминала
GitHub модуля для МД
gitHub сырого модуля 2й версии
Connect
Rasberry Pi 2, MDM, MySensors. И говорящий апельсин.



gitHub сырого модуля 2й версии

Rasberry Pi 2, MDM, MySensors. И говорящий апельсин.
- lanket
- Сообщения: 1168
- Зарегистрирован: Вт окт 14, 2014 11:27 pm
- Откуда: Санкт-Петербург
- Благодарил (а): 260 раз
- Поблагодарили: 163 раза
Re: Реализация голосового управления по типу ОК Гугл (OK Goo
USB микрофона не нашёл. по совету друга воткнул вебкамеру с микрофоном.
Заработало. Но цель не достигнута, под водой спрятались 2 камня:
Так как переменная event оказалась не текстовой. И просто конвертнув ее не получается:
File "/usr/lib/python3.5/urllib/parse.py", line 778, in urlencode
if len(query) and not isinstance(query[0], tuple):
TypeError: not a valid non-string sequence or mapping object
По Русски скатина не хочет понимать. Но эта проблема вывела на интересный путь:
Оказывается этот SDK связан с API.AI . Узнал это пытаясь найти как заставить его понимать на отличном от Английского языка и наткнулся на такую штуку: https://stackoverflow.com/questions/441 ... -languages
Пошёл ковырять настройки и нашёл как их связать.
Вроде связал выбран Русский а почемуто не понимает. 2 часа ночи голова не соображает буду ковырять завтра.
Кстати работает достаточно шустро. загрузка процессора при слушании эфира всего 18%. Ответы от гугла в косоль прилетаю очень бстро. Одно лишь не устраивает так обращение к Алисе OK Google
UDT P.S.
Получатся сам диалог можно отработать в API.AI и полученный результат логики API.AI это команда Maordomo передать ему ....
Прикольно.
Надо разобраться с русским.
Заработало. Но цель не достигнута, под водой спрятались 2 камня:
Так как переменная event оказалась не текстовой. И просто конвертнув ее не получается:
File "/usr/lib/python3.5/urllib/parse.py", line 778, in urlencode
if len(query) and not isinstance(query[0], tuple):
TypeError: not a valid non-string sequence or mapping object
По Русски скатина не хочет понимать. Но эта проблема вывела на интересный путь:
Оказывается этот SDK связан с API.AI . Узнал это пытаясь найти как заставить его понимать на отличном от Английского языка и наткнулся на такую штуку: https://stackoverflow.com/questions/441 ... -languages
Пошёл ковырять настройки и нашёл как их связать.
Вроде связал выбран Русский а почемуто не понимает. 2 часа ночи голова не соображает буду ковырять завтра.
СпойлерПоказать
UDT P.S.
Получатся сам диалог можно отработать в API.AI и полученный результат логики API.AI это команда Maordomo передать ему ....
Прикольно.
Надо разобраться с русским.
- За это сообщение автора lanket поблагодарили (всего 2):
- skysilver (Вс сен 10, 2017 2:07 pm) • directman66 (Вс сен 10, 2017 7:50 pm)
- Рейтинг: 2.33%
Разработка голосового асистента для Мажордомо по любому ключевому слову.
Обсужение
gitHub 2й версии терминала
GitHub модуля для МД
gitHub сырого модуля 2й версии
Connect
Rasberry Pi 2, MDM, MySensors. И говорящий апельсин.



gitHub сырого модуля 2й версии

Rasberry Pi 2, MDM, MySensors. И говорящий апельсин.