$dialer.setTtsConfig
Метод переопределяет настройки провайдера TTS телефонного канала, через который проходит текущий звонок.
Новые настройки распространяются только на текущую сессию и не влияют на глобальные настройки канала. Они используются, пока не будут переопределены еще раз или пока звонок не завершится.
Синтаксис
Метод принимает в качестве аргумента объект с новыми настройками TTS. Передавать каждый раз все настройки провайдера не нужно — достаточно указать те, которые вы хотите переопределить.
// Настройки для провайдера Google
$dialer.setTtsConfig({
lang: "tr-TR",
voice: "tr-TR-Wavenet-E",
});
- Если вы укажете в объекте поля, которые провайдер не поддерживает, они будут проигнорированы.
- Если вы передадите в метод не объект (например, строку), в сценарии возникнет ошибка.
Метод возвращает объект с новыми настройками провайдера.
Вы можете узнать текущие настройки во время звонка с помощью метода $dialer.getTtsConfig
.
Настройки провайдеров
Google
-
lang
- Язык, на котором синтезируется речь.
-
voice
- Голос для синтеза.
подсказкаПолный список языков и голосов для синтеза в документации Google. -
- Высота голоса.
Принимает целое или дробное значение от
-20
до20
, где-20
— уменьшение на 20 полутонов от исходного тона, а20
— увеличение.
- Высота голоса.
Принимает целое или дробное значение от
-
- Скорость синтезированной речи.
Принимает целое или дробное значение от
0.25
до4
, где1
— нормальная скорость голоса.
- Скорость синтезированной речи.
Принимает целое или дробное значение от
-
- Увеличение громкости в дБ от нормальной громкости голоса.
Принимает целое или дробное значение от
-96
до16
. При значении6
громкость примерно в два раза превышает нормальную.
- Увеличение громкости в дБ от нормальной громкости голоса.
Принимает целое или дробное значение от
Яндекс
Список доступных настроек зависит от версии TTS.
Вы можете получить текущую версию во время звонка с помощью $dialer.getTtsConfig
.
Если параметр useV3
имеет значение true
, то используется третья версия протокола Yandex SpeechKit.
Выберите версию в настройках подключения.
Не изменяйте значение параметра useV3
с помощью $dialer.setTtsConfig
, так как это может привести к ошибкам TTS.
- v1
- v3
lang
- Язык, на котором синтезируется речь.
voice
- Голос для синтеза.
speed
- Скорость синтезированной речи.
Принимает целое или дробное значение от
0.1
до3
, где1
— нормальная скорость голоса.
- Скорость синтезированной речи.
Принимает целое или дробное значение от
emotion
-
Амплуа — характеристика звучания голоса. Например, диктор может говорить более дружелюбно или шепотом.
предупреждениеЕсли вы используете амплуа, которое не поддерживается для текущего голоса, то произойдет ошибка TTS.
-
-
lang
- Язык, на котором синтезируется речь.
-
voice
- Голос для синтеза.
-
speed
- Скорость синтезированной речи.
Принимает целое или дробное значение от
0.1
до3
, где1
— нормальная скорость голоса.
- Скорость синтезированной речи.
Принимает целое или дробное значение от
-
volume
- Громкость синтезированной речи относительно цифровой полной шкалы LUFS.
Принимает целое или дробное значение от
-145
до0
. Рекомендуемый диапазон значений — от−20
до−16
LUFS.
- Громкость синтезированной речи относительно цифровой полной шкалы LUFS.
Принимает целое или дробное значение от
-
role
-
Амплуа — характеристика звучания голоса. Например, диктор может говорить более дружелюбно или шепотом.
предупреждениеЕсли вы используете амплуа, которое не поддерживается для текущего голоса, то произойдет ошибка TTS.
-
-
useVariables
- Если параметр включен, для синтеза используется технология Yandex SpeechKit Brand Voice Adaptive с поддержкой переменных.
Полный список языков, голосов и их амплуа смотрите в документации Яндекса.
Azure
-
language
- Язык, на котором синтезируется речь.
-
voiceName
- Голос для синтеза.
подсказкаПолный список языков и голосов для синтеза в документации Azure. -
sampleRate
- Частота дискретизации.
Aimyvoice
voice
- Голос для синтеза.
Сбер
-
voice
- Голос для синтеза.
подсказкаПолный список голосов для синтеза в документации Сбера
3iTech
model
- Языковая модель для синтеза речи.
sampleRate
- Частота дискретизации.
speed
- Скорость синтезированной речи.
tone
- Тон голоса.
Audiogram
voice
- Голос для синтеза речи.
modelType
- Модель для синтеза речи.
voiceStyle
- Эмоциональная окраска голоса.
Возможные значения для настроек TTS Audiogram смотрите в статье Создание подключения.
ElevenLabs
-
voiceId
-
Идентификатор голоса. Вы можете скопировать его в интерфейсе ElevenLabs.
примечаниеСайт ElevenLabs недоступен для российских IP-адресов.
-
-
modelId
- Модель для синтеза речи.
-
stability
- Определяет стабильность голоса и вариативность синтеза. При низких значениях голос звучит эмоционально, при высоких — монотонно. Принимает значения от
0
до1
.
- Определяет стабильность голоса и вариативность синтеза. При низких значениях голос звучит эмоционально, при высоких — монотонно. Принимает значения от
-
similarityBoost
- Определяет, насколько точно ИИ должен имитировать оригинальный голос. Принимает значения от
0
до1
.
- Определяет, насколько точно ИИ должен имитировать оригинальный голос. Принимает значения от
-
style
- Усиливает стиль оригинального голоса. Принимает значения от
0
до1
. Значения выше0
требуют больше ресурсов и могут увеличить задержку.
- Усиливает стиль оригинального голоса. Принимает значения от
Использование в сценарии
Некоторые провайдеры, например Google и Azure, для большинства языков поддерживают как женские, так и мужские голоса. Вы можете менять голос бота из сценария в зависимости от характеристик пользователя (например, пола или возраста) или по его желанию.
state: SwitchGender
q!: * измени* пол *
script:
var provider = $dialer.getAsrProvider(); # Получение имени текущего провайдера
if (provider === "google") {
var voice = $dialer.getTtsConfig().voice; # Получение текущего голоса
$temp.isMaleVoice = voice.endsWith("B") || voice.endsWith("D"); # Мужские голоса заканчиваются на B и D
var newVoiceLetter = (isMaleVoice ? ["A", "C"] : ["B", "D"])[$reactions.random(2)];
$dialer.setTtsConfig({ voice: "ru-RU-Wavenet-" + newVoiceLetter });
} else {
# Для других провайдеров переопределяемые поля и значения могут быть другими
}
a: Теперь я говорю {{$temp.isMaleVoice ? "женским" : "мужским"}} голосом.