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

Материал из Call Office Wiki
Перейти к навигации Перейти к поиску

Синтаксис

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

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