Распознавание речи в мобильном приложении 1С на Android

15.07.21

Разработка - Разработка внешних компонент

Внешняя компонента для мобильной платформы 1С, работающая в связке с отдельной службой и позволяющая реализовать распознавание речи в мобильном приложении на Android.

Скачать файлы

Наименование Файл Версия Размер
Распознавание речи в мобильном приложении 1С на Android:
.zip 58,15Mb
14
.zip 20210715 58,15Mb 14 Скачать

В мобильном приложении 1С есть простой способ распознавания речи с использованием объекта ЗапускПриложенияМобильногоУстройства.

Приложение = Новый ЗапускПриложенияМобильногоУстройства("android.speech.action.RECOGNIZE_SPEECH");
Результат = Приложение.Запустить(Истина);
Если Результат = 0 Тогда
    Возврат;
КонецЕсли;
                
СтрокаВвода = Приложение.ДополнительныеДанные.Получить("query").Значение;

Вот хорошая статья, описывающая работу с подобным подходом. Казалось бы, запускай и радуйся, но мне понадобилось сделать свою Алису фоновое распознавание в непрерывном режиме, поэтому и пришлось реализовать следующую связку:

  1. Приложение (фоновая служба) для Android «Сервис распознавания речи для мобильной 1С»
  2. Внешняя компонента для мобильной платформы, которая взаимодействует с указанной службой.
Схема работы выглядит следующим образом:

Схема работы

На устройство Android устанавливает отдельное приложение (служба), которая работает в фоновом режиме, а в мобильное приложение добавляется внешняя компонента, умеющая с этой службой договариваться и генерирующая внешние события.

Наличие соединения с интернет для распознавания не обязательно, но качество распознавания, как мне показалось, немного лучше, когда оно есть.

Подключение и запуск распознавания:

Если ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаРаспознаванияРечи", "Component", ТипВнешнейКомпоненты.Native) Тогда
    Компонента = Новый("AddIn.Component.SpeechRecognizer");
    Компонента.ЗапуститьРаспознаваниеРечи();
КонецЕсли;

Обработка внешних событий:

&НаКлиенте
Процедура ВнешнееСобытие(Источник, Событие, Данные)
	
	Если Событие = "initialization" Тогда
		Компонента.ЗапроситьСтатусСервиса();
		ПодключитьОбработчикОжидания("ПроверкаСтатусаСервисаРаспознавания", 1, Истина);
	ИначеЕсли Событие = "RecognitionResult" Тогда
		ОбработатьГолосовойВвод(Данные);
	ИначеЕсли Событие = "RecognitionReady" Тогда
		ДатаПоследнегоОтветаКомпоненты = ТекущаяДата();
		ЕстьПромежуточныеРезультаты = Ложь;
	ИначеЕсли Событие = "RecognitionPartialResult" Тогда
		ДатаПоследнегоОтветаКомпоненты = ТекущаяДата();
		ЕстьПромежуточныеРезультаты = Истина;
	ИначеЕсли Событие = "ServiceStatus" Тогда
		СтатусСервисаРаспознавания = Данные;
	ИначеЕсли Событие = "onBeginningOfSpeech" Тогда
		ДатаНачалаПроизношения = ТекущаяДата();
	КонецЕсли;	
	
КонецПроцедуры

Остановка распознавания:

Компонента.ОстановитьРаспознаваниеРечи();
 
Свойства и методы компоненты
Требования:

Для работы приложения требуется Android API 28 и выше.

Тестировалось в следующих условиях:

Релизы мобильной платформы 8.3.17.76, 8.3.18.47

Исходники:

Исходники можно взять тут https://github.com/salexdv/speechrecognizer

Для скачивания:

В архиве находится сама компонента, демонстрационная конфигурация, а также для apk-файла. Тот, который самый маленький - это приложение-служба, а большой - демонстрационной приложение (ARM64)

Благодарности:

В разработке использованы материалы, которые на конференции INFOSTART 2018 EDUCATION представил Игорь Кисиль, в частности статья Внешние компоненты мобильной платформы 1С для ОС Андроид, за что ему большое спасибо! Также очень помогла вот эта публикация и репозиторий.

Android мобильное приложение внешняя компонента распознавание речи speech recognizer intent

См. также

"Штрихкод-информер" - мобильный ТСД и прайс-чекер в смартфоне

