JAICP

$reactions.ttsWithVariables


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

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

Синтаксис

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

audioTemplate

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

  • audio — ссылка на аудиофайл с шаблоном фразы.

Файл должен быть публично доступен по протоколу HTTP/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 бот произнесет фразу пятисот тринадцати тысяч. В реальном сценарии расшифровки переменных должны отличаться в зависимости от контекста.