Объект Device/Методы/TextToSound
Синтаксис
TextToSound (BSTR Text, BSTR Parameters)
Параметры
- Text - текст синтезируемого сообщения.
- Parameters - параметры синтеза текста.
Параметры синтеза текста с использованием сервиса Google
- Service - сервис синтеза Google (Service=Google;).
- Lang - язык.
- Speed - скорость произнесения текста.
- Voice - голос.
- Emotion - эмоциональная окраска голоса.
Параметры синтеза текста с использованием сервиса Yandex API v1
- Service - сервис синтеза Google (Service=Yandex;).
- lang - язык (список языков).
- speed - скорость произнесения текста.
- voice - голос.
- emotion - эмоциональная окраска голоса.
Описание параметров на сайте Яндекс.
Если синтезируемый текст находится внутри тегов <speak>, текст передается в формате SSML, иначе текст воспринимается как текст в TTS-разметке.
Различия в синтезе голоса между версиями API v1 и v3.
Параметры синтеза текста с использованием сервиса Yandex API v3
- Service - сервис синтеза Yandex (Service=Yandex;API=v3;).
- Model - модель распознавания (пока не используется).
- Voice - голос (список голосов).
- Speed - скорость произнесения текста.
- Volume - громкость.
- Role - амплуа/эмоциональная окраска голоса/характер произношения. Допустимые параметры зависят от голоса (список голосов и амплуа).
- Pitch - смена высоты звука в Гц. Значения от -1000 до 1000 (по умолчанию 0).
- LoudnessNormalizationType - тип нормализации громкости:
- MAX_PEAK - пиковая нормализация, при которой уровень звукового сигнала поднимается до максимально возможного значения для цифрового звука без появления искажений.
- LUFS - взвешенная нормализация на основе стандарта EBU R128, в соответствии с которым нормализация громкости производится относительно цифровой полной шкалы (по умолчанию).
- IsUnsafeMode - позволяет использовать синтез текста более 250 символов за раз. Возможно некоторое снижение качества синтеза.
Описание параметров на сайте Яндекса. Текст воспринимается как текст в TTS-разметке.
Различия в синтезе голоса между версиями API v1 и v3.
Параметры синтеза текста с использованием сервиса Tinkoff
- Service - сервис синтеза Google (Service=Tinkoff;).
- Voice - голос (список голосов).
- Speed - cкорость произношения. Задаётся в долях от естественной скорости произношения для конкретного голоса. Например, значение 0.5 - замедляет речь в два раза, 2 - ускоряет речь в 2 раза. Поддерживаются значения от 0.33 до 3 (по умолчанию - 1.0).
- Pitch - высота речи. Задаётся в долях от естественной высоты конкретного голоса. Например, значение 0.5 - понижает высоту голоса в 2 раза, 2 - повышает высоту голоса в 2 раза. Поддерживаются значения от 0.33 до 3 (по умолчанию - 1.0).
Описание параметров на сайте Tinkoff. Если синтезируемый текст находится внутри тегов <speak>, текст передается в формате SSML, иначе текст воспринимается как текст без SSML-разметки, допускается пунктуация.
Синтез с использованием COSpeech
COSpeech синтезирует речь локально: на том же компьютере, где работает Call Office, или в той же локальной сети, без обращения к внешним сервисам и без передачи текста за пределы вашей сети. Отдельная интеграция не нужна - Call Office обращается к серверу через свой COM-объект.
Как включить
В конфигурации синтеза выберите способ Call Office Синтез и заполните поля из таблицы ниже. Скрипт остаётся обычным: TextToSound вызывается как в примерах на этой странице.
- поле «Адрес сервера» - адрес и порт локального сервера через двоеточие; COSpeech показывает это значение в окне «Настройки» → «Синтез»;
- список голосов приходит с сервера; кнопка «Обновить список голосов» перечитывает его. После смены языка в настройках COSpeech список нужно обновить - иначе Call Office покажет прежние имена.
Параметры в интерфейсе
| Поле в интерфейсе | Что делает |
|---|---|
| Адрес сервера | Адрес и порт локального сервера синтеза в виде адрес:порт. Без порта обращение уйдёт не туда, поэтому значение копируется целиком - COSpeech показывает его в окне «Настройки» → «Синтез».
|
| Голос | Каким голосом читается текст. Список - с сервера; доступные голоса и язык перечислены в окне COSpeech «Настройки» → «Синтез». |
| Скорость произнесения | Темп речи: «По умолчанию», «Очень медленно», «Медленно», «Нормально», «Быстро», «Очень быстро». «По умолчанию» - темп подбирает сервер по длине реплики. |
| Озвучивать аббревиатуры | Читать наборы заглавных букв побуквенно (иначе раскрываются по словарю сокращений). |
Параметры синтеза текста с использованием COSpeech
Параметры передаются вторым аргументом TextToSound в виде строки имя=значение;. Host указывается в каждом вызове, остальные параметры - по необходимости; не указанное берётся из настроек Call Office.
| Параметр | Значения | Что задаёт |
|---|---|---|
Service |
COServer |
Служба синтеза. Обязателен: только с ним вызов обслуживает COSpeech. |
Host |
адрес:порт |
Адрес и порт локального сервера синтеза - обязателен, без порта обращение не дойдёт до COSpeech. Значение целиком копируется из окна COSpeech «Настройки» → «Синтез» или из поля «Адрес сервера». |
voice |
имя голоса из списка | Голос синтеза. Имя - в том виде, в каком его отдаёт список голосов (для русского языка - по-русски). |
rate |
x-slow, slow, medium, fast, x-fast |
Темп речи: очень медленно, медленно, нормально, быстро, очень быстро. Без параметра темп подбирается по длине текста. |
abr |
on, off |
Побуквенное чтение аббревиатур. |
Остальные параметры синтеза заданы внутри COM-объекта и COSpeech: из скрипта они не передаются и не настраиваются.
Что нужно знать о поведении
- числа, суммы, даты, время и сокращения COSpeech читает правильно сам - переписывать их словами и расставлять ударения в тексте не нужно;
- смена голоса или скорости в настройках применяется сразу, перезапуск Call Office не требуется: следующий вызов синтеза идёт с новыми параметрами;
- повторяющиеся фразы сервер отдаёт заметно быстрее - типовой скрипт обзвона со второго проигрывания не занимает процессор;
- из разметки SSML COSpeech понимает только указание темпа (
<prosody rate="slow">), и то лишь когда темп не задан параметром или настройкой; остальные теги, включая паузы, удаляются из текста.
Проверка
- значок COSpeech в трее и окно «Управление» → «Синтез»: состояние сервиса, журнал синтеза;
- кнопка «Тест» в окне COSpeech проговаривает пробную фразу выбранным голосом - быстрый способ проверить голос и скорость без звонка;
- в Call Office - тестовый звонок: если синтез недоступен, звонок сообщает об ошибке синтеза;
- после 31 декабря 2026 года тестовая сборка сервисы не запускает - нужна новая версия COSpeech.
Пример
var Device = new ActiveXObject ("CallOffice.Device");
var NumberPhone = prompt ("Введите номер телефона",'');
Device.Open ();
var Parameters = "Service=COServer; Host=127.0.0.1:6002; voice=Зинаида; rate=slow; abr=on;";
var Sound = Device.TextToSound ("Здравствуйте! Это городская служба водоснабжения, звоню по поводу поверки счётчиков.", Parameters);
var Result = Device.Dial (NumberPhone, 40);
if (Result == 0) {
Device.Say (Sound);
}
Device.HangUp ();
Device.Close ();
В этом примере: Service=COServer - синтез идёт через COSpeech, Host=127.0.0.1:6002 - адрес и порт локального сервера (127.0.0.1 - этот компьютер, 6002 - порт синтеза; в вашей установке значение может быть другим, его показывает COSpeech в окне «Настройки» → «Синтез»), voice=Зинаида - голос, rate=slow - медленный темп, abr=on - аббревиатуры читаются побуквенно. Параметр Host обязателен: его указывают в каждом вызове.
Результат
- Объект Sound, содержащий синтезированное сообщение.
Описание
- Метод выполняет синтез текста в голосовое сообщения используя технологию Text To Speech (TTS). Голосовая машина используемая для синтеза определяется свойством TTSEngine.
Примеры
- Пример с использованием Yandex на JavaScript
var Device = new ActiveXObject ("CallOffice.Device");
var NumberPhone = prompt ("Введите номер телефона",'');
Device.Open ();
var Sound = Device.TextToSound ("Привет, это программа CallOffice", "Service=Yandex; lang=ru-RU; speed=1; voice=zahar; emotion=neutral;"); // Синтезируем голос
var Result = Device.Dial (NumberPhone, 40);
if (Result == 0) {
Device.Say (Sound); // Произносим синтезированное сообщение
}
Device.HangUp ();
Device.Close ();- Пример на JavaScript
var Device = new ActiveXObject ("CallOffice.Device");
var NumberPhone = prompt ("Введите номер телефона",'');
Device.Open ();
Device.TTSEngine = "Microsoft Anna - English (United States)"; // Устанавливаем голосовую машину
var Sound = Device.TextToSound ("Hello, this is the program CallOffice!"); // Синтезируем сообщение
var Result = Device.Dial (NumberPhone, 40);
if (Result == 0) {
Device.Say (Sound); // Произносим синтезированное сообщение
}
Device.HangUp ();
Device.Close ();- Пример с использованием Yandex на VBScript
Dim Device
Dim Sound
Set Device = CreateObject ("CallOffice.Device")
NumberPhone = prompt ("Введите номер телефона","")
Device.Open
Set Sound = Device.TextToSound ("Привет, это программа CallOffice", "Service=Yandex; lang=ru-RU; speed=1; voice=zahar; emotion=neutral;"); // Синтезируем голос
Result = Device.Dial (NumberPhone, 40)
if Result = 1 then
Device.Say Sound ' Произносим синтезированное сообщение
end if
Device.HangUp
Device.Close- Пример на VBScript
Dim Device
Dim Sound
Set Device = CreateObject ("CallOffice.Device")
NumberPhone = prompt ("Введите номер телефона","")
Device.Open
Device.TTSEngine = "Microsoft Anna - English (United States)" ' Устанавливаем голосовую машину
Set Sound = Device.TextToSound ("Hello, this is the program CallOffice!") ' Синтезируем сообщение
Result = Device.Dial (NumberPhone, 40)
if Result = 1 then
Device.Say Sound ' Произносим синтезированное сообщение
end if
Device.HangUp
Device.Close