Разработка мобильных решений на платформе 1С часто требует внедрения голосовых уведомлений, особенно в приложениях для складов (ТСД) или при автоматизации курьерских служб. В данной статье мы подробно разберем, как заставить ваше приложение «говорить», проанализируем стандартные возможности платформы и рассмотрим альтернативные варианты для улучшения качества синтеза.
Для начала рассмотрим самый простой и эффективный способ, встроенный в мобильную платформу 1С:Предприятие «из коробки». Платформа предоставляет объект СредстваМультимедиа, который позволяет воспроизводить текст без использования сторонних библиотек. Разберем программный код, который необходимо разместить в модуле:
&НаКлиенте
Процедура ОзвучитьТекст(ТекстДляОзвучки)
#Если МобильныйКлиент Или МобильноеПриложениеКлиент Тогда
Если СредстваМультимедиа.ПоддерживаетсяВоспроизведениеТекста("ru-RU") Тогда
СредстваМультимедиа.ВоспроизвестиТекст(ТекстДляОзвучки);
Иначе
Сообщить("Синтез речи на русском языке не поддерживается на данном устройстве.");
КонецЕсли;
#КонецЕсли
КонецПроцедуры
Проанализируем этот фрагмент. Мы используем директиву #Если МобильныйКлиент, так как функционал синтеза речи недоступен в обычном тонком или толстом клиенте на Windows. Метод ПоддерживаетсяВоспроизведениеТекста проверяет наличие установленного языкового пакета в системе. Это критически важный шаг, так как без него вызов функции воспроизведения может привести к ошибке или отсутствию звука.
Часто разработчики сталкиваются с ситуацией, когда код написан верно, но система выдает ошибку о не поддерживаемом языке. Выясним причину этой проблемы. Платформа 1С не содержит собственного «движка» синтеза речи, она является оболочкой (wrapper) над системным сервисом Android TextToSpeech (TTS).
Если вы получили сообщение о несовместимости, выполним следующие шаги по настройке Android-устройства:
Кроме того, при сборке мобильного приложения в 1С (через сборщик мобильных приложений) важно убедиться, что в настройках разрешены соответствующие разрешения и при необходимости включены сервисы Google в файле google-services.json.
Стандартный голос Google часто критикуют за неестественные интонации и ошибки в ударениях. Рассмотрим альтернативные движки, которые можно установить в систему Android как основные, и 1С будет использовать их автоматически.
RHVoice — один из самых популярных бесплатных движков с открытым исходным кодом. Он отличается высокой скоростью работы и низким потреблением ресурсов, что идеально подходит для ТСД. Рассмотрим его преимущества:
Vocalizer — коммерческое решение с очень естественным звучанием. Если ваше приложение предполагает длительное прослушивание текстов пользователем, стоит обратить внимание на голоса «Милена» или «Юрий». Они гораздо лучше справляются с интонационными паузами и сложными предложениями.
Если ваше мобильное приложение имеет постоянный доступ к интернету, мы можем рассмотреть вариант использования внешних API, таких как OpenAI TTS или Yandex SpeechKit. Это позволит добиться качества речи, практически не отличимого от человеческого.
Схема работы в 1С будет выглядеть следующим образом: мы отправляем HTTPЗапрос на сервер сервиса, передаем текст, а в ответ получаем аудиофайл (обычно в формате mp3). Далее мы воспроизводим этот файл через СредстваМультимедиа.ВоспроизвестиАудио(). Разберем пример логики запроса к API:
// Пример логики отправки запроса к облачному сервису
Запрос = Новый HTTPЗапрос("/v1/audio/speech");
Запрос.Заголовки.Вставить("Authorization", "Bearer " + ТокенДоступа);
Запрос.Заголовки.Вставить("Content-Type", "application/json");
Параметры = Новый Структура;
Параметры.Вставить("model", "tts-1");
Параметры.Вставить("input", "Добрый день, необходимо отобрать товар на второй полке.");
Параметры.Вставить("voice", "alloy");
Запрос.УстановитьТелоИзСтроки(ЗаписатьJSONСтроку(Параметры));
// Далее следует отправка через HTTPСоединение и получение файла
Этот метод позволяет использовать возможности ChatGPT и других нейросетей для озвучивания. Как отмечают пользователи, нейросети могут даже имитировать эмоции и менять интонацию в зависимости от контекста сообщения.
Проанализируем специфику работы с синтезом речи в шумных помещениях. Если вы разрабатываете решение для складских работников, учтите следующие рекомендации:
QUEUE_FLUSH, который прерывает текущую фразу, если поступила новая. В стандартном методе 1С это поведение заложено по умолчанию — новый вызов ВоспроизвестиТекст прерывает предыдущий.+ перед ударной гласной (например, "Положите на ст+оящую полку").Таким образом, мы выяснили, что реализация синтеза речи в 1С на Android — задача вполне решаемая стандартными средствами. Главное — правильно настроить системное окружение смартфона и выбрать подходящий движок в зависимости от задач вашего бизнеса.