Страница 1 из 64

[Модуль] [Железо] Голосовое управление по ключевому слову на базе Orange Pi Zero и аналогов

Добавлено: Вт май 08, 2018 12:45 am
lanket
Реагирование на ключевое слово сделано на snowboy.
Распознование речи и синтез речи на выбор Google, Yandex, Wit... На выбор.


Разработка терминала ведет Anaki
gitHub 2й версии терминала
gitHub модуля
Онлайн поддержка терминала в Телеграмм

Быстрая установка с помощью имиджа флэшки:
СпойлерПоказать
Имиджи от Floks
OPI Zero H2 256 ядро 3.14.113
Образ терминала с утановленными плагинами Веб интерфейс и Google Assistant
вывод звука 3.5
микрофон ps3 eye
после запуска можно войти через веб интерфейс для настроек ip_adress:8989
для работы Google Assistant необходимо зарегистрировать новую модель устройства по инструкции
https://github.com/Aculeasis/mdmt2-google-assistant
google-auth-oauthlib[tool] google-assistant-grpc установлены (на плате с 256Mb памяти возникают сложности )
пользователь:root
пароль:25201540
Образ с карты 4Гб

OPI Zero H2 256ядро 4.19.20
Образ терминала с утановленными плагинами Веб интерфейс, Google Assistant и STT через Google Assistant
вывод звука 3.5
микрофон ps3 eye
после запуска можно войти через веб интерфейс для настроек ip_adress:8989 логин admin без пароля
для работы Google Assistant необходимо зарегистрировать новую модель устройства по инструкции
https://github.com/Aculeasis/mdmt2-google-assistant
google-auth-oauthlib[tool] google-assistant-grpc установлены (на плате с 256Mb памяти возникают сложности )
пользователь:root
пароль:25201540
Образ с карты 8Гб

Предпочтительней использовать 4 ядро меньше нагрев (в стандартном корпусе температура 45° - 55° в 3 ядре 70° - 80° ), но есть проблема со звуком, которая решается установкой внешней звуковой картой

Имидж от меня
OPI Zero Plus H5 512 ядро 4.19.20
Образ терминала с утановленными плагинами Веб интерфейс, Google Assistant и STT через Google Assistant
вывод звука 3.5
микрофон ps3 eye
после запуска можно войти через веб интерфейс для настроек ip_adress:8989 логин lanket без пароля
для контроля состояния установлен rpimonitor доступ к нему ip_adress:8888
для работы Google Assistant необходимо зарегистрировать новую модель устройства по инструкции
https://github.com/Aculeasis/mdmt2-google-assistant
google-auth-oauthlib[tool] google-assistant-grpc установлены (на плате с 256Mb памяти возникают сложности )
пользователь:root
пароль:mdmpiterminal
пользователь:pi
пароль:qwertyui
Образ с карты 16Гб сжатый, в теории должен встать на 4G флэшку
Если не получиться, то перезалью с уменьшением размера разделов.

Этот образ записывать либо силами линукса, либо под Windows с помощью бесплатной программы balenaEtcher
Устаревшие имиджи:
СпойлерПоказать
4 ядро (рекомендуется)

Еще образ
4 ядро opi zero H2 256Mb
Chrome_mode = 4
Вывод звука на 3.5
Ввод usb микрофон
Логин пароль
root
25201540

Образ для orange pi zero h2 с микрофоном USB PS EYE

Основанное на 3м ядре: Orange pi zero H2 256/512 с микрофоном USB PS EYE

login: pi
password: qwertyui

Будет работать и с другим микрофоном, но нужно ковырять asound - готовые конфиги есть в папке asound
Настройка и первый запуск:
Настройка и первый запускПоказать
1. Вставить ethernet, микрофон, колонки (наушники)
2. После загрузки терминал скажет свой IP адрес
3. Зайти в МДМ в Настройки > Терминалы - добавить новый и ip адрес
Галочки MajorDroid API, может проигрывать медиа-контент, если хотите, что бы терминал дублировал системные сообщения, то галочку может принимать уведомления от системы (это все в ветке Альфа, на мастере проверю)
4. Установить модуль - Маркет дополнений - Оборудование - MDM VoiceAssistant
5. В настройках модуля выбрать терминал, добавить ключи API если есть, чувствительность на 0.7 (для тестов, потом уменьшить)
6. Запись ключевых слов
каждое ключевое слово нужно записать 3 раза, терминал голосом обозначит начало и конец записи, все 3 записи должны быть одинаковые.
Для работы в режиме chrome_mode (когда можно говорить ключевое слово + команда) рекомендую записать 3 слова с одним и тем же ключем, так будет больше шансов что терминал вас поймет, можно чуть разными интонациями.
после всех записей - кнопка "применить", это перезагрузит модуль.