Мобильная разработка Сканер штрих-кода Терминал сбора данных Управляемые формы Мобильная платформа 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Сбор заказов, инвентаризация, проверка ценников, просмотр полной информации об остатках и ценах со смартфона Онлайн. Отправка данных со смартфона выполняется либо напрямую в открытую форму документа, отсканировав QR-код, либо в общую корзину учетной системы, не подходя к компьютеру. Кассир или оператор сможет просмотреть список присланных данных и загрузить в любую форму, поддерживающую работу с ТСД. Для работы с мобильным приложением требуется опубликовать HTTP-сервис из поставляемого расширения.

2880 руб.

03.12.2018    54600    137    102    

161

SALE! 25%

Что нам стоит бота построить? Нарисуем - будет жить! Графический конструктор телеграм-ботов/Telegram

Мобильная разработка Мессенджеры и боты Платформа 1С v8.3 Платные (руб)

Теперь создать telegram-бота - элементарно. Достаточно просто нарисовать блок-схему телеграм-бота, и он сразу заработает. Это возможно при использовании Графического конструктора телеграм-ботов. Это единственный конструктор ботов для telegram, чье качество и функционал подтверждены фирмой 1С, есть сертификат 1С:Совместимо. Расширение в интерактивном режиме, с помощью блок-схем, позволяет с минимальными трудозатратами создать телеграм-ботов в любой конфигурации, работающей на платформе «1С:Предприятие 8.3».

13200 9900 руб.

27.12.2021    33273    80    157    

174

SALE! 30%

Распознавание и загрузка сканов в 1С "одним нажатием": УПД, ТОРГ-12, накладные, счета, номенклатура, заказы и т.д.

Загрузка и выгрузка в Excel Документооборот и делопроизводство (СЭД) Учет документов Распознавание документов и образов Управляемые формы 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление холдингом 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Универсальная программа для распознавания ЛЮБЫХ СКАНОВ ИЛИ ФОТО ТОВАРНЫХ ДОКУМЕНТОВ в 1С. Не требует указания параметров и предварительной настройки. Просто выбираете файл (PDF, JPG, DOC, XLS, HTML и т.д.) выбираете документ 1С и нажимаете кнопку "Распознать и загрузить".

6000 5520 руб.

04.06.2019    101356    296    173    

312

"Мобильный ТСД" - инвентаризация и сбор штрихкодов для iOS и Android

Сканер штрих-кода Терминал сбора данных Мобильная разработка Монитор заказов Оптовая торговля Розничная торговля Ценообразование, анализ цен Платформа 1С v8.3 Мобильная платформа 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Простой мобильный терминал сбора данных для смартфонов на iOS и Android, не требующий сложных настроек и установки дополнительных программ. Обмен между Вашей 1С и мобильным приложением осуществляется через облачный сервис и расширение конфигурации. Работает с конфигурациями УТ 11, ERP, КА2, Розница 2, Розница 3, УНФ 1.6, УНФ 3.0. Полнофункциональный демо-доступ для своей конфигурации можно запросить в настройках мобильного приложения - все необходимое придет на почту автоматически.

2000 руб.

22.04.2019    91929    511    186    

293

Распознавание номеров автомашин с ip - камер, видео, фото

Распознавание документов и образов Периферийные устройства Автомобили, автосервисы Россия Платные (руб)

Программа считывает кадры с ip-камер (http - запрос к камере), видео, фото (источники кадров (нет ограничения на их количество) настраивается в конфигурационном файле), находит и распознает номера автомашин и сохраняет в базу db, с сохранением фото номера и автомашины, а также времени детекции.

20400 руб.

31.05.2023    3799    2    1    

3

Медиадисплей. Рекламный информационный монитор для покупателя.

Разработка внешних компонент POS терминал Рабочее место Розничная торговля Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Рестораны, кафе и фаст-фуд Реклама, PR и маркетинг Управленческий учет Платные (руб)

Монитор покупателя может отображать текущую покупку на кассовом месте, показывать видеорекламу, баннеры, во время простоя разворачивать рекламу на весь экран. Можно использовать в качестве графического меню-борда в кафе и видеовывески. Управление выводом на телевизор через hdmi-приставку на базе Windows или Android. В качестве устройства отображения можно использовать Android-планшеты, фоторамки с Android, монитор любого Windows-компьютера, доступного по сети. Настраивается ЛЮБОЙ ДИЗАЙН экрана!

