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

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

Модератор: immortal

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

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

Сообщение hc2hunter » Пт фев 28, 2020 5:14 pm

fandaymon писал(а):
Пт фев 28, 2020 5:07 pm
SnowBoy это вообще не про языковые модели. Весь смысл что ключевые слова человек сам записывает. И он нужен чтобы отслеживать произнесение ключевого слова, а дальше записывается аудио в течение определенного времени и распознаётся гуглом
Я так понял, что задумка изначально была весьма глобальная. Не хуже Сфинкса.
Пример тому - тот же проект SUSI (https://www.youtube.com/watch?v=V9N6K4SzpXw).

Во всяком случае, судя по архитектуре (и даже файлам) реализован SnowBoy похожим образом и отлично работает off-лайн. В простейшем случае с микрофона записывается образец ключевой фразы, строится голосовой шаблон в хитром формате, и дальше он используется для сравнения.
Можно было бы двигаться в этом направлении и предлагать пользователям писать образец под себя, но там возникает масса вопросов... Например, чтобы одновременно работать с несколькими образцами - нужно переписывать бинарники, а нас обычно интересует не один голос, а куча домочадцев... и т.п.

В любом случае, у меня не получилось с ним хорошо поиграться, т.к. я столкнулся в исходниках с рядом сложностей. Хотя, примеры посмотрел и опробовал.
fandaymon
Сообщения: 1567
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 40 раз
Поблагодарили: 578 раз

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

Сообщение fandaymon » Пт фев 28, 2020 5:23 pm

hc2hunter писал(а):
Пт фев 28, 2020 5:14 pm
fandaymon писал(а):
Пт фев 28, 2020 5:07 pm
SnowBoy это вообще не про языковые модели. Весь смысл что ключевые слова человек сам записывает. И он нужен чтобы отслеживать произнесение ключевого слова, а дальше записывается аудио в течение определенного времени и распознаётся гуглом
Я так понял, что задумка изначально была весьма глобальная. Не хуже Сфинкса.
Пример тому - тот же проект SUSI (https://www.youtube.com/watch?v=V9N6K4SzpXw).

Во всяком случае, судя по архитектуре (и даже файлам) реализован SnowBoy похожим образом и отлично работает off-лайн. В простейшем случае с микрофона записывается образец ключевой фразы, строится голосовой шаблон в хитром формате, и дальше он используется для сравнения.
Можно было бы двигаться в этом направлении и предлагать пользователям писать образец под себя, но там возникает масса вопросов... Например, чтобы одновременно работать с несколькими образцами - нужно переписывать бинарники, а нас обычно интересует не один голос, а куча домочадцев... и т.п.

В любом случае, у меня не получилось с ним хорошо поиграться, т.к. я столкнулся в исходниках с рядом сложностей. Хотя, примеры посмотрел и опробовал.
Да нет же - прекрасно он работает с несколькими образцами. И работает он совсем не так как сфинкс - файл pmdl это обученные на образце голоса веса для нейронной сетки.
За это сообщение автора fandaymon поблагодарил:
hc2hunter (Пт фев 28, 2020 7:31 pm)
Рейтинг: 1.16%
Аватара пользователя
hc2hunter
Сообщения: 507
Зарегистрирован: Сб дек 02, 2017 10:45 am
Откуда: RUS
Благодарил (а): 228 раз
Поблагодарили: 348 раз

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

Сообщение hc2hunter » Пт фев 28, 2020 7:31 pm

Возможно, я не до конца вник, но вернусь к SnowBoю позже.
Пока хочу попробовать что-то удобоваримое сделать на Сфинксе. В плане кода он мне показался проще :?
Аватара пользователя
hc2hunter
Сообщения: 507
Зарегистрирован: Сб дек 02, 2017 10:45 am
Откуда: RUS
Благодарил (а): 228 раз
Поблагодарили: 348 раз

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

Сообщение hc2hunter » Ср мар 04, 2020 9:39 pm

Тестовый релиз 1.4.0
  • Прослушивание сделано на базе PocketSphinx v5 prealpha
    - в английском словаре ~130000 слов
    - в русском словаре ~540000 слов
    Из-за этого теперь размер аппликации сильно вырос.
    По качеству распознавания много вопросов (как и в целом у всех всегда было к движку Сфинкса). Пока я не добавлял доп.настройки для ручной регулировки распознавания сложных фраз из нескольких слов. Одно- и двух-словные ключевые фразы должен понимать хорошо. Типа "умный дом", "слушай", "планшет" и т.п...
    Короткие фразы типа "дом" ставить не рекомендуют сами создатели Сфинкса, т.к. из-за фоновых шумов он может ошибаться и ошибочно воспринимать короткие слова. Но все это очень индивидуально.
    Инициализация распознавания (движка Сфинкса) тоже довольно долгая и зависит от мощности самого девайса. У меня на 4х-ядерном Snapdragonе 3Гб ОЗУ - около 4-5 секунд.
  • Не должно быть теперь никаких проблем с громкостью (собственно, потому, что она вообще не трогается...)
  • Кнопка микрофончика в углу теперь умеет окрашиваться красным, если он слушает эфир
  • В "MDM terminal API" добавлена команда "quit" или "exit". Выход из приложения. Вдруг зачем-то кому-то понадобится "срубить сук, на котором сидишь"... Но ситуации разные бывают.
  • Расширен набор данных, возвращаемых по команде "info" или "status"
  • Пофикшена проблема, когда после возобновления приложения из свернутого состояния оно перезапускается
  • Добавлена команда, управляющая блокировкой и разблокировкой устройства
    screen:[off, on, turnoff, turnon, unlock, lock]
    Работает только если нет никаких графических ключей и паролей.
    В первый раз при попытке заблокировать устройство будет выдан запрос на предоставление приложению админских прав.
    Значение можно указывать как off/on, так и turnoff/turnon или unlock/lock
  • Попутно найдены и устранены прочие глюки и недочеты... и наверняка добавлены новые )))
