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

15.07.21

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

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
Распознавание речи в мобильном приложении 1С на Android:
.zip 58,15Mb ver:20210715
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С v8.3 1С:Конвертация данных Платные (руб)

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

13200 руб.

27.12.2021    38193    108    161    

201

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    106886    313    173    

326

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

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

3000 руб.

03.12.2018    59288    192    103    

172

Сканер штрих-кода Терминал сбора данных Мобильная разработка Монитор заказов Оптовая торговля Розничная торговля Ценообразование, анализ цен Программист Пользователь Платформа 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    97216    586    189    

321

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

Расширение для типовых конфигурация и для самостоятельной интеграции системы распознавания документо удостоверяющих личность и прочих документов непосредственно из информационных баз "1С:Предприятия 8.3" с помощью Content AI - Passport Reader SDK. Расширение позволит не изменяя типовой код конфигурации, расширить текущий функционал несколькими кликами мыши.

12000 руб.

26.01.2016    69974    79    2    

103

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

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

3450 руб.

28.04.2023    9468    15    0    

9

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

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

4440 руб.

22.06.2020    18124    18    33    

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

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

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

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

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

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