Страница 10 из 30
Re: Реализация голосового управления по типу ОК Гугл (OK Goo
Добавлено: Пн сен 11, 2017 7:31 pm
lanket
lanket писал(а):skysilver писал(а):Имхо главный недостаток домашних поделок - это плохой аналоговый тракт. В тех же амазон эхо стоит матрица микрофонов, направленных по секторам, и сигналы с них обрабатываются специализированной микросхемой цифровой обработки сигналов. И только после этого очищенная, усиленная, без шумов шумов и с хорошим соотношением сигнал/шум запись отдается в облако на распознавание. ....
Согласен полностью, но то что вы описываете это вопрос наличия микросхемы с обвесом или другими словами шилд, что мешает ее туда воткнуть?
Видимо Вы говорите об таких девайсах: До того как познакомился с данным SDK упел заказать для эксперементов такие штучки думая над альтернативным подходом к данной задачи:
https://ru.aliexpress.com/item/VS1053-V ... 0.0.NB6qUn
https://ru.aliexpress.com/item/UDA1380- ... 0.0.NB6qUn
skysilver писал(а):... То что русского пока нет, это дело десятое.
Согласен 18 год не за горами.
skysilver писал(а): А вот захват и запись звука это та причина, по которой до сих голосовое управление не стало основным. Можно побаловаться с usb-микрофоном, но в массы это не уйдёт, т.к. в реальных условиях эксплуатации (не на стенде) будут постоянные проблемы.
Вполне веские аргументы. Будем пробовать. Делиться опытом.
По поводу проблем с микрофоном думаю Вы правы. На ум приходит, неоднократно озвученная здесь мысль, активный микрофон. Как пример встроеный микрофон, вроде записывает звуки а для распознования не подходит.
У меня валяется для этих эксперементов валяется такая штука
https://ru.aliexpress.com/item/Hot-Sale ... 0.0.79Fi8H
Или попытаться с такой специализированной штукой попробовать, может она как раз решает эти проблемы:
Уважаемый
ferrumlogic подкидывал ссылку
https://esp32.com/viewtopic.php?t=2771
Ну так если руки из правильного места растут.
Такой микрофон упоминается в описании по которому я настраивал.
Для эксперементов заказал ещё и такой , якобы он с шумоподавлением : Одежда высшего качества Mini USB микрофон Регулируемый Настольный USB микрофон Анти-шум аудио портативный мини USB микрофон для компьютера
http://s.aliexpress.com/nUBFjqIF
(from AliExpress Android)
Отправлено с моего Redmi Note 3 через Tapatalk
Re: Реализация голосового управления по типу ОК Гугл (OK Goo
Добавлено: Пн сен 11, 2017 8:01 pm
directman66
а недорогих USB колонок с хорошим звуком че-то не нашел. Вроде есть тут у нас какие-то смартбай за адекватные деньги.
нашел еще инструкцию по настройке от гугла
https://developers.google.com/assistant ... run-sample
Re: Реализация голосового управления по типу ОК Гугл (OK Goo
Добавлено: Ср сен 13, 2017 12:25 am
lanket
Устал я воевать с этим питоном, спать уже хочу. Споткнулся на закодировать в урл строку:
Код: Выделить всё
#!/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 urllib
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()
if (event.type == EventType.ON_CONVERSATION_TURN_FINISHED and
event.args and not event.args['with_follow_on_turn']):
print()
if event.type == EventType.ON_RECOGNIZING_SPEECH_FINISHED:
isay = event.args['text']
# isay = ('qry',event.args['text'])
# isay = object.__str__(event.args['text'])
print('I listen: ', isay)
# current_url = 'http://192.168.1.44/command.php?' % urllib.parse.urlencode(isay)
# current_url = 'http://192.168.1.44/command.php?qry=' % urllib.parse.urlencode(str(isay))
current_url = 'http://192.168.1.44/command.php?qry=' % urllib.parse.quote(isay)
urllib.urlopen(current_url)
print('Command: ', current_url)
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()
В таком исполнении так ругается:
Traceback (most recent call last):
ON_MUTED_CHANGED:
{'is_muted': False}
ON_START_FINISHED
ON_CONVERSATION_TURN_STARTED
ON_END_OF_UTTERANCE
ON_RECOGNIZING_SPEECH_FINISHED:
{'text': 'hello'}
I listen: hello
Traceback (most recent call last):
File "/home/pi/env/bin/googlesamples-assistant-hotword", line 11, in <module>
sys.exit(main())
File "/home/pi/env/lib/python3.5/site-packages/googlesamples/assistant/library/hotword.py", line 80, in main
process_event(event)
File "/home/pi/env/lib/python3.5/site-packages/googlesamples/assistant/library/hotword.py", line 57, in process_event
current_url = '
http://192.168.1.44/command.php?qry=' % urllib.parse.quote(isay)
TypeError: not all arguments converted during string formatting
Собственно по английски работает супер. Получилось выловить текст команды после ключевого слова. Но вот перекодировать в урл что то туплю.
Помогите пожалуйста, устал я с этим питоном.
Re: Реализация голосового управления по типу ОК Гугл (OK Goo
Добавлено: Ср сен 13, 2017 12:49 am
tarasfrompir
Ну и зачем что то писать вот смотри здесь
https://pypi.python.org/pypi/SpeechRecognition/
Та и примеры в том числе... в 3 строки без гемора
*** Сообщение запрещено. Имя похоже на спамерское. ***
Re: Реализация голосового управления по типу ОК Гугл (OK Goo
Добавлено: Ср сен 13, 2017 6:06 am
nick7zmail
А чо - просто urllib.urlencode() не канает?
Re: Реализация голосового управления по типу ОК Гугл (OK Goo
Добавлено: Ср сен 13, 2017 8:27 am
lanket
nick7zmail писал(а):А чо - просто urllib.urlencode() не канает?
Пишет что неправильный формат или тип данных, из описания я так понял что нужен массив в формате json пар (переменная+значение переменной).
И так понял что сильно зависит от версии питона. Там вроде как 3.5
Отправлено с моего Redmi Note 3 через Tapatalk
Re: Реализация голосового управления по типу ОК Гугл (OK Goo
Добавлено: Ср сен 13, 2017 8:42 am
nick7zmail
аа...тогда надо массив создать, и в json кодировать...я ток на php могу написать, как это сделать...питон давно забыт, как страшный сон =D
Re: Реализация голосового управления по типу ОК Гугл (OK Goo
Добавлено: Ср сен 13, 2017 11:17 pm
lanket
Питон это величайшее зло на планете, хуже мелкософта.
2 дня на примитивную задачу Get запрос, это полный пипец. Ни один из примеров в инете не работает.
Хоть кто нибудь шарит в этом гре@#$ом питоне? Прошу прощения за французский.
Код: Выделить всё
#!/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 urllib
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()
if event.type == EventType.ON_RECOGNIZING_SPEECH_FINISHED:
# isay = event.args['text']
# cmd = str(event.args['text'])
# cmd = str(event.args['text'])
# isay = {'qry':cmd}
# current_url = 'http://192.168.1.44/command.php?' % urllib.parse.urlencode(isay)
# isay = ('qry',event.args['text'])
# isay = object.__str__(event.args['text'])
# print('I listen: ', isay)
# current_url = 'http://192.168.1.44/command.php?qry=' % urllib.parse.urlencode(str(isay))
# current_url = 'http://192.168.1.44/command.php?qry=' % urllib.parse.quote(isay)
# urllib.urlopen(current_url)
# print('Command: ', current_url)
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()
Хоть кто нибудь помогите в такой простой задаче.
Попытки засунуть команду в JSON
выдает ошибку мол не все аргументы стринг формата.
Добавление str
и даже
тоже ругается также.
достал этот питон, честное слово. Вогруг да около и не работает.
Не уж то никто не шарит в питоне?
Re: Реализация голосового управления по типу ОК Гугл (OK Goo
Добавлено: Чт сен 14, 2017 12:26 am
Gelezako
directman66 писал(а):а железячный гугл хоум и amazon alexa еще не разобрали по кусочкам? Когда его можно будет запилить? Когда добавят русский язык?
русского нет и не скоро будет
directman66 писал(а):
alexa интегрируется же в сторонние сервисы.
немного нет так, это сторонние продукты пишут для Алексы плагины и их можно установить в панели Алексы что даёт возможность управлять этими устройствами. Вот я снимал видео про то как управлять лампочками Сяоми
https://www.youtube.com/watch?v=aAWCKUIylh4
если бы что-то подобное появилось в МЖД, то было бу круто. Но кроме Сергея врядли такое кто-то запилит.
Re: Реализация голосового управления по типу ОК Гугл (OK Goo
Добавлено: Чт сен 14, 2017 7:38 am
directman66
кстати у alexa есть интересное продолжение, amazon dash wand
https://www.amazon.com/Amazon-Dash-Wand ... B01MQMJFDK
Очень интересное решение плюс еще сканер штрих-кода. И цена всего 20 евро. Но вроде как не является аналогом amazon echo, а лишь дополнение для заказа товаров и услуг.
Все советуют Гугл хоум (у нас около 9000 руб) с его питоном и непонятными командами, а мне кажется что амазон ехо (
https://www.amazon.com/Amazon-Echo-Dot- ... ords=alexa стоить сейчас в 2 раза дешевле) с помошью скилов можно научить своим командам на примере скила от домотикса.
https://github.com/madgeni/alexa_domo
даже мне кажется можно и команды по русски произносить.