Распознавание речи в мобильном приложении 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 Платные (руб)

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

13200 руб.

27.12.2021    39442    111    163    

205

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    108276    315    173    

327

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

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

3000 руб.

03.12.2018    60121    199    103    

174

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

325

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

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

18550 руб.

28.04.2023    9962    15    2    

9

Разработка внешних компонент 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. Настраивается ЛЮБОЙ ДИЗАЙН экрана при помощи встроенного графического редактора! Решение можно масштабировать от одного экрана до тысяч экранов с централизованным управлением.

18000 руб.

30.05.2017    54041    9    69    

46

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

Внешняя компонента для конвертации PDF файлов в картинки без использования дополнительных программ. Работает на сервере и в тонком клиенте.

2400 руб.

25.06.2024    1126    3    4    

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

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

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

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

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

Не подскажете, есть ли возможность синтезировать наоборот текст в голос?
22. salexdv 2364 19.05.24 10:08 Сейчас в теме
(21) Это можно сделать средствами мобильной платформы
СредстваМультимедиа.ВоспроизвестиТекст
23. San4opa 20.05.24 15:32 Сейчас в теме
(22) Приложение пишет ошибку указанный язык не поддерживается
27. Mikeware 9 04.12.24 14:58 Сейчас в теме
(23) проверяйте поддержку языка с помощью Если СредстваМультимедиа.ПоддерживаетсяВоспроизведениеТекста("ru-RU") Тогда...
24. Mikeware 9 04.12.24 11:41 Сейчас в теме
Добрый день.
Распознавание работает, спасибо.
Но есть проблемка - при воспроизведении текста СредстваМультимедиа.ВоспроизвестиТекст - распознавалка его слышит и распознает. Если останавливаю распознавание, и запускаю после вызова воспроизведения, то воспроизведение может прерваться в случайный момент (может произнести текст до конца, может прерваться после слова, может на полуслове). Ну и при некотором количестве стартов-остановок - приложение просто закрывается, сворачивается без объявления ошибки..
Посоветуйте правильную методику работы, плз...
25. salexdv 2364 04.12.24 11:45 Сейчас в теме
(24) Здравствуйте! Сталкивался с таким. Попробуйте перед воспроизведением флаг какой-нибудь использовать. Что-то вроде ВоспроизводитсяАудио = Истина. В обработчике остановки воспроизведения, флаг сбрасываете. Не реагируете на результат распознавания, если ВоспроизводитсяАудио
26. Mikeware 9 04.12.24 14:57 Сейчас в теме
(25) попробовал флаг. И не помогло, и адекватности не прибавилось (т.е. иногда обработчик остановки еще не выполнился, а речь уже прекратилась. а иногда - нормально.). Т.е. ощущение, что "говорилка" и "распознавалка" конфликтуют где-то внутри, в дебрях андроида.
28. salexdv 2364 04.12.24 15:01 Сейчас в теме
(26) У себя я просто делаю примерно так, но у меня одни числа и все не больше секунды, двух, поэтому отрабатывает нормально. Приложение при этом не закрывается, сколько бы раз не останавливалось/запускалось распознавание

КомпонентаРаспознаванияРечи.ОстановитьРаспознаваниеРечи();

	СредстваМультимедиа.ВоспроизвестиТекст(СтроковоеЗначениеПоказателя, "ru-RU");

ПодключитьОбработчикОжидания("ЗапуститьРаспознаваниеРечи", 3, Истина);
29. Mikeware 9 04.12.24 15:22 Сейчас в теме
(25) а в публикации - компонента БЕЗ метода ЗапуститьПостоянноеРаспознаваниеРечи (который есть в исходниках на гитхабе)?
30. salexdv 2364 04.12.24 15:30 Сейчас в теме
(29) Если честно, я не помню, но сам я этим методом не пользуюсь
Оставьте свое сообщение