Установка форматов дат при помощи атрибута date тега say-as для синтеза речи

, Обновлено 12 февраля 2026

Date в SSML относится к атрибуту interpret-as тега say-as и используется для корректного произношения дат. Это позволяет контролировать, как система синтеза речи интерпретирует и произносит различные форматы дат.

Общие правила

Date работает в соответствии с международной SSML спецификацией https://www.w3.org/TR/ssml-sayas/#S3.1.

В качестве разделителя можно ставить знаки дефис "-", слеш "/",  точку "."

Атрибут format задает формат даты, в котором = день, = месяц, = год.

ПолеДиапазонПример
Day
(одна или 2 цифры)
0?[1...9]
[10...31]
03, 15
Month
(одна или 2 цифры)
0?[1...9]
[10...12]
7, 11
Year
(одна или 4 цифры)
0?0?0?[0...9]
0?0?[10...99]
0?[100..999]
[1000..9999]
45, 998, 2023

* Запись 0? означает, что 0 может быть использован или нет, в зависимости от того, как вам нужно.

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

У тега выставлено значение detail="1" по умолчанию. Оставляйте его как есть.

Возможны следующие варианты записи дат:
dmy, mdy, ymd, ym, my, md, dm, d, m, y. Приведем пример для каждого формата.

dmy

<say-as interpret-as="date" format="dmy" detail="1">10-10-2016</say-as> 

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

<say-as interpret-as="date" format="dmy" detail="1">5/7/24</say-as>

mdy

<say-as interpret-as="date" format="mdy" detail="1">11.09.23</say-as>

ymd

<say-as interpret-as="date" format="ymd" detail="1">1945.05.09</say-as>

ym

<say-as interpret-as="date" format="ym" detail="1">1917/10</say-as>

my

<say-as interpret-as="date" format="my" detail="1">7.98</say-as>

md

<say-as interpret-as="date" format="md" detail="1">03/08</say-as>

dm

<say-as interpret-as="date" format="dm" detail="1">31/12</say-as>

d

<say-as interpret-as="date" format="d" detail="1">12</say-as>

m

<say-as interpret-as="date" format="m" detail="1">01</say-as>

y

<say-as interpret-as="date" format="y" detail="1">998</say-as>

Особенности в других языках

Содержимое date произносится в соответствии с принятыми в языке правилами. Например, дата 05/07/07 с форматом "dmy" (день-месяц-год), в контексте en-US может быть произнесена как "июль, пятое, ноль седьмое", причем ноль будет читать не "зиро", а "оу", как принято заменять нули в на буквы в штатах.

<say-as interpret-as="date" format="dmy" detail="1">05/07/07</say-as>

Исключения

К сожалению, голоса Алена, Филипп, Оксана, Джейн, Омаж, Захар, Эрмил, Мартын не поддерживают данную технологию.

А голоса Наталья, Борислав, Марфа, Тарас, Александра, Сергей обрабатывают этот тег иначе — у них более продвинутые настройки, описанные ниже.

Продвинутые голоса

Голоса Наталья, Борислав, Марфа, Тарас, Александра, Сергей обладают расширенным способом работы с тегом date. Они поддерживают точные настройки падежей, что позволяет контролировать, в какой грамматической форме будет произнесена дата.

Синтаксис

Запись тега для продвинутых голосов:

<say-as interpret-as="date" format="CASE" detail="TEMPLATE">VALUE</say-as>

АтрибутЗначениеОписание
format CASE (падеж) Определяет, в каком падеже будет произнесена дата. По умолчанию — nominative.
detail TEMPLATE (шаблон) Задаёт последовательность: какие части даты присутствуют и в каком порядке. Используйте дефис "-" как разделитель между частями шаблона.
VALUE (содержимое тега) Числовое значение даты с разделителем "-". Порядок и наличие частей должны соответствовать шаблону в detail.

Падежи (значения атрибута format)

  • nominative — именительный (кто? что?) — значение по умолчанию
  • genitive — родительный (кого? чего?)
  • dative — дательный (кому? чему?)
  • accusative — винительный (кого? что?)
  • ablative — творительный (кем? чем?)
  • prepositional — предложный (о ком? о чём?)

Шаблон даты (значения атрибута detail)

Атрибут detail определяет, какие части даты присутствуют. Всегда должна соблюдаться последовательность: день → месяц → год. Нельзя менять порядок (например, месяц-день-год недопустимо).

  • d — день
  • m — месяц
  • y — год (с произнесением слова «год» / «года»)
  • yw — год без слова «год» (вместо «двухтысячный год» будет «двухтысячный»)

Можно указать только две или одну часть. Например:

detailЧто произноситсяПример VALUE
d-m-yдень, месяц и год25-1-2000
d-m-ywдень, месяц и год (без слова «год»)25-1-2000
d-mдень и месяц1-1
m-yмесяц и год02-2000
m-ywмесяц и год (без слова «год»)02-2000
dтолько день25
mтолько месяц1
yтолько год2000

В качестве разделителя в VALUE используйте дефис "-".

Базовые примеры

Дата в винительном падеже с полным шаблоном день-месяц-год:

<say-as interpret-as="date" format="accusative" detail="d-m-y">25-1-2000</say-as>

Марфа произнесла дату в винительном падеже и добавила в конце слово «года».

Тот же пример, но с шаблоном m-yw (месяц и год без слова «год»):

<say-as interpret-as="date" format="accusative" detail="m-yw">02-2000</say-as>

Марфа озвучила месяц и год в винительном падеже, но за счёт yw вместо y опустила слово «года».

Примеры всех падежей

Приведём примеры, как произносится дата «1 января» во всех падежах. Используем шаблон d-m (день-месяц) и значение 1-1.

nominative — именительный

<say-as interpret-as="date" format="nominative" detail="d-m">1-1</say-as>

genitive — родительный

<say-as interpret-as="date" format="genitive" detail="d-m">1-1</say-as>

dative — дательный

<say-as interpret-as="date" format="dative" detail="d-m">1-1</say-as>

accusative — винительный

<say-as interpret-as="date" format="accusative" detail="d-m">1-1</say-as>

ablative — творительный

<say-as interpret-as="date" format="ablative" detail="d-m">1-1</say-as>

prepositional — предложный

<say-as interpret-as="date" format="prepositional" detail="d-m">1-1</say-as>

Связь с другими тегами

Продвинутые голоса также поддерживают управление падежом и родом для числительных через теги cardinal и ordinal. В этом случае атрибут format принимает комбинацию рода и падежа:

<say-as interpret-as="ordinal" format="GENDER_CASE">VALUE</say-as>

Доступные значения рода: masculine (мужской, по умолчанию), feminine (женский), neuter (средний), plural (множественное число). Формат можно указывать как GENDER_CASE, так и CASE_GENDER.

* Значение accusative_dead (винительный для неодушевлённых) доступно только для числительных (cardinal/ordinal). Для дат используйте accusative — даты всегда неодушевлённые, поэтому отдельное значение не требуется.

Подробнее — в статье Ordinal (порядковое числительное).

Выводы

Атрибут date полезен, когда вы хотите контролировать, как именно дата будет произнесена. Для базовых голосов достаточно указать формат (dmy, dm и т.д.) и detail="1". Продвинутые голоса (Наталья, Борислав, Марфа, Тарас, Александра, Сергей) дают гораздо больше контроля: можно задать падеж через format и точный шаблон через detail, включая параметр yw для подавления слова «год».

Поддержка

Если остались вопросы по озвучке, то задайте их в чате поддерки в телеграм @zvukogram