Разметка синтеза речи


При написании ответов бота в телефонном канале вы можете использовать специальную разметку, чтобы управлять звучанием произносимых слов и фраз при синтезе речи бота.

Элементы разметки отличаются в зависимости от используемого провайдера TTS.

SSML

SSML (Speech Synthesis Markup Language) — язык разметки синтеза речи, основанный на XML. SSML позволяет гибко настраивать речь бота, тем самым делая ее более естественной и выразительной.

Вы можете ознакомиться со списком поддерживаемых тегов SSML в документации выбранного провайдера. В JAICP SSML-разметка поддерживается для следующих провайдеров TTS:

Использовать разметку SSML в сценарии можно несколькими способами:

  • Тег a.

     a: Ты не пройдёшь! || tts = "<emphasis>Ты</emphasis> не пройдёшь!"
  • Ответы с типом text.

    script:
        $response.replies = $response.replies || [];
        $response.replies.push({
            "type": "text",
            "text": "Мой любимый химический элемент — Cr.",
            "tts": "Мой любимый химический элемент — <sub alias=\"хром\">Cr</sub>."
        });
  • Метод $reactions.answer.

    script:
        $reactions.answer({
            "value": "Вам подарок — промокод на скидку 10%!",
            "tts": "Вам подарок <break time=\"1s\"> промокод на скидку десять процентов!"
        });

Упрощенная разметка

Провайдеры Яндекс и Google также поддерживают упрощенную разметку синтеза речи, не совместимую с SSML. Если возможностей упрощенной разметки для вас достаточно, то используйте ее вместо SSML.

Использовать упрощенную разметку можно в теге a, ответе типа text и методе $reactions.answer.

Если вы используете упрощенную разметку, не передавайте в ответе дополнительное поле tts.

Яндекс

Ударение

При необходимости явно указать ударение в слове, если оно произносится неверно, перед ударной гласной ставьте символ +:

 a: Это система автоматического обзв+она.

Чтобы улучшить качество синтеза длинных слов, их можно разбить на короткие и указать ударения для каждого из них:

 a: Мн+ого пр+офильный проект.

Звучание некоторых слов лучше, если они написаны так, как слышатся, с указанием ударения. Например, вместо пожалуйстапож+алуста.

Паузы

Каждый отделенный пробелом пунктуационный знак преобразуется в паузу длительностью 50–100 мс. Таким образом можно задавать небольшие паузы последовательностью дефисов:

 a: Здравствуйте - - - {{$dialer.getPayload().name}}!

Не рекомендуется создавать таким образом большие паузы. Длинная последовательность дефисов может привести к звуковым артефактам при синтезе.

Google

Ударение

При необходимости явно указать ударение в слове, если оно произносится неверно, после ударной гласной ставьте символ ':

 a: Это система автоматического обзво'на.