Перейти к основному содержимому

$dialer.setTtsConfig

Метод переопределяет настройки провайдера TTS телефонного канала, через который проходит текущий звонок.

Новые настройки распространяются только на текущую сессию и не влияют на глобальные настройки канала. Они используются, пока не будут переопределены еще раз или пока звонок не завершится.

Синтаксис

Метод принимает в качестве аргумента объект с новыми настройками TTS. Передавать каждый раз все настройки провайдера не нужно — достаточно указать те, которые вы хотите переопределить.

// Настройки для провайдера Google
$dialer.setTtsConfig({
lang: "tr-TR",
voice: "tr-TR-Wavenet-E",
});
предупреждение
  • Если вы укажете в объекте поля, которые провайдер не поддерживает, они будут проигнорированы.
  • Если вы передадите в метод не объект (например, строку), в сценарии возникнет ошибка.

Метод возвращает объект с новыми настройками провайдера. Вы можете узнать текущие настройки во время звонка с помощью метода $dialer.getTtsConfig.

Настройки провайдеров

Google

  • lang

    • Язык, на котором синтезируется речь.
  • voice

    • Голос для синтеза.
    подсказка
    Полный список языков и голосов для синтеза в документации Google.
  • pitch

    • Высота голоса. Принимает целое или дробное значение от -20 до 20, где -20 — уменьшение на 20 полутонов от исходного тона, а 20 — увеличение.
  • speakingRate

    • Скорость синтезированной речи. Принимает целое или дробное значение от 0.25 до 4, где 1 — нормальная скорость голоса.
  • volumeGain

    • Увеличение громкости в дБ от нормальной громкости голоса. Принимает целое или дробное значение от -96 до 16. При значении 6 громкость примерно в два раза превышает нормальную.

Яндекс

Список доступных настроек зависит от версии TTS.

Вы можете получить текущую версию во время звонка с помощью $dialer.getTtsConfig. Если параметр useV3 имеет значение true, то используется третья версия протокола Yandex SpeechKit.

предупреждение

Выберите версию в настройках подключения.

Не изменяйте значение параметра useV3 с помощью $dialer.setTtsConfig, так как это может привести к ошибкам TTS.

  • lang
    • Язык, на котором синтезируется речь.
  • voice
    • Голос для синтеза.
  • speed
    • Скорость синтезированной речи. Принимает целое или дробное значение от 0.1 до 3, где 1 — нормальная скорость голоса.
  • emotion
    • Амплуа — характеристика звучания голоса. Например, диктор может говорить более дружелюбно или шепотом.

      предупреждение

      Если вы используете амплуа, которое не поддерживается для текущего голоса, то произойдет ошибка TTS.

подсказка

Полный список языков, голосов и их амплуа смотрите в документации Яндекса.

Azure

  • language

    • Язык, на котором синтезируется речь.
  • voiceName

    • Голос для синтеза.
    подсказка
    Полный список языков и голосов для синтеза в документации Azure.
  • sampleRate

    • Частота дискретизации.

Aimyvoice

  • 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 ? "женским" : "мужским"}} голосом.