16800 руб.

30.05.2017    52096    34    69    

43

Магазин 15 - приемка товара по штрихкодам или инвентаризация в торговом зале

Логистика, склад и ТМЦ Мобильная разработка Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Розничная и сетевая торговля (FMCG) Россия Платные (руб)

Специализированное программное обеспечение для мобильных устройств со встроенным сканером штрихкодов. Позволяет быстро автоматизировать, оптимизировать рабочие места и бизнес процессы по учету товара в магазине. Например, приемку товара по штрихкодам или инвентаризацию прямо в торговом зале.

12950 руб.

30.05.2023    3387    2    0    

4
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. s.sintsov 247 15.07.21 17:41 Сейчас в теме
При установке приложения-службы распознавания выдает Ошибка при синтаксическом анализе пакета. Android 7.0
2. salexdv 2327 15.07.21 17:54 Сейчас в теме
(1) Нужен Android API 28 и выше. В репозитории это указал, дополню описание и здесь. Возможно, что будет работать с версией и ниже, но надо пробовать.
3. Serg O. 224 16.07.21 09:26 Сейчас в теме
по этой же теме - есть не только распознавание,
но и "перевод" и "говорилка" (синтез речи)
https://infostart.ru/public/943973/
4. salexdv 2327 16.07.21 09:45 Сейчас в теме
(3) Спасибо за ссылки! Тема схожая, но подходы разные. Использование вот такой конструкции
ЗапускПриложенияМобильногоУстройства("android.speech.action.RECOGNIZE_SPEECH")

вызывает появление системного окна, что иногда нежелательно.
Для фонового распознавания еще можно пользоваться, например Yandex.SpeechKit или speech-to-text от Google. У этих способов есть свои недостатки. Если не говорить о том, что эти сервисы платные, например, у Яндекса самые короткие тарифицируемые отрезки по 15 сек и, произнося текст, ты не сразу видишь результат. Еще из поддерживаемых форматов там только wav и oggopus. Первый много весит, со вторым проблемы на мобильных платформах.
В общем под каждую задачу свой инструмент, благо выбор с каждым днем становится все шире.
Pilokarpios; Serg O.; +2 Ответить
5. sinichenko_alex 178 17.07.21 17:43 Сейчас в теме
Давно ждал что-то подобное. Сходу большой и жирный плюс! Еще вопрос какие версии ОС андроид включительно поддерживаются? Я когда то писал компоненты для мобильного приложения с поддержкой андроид 4 или 5 и выше, почему-то в новых версиях (Старше 8.0) они запускаться отказались... На тот момент было уже не актуально и я не стал разбираться. А так в целом за идею, а тем более за её реализацию однозначно плюс и снова плюс!
6. salexdv 2327 17.07.21 22:20 Сейчас в теме
(5) Спасибо! В данный момент требуется Android API 28 и выше (Android 9). С незначительными переделками, в теории, можно запустить на 26 версии (Android 8.0). Если нужна ещё более ранняя версия Android, то переделок будет больше т.к. API сильно менялся
Pilokarpios; Serg O.; sinichenko_alex; +3 Ответить
7. oslokot 190 22.01.24 12:57 Сейчас в теме
Попробовал на планшете Digma, версия андроид 8.1, другого к сожалению нет :) Служба сразу установилась, запустилась и тестирование распознавания замечательно работает. Но вот к сожалению установка внешней компоненты из макета не выполнена. То есть все же нужен как минимум андроид 9.0? Платформа 1с 8.3.15, но думаю не в ней проблема.

