SSML против сухого текста — как разметка делает AI-голос живым
Вы когда-нибудь слышали, как TTS читает длинный абзац без пауз и интонации? Слушать такое тяжело. SSML решает эту проблему: это язык разметки, который даёт синтезатору инструкции — где сделать паузу, на чём поднять голос, что прочитать медленнее.
Продолжаем цикл статей про использование AI-синтезаторов голоса, начатое в статье "Как приручить синтезатор речи: 7 шагов от робота к живому голосу". В этой статье вы узнаете, как использовать SSML, чтобы управлять голосом TTS-синтезатора как режиссёр управляет актёром: расставлять паузы, менять темп и даже вставлять звуки.
1. Что такое SSML и зачем он нужен
SSML (Speech Synthesis Markup Language) — это «HTML для синтеза речи».
Он не меняет смысл текста, но подсказывает движку, как читать.
- Хотите длинную паузу? Используйте
<break time="700ms"/>
. - Нужно прочитать слово по буквам?
<say-as interpret-as="characters">API</say-as>
. - Нужен особый тон?
<prosody rate="80%">Читайте медленнее</prosody>
.
💡 Важно: не все сервисы поддерживают весь набор тегов SSML. Перед внедрением — проверьте документацию вашего движка (Steos, ElevenLabs, Yandex SpeechKit, Google Cloud TTS, Amazon Polly).
2. Базовый скелет SSML
Каждый текст оборачивается в <speak>
:
<speak>
Привет! Это мой первый текст с SSML.
</speak>
Без этого тега некоторые движки даже не начнут обрабатывать разметку.
3. Управляем паузами: тег <break>
Паузы — ключ к естественной речи.
<speak>
Первое правило <break time="500ms"/> паузы делают речь понятнее.
</speak>
time — указываем в миллисекундах:
500ms
,1s
.strength — задаём уровень паузы:
none
,x-weak
,weak
,medium
,strong
,x-strong
.
Пример с strength
:
<speak>
В начале <break strength="strong"/> и в конце <break strength="x-strong"/> делаем паузы.
</speak>
4. Меняем темп, тон и громкость: <prosody>
Тег <prosody>
управляет «характером» голоса.
<speak>
<prosody rate="80%">Говорим медленнее</prosody>
<prosody rate="120%">А теперь быстрее</prosody>
</speak>
rate — скорость (
80%
,fast
,x-slow
).pitch — высота голоса (
+10%
,high
,low
).volume — громкость (
loud
,soft
,+3dB
).
Пример с комплексной настройкой:
<speak>
<prosody rate="90%" pitch="+5%">Торжественный момент</prosody>
</speak>
5. Ударения и фонетика: <emphasis>
и <phoneme>
Хочется подчеркнуть слово? Используйте <emphasis>
:
<speak>
Это <emphasis level="strong">действительно важно</emphasis> для проекта.
</speak>
- level —
strong
,moderate
,reduced
.
Если движок читает слово неправильно — подскажите фонетику:
<speak>
Моя фамилия — <phoneme alphabet="ipa" ph="ˈdejkstra">Dijkstra</phoneme>
</speak>
💡 Работает не везде, но в сложных текстах спасает.
6. Чтение чисел, дат и букв: <say-as>
Тег <say-as>
говорит синтезатору, что за тип данных он озвучивает.
<speak>
Ваш заказ <say-as interpret-as="digits">12345</say-as> готов.
</speak>
- characters — «API» → «эй-пи-ай».
- digits — «2024» → «две ноль два четыре».
- ordinal — «21» → «двадцать первый».
- date — форматируем даты:
<speak>
Дата доставки <say-as interpret-as="date" format="dmY">12032024</say-as>
</speak>
7. Эффекты и вставки звуков: <audio>
и <amazon:effect>
Можно вставлять звуки:
<speak>
Внимание! <audio src="/beep.mp3"/> Обновление завершено.
</speak>
А некоторые движки (например, Amazon Polly) дают спецэффекты:
<speak>
<amazon:effect name="whispered">Это секрет</amazon:effect>
</speak>
8. Работа с диалогами
SSML отлично подходит для диалогов:
<speak>
<p>— Привет! <break time="400ms"/> Как дела?</p>
<p>— Отлично <break time="300ms"/> спасибо.</p>
</speak>
Тег <p>
помогает сделать паузу между репликами длиннее.
9. Советы и лайфхаки для новичков
- Тестируйте кусками. Начинайте с пары фраз, проверяйте, как звучит.
- Не перегружайте разметкой. Слишком много тегов делает речь искусственной.
- Комбинируйте приёмы. Например:
<emphasis>
+<prosody>
+<break>
. - Храните готовые шаблоны. Часто используемые конструкции (даты, цифры, паузы) держите под рукой.
- Слушайте в наушниках. Так лучше слышны мелкие огрехи.
Чек-лист по SSML
Есть тег <speak>
вокруг текста.
Паузы стоят с <break>
.
Темп и тон настроены через <prosody>
.
Важные слова выделены <emphasis>
.
Цифры, даты и аббревиатуры размечены <say-as>
.
Текст протестирован в реальном движке.
Итоги
SSML — это мощный способ управлять голосом синтезатора.
Вы буквально становитесь режиссёром, который ставит «актеру» паузы, задаёт эмоции и темп речи.
Как говорил Станиславский: «Не верю!» — то, что мы часто думаем, слушая плоский синтез.
Попробуйте уже сегодня обернуть свой текст в <speak>
и добавить пару пауз — и услышите, как ваш TTS оживает.
Хотите попробовать?
По этой ссылке доступен TTS-синтезатор, который бесплатно даёт озвучить ваш текст более, чем 100 голосами:
[ Steos Vocie Bot ]
Голоса все мультиязычные - отлично говорят как по-русски, так и по-английски, по-испански и на дюжине других голосов. Работает все в Telegram, никаких приложений ставить на телефон или ПК не надо.
Сам пользуюсь сервисом уже более 2 лет (с 2023 года).