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

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

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

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

SSML

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

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

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

  • Тег реакции a. После тега укажите параметр tts и передайте в нем размеченный текст:

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

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

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

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

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

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

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

Aimyvoice

СимволРавнозначный SSML‑тегФункцияПример
+<say-as stress>Указывает на ударную гласную в слове.
Символ ставится после ударной гласной.
На амбаре висел большо+й замо+к.
#<emphasis>Указывает на позицию фразового ударения.
Символ ставится перед ударным словом.
Это #вы ожидаете меня?
-<break time="50ms"/>Минимальная пауза.Станцию — РЛС — ввели в эксплуатацию.
или ,<break time="100ms"/>Короткая пауза.Предложение — одна из основных единиц языка.
. ! ? : ; ( )<break time="200ms"/>Длинная пауза.Через две мили (примерно 4 км.) поле сменилось лесом.

Google

Ударение

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

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

Яндекс

Ударение

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

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

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

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

Паузы

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

 a: Здравствуйте - - - {{$dialer.getPayload().name}}!
предупреждение
Не рекомендуется создавать таким образом большие паузы. Длинная последовательность дефисов может привести к звуковым артефактам при синтезе.