SSML-H adds request-scoped voice design to standard SSML. One document can create distinct characters, direct each turn, add pauses, and return one finished audio file without preparing voice profiles first.
Two generated voices, one request
The shopping negotiation
Isabel + Mother · request seed 24680
Isabel
Mommy mommy I want this!
Mother
Isabel [sigh] [sigh] this is not for you. Put it down please !
Isabel
But, I [sigh] ! ... I [sigh] ! ... But I, I really really want it. I spotted it first !
Mother
No, put it down right now. This is the end of this discussion !!!
View exact SSML-H
<speak version="1.1" xmlns="http://www.w3.org/2001/10/synthesis" xmlns:h="https://hangrylabs.app/ns/ssml-h/1.0" xml:lang="en-US">
<metadata>
<h:extensions version="1.0">
<h:voice-definition name="Isabel" age="child" pitch="high" accent="british" scope="request" seed="1476293754"/>
<h:voice-definition name="Mother" gender="female" age="middle-aged" pitch="high" accent="british" scope="request" seed="998282591"/>
</h:extensions>
</metadata>
<voice name="Isabel"><prosody rate="100%" pitch="+4st" volume="-0.92dB">Mommy mommy I want this! </prosody></voice>
<voice name="Mother"><prosody rate="100%" pitch="-1st" volume="-0.92dB">Isabel [sigh] [sigh] this is not for you</prosody></voice>
<voice name="Mother"><prosody rate="100%" pitch="-1st" volume="-0.92dB">Put it down please !</prosody></voice>
<break time="500ms"/>
<voice name="Isabel"><prosody rate="100%" pitch="+4st" volume="-0.92dB"> But, I [sigh] !</prosody></voice>
<break time="600ms"/>
<voice name="Isabel"><prosody rate="100%" pitch="+4st" volume="-0.92dB"> I [sigh] ! </prosody></voice>
<break time="400ms"/>
<voice name="Isabel"><prosody rate="100%" pitch="+4st" volume="-0.92dB"> But I, I really really want it. I spotted it first ! </prosody></voice>
<break time="400ms"/>
<voice name="Mother"><prosody rate="100%" pitch="-1st" volume="-0.92dB">No, put it down right now.</prosody></voice>
<voice name="Mother"><prosody rate="100%" pitch="-1st" volume="-0.92dB"> This is the end of this discussion !!!</prosody></voice>
</speak>
More performances
New voices created inside each document
No saved profiles · request seed 24680
American English
Morning model meeting
Bob + Elisabeth
BobGood morning, Elisabeth. Did you remember to warm up the speech model?
ElisabethI did, but it started talking before I finished my coffee.
BobThat sounds less like a bug and more like enthusiasm!
ElisabethThen our synthetic colleague is officially the most productive one here.
View exact SSML-H
<speak version="1.1" xmlns="http://www.w3.org/2001/10/synthesis" xmlns:h="https://hangrylabs.app/ns/ssml-h/1.0" xml:lang="en-US">
<metadata>
<h:extensions version="1.0">
<h:voice-definition name="Bob" gender="male" age="elderly" pitch="low" accent="american" scope="request" seed="4242"/>
<h:voice-definition name="Elisabeth" gender="female" age="elderly" pitch="moderate" accent="american" scope="request" seed="8241"/>
</h:extensions>
</metadata>
<voice name="Bob">Good morning, Elisabeth. Did you remember to warm up the speech model?</voice>
<break time="250ms"/>
<voice name="Elisabeth"><prosody rate="slow">I did, but it started talking before I finished my coffee.</prosody></voice>
<break time="250ms"/>
<voice name="Bob"><prosody pitch="+1st">That sounds less like a bug and more like enthusiasm!</prosody></voice>
<break time="250ms"/>
<voice name="Elisabeth">Then our synthetic colleague is officially the most productive one here.</voice>
</speak>
British English
Turn left at the moon
Navigator + Driver
NavigatorRecalculating. In three hundred thousand kilometers, turn left at the moon.
DriverThere is no road at the moon!
NavigatorThat explains why traffic is unusually light.
DriverCan we please find a route with oxygen?
View exact SSML-H
<speak version="1.1" xmlns="http://www.w3.org/2001/10/synthesis" xmlns:h="https://hangrylabs.app/ns/ssml-h/1.0" xml:lang="en-US">
<metadata>
<h:extensions version="1.0">
<h:voice-definition name="Navigator" gender="female" age="young-adult" pitch="high" accent="british" scope="request" seed="2026"/>
<h:voice-definition name="Driver" gender="male" age="middle-aged" pitch="low" accent="british" scope="request" seed="5070"/>
</h:extensions>
</metadata>
<voice name="Navigator"><prosody rate="fast" pitch="+2st">Recalculating. In three hundred thousand kilometers, turn left at the moon.</prosody></voice>
<break time="200ms"/>
<voice name="Driver"><prosody rate="slow" pitch="-2st">There is no road at the moon!</prosody></voice>
<break time="200ms"/>
<voice name="Navigator"><prosody rate="fast">That explains why traffic is unusually light.</prosody></voice>
<break time="200ms"/>
<voice name="Driver">Can we please find a route with oxygen?</voice>
</speak>
What the extension adds
Portable characters on top of SSML
<h:voice-definition>
Describe gender, age, pitch, accent, style, seed, and lifetime. OmniVoiceTTS creates the voice before speaking the dialogue.
scope="request"
Keep generated characters private to one synthesis request. Use profile scope only when a reusable voice should be published after successful generation.
Standard SSML remains valid
Use voice turns, prosody, breaks, language changes, substitutions, and supported pronunciation controls alongside SSML-H metadata.