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

15.07.21

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Распознавание речи в мобильном приложении 1С на Android:
.zip 58,15Mb
16
16 Скачать (1 SM) Купить за 1 850 руб.

В мобильном приложении 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С-программирование Мобильная разработка Программист Стажер Платные (руб)

Данный онлайн-курс предусматривает изучение базовых принципов создания приложений для операционной системы Android, работающих на мобильной платформе “1С:Предприятие”. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие” при разработке прикладных решений для “обычных” компьютеров, но пока ещё не занимался разработкой 1С-приложений, предназначенных для работы на мобильных устройствах.

08.06.2023    9386    0    Infostart    0    

66

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

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

2880 руб.

03.12.2018    58335    190    103    

170

SALE! 30%

Загрузка и выгрузка в 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С и нажимаете кнопку "Распознать и загрузить".

8400 5880 руб.

04.06.2019    105336    307    173    

322

SALE! 25%

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

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

13200 9900 руб.

27.12.2021    36923    98    161    

193

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

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

2000 руб.

22.04.2019    95496    558    187    

314

Разработка внешних компонент 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 и маркетинг Управленческий учет Платные (руб)

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

15000 руб.

30.05.2017    53275    8    69    

45

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

Внешняя компонента в виде библиотеки (.dll файл), позволяющая посылать команды и получать ответы по протоколу WebSocket из 1С. Компонента работает только на стороне "клиента".

4440 руб.

22.06.2020    17743    17    33    

21

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

Внешняя компонента позволяет работать c TWAIN-совместимым оборудованием (сканерами, камерами) . Полностью совместима со стандартной TWAIN-компонентой из БСП и может применяться как ее замена без изменения вызовов, при этом может работать с 64-разрядной платформой, а так же имеет расширенную функциональность, например, сохранение результата непосредственно в PDF без использования сторонних утилит. Прекрасно работает на сервере, тонком клиенте и веб-клиенте (проверена работа в браузерах Google Chrome, Mozilla Firefox и Microsoft Internet Explorer).

3000 руб.

12.05.2020    27640    136    98    

88
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. s.sintsov 249 15.07.21 17:41 Сейчас в теме
При установке приложения-службы распознавания выдает Ошибка при синтаксическом анализе пакета. Android 7.0
2. salexdv 2352 15.07.21 17:54 Сейчас в теме
(1) Нужен Android API 28 и выше. В репозитории это указал, дополню описание и здесь. Возможно, что будет работать с версией и ниже, но надо пробовать.
3. Serg O. 275 16.07.21 09:26 Сейчас в теме
по этой же теме - есть не только распознавание,
но и "перевод" и "говорилка" (синтез речи)
https://infostart.ru/public/943973/
4. salexdv 2352 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 207 17.07.21 17:43 Сейчас в теме
Давно ждал что-то подобное. Сходу большой и жирный плюс! Еще вопрос какие версии ОС андроид включительно поддерживаются? Я когда то писал компоненты для мобильного приложения с поддержкой андроид 4 или 5 и выше, почему-то в новых версиях (Старше 8.0) они запускаться отказались... На тот момент было уже не актуально и я не стал разбираться. А так в целом за идею, а тем более за её реализацию однозначно плюс и снова плюс!
6. salexdv 2352 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 192 22.01.24 12:57 Сейчас в теме
Попробовал на планшете Digma, версия андроид 8.1, другого к сожалению нет :) Служба сразу установилась, запустилась и тестирование распознавания замечательно работает. Но вот к сожалению установка внешней компоненты из макета не выполнена. То есть все же нужен как минимум андроид 9.0? Платформа 1с 8.3.15, но думаю не в ней проблема.

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

Кстати ваш пример на уже собранной salexdv.app.speechrecognizer-arm64.apk нормально работает
13. oslokot 192 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 2352 27.01.24 09:45 Сейчас в теме
(13)
Теперь никак не пойму, как мне этот файл то подсунуть, чтоб мобильная платформа его увидела?

С чем-то подобным я сталкивался, когда активно менял компоненту и не обнаруживал при отладке в мобильной платформе новых добавленных методов. Кажется, лечилось это следующим образом. Собирается мобильное приложение с нужной версией компоненты, устанавливается на устройство, а затем ведется отладка в мобильной платформе, которая начинает работать с правильной версией внешней компоненты.
15. oslokot 192 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 2352 13.02.24 10:59 Сейчас в теме
(16) Действительно странно. Сервис обычно крутится фоном даже после перезагрузки и в него никто не заходит. Остановка распознавания в приложении не решает проблему?
18. user852614 13.02.24 11:20 Сейчас в теме
Решилось настройками:
1. Батарея - Запуск приложений - Убрал автоматически
2. Приложения - Приложения - Распознование - Убрал галку Приостановить работу в неактивный период

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

Не подскажете, есть ли возможность синтезировать наоборот текст в голос?
22. salexdv 2352 19.05.24 10:08 Сейчас в теме
(21) Это можно сделать средствами мобильной платформы
СредстваМультимедиа.ВоспроизвестиТекст
23. San4opa 20.05.24 15:32 Сейчас в теме
(22) Приложение пишет ошибку указанный язык не поддерживается
Оставьте свое сообщение