Тоже вот, ищу решение для постоянного распознавания, стандартный speech не подходит - во первых окно на весь экран, во вторых нужно постоянно слушать...
8. salexdv 2327 22.01.24 13:01 Сейчас в теме
(7) Собрано под Android 9 (api level 29). Можете попробовать пересобрать компоненту под более раннюю версию API, но не факт, что заработает.
9. oslokot 190 22.01.24 13:05 Сейчас в теме
(8) Спасибо! я пока не знаю как собирать компоненты :) Ладно, попробую где-нибудь купить б/у андроид 9-й или 10-й версии... и испытать
10. salexdv 2327 22.01.24 13:07 Сейчас в теме
(9) Тут описано, как развернуть среду для разработки
11. oslokot 190 22.01.24 13:12 Сейчас в теме
(10) Благодарю! Попробую...
12. oslokot 190 26.01.24 12:54 Сейчас в теме
(8) Добрый день!
Докладываю: нашел планшет с 9-м андроидом и попробовал развернуть демонстрационный пример из прилагаемой demo_speechrecognizer.cf, но к сожалению снова ошибка при при подключении внешней компоненты. В описании ошибки пусто.
Пробовал на мобильной платформе 8.3.18.47, как у вас в примере и даже ставил arm64 платформу, но все тщетно. Что еще может быть?

Кстати ваш пример на уже собранной salexdv.app.speechrecognizer-arm64.apk нормально работает
13. oslokot 190 26.01.24 15:58 Сейчас в теме
Я кажется понял в чем дело.
Разработку на мобилке-то я веду путем запуска конфы на мобильной 1С платформе. То есть я не собираю apk, а на десктопе формирую 1cema.xml, закидываю в каталог web-сервера и скармливаю его мобилке.
И я почему-то был уверен, что макет внешней компоненты находится в 1cema.xml. Но его там нет :) Когда я на десктопе выгружаю конфу для мобильного приложения, теперь формируется 1cema.zip, в котором есть не только 1cema.xml, но и папка ARM с внешней компонентой com_github_salexdv_speechrecognizer_addin.apk. То есть он отдельно! Теперь никак не пойму, как мне этот файл то подсунуть, чтоб мобильная платформа его увидела?
14. salexdv 2327 27.01.24 09:45 Сейчас в теме
(13)
Теперь никак не пойму, как мне этот файл то подсунуть, чтоб мобильная платформа его увидела?

С чем-то подобным я сталкивался, когда активно менял компоненту и не обнаруживал при отладке в мобильной платформе новых добавленных методов. Кажется, лечилось это следующим образом. Собирается мобильное приложение с нужной версией компоненты, устанавливается на устройство, а затем ведется отладка в мобильной платформе, которая начинает работать с правильной версией внешней компоненты.
15. oslokot 190 29.01.24 12:40 Сейчас в теме
Нашел в чем проблема. Перевел в нижний регистр имена подкаталогов ARM и ARM64, расположенные в каталоге Android и приложение при обновлении их подхватило и всё заработало.
И да, все завелось на платформе 8.3.15.62, конфа в режиме совместимости 8.3.10
Автору однозначный лайк!

Сижу тестирую. Есть несколько проблемок

1. Есть небольшие задержки, по сравнению с обычным запуском "android.speech.action.RECOGNIZE_SPEECH", раза в два. Может быть планшет у меня тормознутый?

2. Иногда начало предложения "проглатывает" и выдает только вторую часть

3. При тестировании самого сервиса, в логе иногда сыпется рой ошибок
...ERROR: onError (8)
...ERROR: onError (8)
...ERROR: onError (8)
...ERROR: onError (8)
и т.д.
16. user852614 13.02.24 10:29 Сейчас в теме
Странное поведение - пока не нажмешь Запустить тестирование(кнопку) в сервисе распознавания, в 1Ске внешних событий нету. В самом 1С приложении вызывается метод ЗапуститьРаспознаваниеРечи, прилетают события initialization и ServiceStatus, RecognitionReady,onBeginningOfSpeech и все, пока не перейдешь в сервис и кнопку не нажмешь тестирования...
Прикрепленные файлы:
17. salexdv 2327 13.02.24 10:59 Сейчас в теме
(16) Действительно странно. Сервис обычно крутится фоном даже после перезагрузки и в него никто не заходит. Остановка распознавания в приложении не решает проблему?
18. user852614 13.02.24 11:20 Сейчас в теме
Решилось настройками:
1. Батарея - Запуск приложений - Убрал автоматически
2. Приложения - Приложения - Распознование - Убрал галку Приостановить работу в неактивный период

Все взлетело -)
19. user852614 14.02.24 10:57 Сейчас в теме
Голову сломал, че звук не слышно то, когда распознал речь, а там...
Добавил строчку, все норм стало.
Прикрепленные файлы:
20. salexdv 2327 14.02.24 10:59 Сейчас в теме
Оставьте свое сообщение