Разумеется, возможны глюки и падения... не все отлажено и проверено.

Перед установкой нелишним будет забэкапить свои актуальные данные серверов и виджетов.
Прошу пробовать, отписываться о глюках. Особенно pash4uga, у него, помнится, как раз был не особо мощный девайс на 5.0.

______________________________________________
Скачать .apk (~60Мб) файл обновлен 16.03.2020 в 13:28
Последний раз редактировалось hc2hunter Пн мар 16, 2020 1:28 pm, всего редактировалось 22 раза.
За это сообщение автора hc2hunter поблагодарил:
pash4uga (Чт мар 05, 2020 3:40 pm)
Рейтинг: 1.16%
pash4uga
Сообщения: 192
Зарегистрирован: Чт окт 04, 2018 12:04 pm
Благодарил (а): 28 раз
Поблагодарили: 45 раз

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

Сообщение pash4uga » Чт мар 05, 2020 3:40 pm

Проверил, ключевое слово распознает, звук системных сообщений есть)
Но есть глюк, полная тишина, а планшет начинает слушать "приказ", хотя ключевое слово при этом не произносилось. И это повторяется очень часто, примерно 1 раз в 5 мин.
Ну и видимо из за того, что приложение очень потяжелело, после того как распознается ключевая фраза и планшет просит что-то ему сказать после фразы подсказки, проходит секунды 3 перед тем как он начинает реально слушать команду, а ты ему в это время уже что-то сказал и диалог не очень то получается) Может быть на более мощных планшетах такого и нет ну да ладно...
И звук "пик" надо сделать настраиваемым или хотя бы просто потише его сделать, уж больно громкий)
За это сообщение автора pash4uga поблагодарил:
hc2hunter (Чт мар 05, 2020 4:34 pm)
Рейтинг: 1.16%
Аватара пользователя
hc2hunter
Сообщения: 507
Зарегистрирован: Сб дек 02, 2017 10:45 am
Откуда: RUS
Благодарил (а): 228 раз
Поблагодарили: 348 раз

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

Сообщение hc2hunter » Чт мар 05, 2020 4:34 pm

pash4uga писал(а):
Чт мар 05, 2020 3:40 pm
Но есть глюк, полная тишина, а планшет начинает слушать "приказ", хотя ключевое слово при этом не произносилось. И это повторяется очень часто, примерно 1 раз в 5 мин.
Да, я об этом писал выше, что такое возможно.
1. Попробуйте поиграться ключевыми словами. Возможно, к более сложной фразе он будет менее восприимчив.
2. Я попробую добавить в настройки Сфинкса параметр .setKeywordThreshold(чередование). С его помощью можно указывать ему как распознавать короткие и длинные выражения, интервалы между словами и паузы. Возможно, удастся подстроить под себя более точно.
после того как распознается ключевая фраза и планшет просит что-то ему сказать после фразы подсказки, проходит секунды 3 перед тем как он начинает реально слушать команду, а ты ему в это время уже что-то сказал и диалог не очень то получается) Может быть на более мощных планшетах такого и нет ну да ладно...
там смотрите какая последовательность:
  1. ожидается ключевая фраза
  2. как ключевая фраза поймана проговаривается фраза-подсказка (если она включена в Настройках), типа "Говорите после сигнала"
  3. запускается системное Google-распознавание в фоне. После того как оно пикнет можно говорить...
  4. если ничего не произнесено в течение 4-5 секунд, оно опять приметно пикает и отваливает. Если что-то распознано - команда высвечивается и отправляется на сервер.
