[Приложение] мой MjDM (Android)

Разработка дополнительных модулей, подключение различных приложений.

Модератор: immortal

Аватара пользователя
hc2hunter
Сообщения: 507
Зарегистрирован: Сб дек 02, 2017 10:45 am
Откуда: RUS
Благодарил (а): 228 раз
Поблагодарили: 348 раз

Re: [Приложение] мой MjDM (Android)

Сообщение hc2hunter » Сб мар 28, 2020 9:08 am

kostyaer писал(а):
Сб мар 28, 2020 1:17 am
А если сделать несколько ключевых фраз. Запускать на одну команду и на более долгое время для нескольких.. Сделал переключение каналов на телеке, но каждый раз произносить ключевую фразу перед командой не удобно, так бы- Алиса переключи канал... Следующий.. Следующий... В гугле вроде сейчас можно адаптировать распознавание только на свой голос и по идее не должно срабатывает на фоновые голоса.. Да и не только для телека такой подход был бы удобен..
на уровне самого MDM заложена возможность дробить фразу не куски.
в файле command.php прописан разделитель:
Define('DEVIDER', 'и еще'); //изначально было 'и'
То есть команду вы можете засылать в виде "Включи свет на кухне и еще выключи свет в прихожей и еще... и еще...." Дальше уже разруливаете Шаблонами.
kostyaer писал(а):
Сб мар 28, 2020 3:54 am
А нет выбора источника записи? В телефонах вроде не один микрофон установлен. Или на аппаратном уровне в зависимости от режима микширование происходит..?
нет. такие фишки проделываются на уровне железа и связаны с драйверами вендоров.
например, флагманы SONY всю жизнь имеют стереомикрофоны (как и настоящие стереодинамики), но программным путем до них не добраться, и это может делать только фирменный софт, специально написанный с поддержкой такого железа.
За это сообщение автора hc2hunter поблагодарил:
kostyaer (Сб мар 28, 2020 12:56 pm)
Рейтинг: 1.16%
Аватара пользователя
hc2hunter
Сообщения: 507
Зарегистрирован: Сб дек 02, 2017 10:45 am
Откуда: RUS
Благодарил (а): 228 раз
Поблагодарили: 348 раз

Re: [Приложение] мой MjDM (Android)

Сообщение hc2hunter » Сб мар 28, 2020 9:15 am

klv666 писал(а):
Пт мар 27, 2020 5:15 pm
Я тоже противник калди, т.к. имею 2 старых планшета с версией андроида 4.4.4 :oops: :D
в сущности можно было бы попытаться всунуть и Сфинкс и Калди, и сделать в Настройках переключение между этими движками, но...
1. Это вызовет просто нереальный размер приложения
2. Пока Калди себя слабо оправдал

Что касается уменьшения размера приложения вообще... тут задавали вопрос выше.
По Сфинксу приложение можно уменьшить лишь на 4Мб, т.к. акустическую модель английского языка я под него нашел очень лаконичнаую и маленькую, в то время как официальная весит почти как и русский (около 30Мб).
По Калди, т.к. проект слабо развит, акустических моделей нигде нет, а официальные весят по 40Мб на 1 язык. То есть eng+rus и получается 80Мб.

Выкидывать английскую акустическую модель я не вижу смысла, т.к. знаю людей, которые принципиально предпочитают английский интерфейс в приложениях и английскую речь. (фрики?) Но такие люди есть, и их приличное количество. Которые и фильмы предпочитают смотреть в оригинале и т.д. и т.п... Не стоит сокращать аудиторию за их счет. Тем более, что на быстродействие программы эти словари никак не влияют. Грузится только нужный в данный момент.
kostyaer
Сообщения: 84
Зарегистрирован: Пт окт 18, 2019 10:50 am
Откуда: Санкт-Петербург
Благодарил (а): 11 раз
Поблагодарили: 7 раз

Re: [Приложение] мой MjDM (Android)

Сообщение kostyaer » Сб мар 28, 2020 2:43 pm

fandaymon писал(а):
Сб мар 28, 2020 4:02 am
kostyaer писал(а):
Сб мар 28, 2020 3:39 am
Спасибо за подсказку, я только на днях добрался до шаблонов) ещё не освоил. Буду изучать. Но у меня сразу возникает вопрос - каким образом приложение будет слушать остальные команды без ключевой фразы, оно ведь сразу переходит в режим ожидания. Или мажор отправляет запрос приложению на распознавание?
ask вместо say говорит терминалу - проговори фразу и слушай ответ
хм, не удаётся заставить слушать её дальше, сразу переходит в режим ожидания ключевой фразы.
в шаблоне "переключи канал"

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

