Реалізація SSML-розмітки для керування інтонацією та паузами SSML (Speech Synthesis Markup Language) - XML-діалект для точного контролю вимови, пауз, інтонації та темпу в TTS. Стандарт W3C підтримується Google TTS, Azure, Amazon Polly, Yandex SpeechKit. ### Базові SSML-теги```xml
Ваш заказ
Компания
Позвоните
<mstts:express-as style="customerservice"> Чем могу помочь? </mstts:express-as>
### Генератор SSML для IVRpython
from xml.etree.ElementTree import Element, SubElement, tostring
class SSMLBuilder: def init(self, lang: str = "ru-RU"): self.speak = Element("speak", { "version": "1.0", "xmlns": "http://www.w3.org/2001/10/synthesis", "xml:lang": lang })
def add_text(self, text: str) -> "SSMLBuilder":
self.speak.text = (self.speak.text or "") + text
return self
def add_pause(self, ms: int) -> "SSMLBuilder":
br = SubElement(self.speak, "break", {"time": f"{ms}ms"})
return self
def add_prosody(self, text: str, rate: str = "medium",
pitch: str = "medium") -> "SSMLBuilder":
p = SubElement(self.speak, "prosody",
{"rate": rate, "pitch": pitch})
p.text = text
return self
def build(self) -> str:
return tostring(self.speak, encoding="unicode")
Использование
ssml = (SSMLBuilder()
.add_text("Добрый день! ")
.add_pause(300)
.add_prosody("Ваш баланс составляет пять тысяч рублей.", rate="slow")
.build())
```### Підтримка SSML за провайдерами | Тег | Google | Azure | AWS Polly | Yandex | |-----|--------|-------|-----------|--------| | <break> | ✓ | ✓ | ✓ | ✓ | | <prosody> | ✓ | ✓ | ✓ | частково | | <say-as> | ✓ | ✓ | ✓ | обмежено | | <phoneme> | ✓ | ✓ | ✓ | - | | <emphasis> | ✓ | ✓ | ✓ | - | | <lang> | ✓ | ✓ | - | - | Терміни: розробка SSML-шаблонів для IVR - 2-3 дні. SSML-генератор для динамічних відповідей – 3–5 днів.







