Структура и события документа SSML
Язык разметки синтеза речи (SSML) с входным текстом определяет структуру, содержимое и другие характеристики текста для вывода речи. Например, можно использовать SSML для определения абзаца, предложения, перерыва или паузы или молчания. Текст можно упаковать с помощью тегов событий, таких как закладка или viseme, которые можно обработать позже приложением.
Дополнительные сведения о структуре элементов в документе SSML см. в разделах ниже.
Примечание.
В дополнение к нейронным голосам службы "Речь ИИ Azure" (не HD), вы также можете использовать голоса высокой четкости распознавания речи ИИ Azure и нейронные голоса Azure OpenAI (HD и не HD). Голоса HD обеспечивают более высокое качество для более универсальных сценариев.
Некоторые голоса не поддерживают все теги языка разметки синтеза речи (SSML ). Это включает в себя нейронный текст для голосов hd, личных голосов и внедренных голосов.
- Сведения о поддержке SSML см. в разделе "Высокоопределяемая функция распознавания речи Azure" (HD).
- Для личного голоса вы можете найти поддержку SSML здесь.
- Для внедренных голосов проверьте поддержку SSML здесь.
Структура документа
Реализация службы "Речь" для SSML основана на языке разметки синтеза речи версии 1.0 консорциума W3C. Элементы, поддерживаемые речью, могут отличаться от стандарта W3C.
Каждый документ SSML создается с помощью элементов или тегов SSML. Эти элементы используются для настройки голоса, стиля, шага, просодии, громкости и т. д.
Ниже приведено подмножество базовой структуры и синтаксиса документа SSML:
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xmlns:mstts="https://www.w3.org/2001/mstts" xml:lang="string">
<mstts:backgroundaudio src="string" volume="string" fadein="string" fadeout="string"/>
<voice name="string" effect="string">
<audio src="string"></audio>
<bookmark mark="string"/>
<break strength="string" time="string" />
<emphasis level="value"></emphasis>
<lang xml:lang="string"></lang>
<lexicon uri="string"/>
<math xmlns="http://www.w3.org/1998/Math/MathML"></math>
<mstts:audioduration value="string"/>
<mstts:ttsembedding speakerProfileId="string"></mstts:ttsembedding>
<mstts:express-as style="string" styledegree="value" role="string"></mstts:express-as>
<mstts:silence type="string" value="string"/>
<mstts:viseme type="string"/>
<p></p>
<phoneme alphabet="string" ph="string"></phoneme>
<prosody pitch="value" contour="value" range="value" rate="value" volume="value"></prosody>
<s></s>
<say-as interpret-as="string" format="string" detail="string"></say-as>
<sub alias="string"></sub>
</voice>
</speak>
Некоторые примеры содержимого, разрешенного в каждом элементе, описаны в следующем списке:
audio
: текстaudio
элемента может содержать обычный текст или разметку SSML, которая говорится, если звуковой файл недоступен или недоступен для воспроизведения. Элементaudio
может содержать текст и следующие элементы:audio
,break
,p
,s
,phoneme
,prosody
,say-as
иsub
.bookmark
: этот элемент не может содержать текст или другие элементы.break
: этот элемент не может содержать текст или другие элементы.emphasis
: этот элемент может содержать текст и следующие элементы:audio
,emphasis
break
,lang
, ,phoneme
,prosody
say-as
иsub
.lang
: этот элемент может содержать все остальные элементы, кромеmstts:backgroundaudio
,voice
иspeak
.lexicon
: этот элемент не может содержать текст или другие элементы.math
: этот элемент может содержать только текст и элементы MathML.mstts:audioduration
: этот элемент не может содержать текст или другие элементы.mstts:backgroundaudio
: этот элемент не может содержать текст или другие элементы.mstts:embedding
: этот элемент может содержать текст и следующие элементы:audio
,emphasis
break
,lang
, ,phoneme
,prosody
say-as
иsub
.mstts:express-as
: этот элемент может содержать текст и следующие элементы:audio
,emphasis
break
,lang
, ,phoneme
,prosody
say-as
иsub
.mstts:silence
: этот элемент не может содержать текст или другие элементы.mstts:viseme
: этот элемент не может содержать текст или другие элементы.p
: этот элемент может содержать текст и следующие элементы:audio
,phoneme
break
,prosody
, ,say-as
,sub
mstts:express-as
иs
.phoneme
: этот элемент может содержать только текст и никакие другие элементы.prosody
: этот элемент может содержать текст и следующие элементы:audio
,p
break
,phoneme
, ,prosody
,say-as
sub
иs
.s
: этот элемент может содержать текст и следующие элементы:audio
,break
,phoneme
,prosody
,say-as
,mstts:express-as
иsub
.say-as
: этот элемент может содержать только текст и никакие другие элементы.sub
: этот элемент может содержать только текст и никакие другие элементы.speak
: корневой элемент документа SSML. Этот элемент может содержать следующие элементы:mstts:backgroundaudio
иvoice
.voice
: этот элемент может содержать все остальные элементы, кромеmstts:backgroundaudio
иspeak
.
Служба "Речь" автоматически обрабатывает знак препинания, например приостановку после периода или использование правильной интонации, когда предложение заканчивается вопросительным знаком.
Специальные символы
Чтобы использовать символы &
, <
и >
в значении или тексте элемента SSML необходимо использовать формат сущности. В частности, следует использовать &
&
вместо , использовать <
вместо <
него и использовать >
вместо >
него . В противном случае SSML не анализируется правильно.
Например, укажите green & yellow
вместо green & yellow
. Следующий SSML анализируется должным образом:
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
<voice name="en-US-AvaNeural">
My favorite colors are green & yellow.
</voice>
</speak>
Специальные символы, такие как кавычки, апострофы и квадратные скобки, должны быть экранированы. Дополнительные сведения см. в разделе Язык XML 1.0: приложение D.
Двойные или одинарные кавычки должны заключать значения атрибутов. Например, <prosody volume="90">
и <prosody volume='90'>
являются хорошо сформированными, допустимыми элементами, но <prosody volume=90>
не распознаются.
Говорить корневой элемент
Элемент speak
содержит такие сведения, как версия, язык и определение словаря разметки. Элемент speak
— это корневой элемент, необходимый для всех документов SSML. Необходимо указать язык по умолчанию в элементе speak
, независимо от того, корректируется ли язык в другом месте, например в элементе lang
.
Ниже приведен синтаксис элемента speak
:
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="string"></speak>
Атрибут | Description | Обязательно или необязательно |
---|---|---|
version |
Задает версию спецификации SSML, используемую для интерпретации разметки документа. Текущая версия — 1.0. | Обязательное поле |
xml:lang |
Язык корневого документа. Значение может содержать языковой код, например en (английский), или языковой стандарт, например en-US (английский - США). |
Обязательное поле |
xmlns |
URI документа, который определяет словарь разметки (типы элементов и имена атрибутов) документа SSML. Текущий универсальный код ресурса (URI) — "http://www.w3.org/2001/10/synthesis". | Обязательное поле |
Элемент speak
должен содержать по крайней мере один элемент голоса.
говорить примеры
Ранее описаны поддерживаемые значения атрибутов speak
элемента.
Пример единого голоса
В этом примере используется голос en-US-AvaNeural
. Дополнительные примеры см . в примерах голосовой связи.
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
<voice name="en-US-AvaNeural">
This is the text that is spoken.
</voice>
</speak>
Добавление паузы
break
Используйте элемент, чтобы переопределить поведение разрывов или пауз по умолчанию между словами. В противном случае служба "Речь" автоматически вставляет паузы.
break
Использование атрибутов элемента описано в следующей таблице.
Атрибут | Description | Обязательно или необязательно |
---|---|---|
strength |
Относительная длительность паузы с помощью одного из следующих значений:
|
Необязательно |
time |
Абсолютная длительность паузы в секундах (например 2s ) или миллисекундах (например 500ms ). Допустимые значения варьируются от 0 до 20000 миллисекундах. Если задать значение, превышающее поддерживаемое максимальное значение, служба использует 20000ms . time Если задан атрибут, strength атрибут игнорируется. |
Необязательно |
Ниже приведены дополнительные сведения об атрибуте strength
.
Сила | Относительная длительность |
---|---|
Очень слабая | 250 мс |
Слабая | 500 мс |
Средняя | 750 мс |
Строгие | 1000 мс |
Очень сильная | 1250 мс |
Примеры останова
Ранее описаны поддерживаемые значения атрибутов break
элемента. Следующие три способа добавляют разрывы 750 мс.
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
<voice name="en-US-AvaNeural">
Welcome <break /> to text to speech.
Welcome <break strength="medium" /> to text to speech.
Welcome <break time="750ms" /> to text to speech.
</voice>
</speak>
Добавление паузы
Используйте элемент mstts:silence
для вставки пауз до или после текста или между двумя соседними предложениями.
Одно из различий между mstts:silence
и break
заключается в том, что break
элемент можно вставить в любом месте текста. Тишина будет соблюдаться только в начале или в конце входного текста или на границе двух соседних предложений.
Параметр молчания применяется ко всем входным текстам в его заключивом элементе voice
. Чтобы снова сбросить или изменить параметр молчания, необходимо использовать новый voice
элемент с тем же голосом или другим голосом.
mstts:silence
Использование атрибутов элемента описано в следующей таблице.
Примеры молчания mstts
Ранее описаны поддерживаемые значения атрибутов mstts:silence
элемента.
В этом примере используется mstts:silence
, чтобы вставить между двумя предложениями период тишины продолжительностью 200 мс.
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xmlns:mstts="http://www.w3.org/2001/mstts" xml:lang="en-US">
<voice name="en-US-AvaNeural">
<mstts:silence type="Sentenceboundary" value="200ms"/>
If we're home schooling, the best we can do is roll with what each day brings and try to have fun along the way.
A good place to start is by trying out the slew of educational apps that are helping children stay happy and smash their schooling at the same time.
</voice>
</speak>
В этом примере mstts:silence
используется для добавления 50 мс тишины в запятую, 100 мс молчания в точке с запятой и 150 мс молчания в запятой перечисления.
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xmlns:mstts="http://www.w3.org/2001/mstts" xml:lang="zh-CN">
<voice name="zh-CN-YunxiNeural">
<mstts:silence type="comma-exact" value="50ms"/><mstts:silence type="semicolon-exact" value="100ms"/><mstts:silence type="enumerationcomma-exact" value="150ms"/>你好呀,云希、晓晓;你好呀。
</voice>
</speak>
Задание абзацев и предложений
Элементы p
и s
используются для обозначения абзацев и предложений соответственно. В отсутствие этих элементов служба "Речь" автоматически определяет структуру документа SSML.
Примеры абзаца и предложения
В следующем примере определяются два абзаца, которые содержат каждый из предложений. Во втором абзаце служба "Речь" автоматически определяет структуру предложения, так как они не определены в документе SSML.
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
<voice name="en-US-AvaNeural">
<p>
<s>Introducing the sentence element.</s>
<s>Used to mark individual sentences.</s>
</p>
<p>
Another simple paragraph.
Sentence structure in this paragraph is not explicitly marked.
</p>
</voice>
</speak>
Элемент закладки
Элемент в SSML можно использовать bookmark
для ссылки на определенное расположение в последовательности текста или тега. Затем вы используете пакет SDK службы "Речь" и подписываетесь на BookmarkReached
событие, чтобы получить смещение каждого маркера в звуковом потоке. Элемент bookmark
не говорится. Дополнительные сведения см. в разделе "Подписка на события синтезатора".
bookmark
Использование атрибутов элемента описано в следующей таблице.
Атрибут | Description | Обязательно или необязательно |
---|---|---|
mark |
Ссылочный текст bookmark элемента. |
Обязательное поле |
Примеры закладок
Ранее описаны поддерживаемые значения атрибутов bookmark
элемента.
Например, может потребоваться узнать смещение времени для каждого слова "цветок" в следующем фрагменте кода:
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
<voice name="en-US-AvaNeural">
We are selling <bookmark mark='flower_1'/>roses and <bookmark mark='flower_2'/>daisies.
</voice>
</speak>
Элемент виземы
Визема — это визуальное описание фонемы в устной речи. Она определяет положение лица и рта в тот или иной момент речи. Элемент mstts:viseme
в SSML можно использовать для запроса выходных данных виземы. Дополнительные сведения см. в разделе Получение сведений о положении лица с помощью виземы.
Параметр viseme применяется ко всем входным текстам в его заключивом элементе voice
. Чтобы снова сбросить или изменить параметр viseme, необходимо использовать новый voice
элемент с тем же голосом или другим голосом.
viseme
Использование атрибутов элемента описано в следующей таблице.
Атрибут | Description | Обязательно или необязательно |
---|---|---|
type |
Тип выходных данных viseme.
|
Обязательное поле |
Примечание.
В настоящее время redlips_front
поддерживает только нейронные голоса в языковом стандарте en-US
, а FacialExpression
поддерживает нейронные голоса в языковых стандартах en-US
и zh-CN
.
Примеры Viseme
Ранее описаны поддерживаемые значения атрибутов viseme
элемента.
В этом фрагменте SSML показано, как запросить фигуры смешения с использованием синтезированной речи.
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xmlns:mstts="http://www.w3.org/2001/mstts" xml:lang="en-US">
<voice name="en-US-AvaNeural">
<mstts:viseme type="FacialExpression"/>
Rainbow has seven colors: Red, orange, yellow, green, blue, indigo, and violet.
</voice>
</speak>