Распознавание речи в мобильном приложении 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    55070    139    102    

162

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    101858    301    173    

314

SALE! 25%

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

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

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

13200 9900 руб.

27.12.2021    33816    82    159    

177

"Мобильный ТСД" - инвентаризация и сбор штрихкодов для 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    92392    520    186    

297

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

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

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

20400 руб.

31.05.2023    3979    3    2    

5

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

Разработка внешних компонент 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    52238    34    69    

43

Внешняя компонента печати PDF (Native Win 32/64)

Разработка внешних компонент Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Внешняя компонента позволяет печатать PDF файлы непосредственно из 1С, не используя при этом сторонних программ. Прекрасно работает на сервере, тонком клиенте и веб-клиенте. Основана на проекте PDFium из состава проекта Chromium/Chrome

1500 руб.

17.09.2018    35257    108    127    

112
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. s.sintsov 248 15.07.21 17:41 Сейчас в теме
При установке приложения-службы распознавания выдает Ошибка при синтаксическом анализе пакета. Android 7.0
2. salexdv 2331 15.07.21 17:54 Сейчас в теме
(1) Нужен Android API 28 и выше. В репозитории это указал, дополню описание и здесь. Возможно, что будет работать с версией и ниже, но надо пробовать.
3. Serg O. 225 16.07.21 09:26 Сейчас в теме
по этой же теме - есть не только распознавание,
но и "перевод" и "говорилка" (синтез речи)
https://infostart.ru/public/943973/
4. salexdv 2331 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 2331 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 2331 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 2331 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 2331 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 2331 13.02.24 10:59 Сейчас в теме
(16) Действительно странно. Сервис обычно крутится фоном даже после перезагрузки и в него никто не заходит. Остановка распознавания в приложении не решает проблему?
18. user852614 13.02.24 11:20 Сейчас в теме
Решилось настройками:
1. Батарея - Запуск приложений - Убрал автоматически
2. Приложения - Приложения - Распознование - Убрал галку Приостановить работу в неактивный период

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