//переключение канала на дюне
getURLBackground('http://192.168.1.75/cgi-bin/do?cmd=ir_code&ir_code=B44BBF00');
ask("переключила", "192.168.1.181");
Из описания ASK пробовал и без указания терминала- "если IP-адрес не указан, то идёт выборка всех терминалов, поддерживающих MajorDroid API и идёт рассылка по ним."
Режим терминала в приложении активирован, в терминалах светится онлайн. Если вызывать из простых устройств "Включи свет", то в обратку произносит "Включаю свет", а вот из шаблона не произносит и в режим ожидания команды не переходит. пробовал и sayTo- молчит..
По идее что бы она не произносила ничего в ответ, а сразу ждала команды можно сделать так? ask("");

PS
С проблемой справился.
Последний раз редактировалось kostyaer Сб мар 28, 2020 5:25 pm, всего редактировалось 1 раз.
Intel Atom d510 на ubuntu server 16.04, ESP8266 на ESPEasyMega
kostyaer
Сообщения: 84
Зарегистрирован: Пт окт 18, 2019 10:50 am
Откуда: Санкт-Петербург
Благодарил (а): 11 раз
Поблагодарили: 7 раз

Re: [Приложение] мой MjDM (Android)

Сообщение kostyaer » Сб мар 28, 2020 2:58 pm

Попробовал с контекстами поиграться, все равно сразу переходит в ожидание ключевой фразы
Intel Atom d510 на ubuntu server 16.04, ESP8266 на ESPEasyMega
kostyaer
Сообщения: 84
Зарегистрирован: Пт окт 18, 2019 10:50 am
Откуда: Санкт-Петербург
Благодарил (а): 11 раз
Поблагодарили: 7 раз

Re: [Приложение] мой MjDM (Android)

Сообщение kostyaer » Сб мар 28, 2020 3:26 pm

попробовал на Хоноре терминал настроить.
ask("переключила", "192.168.1.226"); в ответку сообщает, что переключила, и вроде хочет принять следующую команду, но выскакивает ошибка "network error", а если не указывать айпишник терминала в аск, то ничего не происходит
Intel Atom d510 на ubuntu server 16.04, ESP8266 на ESPEasyMega
kostyaer
Сообщения: 84
Зарегистрирован: Пт окт 18, 2019 10:50 am
Откуда: Санкт-Петербург
Благодарил (а): 11 раз
Поблагодарили: 7 раз

Re: [Приложение] мой MjDM (Android)

Сообщение kostyaer » Сб мар 28, 2020 4:18 pm

решил поиграться с озвучкой на какой канал переключает. (конечно это лишнее, так для получения опыта)

И вот вроде ask заработало, но время от времени сваливается в ошибку "network error"

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

//переключение канала на дюне
getURLBackground('http://192.168.1.75/cgi-bin/do?cmd=ir_code&ir_code=B44BBF00');

//получение инфы от дюны
rs('Dune_status');

//сказать на какой канал переключила и ожидать следующую команду
$ch=gg("duneHD.playUrl");
ask("$ch", "192.168.1.226");
Из описания ask я так понимаю не возможно управлять таймаутом ожидания следующей команды? расширить бы секунд до 10.. вроде как это всё есть в контекстах, но почему-то не работают они (возможно что то я делаю не правильно, буду дальше изучать вопрос)

PS
А хотя забавно когда проговаривает какой канал включила, особенно если корректное название и на русском.. =)
Intel Atom d510 на ubuntu server 16.04, ESP8266 на ESPEasyMega
kostyaer
Сообщения: 84
Зарегистрирован: Пт окт 18, 2019 10:50 am
Откуда: Санкт-Петербург
Благодарил (а): 11 раз
Поблагодарили: 7 раз

Re: [Приложение] мой MjDM (Android)

Сообщение kostyaer » Сб мар 28, 2020 4:40 pm

По поводу чувствительности озвучу своё предположение:
Возможно с блютуз гарнитуры будет лучше, т.к. в самой гарнитуре зашиты фильтры на голос, да и микрофон "направленный", единственное думаю радиус захвата будет совсем не большой, но если гарнитуру поставить на постоянную прослушку рядом с местом обитания, то вполне нормальный вариант..
Последний раз редактировалось kostyaer Сб мар 28, 2020 5:27 pm, всего редактировалось 1 раз.
За это сообщение автора kostyaer поблагодарил:
hc2hunter (Вс мар 29, 2020 8:34 pm)
Рейтинг: 1.16%
Intel Atom d510 на ubuntu server 16.04, ESP8266 на ESPEasyMega
kostyaer
Сообщения: 84
Зарегистрирован: Пт окт 18, 2019 10:50 am
Откуда: Санкт-Петербург
Благодарил (а): 11 раз
Поблагодарили: 7 раз

Re: [Приложение] мой MjDM (Android)

Сообщение kostyaer » Сб мар 28, 2020 5:20 pm

А по поводу ошибки "network error" ситуация следующая:
Добавил в код паузу 1 секунду т.к. после переключения канала не успевает обновиться инфа на дюне и проговаривает ещё устаревшую инфу, так вот, тестил переключая каналов 30 и не одной ошибки в приложении нет. =)

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

//переключение канала на дюне
getURLBackground('http://192.168.1.75/cgi-bin/do?cmd=ir_code&ir_code=B44BBF00');