Из известных проблем:
Из известных проблемПоказать

1. Гугл не даст терминалу распознать голос, если не правильно указана дата, я добавил в автозагрузку авто обновление даты.
2. Если микрофон не слышит - выньте и вставить его обратно.

Ссылка на гит - https://github.com/Aculeasis/mdmTerminal2
https://gitlab.com/Aculeasis/mdmTerminal2
Описание всех настроек - https://github.com/Aculeasis/mdmTerminal2/wiki/


Терминал для установки через докер тут, благодарим Anaki
Благодарим за образы и большую работу за настройку и многочисленные эксперементы dance12r

Пошаговая установка на ORANGE PI LITE описана . Из плюсов доступно на территории РФ, стабильный Wi-Fi. Благодаряим yray

Важная информация по железу:
В связи с многочисленными тестами на разных одноплатниках рекомендуется для стабильной работы следующие одноплатники:
Orange pi zero ревизии не меньше 1.5 самый дешёвый вариант.
Также Banana pi
Raspberry Nano pi и zero.







Re: Голосовое управление по ключевому слову на базе Апельсинки Зеро

Добавлено: Вт май 08, 2018 12:55 am
skysilver
lanket писал(а):
Вт май 08, 2018 12:45 am
Есть одна проблемка, почемуто у апельсинки зеро засыпает вафля со временем. причем закономерность не поймана. Кто зает как побороть?
Хреновый у зеро набортный wifi. Очень хреновый. Думаю, не забороть его.
Либо эзернет, либо usb wifi адаптер воткнуть.

Re: Голосовое управление по ключевому слову на базе Апельсинки Зеро

Добавлено: Вт май 08, 2018 12:57 am
lanket
skysilver писал(а):
Вт май 08, 2018 12:55 am
lanket писал(а):
Вт май 08, 2018 12:45 am
Есть одна проблемка, почемуто у апельсинки зеро засыпает вафля со временем. причем закономерность не поймана. Кто зает как побороть?
Хреновый у зеро набортный wifi. Очень хреновый. Думаю, не забороть его.
Либо эзернет, либо usb wifi адаптер воткнуть.
Тогда надо найти альтернативу.
Что то дешовое с линухом на борту.
Либо что бы дешевая альтернатива оказалась не дороже апельсинки с usb wifi.

Качество приема у встроенного wifi согласен не очень.

Re: Голосовое управление по ключевому слову на базе Апельсинки Зеро

Добавлено: Вт май 08, 2018 10:53 am
Amarok
А на обычном неттопе жить будет?

Re: Голосовое управление по ключевому слову на базе Апельсинки Зеро

Добавлено: Вт май 08, 2018 11:54 am
lanket
Amarok писал(а):А на обычном неттопе жить будет?
Должна, почему нет.
Ей надо только питон.
На линухе должно быть вообще без проблем, на винде не уверен так как не все библиотеки кросплатформные. А использованные в данном решении не проверял на совместимость с виндой.
В опмсании сноубоя написанно что на маке должно работать. Про Винду ни слова.

Отправлено с моего Redmi Note 4 через Tapatalk


Re: Голосовое управление по ключевому слову на базе Апельсинки Зеро

Добавлено: Вт май 08, 2018 11:57 am
lanket
Описание библиотеки

По идее где должно точно работать :
Currently, Snowboy supports:

all versions of Raspberry Pi (with Raspbian based on Debian Jessie 8.0)
64bit Mac OS X
64bit Ubuntu (12.04 and 14.04)
iOS
Android with ARMv7 CPUs
Pine 64 with Debian Jessie 8.5 (3.10.102)
Intel Edison with Ubilinux (Debian Wheezy 7.8)

Отправлено с моего Redmi Note 4 через Tapatalk


Re: Голосовое управление по ключевому слову на базе Апельсинки Зеро

Добавлено: Вт май 08, 2018 11:58 am
lanket
Проверенно на orange pi zero 2h 256mb на базе armbian которой нет в списке.

Отправлено с моего Redmi Note 4 через Tapatalk


Re: Голосовое управление по ключевому слову на базе Апельсинки Зеро

Добавлено: Вт май 08, 2018 12:54 pm
eeak1
Не пойму, почему ему не нравиться sample rate:
СпойлерПоказать

Код: Выделить всё

