Распознавание речи средствами платформы 1С

05.06.25

Интеграция - Распознавание документов и образов

Пример простой обработки локального распознавания речи средствами платформы.

Скачать файл

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

Наименование По подписке [?] Купить один файл
Распознавание речи средствами платформы 1С
.epf 7,52Kb
1
1 Скачать (1 SM) Купить за 1 850 руб.

Введение

Платформа, начиная с версии 8.3.23, реализует как распознавание, так и синтез речи. Есть механизмы работы как в облачном сервисе, так и локально.

Разработчики разместили сайт, посвященный технологиям работы с речью. 

Предложена конфигурация, в которой реализована эта функциональность.

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

Как оказалось - можно не заимствуя громоздкий код, получить рабочий пример, состоящий из нескольких десятков строк. 

Поддерживаются всего два формата: WAV и Opus (ogg).

 

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

Будем использовать локальное распознавание. Сначала необходимо подключить хотя бы одну модель. Для этого запускаем стандартную обработку "Управление работой с речью" в функциях технического специалиста. Подключаемся к сервису speech.1c.ai по кнопке "Подключить", используем логин пароль от портала Портал 1C:ИТС. Выбираем модель распознавания и устанавливаем по кнопке "Установить". Появляется флажок в колонке "Локально":

 

 

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

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

Получаем файл по событию НачалоВыбора поля ПутьКФайлу:

&НаКлиенте
Процедура ПутьКФайлуНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
	Диалог.Заголовок = "Выберите файл";
	Диалог.ПолноеИмяФайла = ""; 
	Фильтр = "Файл аудио (*.wav,*.ogg)|*.wav;*.ogg"; 
	Диалог.Фильтр = Фильтр; 
	Диалог.МножественныйВыбор = Ложь;	
	Диалог.Показать(Новый ОписаниеОповещения("ЗагрузитьФайлЗавершение", ЭтаФорма, Новый Структура("Диалог", Диалог)));		
	
КонецПроцедуры   