//пауза перед обновлением
sleep(1);

//получение инфы от дюны
rs('Dune_status');

//сказать на какой канал переключила и ожидать следующую команду
$ch=gg("duneHD.playUrl");
ask("$ch", "192.168.1.226");
Есть возможность в приложении добавить настройку таймаута ожидания команды от пользователя?
Intel Atom d510 на ubuntu server 16.04, ESP8266 на ESPEasyMega
Аватара пользователя
hc2hunter
Сообщения: 507
Зарегистрирован: Сб дек 02, 2017 10:45 am
Откуда: RUS
Благодарил (а): 228 раз
Поблагодарили: 348 раз

Re: [Приложение] мой MjDM (Android)

Сообщение hc2hunter » Вс мар 29, 2020 8:36 pm

kostyaer писал(а):
Сб мар 28, 2020 5:20 pm
Есть возможность в приложении добавить настройку таймаута ожидания команды от пользователя?
Если вы про время ожидания после ключевой фразы, то нет. Это гугловый рекогнайзер сколько-то ждет, потом отваливается. Повлиять на него никак нельзя, гугл как-то сам определяет, видимо, по шумам, говорит что-то пользователь или нет.
Можно, конечно, целиком попытаться перейти на Сфинкс. Но я не уверен, что он адекватно будет распознавать длинные фразы.
kostyaer
Сообщения: 84
Зарегистрирован: Пт окт 18, 2019 10:50 am
Откуда: Санкт-Петербург
Благодарил (а): 11 раз
Поблагодарили: 7 раз

Re: [Приложение] мой MjDM (Android)

Сообщение kostyaer » Пн мар 30, 2020 11:40 am

Можно, конечно, целиком попытаться перейти на Сфинкс. Но я не уверен, что он адекватно будет распознавать длинные фразы.
Если у вас есть возможность сильно не отвлекаясь запилить демку как на калди, то было бы здорово! Потестировал бы в разных условиях.

Отпишусь о своих наблюдениях и ошибках которые встретил.

1. Попробовал последнее обновление установить на Сяоми (где добавили инициализацию прослушки).
проработало недолго, перестало распознавать ключевую фразу, а затем и вовсе стало виснуть на загрузке стартовой страницы.
Удалил, установил предыдущее (там где добавили порог) всё равно приложение виснет на загрузке стартовой страницы.
СпойлерПоказать
Build fingerprint: 'Xiaomi/santoni/santoni:7.1.2/N2G47H/V11.0.2.0.NAMMIXM:user/release-keys'
Revision: '0'
ABI: 'arm64'
pid: 7132, tid: 7132, name: com.hc.mymjdm >>> com.hc.mymjdm <<<
signal 5 (SIGTRAP), code -6 (SI_TKILL), fault addr 0x27ad00001bdc
Abort message: '[FATAL:browser_gpu_channel_host_factory.cc(50)] Timed out waiting for GPU channel.
'
x0 0000000000000000 x1 0000000000000081 x2 000000007fffffff x3 0000000000000000
x4 0000000000000000 x5 0000000000000000 x6 0000000000000000 x7 0000000000000000
x8 0000000000000000 x9 0000000000000000 x10 0000000000000001 x11 0000000000000000
x12 0000007f6b372d20 x13 0000000000000000 x14 0000000000000000 x15 0030ef7918454092
x16 0000007f8e2de250 x17 0000007f8e23cf10 x18 0000000000000000 x19 0000007fceeb5800
x20 0000007fceeb5808 x21 0000007fceeb5810 x22 0000000000000052 x23 0000007f8e2e0848
x24 0000007f7a600000 x25 0000007f915f6b38 x26 0000000000000000 x27 0000007fceeb5350
x28 0000007f7a601000 x29 0000007fceeb57a0 x30 0000007f7810f48c
sp 0000007fceeb5340 pc 0000007f7810f674 pstate 0000000060000000

backtrace:
#00 pc 00000000017da674 /data/app/com.android.chrome-2/base.apk (offset 0xbd4000)
#01 pc 00000000017da488 /data/app/com.android.chrome-2/base.apk (offset 0xbd4000)
2. команда ASK- Ошибка "Network error". Иногда выскакивает (в приложении всплывающее окно как "ожидаю ключевую фразу"), видимо что то не успевает сработать после отправки команды как уже приходит ответ от мажора проговорить и слушать. У меня решилось паузой в 1 секунду перед выполнением на мажоре ask.

3. Нужен выбор источника записи -блютуз. Пока не обязательно делать активацию прослушки по кнопке, достаточно постоянно слушать. И ещё при захвате микрофона с блютуз иметь возможность переключения вывода звука -на самом устройстве или блютуз. Например если использовать наушники, то звук на самом девайсе оставить, если на колонке, то полностью и звук и микрофон с колонки.. (галочку в настройках)
Intel Atom d510 на ubuntu server 16.04, ESP8266 на ESPEasyMega
Ответить