Приветствую тебя, уважаемый читатель!
Сегодня поговорим о том, как быстро и легко научить 1С произносить любые фразы приятным женским голосом.
Что нам потребутеся:
- Установленный IE 9 версии и выше
- Стационарная или мобильная платформа версий 8.X и выше
- Доступ в Интернет
Для начала создадим внешнюю обработку с одной командой, действия которой будут выполняться в контексте сервера. Также потребутеся поле ввода, в котором будем писать текст для произношения. Сама по себе платформа не умеет синтезировать речь (англ. text-to-speech, tts), но зато в Интернете есть ресурсы, которые это могут делать быстро, качественно и условно бесплатно. Один из таких это http://voicerss.org, он предоставляет в день до 350 бесплатных запросов с объемом данных для одного запроса не более 100Kb, что вплоне достаточно для решения каких-то небольших задач. Есть возможность синтеза речи для основных языков мира, русского в том числе. Также предоставляет возможность использовать API по протоколу HTTPS. Для того, чтобы использовать API данного ресурса необходимо на нем зарегистрироваться. Регистрация простая, не требует ввода данных банковской карты (чуть позже объясню причем тут карта), только e-mail. После регистрации будет доступен персональный API key.
Теперь вернемся к обработке. Разместим на форме еще одно поле ввода, в котором будем писать только что полученный API key. Разместим следующий код в серверном обработчике команды формы
ВременныйФайл = ПолучитьИмяВременногоФайла("mp3");
Соединение = Новый HTTPСоединение("api.voicerss.org");
Запрос = Новый HTTPЗапрос("?key="+Ключ+"&hl=ru-ru&src="+ЧтоБудемГоворить);
Ответ = Соединение.Получить(Запрос, ВременныйФайл);
Если Ответ.КодСостояния <> 200 Тогда
Сообщить("Возникла ошибка. Код ответа сервера " + Ответ.КодСостояния);
КонецЕсли;
Ключ - реквизит формы, значение равно API key, ЧтоБудемГоворить - реквизит формы, значение равно тексту, который хотим произнести. В данном случае используем метод GET (хотя сервис может переварить и POST также) для получения ответа от сервиса voicerss.org. Тело ответа помещаем во временный файл. Все, теперь у нас есть mp3 файл, в котором женским голосом озвучен наш текст. Вариантов как его воспроизвести в принципе достаточно. Предлагаю воспользоваться пожалуй самым простым. Добавим реквизит формы с типом строка и разместим его на форме, выбрав для него вид ПолеHTMLДокумента. Добавим следующий код в нашу процедуру
ПолеHTML = "<!DOCTYPE html>
| <html>
| <head>
| <meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
| <meta http-equiv='X-UA-Compatible' content='IE=9' />
| </head>
| <body>
| <audio controls autoplay = 'autoplay'>
| <source src=" + ВременныйФайл + " type='audio/mp3'>
| Не поддерживается HTML5.
| </audio>
| </body>
| </html>";
Строкой <meta http-equiv='X-UA-Compatible' content='IE=9' /> мы явно указываем, что хотим использовать IE 9, так как только с этой версии поддерживается HTML5, в котором появился тег <audio> (здесь можно почитать про него подробнее), с помощью которого будет воспроизводиться наш файл.
Ниже скрин полученной обработки
Кто-то спросит, зачем это все? Ну, например, можно реализовать озвучку очереди, номер заказов клиентов или, например, Вы пишите на мобильной платформе кулинарный справочник (затея конечно такая себе )) ) и хотите, что бы он озвучивал рецепт и издавал какие либо звуки по таймингу рецепта. У меня например была задача озвучивать список товаров для комплектовщика в мобильном приложении.
p.s. Есть очень классный сервис для синтеза речи https://www.ivona.com/, в нем есть мужской голос Максим, который используется для озвучки донатов на http://www.twitch.tv, но вот как раз для него при регистрации нужно указывать данные своей банковской карты, хотя там тоже есть бесплатный порог использования.