&НаКлиенте
Процедура ЗагрузитьФайлЗавершение(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт
	
	Диалог = ДополнительныеПараметры.Диалог; 
	
	Если (ВыбранныеФайлы <> Неопределено) Тогда				
		ПутьКФайлу = Диалог.ПолноеИмяФайла;
	КонецЕсли;
	
КонецПроцедуры

Вызываем процедура распознавания речи по кнопке "Распознать". Функции работы с речью реализует объект глобального контекста РаботаСРечью. Механизм предполагает, что формируется задание на выполнение распознавания, исполнение кода продолжается, а далее мы проверяем результат по расписанию. Здесь я не стал этого делать в целях упрощения, просто в цикле ожидаем какое-то количество времени до завершения работы.

&НаКлиенте
Процедура Распознать(Команда)
	
	Если НЕ ПроверитьЗаполнение() Тогда
		Возврат;
	КонецЕсли;
	
	РаспознатьНаСервере();
КонецПроцедуры

&НаСервере
Процедура РаспознатьНаСервере()
	
	// загружаем тело файла
	ДвоичныеДанные = Новый ДвоичныеДанные(ПутьКФайлу);
	
	// получаем установленные модели
	СписокМоделей = РаботаСРечью.ПолучитьОписаниеМоделейРаспознавания();
	
	// прекращаем выполнение, если нет установленных
	Если СписокМоделей.Количество() = 0 Тогда
		Сообщить("Не обнаружено установленных моделей");
	КонецЕсли;
	
	// задаем параметры работы менеджера работы с речью по умолчанию
	ПараметрыМодели = Новый ПараметрыМоделиРаспознаванияРечи;       
	
	// запускаем процесс распознавания локально
	ИдентификаторОтложенногоРаспознаванияРечи = РаботаСРечью.ВыполнитьОтложенноеРаспознавание(ДвоичныеДанные, ПараметрыМодели, ВариантИспользованияРасположенияРаботыСРечью.ТолькоЛокальное);
	
	// получили ИдентификаторОтложенногоРаспознаванияРечи, его исползуем в дальнейшем, чтобы получить результаты распознования
	Ключи = Новый Массив;
	Ключи.Добавить(ИдентификаторОтложенногоРаспознаванияРечи);

	// максимальное время ожидания завершения
	ВремяОжидания = 60;
	
	// основной цикл ожидания
	Для Счетчик = 1 По ВремяОжидания Цикл
		// ждем одну секнду
		Пауза(1);	       
		
		// получаем результы отложенного распознаванию
		Результаты = РаботаСРечью.ПолучитьРезультатыОтложенныхРаспознаваний(Ключи);
		Результат = Результаты[0];
		
		// если распознавание завершено, переходим к выоду результатов
		Если Результат.Завершено = Истина Тогда
			
			Если НЕ Результат.Успешно Тогда
				Сообщить("Ошибка распознавания речи: " + Результат.Ошибка);
				Возврат;
			КонецЕсли;					
			
			Прервать;
		КонецЕсли;		
		
	КонецЦикла;
	
	Результаты = Результат.Результаты;
	
	// если прошло больше, чем ВремяОжидания, а задание не завершено, выводим об этом информацию
	Если НЕ Результат.Завершено Тогда
		Сообщить("Ошибка распознавания речи: " + "слишком большой объем данных.");
		Возврат;
	КонецЕсли;
	
	// формируем результат как строку 
	ИтогОтвет = "";
	
	Для каждого Результат Из Результаты Цикл
		Для каждого ДанныеФразы из Результат.ДанныеФраз Цикл
			Фраза = СокрЛП(ДанныеФразы.Фраза);
			ИтогОтвет = ИтогОтвет + ?(ЗначениеЗаполнено(ИтогОтвет), Символы.ПС, "") + Фраза;
		КонецЦикла;
	КонецЦикла;
	
	Сообщить("Результат распознавания:");	
	Сообщить(ИтогОтвет);
	
КонецПроцедуры

Код процедуры паузы:

&НаСервере  
Процедура Пауза(Таймаут) Экспорт
	
    HTTPСоединение = Новый HTTPСоединение("1C.ru",11111,,,,Таймаут);
    Попытка
        HTTPСоединение.получить(новый HTTPЗапрос (""));
    Исключение
        
		
    Конецпопытки;

КонецПроцедуры

Затраты времени на ожидание примерно 1:1 длительности входящего аудиопотока и времени его обработки. 

Результат выполнения обработки:

 

Проверено на следующих конфигурациях и релизах:

  • Бухгалтерия предприятия, редакция 3.0, релизы 3.0.176.38

Обработка распознавание речь

См. также

SALE! 30%

SALE! 20%

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

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

6480 руб.

23.12.2021    13971    22    25    

10

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

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

12000 руб.

26.01.2016    70804    80    3    

104

Распознавание документов и образов Программист Платформа 1С v8.3 1С:Библиотека стандартных подсистем Россия Абонемент ($m)

Сервис распознавания накладных из изображений в json (на самом деле в любой текст или html), c помощью Tesseract-OCR + Deepseek (ОСень + Winow + 1connector). Данная публикация родилась после того, как я познакомился с фреймворком ОСень и Winow.  Идея сделать сервис аналогичный 1С по распознаванию первички родилась уже давно.

10 стартмани

30.05.2025    545    1    exitone    5    

7

Распознавание документов и образов Программист Платформа 1С v8.3 Абонемент ($m)

Данная обработка позволяет распознавать текст в формате PNG и записывает распознанный текст в TXT формат.

3 стартмани

05.05.2025    392    2    Likarus    0    

1

Распознавание документов и образов Программист Пользователь Платформа 1С v8.3 Платформа 1C v8.2 Россия Абонемент ($m)

Пример обработки для преобразования речи в текст, с последующим анализом данного текста с использованием сервисов OpenAi (proxyapi).

1 стартмани

01.04.2025    479    4    =Kollega=    0    

2

Нейросети Распознавание документов и образов Программист Пользователь Платформа 1С v8.3 Россия Абонемент ($m)

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

10 стартмани

26.03.2025    1140    13    Prepod2003    5    

12

Распознавание документов и образов Программист Пользователь Платформа 1С v8.3 Россия Абонемент ($m)

Внешняя обработка 1С использует API для распознавания текста с изображений (до 25 000 в месяц), поддерживает загрузку файлов с диска и HTTP-запросов, а результат можно автоматически обрабатывать и интегрировать в 1С.

1 стартмани

20.03.2025    691    7    mrKHrom    3    

8
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. SerVer1C 918 06.06.25 00:59 Сейчас в теме
[+] за эксперименты.

Поигрался тоже с этой штукой - добавлю от себя:
- модель можно скачать локально с учёткой ИТС, затем сохранить себе на комп, а потом раздавать её бесплатно всем нуждающимся )
- покопался в кишках модели распознавания - создано AiBox Lab (какой-то бразильской фирмой?)
- если будете скармливать на распознавание формат ogg, то для его создания в ffmpeg (например, если понадобится вырезать аудиодорожку из видоса) юзайте libopus, а не libvorbis
- распознавание ну ооооочень медленное, 1 минуту голоса переваривал 70 сек (!); для сравнения: я юзал vosk и он мне выдал результат на одном потоке для 11-ти минутной речи за 113 сек (!), а на 8-ми потоках - за 23 сек (!) - и это на аудио в 11 раз (!) больше - разница мега-колоссальна.
2. user595604 3 06.06.25 03:33 Сейчас в теме
- да достаточно учетки любого пользователя, даже без всяких подписок;
- насчет медленно - все зависит от 1с, будут ли они этот проект развивать. работает в один поток традиционного процессора, без всяких gpu. если интересно, отвечает за это вот эта служба. скромно потребляет, что процессорное время, что память
Прикрепленные файлы:
SerVer1C; +1 Ответить
3. SerVer1C 918 06.06.25 08:21 Сейчас в теме
(2) Что интересно, rmstt запускается вместе с предприятием (клиентом), видимо, подгружает модель в память, делая это примерно за минуту и занимая 2,5 Гига рамы.
* при существующей локальной модели "Основная большая, для распознавания общих тем"
Оставьте свое сообщение