Распознавание и анализ речи с помощью openai (proxyapi)

01.04.25

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

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
Обработка для версии платформы 8.3 и тестовый файл
.zip 1,92Mb
4
4 Скачать (1 SM) Купить за 1 850 руб.
Обработка для версии платформы 8.2 и тестовый файл
.zip 1,92Mb
0
0 Скачать (1 SM) Купить за 1 850 руб.

Доброго времени суток, уважаемые пользователи сайта. Цель написания данной обработки была в облегчении работы для отдела работы с клиентами. Ежедневно сотрудники отдела продаж совершают множество звонков, общаются со множеством клиентов, а менеджеры по работе с клиентами вынуждены прослушивать часы аудиозаписей звонков, анализируя диалоги сотрудников и клиентов.

Для облегчения труда сотрудников и была сделана данная обработка. Она позволяет преобразовать аудио файл в текст для последующего его анализа. 

 

Описание работы

Поскольку работа из России с OpenAI заблокирована, был использован сервис https://proxyapi.ru/. Для начала работы необходимо зарегистрировать и получить токен. Для доступа к сервисам OpenAI используется API сервиса proxyapi.

Запросы на распознавания речи, отправляются на адрес:

https://api.proxyapi.ru/openai/v1/audio/transcriptions

В заголовках передается полученный токен proxyapi для авторизации:

Authorization : Bearer <Полученный токен proxyapi>
Content-Type : multipart/form-data; boundary=<Разделитель>

В качестве разделителя можно использовать уникальный идентификатор, предварительно освободив его от "-".

Содержимое POST-запроса представляет собой значение отдельных полей, разделенных строкой-разделителем, указываемой в "boundary".

Основная проблема как раз в корректном формировании POST-данных. Любое отклонение от заданного формата приводит к ошибке.

Для формирования запроса использовался объект ЗаписьДанных. Код функции ниже:

Функция ПолучитьДанныеТела(Разделитель, ИмяФайла)
	ДД = Новый ДвоичныеДанные(ИмяФайла);
	НовРазделитель = "--"+Разделитель;
	
	Тело = Новый ПотокВПамяти();
	ЗаписьДанных = Новый ЗаписьДанных(Тело, , , Символы.ВК + Символы.ПС);
	
	ЗаписьДанных.ЗаписатьСтроку(НовРазделитель);
	ЗаписьДанных.ЗаписатьСтроку("Content-Disposition: form-data; name=""model""");
	ЗаписьДанных.ЗаписатьСтроку("");
	ЗаписьДанных.ЗаписатьСтроку("whisper-1");

	ЗаписьДанных.ЗаписатьСтроку(НовРазделитель);
	ЗаписьДанных.ЗаписатьСтроку("Content-Disposition: form-data; name=""language""");
	ЗаписьДанных.ЗаписатьСтроку("");
	ЗаписьДанных.ЗаписатьСтроку("ru");
	
	ЗаписьДанных.ЗаписатьСтроку(НовРазделитель);
	ЗаписьДанных.ЗаписатьСтроку("Content-Disposition: form-data; name=""response_format""");
	ЗаписьДанных.ЗаписатьСтроку("");
	ЗаписьДанных.ЗаписатьСтроку("text");
	
	ЗаписьДанных.ЗаписатьСтроку(НовРазделитель);
	ЗаписьДанных.ЗаписатьСтроку("Content-Disposition: form-data; name=""file"";filename=""audio.wav""");
	ЗаписьДанных.ЗаписатьСтроку("Content-Type: audio/x-wav");
	ЗаписьДанных.ЗаписатьСтроку("");
	ЗаписьДанных.Записать(ДД);
	ЗаписьДанных.ЗаписатьСтроку("");
	ЗаписьДанных.ЗаписатьСтроку(НовРазделитель+"--");
	
	ЗаписьДанных.Закрыть();
	
	ДанныеТела = Тело.ЗакрытьИПолучитьДвоичныеДанные();
	
	Возврат ДанныеТела;
КонецФункции

 

Описание работы для версии платформы 8.2

При работе с платформой 8.2 столкнулся с несколькими проблемами:

1. Стандартные функции платформы не работают с https 

2. Нет объекта ЗаписьДанных

