Для коррекции произношения используются так называемые теги (tags). Теги - это текстовые управляющие команды, вставляемые в читаемый текст, причем они сами не читаются, а подают синтезатору (речевому движку) справочную информацию (команды) по изменению тех или иных параметров чтения текста. В SAPI 5 для записи тегов используется формат XML (eXtensible Markup Language). Различные речевые синтезаторы могут поддерживать различные наборы тегов; список поддерживаемых тегов следует искать в документации речевого движка.
Каждый элемент XML состоит из стартового тега <тег>
, завершающего тега </тег>
и текста между этими двумя тегами. Если элемент пустой и текст отсутствует, то тег может быть записан так: <тег/>
.
Устанавливает громкость речи. Этот тег может быть пустым. В таком случае он действует на весь последующий текст. Если тег ограничивает фрагмент текста, то он действует только на этот фрагмент. Тег имеет один обязательный атрибут: Level. Значение атрибута должно быть целым и находиться между 0 и 100.
<volume level="50">
Этот текст читается с громкостью 50.
<volume level="100">
Этот текст читается с громкостью 100.
</volume>
</volume>
<volume level="80"/>
Весь следующий текст читается с громкостью 80.
Значение 100 соответствует нормальной громкости голоса. Более низкие значения представляют процент от нормы. То есть 50 дает 50% от полной громкости.
Устанавливает скорость чтения. Этот тег может быть пустым; в таком случае он действует на весь последующий текст. Если тег ограничивает фрагмент текста, то он действует только на этот фрагмент. Тег имеет два атрибута, один из которых должен присутствовать – Speed или AbsSpeed. Значения атрибутов должны быть целыми и находиться между -10 и 10. AbsSpeed управляет абсолютной скоростью голоса, Speed работает относительно текущей скорости.
<rate absspeed="5">
Этот текст читается со скоростью пять.
<rate absspeed="-5">
Этот текст читается со скоростью минус пять.
</rate>
</rate>
<rate absspeed="10"/>
Весь следующий текст читается со скоростью десять.
Атрибут Speed управляет относительной скоростью. Общая скорость получается суммированием всех значений атрибутов Speed с текущей абсолютной скоростью.
<rate speed="5">
Этот текст читается со скоростью пять.
<rate speed="-5">
Этот текст читается со скоростью ноль.
</rate>
</rate>
Значение 0 соответствует нормальной скорости, положительные значения дают ускоренный темп, отрицательные – замедленный.
Устанавливает высоту голоса. Этот тэг может быть пустым. В таком случае он действует на весь последующий текст. Если тег ограничивает фрагмент текста, то он действует только на этот фрагмент. Тег имеет два атрибута, один из которых должен присутствовать – Middle или AbsMiddle. Значения атрибутов должны быть целыми и находиться между -10 и 10. AbsMiddle управляет абсолютной высотой голоса.
<pitch absmiddle="5">
Этот текст читается на высоте пять.
<pitch absmiddle="-5">
Этот текст читается на высоте минус пять.
</pitch>
</pitch>
<pitch absmiddle="10"/>
Весь следующий текст читается на высоте десять.
Атрибут Middle управляет относительной высотой голоса. Общая высота получается суммированием всех значений атрибутов Middle с текущей абсолютной высотой.
<pitch middle="5">
Этот текст читается на высоте пять.
<pitch middle="-5">
Этот текст читается на высоте ноль.
</pitch>
</pitch>
Значение 0 соответствует нормальной высоте голоса, положительные значения дают повышенный тон, отрицательные – пониженный.
Выделяет фрагмент текста при помощи измененного произношения. Тег не может быть пустым.
<emph> Ура </emph>!
Способы выделения могут быть различными в зависимости от особенностей того или иного голоса.
Читает фрагмент текста по буквам. Тег не может быть пустым.
<spell>
Этот текст будет прочитан по буквам.
</spell>
Этот текст будет читаться нормально.
Вставляет паузу. Тег должен быть пустым и содержать один обязательный параметр Msec – длительность паузы в миллисекундах.
Две секунды тишины <silence msec="2000"/> и чтение продолжается.
Осуществляет замену фрагмента текста на необходимое читаемое выражение. Выражение представляет собой набор фонем.
Тег содержит атрибут Sym - это набор фонем, разделенных пробелами.
<pron sym="h eh l l ow & w er l l d "/>
<pron sym="h eh l l ow & w er l l d"> hello world </pron>
Ставит в текст закладку. Тег должен быть пустым и содержать один параметр Mark, представляющий собой описание закладки.
Закладки нужны для того, чтобы программные приложения, работающие с речевыми синтезаторами, получали информацию о том, что прочитан тот или иной фрагмент текста.
Например, программа получит сообщение от речевого синтезатора, когда при чтении будет достигнута эта закладка:
<bookmark mark="bookmark_one"/>
а затем эта закладка:
<bookmark mark="bookmark_two"/>
Указывает, к какой части речи относится слово. Тег не может быть пустым.
Тег имеет один атрибут Part - название части речи:
Значение | Описание |
---|---|
"Unknown" |
Неизвестная часть речи |
"Noun" |
Существительное |
"Verb" |
Глагол |
"Modifier" |
Модификатор |
"Function" |
Функция |
"Interjection" |
Междометие |
<partofsp part="noun"> А </partofsp> - это первая буква алфавита.
Задает контекст слова. Тег не может быть пустым и имеет один атрибут Id - это строка, определяющая содержание читаемого текста (дата, время, адрес электронной почты и т.д.). Возможные значения атрибута содержатся в документации речевого синтезатора.
<context id="date_mdy"> 03/04/01 </context>
should be March fourth, two thousand one.
<context id="date_dmy"> 03/04/01 </context>
should be April third, two thousand one.
<context id="date_ymd"> 03/04/01 </context>
should be April first, two thousand three.
Заставляет движок изменить синтезатор на другой в соответствии с параметрами (Age, Gender, Language, Name, Vendor и VendorPreferred). Тег может быть пустым (тогда его действие распространяется на весь последующий текст) или не быть пустым (тогда действие тега ограничивается лишь фрагментом текста).
Тег имеет два атрибута: Required ("обязательный") и Optional ("возможный"). Будет выбран речевой движок, который в наибольшей степени соответствует заданным параметрам. Если ни один подходящий голос не найден, то никаких изменений не произойдет.
Это предложение будет прочитано голосом по умолчанию.
<voice required="Gender=Female;Age!=Child">
Это предложение будет прочитано женским взрослым голосом,
если такой установлен на компьютере.
<voice required="Age=Teen">
Это предложение будет прочитано
детским голосом, если такой есть.
</voice>
</voice>
Заставляет движок изменить синтезатор на другой в соответствии с заданным языком. Тег может быть пустым (тогда его действие распространяется на весь последующий текст) или не быть пустым (тогда действие тега ограничивается лишь фрагментом текста).
Тег имеет только один атрибут LangId - это идентификатор языка, например, 419 (русский), 409 (американский английский) или 411 (японский). Хотя эти числа являются шестнадцатиричными, они записываются без приставки "0x".
Тег Lang является усеченным вариантом тега Voice с атрибутом Required, который содержит строку "Language=xxx".
<voice required="Language=409">
A U.S. English voice should speak this.
</voice>
<lang langid="419">
Это предложение будет прочитано русским голосом.
</lang>