В процессе разработки современных систем на базе 1С часто возникает необходимость обработки мультимедийных данных. Одной из специфических задач является интеграция с системами распознавания речи (ASR). Проблема заключается в том, что многие движки распознавания и встроенные механизмы платформы исторически требовали на вход несжатый аудиопоток в формате WAV (PCM), в то время как большинство записей (например, телефонные разговоры или записи диктофонов) хранятся в сжатом формате MP3 для экономии места.
В данной статье мы подробно разберем, как автоматизировать процесс конвертации, почему стандартных средств 1С может быть недостаточно и какие внешние инструменты лучше всего использовать для достижения качественного результата.
Проанализируем ситуацию: платформа 1С:Предприятие отлично справляется с бизнес-логикой и объектными данными, но работа с бинарными потоками мультимедиа — это ресурсозатратная задача. Хотя в последних версиях платформы (начиная с 8.3.15) появились мощные инструменты для работы с объектом БуферДвоичныхДанных, написание полноценного декодера MP3 на языке 1С является крайне трудоемким процессом. Производительность такого решения будет крайне низкой, так как алгоритмы преобразования частоты дискретизации и распаковки кадров требуют низкоуровневой оптимизации.
Именно поэтому наиболее эффективным путем является использование внешних специализированных инструментов, которыми 1С может управлять программно.
Рассмотрим «золотой стандарт» в мире обработки видео и аудио — утилиту FFmpeg. Это бесплатный инструмент с открытым исходным кодом, который не требует установки в систему (достаточно скопировать исполняемый файл ffmpeg.exe в папку с базой или на сервер).
Разберем по шагам, как реализовать конвертацию через FFmpeg в коде 1С:
ЗапуститьПриложение для выполнения команды.Пример программного кода для вызова конвертации:
ПутьККонвертеру = "C:\ffmpeg\bin\ffmpeg.exe";
ФайлИсточник = "C:\Temp\record.mp3";
ФайлРезультат = "C:\Temp\record_prepared.wav";
// Формируем параметры запуска:
// -i (входной файл), -ar (частота 16кГц), -ac (1 канал - моно)
ПараметрыЗапуска = СтрШаблон("-i ""%1"" -ar 16000 -ac 1 -y ""%2""", ФайлИсточник, ФайлРезультат);
Попытка
ЗапуститьПриложение(ПутьККонвертеру + " " + ПараметрыЗапуска, , Истина);
Сообщить("Конвертация успешно завершена.");
Исключение
Сообщить("Ошибка при запуске конвертера: " + ОписаниеОшибки());
КонецПопытки;
Обратите внимание на параметр Истина в методе ЗапуститьПриложение. Он заставляет систему ожидать завершения работы конвертера, прежде чем продолжать выполнение кода 1С. Это критически важно, если следующим шагом вы собираетесь отправить полученный WAV-файл в сервис распознавания.
Если в вашей организации уже закуплено специализированное ПО, такое как Total Audio Converter, вы можете использовать его интерфейс командной строки. Этот способ аналогичен работе с FFmpeg, но может быть удобнее, если вам требуется поддержка специфических проприетарных форматов или техническая поддержка от вендора.
Пример команды для запуска из 1С будет выглядеть следующим образом:
Команда = """C:\Program Files\Total Audio Converter\AudioConverter.exe"" ""C:\Source.mp3"" ""C:\Dest.wav"" -c wav";
ЗапуститьПриложение(Команда, , Истина);
Выясним причину, по которой стоит выбрать именно командную строку: это позволяет избежать появления графических окон, которые могут блокировать работу сервера или мешать пользователю. Процесс происходит в фоновом режиме.
В ситуациях, когда политика безопасности запрещает использование сторонних исполняемых файлов (exe), можно воспользоваться встроенными средствами ОС Windows. Современный PowerShell позволяет обращаться к библиотекам .NET, которые умеют работать с мультимедиа через MediaFoundation.
Посмотрим на пример логики, которую можно вызвать через 1С:
// Пример вызова PowerShell скрипта для конвертации через системные кодеки
СкриптPS = "
$source = 'C:\temp\audio.mp3'
$destination = 'C:\temp\audio.wav'
Add-Type -AssemblyName System.Windows.Forms
# Логика инициализации медиа-сессии и конвертации через системные фильтры...
";
ЗапуститьПриложение("powershell -Command " + СкриптPS, , Истина);
Однако стоит учитывать, что этот метод сложнее в отладке и сильно зависит от установленных в системе кодеков (LAME MP3 и др.).
Проанализируем ситуацию: часто начинающие разработчики просто переименовывают расширение файла или делают конвертацию «как есть». Для систем распознавания (таких как Yandex SpeechKit, облачное распознавание 1С или библиотеки типа Vosk) критически важны следующие параметры:
Именно использование ffmpeg с ключами -ac 1 -ar 16000 гарантирует, что файл будет принят любой системой ASR без дополнительных вопросов.
Разберем по шагам современные возможности платформы. Начиная с последних релизов 1С 8.3.23, фирма 1С внедрила функционал СистемноеРаспознаваниеРечи. Это встроенный механизм, который может использовать как локальные ресурсы сервера/компьютера, так и облачные сервисы 1С.
Важное замечание: При использовании новых встроенных функций 1С, платформа сама может обрабатывать входящие потоки данных. Если вы используете последнюю версию платформы, сначала проверьте документацию к объекту СредстваРаспознаванияРечи. Возможно, ручная конвертация в вашем случае уже не требуется, так как современные API принимают аудиоданные в сжатом виде для экономии трафика.
Тем не менее, если вы работаете на более ранних версиях или используете внешние специфические библиотеки (например, написанные на C++ внешние компоненты), метод с FFmpeg остается самым надежным и быстрым способом подготовки данных.
Мы рассмотрели различные подходы к конвертации MP3 в WAV внутри экосистемы 1С. Подведем итоги:
Применяя эти инструкции, вы сможете создать надежный механизм обработки звука, который будет работать стабильно вне зависимости от сложности входящих аудиоданных.