Объект Device/Методы/TextToSound

Материал из Call Office Wiki
Версия от 19:14, 2 ноября 2026; Руслан (обсуждение | вклад)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигации Перейти к поиску

Синтаксис

TextToSound (BSTR Text, BSTR Parameters)

Параметры

  • Text - текст синтезируемого сообщения.
  • Parameters - параметры синтеза текста.

Параметры синтеза текста с использованием сервиса Google

Параметр Значения Описание
Service Google Сервис синтеза Google.
Lang - Язык синтеза.
Speed - Скорость произнесения текста.
Voice - Голос.
Emotion - Эмоциональная окраска голоса.

Параметры синтеза текста с использованием сервиса Yandex API v1

Параметр Значения Описание
Service Yandex Сервис синтеза Яндекса, версия API v1.
lang - Язык синтеза.
speed - Скорость произнесения текста.
voice - Голос.
emotion - Эмоциональная окраска голоса.

Описание параметров на сайте Яндекс. Если синтезируемый текст находится внутри тегов <speak>, текст передается в формате SSML, иначе текст воспринимается как текст в TTS-разметке.
Различия в синтезе голоса между версиями API v1 и v3.

Параметры синтеза текста с использованием сервиса Yandex API v3

Параметр Значения Описание
Service Yandex Сервис синтеза Яндекса, версия API v3: в строке параметров это Service=Yandex;API=v3;.
Model - Модель синтеза. Пока не используется.
Voice - Голос.
Speed - Скорость произнесения текста.
Volume - Громкость.
Role - Амплуа: эмоциональная окраска голоса, характер произношения. Допустимые значения зависят от голоса.
Pitch от -1000 до 1000, по умолчанию 0 Смена высоты звука в герцах.
LoudnessNormalizationType MAX_PEAK, LUFS (по умолчанию) Тип нормализации громкости: MAX_PEAK - пиковая нормализация, уровень поднимается до максимально возможного без искажений; LUFS - взвешенная нормализация по стандарту EBU R128 относительно цифровой полной шкалы.
IsUnsafeMode - Позволяет синтезировать более 250 символов за раз. Возможно некоторое снижение качества синтеза.

Описание параметров на сайте Яндекса. Текст воспринимается как текст в TTS-разметке.
Различия в синтезе голоса между версиями API v1 и v3.

Параметры синтеза текста с использованием сервиса Tinkoff

Параметр Значения Описание
Service Tinkoff Сервис синтеза Tinkoff.
Voice - Голос.
Speed от 0.33 до 3, по умолчанию 1.0 Скорость произношения в долях от естественной скорости голоса: 0.5 - вдвое медленнее, 2 - вдвое быстрее.
Pitch от 0.33 до 3, по умолчанию 1.0 Высота речи в долях от естественной высоты голоса: 0.5 - вдвое ниже, 2 - вдвое выше.

Описание параметров на сайте Tinkoff. Если синтезируемый текст находится внутри тегов <speak>, текст передается в формате SSML, иначе текст воспринимается как текст без SSML-разметки, допускается пунктуация.

Синтез с использованием COSpeech

COSpeech синтезирует речь локально: на том же компьютере, где работает Call Office, или в той же локальной сети, без обращения к внешним сервисам и без передачи текста за пределы вашей сети. Отдельная интеграция не нужна - Call Office обращается к серверу через свой COM-объект.

Параметры синтеза текста с использованием COSpeech

Параметр Значения Описание
Service COServer Служба синтеза. Обязателен: только с ним вызов обслуживает COSpeech.
Host адрес:порт Адрес и порт локального сервера синтеза. Обязателен: без него вызов не дойдёт до COSpeech, а без порта уйдёт не туда. Значение целиком берётся из окна настроек COSpeech.
voice имя голоса из списка Голос синтеза - в том виде, в каком имя приходит в списке голосов (для русского языка по-русски). Не указан - берётся из настроек Call Office.
rate x-slow, slow, medium, fast, x-fast Темп речи: очень медленно, медленно, нормально, быстро, очень быстро. Не указан - темп подбирается по длине текста.
abr on, off Побуквенное чтение аббревиатур. Не указан - значение из настроек Call Office.

Параметры перечисляются через точку с запятой, без пробелов; порядок произвольный, в конце строки тоже ставится ;. Обязательных два - Service и Host.

Что нужно знать о поведении

  • числа, суммы, даты, время и сокращения COSpeech читает правильно сам - переписывать их словами и расставлять ударения в тексте не нужно;
  • повторяющиеся фразы сервер отдаёт заметно быстрее: типовой скрипт обзвона со второго проигрывания не занимает процессор;
  • из разметки SSML COSpeech понимает только указание темпа (<prosody rate="slow">), и то лишь когда темп не задан параметром rate; остальные теги, включая паузы, удаляются из текста;
  • если сервер недоступен, вызов завершается ошибкой синтеза - сценарий должен её обработать;
  • остальных параметров у службы нет: частота, формат звука, число потоков и модельные настройки заданы внутри COM-объекта и 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 - порт синтеза; в вашей установке значение может быть другим); voice=Зинаида - голос; rate=slow - медленный темп; abr=on - аббревиатуры читаются побуквенно.

Результат

Объект 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

Назад к методам объекта Device.