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

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

Aimyvoice позволяет размечать синтезируемый текст, чтобы управлять его звучанием: задавать паузы, ударения, тон и другие особенности произношения. Разметка делает звучание более естественным и выразительным.

Вы можете размечать текст двумя способами:

  • Чтобы расставлять в тексте ударения и паузы, используйте упрощенную разметку при помощи специальных символов и знаков препинания.

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

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

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

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

Поддерживаемые SSML-теги

ТегФункция
<break>Добавляет в текст паузу.
<emphasis>Задает место фразового ударения в предложении.
<p>Добавляет паузу, по длительности равную паузе между абзацами.
<prosody>Задает громкость, темп и тон речи.
<s>Добавляет паузу, по длительности равную паузе после точки.
<say-as>Задает словесное ударение и другие правила озвучивания текста.
<style>Изменяет манеру (стиль) речи диктора.
<sub>Заменяет звучание слова на другое.

<break>

Добавляет в текст паузу.

подсказка
Для обозначения пауз также можно использовать знаки препинания. Если тег <break> использован совместно со знаками препинания, то он имеет более высокий приоритет и заменяет другие паузы.

Возможные атрибуты:

  • time — длительность паузы. Указывается в формате <число>s (в секундах) или <число>ms (в миллисекундах). Максимальная длительность — 5 секунд.

    предупреждение
    При значении более 2 секунд фактическая длительность паузы может отличаться от указанной на ±200 миллисекунд.
  • breath — логическое значение 0 или 1. Указывает на необходимость синтеза вдоха в конце паузы. Значение по умолчанию — 0.

  • breath_power — целое или дробное число в диапазоне 0–1. Задает силу вдоха: чем больше значение, тем вдох будет громче. Значение по умолчанию — 0.6.

  • breath_dura — целое или дробное число в диапазоне 0–2. Задает коэффициент изменения длительности вдоха. Значение по умолчанию — 1.

    предупреждение
    Если значение time меньше, чем предполагаемая длительность вдоха, то он не будет синтезирован. Сила вдоха зависит от выбранного голоса. Большие значения breath_power и breath_dura могут приводить к синтезу неестественного дыхания или шума.
<break time="0.8s" breath="1" breath_power="0.8" breath_dura="1.2"/>
Мой дядя <break time="1s"/> самых честных правил. <break time="250ms"/> Когда не в шутку занемог.
<break time="0.5s"/> Он уважать себя заставил. И лучше выдумать не мог.

<emphasis>

Задает место фразового ударения в предложении. Вы также можете обозначить его специальным символом # перед ударным словом.

предупреждение
Реализация эффекта эмфазы носит вероятностный характер. Поэтому в некоторых случаях фразовое ударение может быть слабовыраженным или вообще не прозвучать.
Вы сегодня подписываете договор?
Вы <emphasis>сегодня</emphasis> подписываете договор?
#Вы сегодня подписываете договор?

<p>

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

<p>В тё+мно-синем лесу+</p> <p>Где трепещут осины</p>
<p>Где с дубов-колдунов</p> <p>Облетает листва</p>

<prosody>

Задает громкость, темп и тон речи. Тег может быть применен ко всему тексту, его части или отдельному слову, но не к слогу или букве слова.

Возможные атрибуты:

  • volume — громкость.
  • rate — темп.
  • pitch — основной тон.

Значения атрибутов указываются в процентах от базового значения (100), в диапазоне 50–200.

предупреждение
В голосе могут появиться артефакты, если вы зададите значения, близкие к предельно допустимым.
Голос будет <prosody volume="175">звучать громче.</prosody>
Речь будет <prosody rate="140">произноситься быстрее.</prosody>
Речь будет <prosody rate="75">произноситься медленнее.</prosody>
<prosody pitch="125">Тон голоса будет повышен.</prosody>

<s>

Добавляет паузу, по длительности равную паузе после точки. Пауза после точки короче, чем после нового абзаца.

<s>Нет я не плачу</s> <s>И не рыдаю</s>

<say-as>

Задает словесное ударение и другие правила озвучивания текста.

Возможные атрибуты:

  • stress — указывает порядковый номер ударной гласной в слове.

    подсказка
    Вы также можете обозначить словесное ударение специальным символом + после ударной гласной.
  • interpret-as — задает формат прочтения слова. Возможные значения:

    ЗначениеОписание
    dateЧтение числа как даты. Нужно также указать формат даты через атрибут format.
    telephoneЧтение числа как номера телефона.
    charactersЧтение текста по символам. Поддерживается только кириллица.
    cardinalЧтение числа как количественного числительного.
    ordinalЧтение числа как порядкового числительного.
  • format — определяет формат даты. Его нужно указывать, если для атрибута interpret-as задано значение date. Возможные значения:

    ЗначениеОписание
    dmyДень, месяц, год.
    mdyМесяц, день, год.
    ymdГод, месяц, день.
    dmДень, месяц.
    mdМесяц, день.
    ymГод, месяц.
    myМесяц, год.
    dДень.
    mМесяц.
    yГод.
<say-as stress="3">гидроксильная</say-as>;
<say-as interpret-as="date" format="ydm">20212102</say-as>; <!-- двадцать первое февраля две тысячи двадцать первого года -->
<say-as interpret-as="date" format="md">6.11</say-as>; <!-- одиннадцатое июня -->
<say-as interpret-as="telephone">89123456789</say-as>; <!-- восемь девятьсот двенадцать триста сорок пять шестьдесят семь восемьдесят девять -->
<say-as interpret-as="telephone">20-21-22</say-as>; <!-- двадцать двадцать один двадцать два -->
<say-as interpret-as="characters">РЛС</say-as>; <!-- эр эл эс -->
<say-as interpret-as="cardinal">42</say-as>; <!-- сорок два -->
<say-as interpret-as="ordinal">42</say-as>. <!-- сорок второй -->

