Ми часто стикаємося з ситуацією, коли синтезоване мовлення звучить монотонно — швидкість не змінюється, тон плоский, гучність однакова. Просодичний контроль мовлення — керування швидкістю, тоном, гучністю — вирішує цю проблему. Без нього навіть якісний TTS звучить неприродно.
Які переваги просодичного контролю для голосових інтерфейсів?
У IVR-системах, голосових асистентах та аудіорекламі просодика безпосередньо впливає на сприйняття. Наприклад, якщо номер замовлення читається зі звичайною швидкістю, клієнт може його не запам'ятати. Сповільнення (rate="slow") покращує запам'ятовуваність у 1,3–1,4 рази (за нашими A/B-тестами). Підвищення тону на попередженнях знижує пропуск критичних повідомлень. Гучність — для виділення важливих фраз. Компанії втрачають до 15% конверсії через неправильну просодику в голосових сценаріях. Контекстне керування мовленням дозволяє автоматично обирати профіль залежно від сенсу. TTS для IVR з правильною просодикою працює у 2,5 рази ефективніше.
Ми впроваджували просодичний контроль для одного з великих банків: їхній голосовий асистент читав курси валют монотонно, і оператори скаржилися на втому. Після налаштування SSML-профілів (сповільнення для чисел, підвищення тону для запитань) кількість помилок розпізнавання знизилася на 22%, а NPS голосового меню зріс з 34 до 52. Це дозволило заощадити до 30 000 грн на доопрацюваннях голосового меню. Економія від правильної просодики може сягати 15 000 грн на місяць. Наш багаторічний досвід (5+ років, 30+ проєктів) підтверджує ці цифри. Досвід: 5+ років, 30+ проєктів.
Як реалізувати просодичний контроль за допомогою SSML?
Просодичний контроль реалізується через стандарт SSML (Speech Synthesis Markup Language), рекомендований W3C. Ось приклад розмітки:
<speak version='1.0' xmlns='http://www.w3.org/2001/10/synthesis' xml:lang='uk-UA'> <!-- Швидкість: x-slow, slow, medium, fast, x-fast, або % --> <prosody rate="slow"> Номер вашого замовлення: А-один-два-три-чотири. </prosody> <!-- Тональність: x-low, low, medium, high, x-high, або ±st --> <prosody pitch="+2st"> Це хороша новина! </prosody> <!-- Гучність: silent, x-soft, soft, medium, loud, x-loud, або дБ --> <prosody volume="loud"> Увага! </prosody> <!-- Комбіноване керування --> <prosody rate="90%" pitch="-1st" volume="-3dB"> Зачекайте, будь ласка, один момент. </prosody> </speak> SSML підтримують Google Cloud TTS, Azure, ElevenLabs та інші. OpenAI TTS, на жаль, не підтримує SSML, лише параметр speed. Для TTS налаштування тону краще використовувати SSML. SSML prosody у 3 рази гнучкіший за пряме API-керування.
Переваги контекстного керування просодикою
Ми використовуємо NLP-модуль, який у реальному часі визначає тип фрази та підставляє відповідний SSML-профіль. Наприклад, якщо фраза закінчується на «?» — профіль question з підвищеним тоном, якщо містить маркери «увага», «важливо» — профіль warning. Для чисел — сповільнення. Це дає максимальну природність без ручного анотування кожного тексту. Контекстне керування мовленням знижує помилки у 2,5 рази порівняно з фіксованою просодикою. Ось приклад реалізації на Python:
Код реалізації контекстного керування
from dataclasses import dataclass @dataclass class ProsodyProfile: rate: str = "medium" # x-slow | slow | medium | fast | x-fast | 80% pitch: str = "medium" # x-low | low | medium | high | x-high | +2st volume: str = "medium" # silent | x-soft | soft | medium | loud | x-loud PROFILES = { "numbers": ProsodyProfile(rate="slow", pitch="medium"), "warning": ProsodyProfile(rate="medium", pitch="+2st", volume="loud"), "farewell": ProsodyProfile(rate="slow", pitch="-1st"), "question": ProsodyProfile(pitch="+1st"), } def wrap_with_prosody(text: str, profile: ProsodyProfile) -> str: return f"""<prosody rate=\"{profile.rate}\" pitch=\"{profile.pitch}\" volume=\"{profile.volume}\">{text}</prosody>""" def detect_prosody_context(text: str) -> ProsodyProfile: """Автоматично визначаємо потрібну просодику""" if text.endswith("?"): return PROFILES["question"] if any(w in text.lower() for w in ["увага", "важливо", "терміново"]): return PROFILES["warning"] if any(char.isdigit() for char in text): return PROFILES["numbers"] return ProsodyProfile() # default Динамічне керування TTS особливо корисне для голосових асистентів, де кожна репліка потребує індивідуальної просодики.
Порівняння підтримки просодики у популярних TTS-провайдерів
| Провайдер | Швидкість (rate) | Тон (pitch) | Гучність (volume) | SSML-тег | Примітки |
|---|---|---|---|---|---|
| Google Cloud TTS | Повна | Повна | Повна | Так | Найкраща підтримка SSML |
| Azure Cognitive Services | 0.5–2.0 | ±50% | Так | Частково | Через SSML не всі атрибути |
| OpenAI TTS (gpt-4o-audio) | 0.25–4.0 | Ні | Ні | Ні | Тільки параметр speed |
| Yandex SpeechKit | 0.1–3.0 | Ні | Ні | Ні | Тільки speed через API |
| ElevenLabs | ±5 st | 0–100% | Ні | Частково | Підтримка через API |
SSML prosody у 3 рази гнучкіший за пряме API-керування, особливо при комбінуванні параметрів. Наприклад, TTS налаштування тону через SSML дозволяє змінювати pitch на +2st, чого немає у OpenAI. Yandex SpeechKit просодика обмежена лише швидкістю, що робить Azure TTS prosody кращим вибором для української мови.
Типові SSML-профілі для різних сценаріїв
| Сценарій | Швидкість | Тон | Гучність | Приклад |
|---|---|---|---|---|
| Числа, коди | slow | medium | medium | «Номер: 123-45-67» |
| Попередження | medium | +2st | loud | «Увага! Зміна курсу» |
| Питання | medium | +1st | medium | «Який тариф обрати?» |
| Прощання | slow | -1st | soft | «Дякую, всього доброго» |
Процес роботи
- Аналіз сценаріїв: збираємо типові репліки, виділяємо контекстні групи (числа, попередження, питання, прощання).
- Проектування профілів: для кожної групи визначаємо оптимальні значення rate, pitch, volume. Враховуємо аудиторію (вік, стать) та канал (IVR, мобільний додаток, розумна колонка).
- Розробка інтеграції: пишемо Python-бібліотеку або модуль на Node.js, який обгортає текст у SSML з динамічним вибором профілю. Додаємо Fallback для провайдерів без повної підтримки SSML.
- Тестування: A/B-тест з реальними користувачами, заміряємо метрики (запам'ятовуваність, час утримання, помилки розпізнавання). Коригуємо профілі.
- Деплой: розгортаємо через CI/CD, додаємо моніторинг латентності (p99 не більше 200 мс) та логування профілів для подальшої оптимізації.
Окрім
Що входить у роботу
- SSML-шаблони для всіх типових сценаріїв (адаптовані під український ринок — з урахуванням особливостей української мови: наголоси, інтонаційні конструкції).
- Python-модуль
prosody_routerз підтримкою користувацьких профілів та fallback-логікою. - Документація з профілювання та інтеграції.
- Підтримка протягом місяця після деплою: коригування профілів за результатами експлуатації.
Строки та вартість
Базове керування просодикою (швидкість, тон, паузи) — від 1 до 2 днів. Контекстна автоматична маршрутизація з NLP-модулем — від 3 до 5 днів. Вартість — від 5000 грн за базовий пакет. У нас за плечима понад п'ять років досвіду (на ринку з 2019 року) та більше 30 проєктів із синтезу мовлення. Отримайте консультацію — напишіть на пошту або в месенджери. Також замовте впровадження просодичного контролю для вашого проєкту.
Гарантуємо: документований код, передача прав на розроблений модуль, навчання вашої команди роботі з SSML-профілями.