ALSA lib confmisc.c:1281:(snd_func_refer) Unable to find definition 'cards.allwinner_hdmi.pcm.front.0:CARD=0'
ALSA lib conf.c:4528:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:5007:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM front
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib confmisc.c:1281:(snd_func_refer) Unable to find definition 'cards.allwinner_hdmi.pcm.surround51.0:CARD=0'
ALSA lib conf.c:4528:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:5007:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM surround21
ALSA lib confmisc.c:1281:(snd_func_refer) Unable to find definition 'cards.allwinner_hdmi.pcm.surround51.0:CARD=0'
ALSA lib conf.c:4528:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:5007:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM surround21
ALSA lib confmisc.c:1281:(snd_func_refer) Unable to find definition 'cards.allwinner_hdmi.pcm.surround40.0:CARD=0'
ALSA lib conf.c:4528:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:5007:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM surround40
ALSA lib confmisc.c:1281:(snd_func_refer) Unable to find definition 'cards.allwinner_hdmi.pcm.surround51.0:CARD=0'
ALSA lib conf.c:4528:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:5007:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM surround41
ALSA lib confmisc.c:1281:(snd_func_refer) Unable to find definition 'cards.allwinner_hdmi.pcm.surround51.0:CARD=0'
ALSA lib conf.c:4528:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:5007:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM surround50
ALSA lib confmisc.c:1281:(snd_func_refer) Unable to find definition 'cards.allwinner_hdmi.pcm.surround51.0:CARD=0'
ALSA lib conf.c:4528:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:5007:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM surround51
ALSA lib confmisc.c:1281:(snd_func_refer) Unable to find definition 'cards.allwinner_hdmi.pcm.surround71.0:CARD=0'
ALSA lib conf.c:4528:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:5007:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM surround71
ALSA lib confmisc.c:1281:(snd_func_refer) Unable to find definition 'cards.allwinner_hdmi.pcm.iec958.0:CARD=0,AES0=4,AES1=130,AES2=0,AES3=2'
ALSA lib conf.c:4528:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:5007:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM iec958
ALSA lib confmisc.c:1281:(snd_func_refer) Unable to find definition 'cards.allwinner_hdmi.pcm.iec958.0:CARD=0,AES0=4,AES1=130,AES2=0,AES3=2'
ALSA lib conf.c:4528:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:5007:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM spdif
ALSA lib confmisc.c:1281:(snd_func_refer) Unable to find definition 'cards.allwinner_hdmi.pcm.iec958.0:CARD=0,AES0=4,AES1=130,AES2=0,AES3=2'
ALSA lib conf.c:4528:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:5007:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM spdif
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
Expression 'paInvalidSampleRate' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 2048
Expression 'PaAlsaStreamComponent_InitialConfigure( &self->capture, inParams, self->primeBuffers, hwParamsCapture, &realSr )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 2719
Expression 'PaAlsaStream_Configure( stream, inputParameters, outputParameters, sampleRate, framesPerBuffer, &inputLatency, &outputLatency, &hostBufferSizeMode )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 2843
Traceback (most recent call last):
  File "src/snowboy.py", line 82, in <module>
    detector = snowboydecoder.HotwordDetector(models, sensitivity=sensitivity)
  File "/home/eeak/mdmPiTerminal/src/snowboydecoder.py", line 115, in __init__
    stream_callback=audio_callback)
  File "/home/eeak/mdmPiTerminal/env/lib/python3.5/site-packages/pyaudio.py", line 750, in open
    stream = Stream(self, *args, **kwargs)
  File "/home/eeak/mdmPiTerminal/env/lib/python3.5/site-packages/pyaudio.py", line 441, in __init__
    self._stream = pa.open(**arguments)
OSError: [Errno -9997] Invalid sample rate

Orange Pi one -> Armbian 5.38

Re: Голосовое управление по ключевому слову на базе Апельсинки Зеро

Добавлено: Вт май 08, 2018 1:05 pm
skysilver
Amarok писал(а):
Вт май 08, 2018 10:53 am
А на обычном неттопе жить будет?
Если ручками самому, то можно. Автоматическим криптом с гита вряд ли получится, он под апельсину заточен.

Re: Голосовое управление по ключевому слову на базе Апельсинки Зеро

Добавлено: Вт май 08, 2018 1:05 pm
devoff
eeak1 писал(а):
Вт май 08, 2018 12:54 pm
Не пойму, почему ему не нравиться sample rate:

Orange Pi one -> Armbian 5.38

А какой микрофон используешь ?