Аббревиатуры, даты и числительные
Тег <say-as>
включает в себя атрибут interpret-as
. Значение этого атрибута определяет дальнейшее произнесение синтезируемого текста.
Значение атрибута interpret-as тега say-as | Пример | Описание |
---|---|---|
cardinal | <speak><say-as interpret-as="cardinal" format="feminine_nominative">1</say-as> пачка</speak> | Произнесение количественного числительного |
ordinal | <speak><say-as interpret-as="ordinal" format="feminine_nominative">1</say-as> пачка</speak> | Произнесение порядкового числительного |
spell-out | <speak><say-as interpret-as="spell-out">МКС</say-as></speak> | Произнесение аббревиатур более привычным способом |
telephone | <speak><say-as interpret-as="telephone" detail="VAL_VAL">+7 (909) 2282424</say-as></speak> | Произнесение номера мобильного телефона |
money | <speak><say-as interpret-as="money" detail="USD">21</say-as></speak> | Произнесение денежной суммы |
date | <speak><say-as interpret-as="date" detail="d.m.y">25.01.2000</say-as></speak> | Произнесение даты |
Cardinal и ordinal
Значения cardinal и ordinal атрибута interpret-as
отвечают за произнесение количественного и порядкового числительных соответственно.
<say-as interpret-as="VALUE" format="GENDER_CASE"></say-as>
Строковый параметр VALUE
принимает следующие значения:
cardinal
— количественное числительное;ordinal
— порядковое числительное.
Значения атрибута format
определяют, какой род и падеж использовать для синтезирования текста. Строковый параметр GENDER
принимает следующие значения:
masculine
— мужской род;feminine
— женский род;neuter
— средний род;plural
— множественное число.
Строковый параметр CASE
принимает следующие значения:
nominative
— именительный;genitive
— родительный;dative
— дательный;accusative
— винительный для одушевленных;accusative_dead
— винительный для неодушевленных;ablative
— творительный;prepositional
— предложный.
По умолчанию атрибут format
принимает значения GENDER = masculine
и CASE = nominative
. Также атрибут format
можно указывать в формате CASE_GENDER или GENDER_CASE.
В качестве значений тега <say-as>
можно использовать отрицательные числа и начинать числа с нуля. Для обоих видов числительных поддерживаются числа не выше миллиардов. Если для cardinal
указать число больше, в ответе будет количество миллиардов. Например: 1 000 000 000 000 — «тысяча миллиардов». Если для ordinal
указать больше, то в ответ придет ошибка.
Пример произношения числа 1 в женском роде родительном падеже — «одной»:
<speak><say-as interpret-as="cardinal" format="feminine_genitive">1</say-as></speak>
Spell-out
Значение spell-out атрибута interpret-as
отвечает за правильное произнесение аббревиатур. Вместе с этим значением не используются дополнительные параметры. Аббревиатура пишется в теге say-as
и указывается значение атрибута interpret-as="spell-out"
.
<speak><say-as interpret-as="spell-out">МКС</say-as></speak>
Telephone
Значение telephone атрибута interpret-as
отвечает за произнесение номеров телефонов.
<speak><say-as interpret-as="telephone" detail="VAL_VAL">+7 (909) 2282424</say-as></speak>
Группировка цифр
Если есть код страны, его можно указать в формате +7, 7 или 8.
Вы можете указать номер телефона без разделителей, система сгруппирует цифры самостоятельно, например:
- +79651873118 — XX-XXX-XXX-XX-XX;
- 89651873118 — X-XXX-XXX-XX-XX;
- 9651873118 — XXX-XXX-XX-XX.
Для указания кода оператора или кода города можно, но необязательно, использовать скобки. Код будет сгруппирован в следующем формате:
- (123) — XXX;
- (1234) — XX-XX;
- (12345) — XXX-XX;
- (123456) — XX-XX-XX;
- (1234567) — XXX-XX-XX.
Если код города не указан, будет обработан только номер.
В примерах произнесения номера телефона дефис играет роль паузы, а X - роль цифры.
Если указать дефисы между группами цифр номера, то он будет произнесен по группам цифр между дефисом. Нельзя делать группы более трех цифр, иначе синтез закончится ошибкой. При использовании разделителя можно указывать номер любого формата. Также можно использовать скобки в написании номера и знак +
в начале номера.
Настройка пауз
С помощью атрибута detail="phone_pause:VALUEms"
можно настроить паузу между группами цифр, где VALUE
— число в формате integer, указывающее паузу в миллисекундах.
Пример:
<speak><say-as interpret-as="telephone" detail="phone_pause:400ms">+7 (999) 123-45-67</say-as></speak>
В этом примере пауза в 400ms расставлена следующим образом:
+7 pause 999 pause 123 pause 45 pause 67
.
Произношение слова «ровно» для круглого числа
С помощью атрибута detail="use-round-word"
можно произносить слово «ровно», если в номере есть круглое трехзначное число в шаблоне XXX-XX-XX.
Пример:
<speak><say-as interpret-as="telephone" detail="use-round-word">+7 (800) 500-45-60</say-as></speak>
Результат:
плюс семь восемьсот пятьсот ровно сорок пять шестьдесят
.
Также в атрибуте detail можно одновременно указывать паузу и использование слова «ровно» через знак _
.
Пример:
<speak><say-as interpret-as="telephone" detail="use-round-word_phone_pause:400ms">+7 (800) 500-45-60</say-as></speak>
Money
Значение money атрибута interpret-as
отвечает за произнесение денежных сумм в заданной валюте.
<say-as interpret-as="money" format="CASE" detail="CURRENCY_short-form_say-null-cents">VALUE</say-as>
Атрибут format
имеет строковый параметр CASE с указанием падежа:
nominative
— именительный;genitive
— родительный;dative
— дательный;accusative
— винительный;ablative
— творительный;prepositional
— предложный.
Параметры в атрибуте detail
необходимо указывать через знак _
.
Строковый параметр CURRENCY указывает валюту (по умолчанию используется рубль). Доступные варианты:
RUB
— рубль;USD
— доллар США;EUR
— евро;GBP
— фунт стерлинг;CAD
— канадский доллар;CHF
— швейцарский франк;SEK
— шведская крона;DKK
— датская крона;NOK
— норвежская крона;JPY
— японская йена;CNY
— китайский юань;PLN
— польский злотый.
Можно дополнить произнесение денежных сумм следующими вариантами:
full-form
— полные формы названий валют. Например, «японская йена».short-form
— короткие формы названий валют. Например, «доллар» вместо «доллар США».say-null-cents
— «центы» будут произнесены в любом случае, даже если их ноль. Например, «десять долларов, ноль центов».
Примеры:
<speak><say-as interpret-as="money" format="genitive" detail="say-null-cents">10</say-as></speak>
Результат: десяти рублей, ноля копеек
.
<speak><say-as interpret-as="money" detail="USD">21</say-as></speak>
Результат: Двадцать один доллар США
.
<speak><say-as interpret-as="money" detail="USD_short-form">21,15</say-as></speak>
Результат: Двадцать один доллар, пятнадцать центов
.
Date
Значение date атрибута interpret-as
отвечает за произнесение дат.
<say-as interpret-as="date" format="CASE" detail="TEMPLATE">VALUE</say-as>
Атрибут format
имеет строковый параметр CASE с указанием падежа:
nominative
— именительный;genitive
— родительный;dative
— дательный;accusative
— винительный для одушевленных;accusative_dead
— винительный для неодушевленных;ablative
— творительный;prepositional
— предложный.
Параметр TEMPLATE
атрибута detail
задает порядок, в котором указаны число, месяц и год. Можно указать только два или только одну часть, например, число и месяц без года или только год. Допускаются только символы, указанные ниже, которые должны иметь любой из разделителей: .
, -
или /
.
d
— шаблон для числа месяца;m
— шаблон для месяца;y
— шаблон для года;yw
(вместоy
) — в этом случае будет опущено слово год («двухтысячный» вместо «двух тысячный год»).
Дата VALUE
представляет собой числа с одним из разделителей: .
, -
или /
. Порядок и наличие числа, месяца и года должен соответствовать TEMPLATE
. Если TEMPLATE
не указан, используется по умолчанию формат даты d.m.y. День и месяц даты можно указывать одной или двумя цифрами. Год можно указывать от одной до четырех цифр.
Примеры:
<speak><say-as interpret-as="date" detail="d.m.y">25.01.2000</say-as></speak>
Результат: Двадцать пятое января двухтысячного года
.
<speak><say-as interpret-as="date" detail="m.yw">01.2000</say-as></speak>
Результат: Январь двухтысячного
.
<speak><say-as interpret-as="date" format="accusative" detail="y">2000</say-as></speak>
Результат: Двухтысячный год
.