Вот, видимо, между 2 и 3 у вас происходит длинная пауза. Возможно, просто ОЗУ не хватает, и Андроид отчаянно пытается договорить фразу-подсказку, и потом начинает срочно подгружать Google recognizer...


Про остальное понял, что-нибудь придумаем. Пока занимаюсь terminal API, видимо придется переписывать на новый лад терминальный сервер, т.к. не нравится мне как работают потоки в Андроиде, если их запускать на фоне активности UI... думаю вынести в отдельный сервис как сделано с виджетами.
Аватара пользователя
hc2hunter
Сообщения: 507
Зарегистрирован: Сб дек 02, 2017 10:45 am
Откуда: RUS
Благодарил (а): 228 раз
Поблагодарили: 348 раз

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

Сообщение hc2hunter » Чт мар 05, 2020 5:15 pm

pash4uga писал(а):
Чт мар 05, 2020 3:40 pm
И звук "пик" надо сделать настраиваемым или хотя бы просто потише его сделать, уж больно громкий)
сделал потише, попробуйте. файл обновил выше.
pash4uga
Сообщения: 192
Зарегистрирован: Чт окт 04, 2018 12:04 pm
Благодарил (а): 28 раз
Поблагодарили: 45 раз

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

Сообщение pash4uga » Чт мар 05, 2020 6:09 pm

Вообще на планшете 4Гб ОЗУ, да и проц нормальный, винда 10 хорошо работает. Ресурсов должно хватать с лихвой, ну да ладно, к этому можно и привыкнуть. Или фразу подсказку использовать "Приказывайте после звукового сигнала" )
По ключевой фразе, пробовал и составную использовать и длинные и короткие, все равно ложные срабатывания, причем практически в полной тишине. Наверно дело все же не в ключевой фразе.
Аватара пользователя
hc2hunter
Сообщения: 507
Зарегистрирован: Сб дек 02, 2017 10:45 am
Откуда: RUS
Благодарил (а): 228 раз
Поблагодарили: 348 раз

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

Сообщение hc2hunter » Чт мар 05, 2020 6:45 pm

Если планшет на x86, а не на ARM, то такие операционки как Android будут на них тормозить, т.к. работают через совместимость, врапперы и трансляторы, а не нативно. Особенно это касается видеоускорений, очередей звука и т.п.
Примерно как я у себя для отладки запускаю эмуляторы андроида под Windows. Те еще тормоза выходят... хотя процессор в компе i7 не самой тухлой серии.
Аватара пользователя
hc2hunter
Сообщения: 507
Зарегистрирован: Сб дек 02, 2017 10:45 am
Откуда: RUS
Благодарил (а): 228 раз
Поблагодарили: 348 раз

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

Сообщение hc2hunter » Пт мар 06, 2020 1:58 pm

Начал переписывать обслуживание команд MDM terminal API под отдельные потоки... (чтобы избежать разных накладок со звуком и т.п...). А то на данный момент все работает в едином потоке и учитывая разросшийся функционал программы это очень нехорошо...

И столкнулся с очередной подставой. Оказывается, отследить начало и конец процесса Google TextToSpeech (генерация речи) можно только начиная с LOLLIPOP :?
...то есть, чем дальше в лес, тем все глубже API 19 идет нафиг... (в смысле Android 4.4). А учитывая разные прочие мои костыли, следует заметить, что по хорошему давно уже пора отказываться от поддержки всего что ниже Android 6.0 Marshmallow :(


Хотя, вот, согласно официальной статистике установок с Google Play - ниже 6.0 нету никого на данный момент:
Вложения
stats.png
stats.png (57.78 КБ) 3185 просмотров
За это сообщение автора hc2hunter поблагодарил:
andrey040670 (Пт мар 06, 2020 2:31 pm)
Рейтинг: 1.16%
Ответить