3. Нет объектов для работы с JSON

4. Проблемы с кодировкой при разборе результата анализа текста.

Проблему с https разрешил при помощи использования com-объекта WinHttp.WinHttpRequest.5.1.

Вместо ЗаписиДанных был использован объект ЗаписьТекста. Функция ПолучитьДанныеТела приняла вид:

Функция ПолучитьДанныеТела(Разделитель)
	НовРазделитель = "--"+Разделитель;
	
	ПервыйФайл = ПолучитьИмяВременногоФайла();
	ПоследнийФайл = ПолучитьИмяВременногоФайла();
	
	ЗаписьДанных = Новый ЗаписьТекста(ПервыйФайл, КодировкаТекста.ANSI, Символы.ПС);
	
	ЗаписьДанных.ЗаписатьСтроку(НовРазделитель);
	ЗаписьДанных.ЗаписатьСтроку("Content-Disposition: form-data; name=""model""");
	ЗаписьДанных.ЗаписатьСтроку("");
	ЗаписьДанных.ЗаписатьСтроку("whisper-1");

	ЗаписьДанных.ЗаписатьСтроку(НовРазделитель);
	ЗаписьДанных.ЗаписатьСтроку("Content-Disposition: form-data; name=""language""");
	ЗаписьДанных.ЗаписатьСтроку("");
	ЗаписьДанных.ЗаписатьСтроку("ru");
	
	ЗаписьДанных.ЗаписатьСтроку(НовРазделитель);
	ЗаписьДанных.ЗаписатьСтроку("Content-Disposition: form-data; name=""response_format""");
	ЗаписьДанных.ЗаписатьСтроку("");
	ЗаписьДанных.ЗаписатьСтроку("text");
	
	ЗаписьДанных.ЗаписатьСтроку(НовРазделитель);
	ЗаписьДанных.ЗаписатьСтроку("Content-Disposition: form-data; name=""file"";filename=""audio.wav""");
	ЗаписьДанных.ЗаписатьСтроку("Content-Type: audio/x-wav");
	ЗаписьДанных.ЗаписатьСтроку("");
	ЗаписьДанных.Закрыть();
	
	ЗаписьДанных = Новый ЗаписьТекста(ПоследнийФайл, КодировкаТекста.ANSI, Символы.ВК + Символы.ПС);
	ЗаписьДанных.ЗаписатьСтроку("");
	ЗаписьДанных.ЗаписатьСтроку(НовРазделитель+"--");
	
	ЗаписьДанных.Закрыть();
	
	ВременныйФайл = ПолучитьИмяВременногоФайла();
	МассивФайлов = Новый Массив;
	МассивФайлов.Добавить(ПервыйФайл);
	МассивФайлов.Добавить(Файл);
	МассивФайлов.Добавить(ПоследнийФайл);
	
	ОбъединитьФайлы(МассивФайлов,ВременныйФайл);
	
	УдалитьФайлы(ПервыйФайл);
	УдалитьФайлы(ПоследнийФайл);
	
	Возврат ВременныйФайл;
КонецФункции

JSON пришлось собирать вручную, по кусочкам текста. Ну, а проблему с кодировкой путем записи потока в файл:

	ВФ = ПолучитьИмяВременногоФайла();
	Stream = Новый COMОбъект("ADODB.Stream"); //Для создания этого объекта требуется MDAC 2.5 и выше
	Stream.Type = 1;
	Stream.Mode = 3;
	Stream.Open();
	Stream.Write(WinHttp.ResponseBody());
	Stream.SaveToFile(ВФ);
	Stream.Close();
	
	Текст = Новый ЧтениеТекста(ВФ, КодировкаТекста.UTF8);
	АнализТекстаОтвет = Текст.Прочитать();

 

Обработки тестировались на версии 1С:Предприятие 8.3 (8.3.22.2143) и на версии 1С:Предприятие 8.2 (8.2.19.130).

Обработка нейросети OpenAi ChatGPT DeepSeek multipart/form-data

См. также

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 Россия Абонемент ($m)

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

1 стартмани

вчера в 17:00    194    1    user595604    3    

4

Распознавание документов и образов Программист Платформа 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 Россия Абонемент ($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
Оставьте свое сообщение