<style>

Изменяет манеру (стиль) речи диктора. Например, вы можете сделать так, чтобы голос звучал более энергично или печально.

Для всех голосов, кроме Татьяна (для рекламы), предусмотрены три основных стиля: воодушевленный, раздраженный, подавленный. Для любого голоса вы также можете сгенерировать свои уникальные наборы стилей.

подсказка
Многие дикторы умеют ярко выражать свои эмоции, но некоторые читают тексты в однотипной сдержанной манере. Поэтому эффект от применения тега style зависит от выбранного голоса и иногда может быть неотличим от стиля по умолчанию.

Основные стили

Чтобы использовать один из основных стилей, укажите у тега <style> атрибут name. Возможные значения:

  • exilant — в голосе появится больше энергии, воодушевления.
  • irate — голос приобретет оттенки раздраженности.
  • depressive — голос станет подавленным, грустным.

В варианте с атрибутом name тег style используется как парный тег. Основные стили могут быть применены ко всему тексту, его части или отдельному слову.

Сегодня пятница, значит впереди долгожданные выходные!
<style name="exilant">Сегодня пятница, значит впереди долгожданные выходные!</style>
<style name="depressive">Ну вот, выходные #закончились, завтра</style> <style name="irate">снова понедельник!</style>

Случайные стили

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

предупреждение
Случайные стили существуют только в рамках конкретной версии голоса. При обновлении голосов найденные стили поменяются, и вам придется заново искать подходящие варианты. Поэтому не рекомендуется использовать случайные стили в долгосрочных проектах.

Чтобы использовать случайные стили, примените к тегу <style> атрибуты:

  • id — идентификатор стиля, целое число в диапазоне от 0 до 999999999. При одном и том же значении атрибута особенности стиля будут сохранены.

  • sigma — целое или дробное число от 0 до 4. Усиливает или ослабляет выраженность (интенсивность) случайного стиля. Значение по умолчанию — 1.

    предупреждение
    Большие значения sigma могут приводить к появлению артефактов в звуке или неверному произношению текста.

При использовании атрибута id тег style является непарным и применяется, только если стоит в начале текста. Стиль распространяется на весь текст целиком.

<style id="9989"/> В Санкт-Петербурге станцию метрополитэна - «Горный институт» - закончат строить к началу 2024 года. Об этом свидетельствуют данные на сайте гос закупок.
<style id="99999"/> В Санкт-Петербурге станцию метрополитэна - «Горный институт» - закончат строить к началу 2024 года. Об этом свидетельствуют данные на сайте гос закупок.
<style id="99999" sigma="2.5"/> В Санкт-Петербурге станцию метрополитэна - «Горный институт» - закончат строить к началу 2024 года. Об этом свидетельствуют данные на сайте гос закупок.
подсказка
Найденный стиль может быть применен к любому другому голосу с похожим эффектом.
<style id="1199" sigma="3.0"/> Производители сланцевого газа и нефти в США не смогут предстоящей зимой резко увеличить поставки в страны Европы, которая рискует столкнуться с энергетическим кризисом.
<style id="627892919" sigma="2.0"/> Производители сланцевого газа и нефти в США не смогут предстоящей зимой резко увеличить поставки в страны Европы, которая рискует столкнуться с энергетическим кризисом.

Наложение стилей

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

Чтобы комбинировать стили, используйте следующие атрибуты тега <style>:

  • mimic_voice — имя диктора из каталога (например, Маруся) или random — тогда диктор будет выбран случайно.

    предупреждение
    При указании значения random следует всегда использовать атрибут id — идентификатор стиля, целое число в диапазоне от 0 до 999999999. Иначе стиль будет каждый раз звучать по-разному.
  • rhythm — логическое значение 0 или 1. Указывает на то, что ритм целевого голоса будет изменен. Значение по умолчанию — 1.

  • pitch — логическое значение 0 или 1. Указывает на то, что тон целевого голоса будет изменен. Значение по умолчанию — 1.

При использовании атрибута mimic_voice тег style является непарным и применяется, только если стоит в начале текста. Стиль распространяется на весь текст целиком.

<style mimic_voice="Маруся"/> В образцах лунного грунта, который был доставлен на Землю космическим аппаратом, китайские учёные нашли ранее неизвестный минерал.
<style mimic_voice="Маруся" pitch="0"/> В образцах лунного грунта, который был доставлен на Землю космическим аппаратом, китайские учёные нашли ранее неизвестный минерал.
подсказка
Наложение стилей можно использовать совместно со случайными стилями.
<style mimic_voice="Маруся" id="23209" sigma="3.0"/> В образцах лунного грунта, который был доставлен на Землю космическим аппаратом, китайские учёные нашли ранее неизвестный минерал.

<sub>

Заменяет звучание слова на другое. Например, вы можете использовать этот тег, чтобы:

  • Передать более привычное звучание: «что» — «што».
  • Указать правильное произнесение единицы измерения: «м/c» — «метров в секунду».

Укажите желаемое звучание в атрибуте alias.

Дни и ночи у <sub alias="мартэновских">мартеновских</sub> печей.