SSML Editor - Complete Guide

Edit and preview Speech Synthesis Markup Language. Create natural-sounding text-to-speech with precise control.

SSML Editor Guide

Master Speech Synthesis Markup Language (SSML) to create natural, expressive text-to-speech audio.

How to Use

Step 1: Enter Text

  • Type your content
  • Wrap in SSML speak tags
  • Add markup as needed

Step 2: Preview Audio

  • Click play to hear result
  • Adjust and iterate
  • Compare variations

Step 3: Export

  • Copy SSML code
  • Download audio
  • Save templates

SSML Basics

Document Structure

<speak>
    Your content goes here.
</speak>

Common Tags

Tag Purpose Example
<break> Add pause <break time="500ms"/>
<emphasis> Stress word <emphasis>important</emphasis>
<prosody> Change rate/pitch <prosody rate="slow">...</prosody>
<say-as> Interpret as type <say-as interpret-as="date">

Tag Reference

Break (Pauses)

<!-- Time-based pause -->
<break time="1s"/>
<break time="500ms"/>

<!-- Strength-based pause -->
<break strength="weak"/>    <!-- 250ms -->
<break strength="medium"/>  <!-- 500ms -->
<break strength="strong"/>  <!-- 1s -->
<break strength="x-strong"/> <!-- 2s -->

Emphasis

<emphasis level="reduced">less important</emphasis>
<emphasis level="moderate">somewhat important</emphasis>
<emphasis level="strong">very important</emphasis>

Prosody (Voice Control)

<!-- Rate -->
<prosody rate="x-slow">Very slow speech</prosody>
<prosody rate="slow">Slow speech</prosody>
<prosody rate="medium">Normal speech</prosody>
<prosody rate="fast">Fast speech</prosody>
<prosody rate="x-fast">Very fast speech</prosody>
<prosody rate="80%">Relative rate</prosody>

<!-- Pitch -->
<prosody pitch="x-low">Deep voice</prosody>
<prosody pitch="low">Lower voice</prosody>
<prosody pitch="high">Higher voice</prosody>
<prosody pitch="+20%">Relative pitch</prosody>

<!-- Volume -->
<prosody volume="silent">Silent</prosody>
<prosody volume="soft">Quiet voice</prosody>
<prosody volume="loud">Loud voice</prosody>
<prosody volume="+6dB">Relative volume</prosody>

<!-- Combined -->
<prosody rate="slow" pitch="low" volume="soft">
    Combined settings
</prosody>

Say-As (Interpretation)

<!-- Numbers -->
<say-as interpret-as="cardinal">123</say-as>  <!-- "one hundred twenty-three" -->
<say-as interpret-as="ordinal">3</say-as>     <!-- "third" -->
<say-as interpret-as="digits">123</say-as>    <!-- "one two three" -->

<!-- Dates -->
<say-as interpret-as="date" format="mdy">12/25/2024</say-as>
<say-as interpret-as="date" format="dmy">25/12/2024</say-as>

<!-- Time -->
<say-as interpret-as="time" format="hms12">2:30pm</say-as>

<!-- Currency -->
<say-as interpret-as="currency">$99.50</say-as>

<!-- Telephone -->
<say-as interpret-as="telephone">+1-555-123-4567</say-as>

<!-- Characters/Spelling -->
<say-as interpret-as="characters">ABC</say-as>  <!-- "A B C" -->

Phoneme (Pronunciation)

<phoneme alphabet="ipa" ph="təˈmeɪtoʊ">tomato</phoneme>
<phoneme alphabet="x-sampa" ph="t@&quot;meItoU">tomato</phoneme>

Sub (Substitution)

<sub alias="World Wide Web Consortium">W3C</sub>
<sub alias="kilometers">km</sub>

Practical Examples

IVR Menu

<speak>
    Thank you for calling Acme Corporation.
    <break time="500ms"/>

    <prosody rate="95%">
        For sales, press 1.
        <break time="300ms"/>
        For support, press 2.
        <break time="300ms"/>
        For billing, press 3.
    </prosody>

    <break time="500ms"/>
    To repeat these options, press 9.
</speak>

Order Confirmation

<speak>
    Your order
    <say-as interpret-as="characters">ABC</say-as>
    <say-as interpret-as="digits">12345</say-as>
    has been confirmed.

    <break time="500ms"/>

    The total is <say-as interpret-as="currency">$149.99</say-as>
    and will arrive by
    <say-as interpret-as="date" format="md">03/15</say-as>.
</speak>

Appointment Reminder

<speak>
    <prosody rate="95%">
        Hi <break time="200ms"/> Sarah.

        This is a reminder about your appointment
        <emphasis>tomorrow</emphasis>
        at <say-as interpret-as="time" format="hms12">2:30pm</say-as>.

        <break time="500ms"/>

        Please call
        <say-as interpret-as="telephone">555-123-4567</say-as>
        if you need to reschedule.
    </prosody>
</speak>

Tips and Tricks

Natural Pauses

  • Add breaks after commas and periods
  • Use medium breaks between sentences
  • Add longer breaks for new topics

Pronunciation Fixes

  • Use <sub> for abbreviations
  • Use <phoneme> for unusual words
  • Use <say-as> for numbers and dates

Common Mistakes

Mistake Fix
No root <speak> tag Always wrap in <speak>
Unescaped characters Use &amp; &lt; &gt;
Missing closing tags Always close all tags
Wrong attribute syntax Use name="value" format