Объект Device/Методы/TextToSound
Синтаксис
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