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

$reactions.ttsWithVariables

Метод задает аудио и шаблон текста для синтеза речи с переменным на базе технологии Yandex SpeechKit Brand Voice Adaptive.

предупреждение
В настройках телефонного канала должны быть активны переключатели Включить Yandex v3 и Использовать переменные. В противном случае вызов метода приведет к ошибке.

Синтаксис

Метод принимает объект с полями audioTemplate и textTemplate.

audioTemplate

audioTemplate — описание аудио, в которое будет вставлена переменная. Содержит поля:

  • audio — ссылка на аудиофайл с шаблоном фразы.
предупреждение
Файл должен быть публично доступен по протоколу httpS и удовлетворять требованиям, предъявляемым к аудиозаписям.
  • textTemplate — описание расшифровки аудиофайла:

    • template — текст шаблона. Переменные должны быть обозначены соответствующими именами в фигурных скобках.
    • textVariables — массив объектов, описывающих использованные переменные. Каждый объект содержит поля:
      • name — название переменной.
      • value — расшифровка переменной, использованной в шаблоне.
  • audioVariables — массив объектов, описывающих расположение переменных в аудиозаписи. Каждый объект содержит поля:

    • name — название переменной.
    • startMs — время от начала аудиозаписи до начала воспроизведения переменной в миллисекундах.
    • lengthMs — длительность воспроизведения переменной в миллисекундах.

textTemplate

textTemplate — описание фразы, которую должен синтезировать бот в диалоге с клиентом. Содержит поля:

  • template — текст шаблона. Переменные должны быть обозначены соответствующими именами в фигурных скобках.
  • textVariables — массив объектов с переменными, которые должны быть подставлены в шаблон. Каждый объект содержит поля:
    • name — название переменной.
    • value — расшифровка переменной.
подсказка
Структура audioTemplate и textTemplate повторяет формат AudioTemplate и TextTemplate, описанный в документации Yandex SpeechKit.

Использование

Пример вызова метода из сценария:

$reactions.ttsWithVariables({
"audioTemplate": {
"audio": "https://mybucket.s3-ap-southeast-1.amazonaws.com/myfilename.wav",
"textTemplate": {
"template": "Вам одобрен кредитный лимит в размере {limit} рублей. Ну что, давайте оформим доставку?",
"textVariables": [
{
"name": "limit",
"value": "сто двух тысяч"
}
]
},
"audioVariables": [
{
"name": "limit",
"startMs": 1850,
"lengthMs": 1400
}
]
},
"textTemplate": {
"template": "Вам одобрен кредитный лимит в размере {limit} рублей. Ну что, давайте оформим доставку?",
"textVariables": [
{
"name": "limit",
"value": "пятисот тринадцати тысяч"
}
]
}
});

В аудиофайле для данного примера в качестве суммы кредитного лимита озвучено число сто двух тысяч. В поле audioTemplate передано описание данного аудиофайла с указанием переменной части.

подсказка
Чтобы улучшить читабельность кода, рекомендуем хранить описания аудио отдельно от места, где вызывается метод, — например, в YAML-справочнике.

Поле textTemplate содержит описание фразы, которую бот воспроизведет в стейте, где вызван метод. На месте переменной limit бот произнесет фразу пятисот тринадцати тысяч. В реальном сценарии расшифровки переменных должны отличаться в зависимости от контекста.