VoiceXML 2.1 Development Guide Home  |  Frameset Home

  Rhetorical TTS Guide: SSML  |  TOC  |  N: VOIP Dialing  

Speechify TTS Guide: SSML

Now that we've gotten our language availability out of the way, let's see what we can do with them.  Speech Synthesis Markup Language, or SSML, allows us to manipulate TTS output and read it back in a specific way.  This tutorial will focus specifically on using Speechify TTS with the following elements:



Interested?  Below you will find a few examples of how SSML can make your text-to-speech more unique.


<say-as> element


Date

<?xml version="1.0" encoding="UTF-8"?>
<vxml version="2.1" xmlns="http://www.w3.org/2001/vxml" xmlns:voxeo="http://community.voxeo.com/xmlns/vxml">
<var name="date1" expr="'20011215'"/>
<var name="date2" expr="'200212??'"/>
<var name="date3" expr="'2003????'"/>
<var name="date4" expr="'????12??'"/>
<var name="date5" expr="'????1215'"/>
<var name="date6" expr="'??????15'"/>
<var name="date7" expr="'2004??15'"/>
<form id="F1">
  <block>
    <prompt xml:lang="en-us-fmj">
      <say-as interpret-as="vxml:date"><value expr="date1"/></say-as><break/>
      <say-as interpret-as="vxml:date"><value expr="date2"/></say-as><break/>
      <say-as interpret-as="vxml:date"><value expr="date3"/></say-as><break/>
      <say-as interpret-as="vxml:date"><value expr="date4"/></say-as><break/>
      <say-as interpret-as="vxml:date"><value expr="date5"/></say-as><break/>
      <say-as interpret-as="vxml:date"><value expr="date6"/></say-as><break/>
      <say-as interpret-as="vxml:date"><value expr="date7"/></say-as><break/>

    </prompt>
  </block>
</form>
</vxml>



Digit

<?xml version="1.0" encoding="UTF-8"?>
<vxml version="2.1" xmlns="http://www.w3.org/2001/vxml" xmlns:voxeo="http://community.voxeo.com/xmlns/vxml">
<var name="digit1" expr="'8546'"/>
<var name="digit2" expr="'0563'"/>
<var name="digit3" expr="'238.2'"/>
<var name="digit4" expr="'-49.12'"/>
<form id="F1">
  <block>
    <prompt xml:lang="en-us-fmj">
      <say-as interpret-as="vxml:digits"><value expr="digit1"/></say-as><break/>
      <say-as interpret-as="vxml:digits"><value expr="digit2"/></say-as><break/>
      <say-as interpret-as="vxml:digits"><value expr="digit3"/></say-as><break/>
      <say-as interpret-as="vxml:digits"><value expr="digit4"/></say-as><break/>

    </prompt>
  </block>
</form>
</vxml>



Currency

<?xml version="1.0" encoding="UTF-8"?>
<vxml version="2.1" xmlns="http://www.w3.org/2001/vxml" xmlns:voxeo="http://community.voxeo.com/xmlns/vxml">
<!-- US Dollars -->
<var name="currency1" expr="'USD20.54'"/>
<!-- Canadian Dollars -->
<var name="currency2" expr="'CAD12.76'"/>
<!-- Japanese Yen -->
<var name="currency3" expr="'JPY17.20'"/>
<!-- British Pounds -->
<var name="currency4" expr="'GBP47.17'"/>
<!-- Euros -->
<var name="currency5" expr="'EUR52.20'"/>
<!-- Russian Rubles-->
<var name="currency5" expr="'RUB78.45'"/>
<form id="F1">
  <block>
    <prompt xml:lang="en-us-fmj">
      <say-as interpret-as="vxml:currency"><value expr="currency1"/></say-as><break/>
      <say-as interpret-as="vxml:currency"><value expr="currency2"/></say-as><break/>
      <say-as interpret-as="vxml:currency"><value expr="currency3"/></say-as><break/>
      <say-as interpret-as="vxml:currency"><value expr="currency4"/></say-as><break/>
      <say-as interpret-as="vxml:currency"><value expr="currency5"/></say-as><break/>
      <say-as interpret-as="vxml:currency"><value expr="currency6"/></say-as><break/>

    </prompt>
  </block>
</form>
</vxml>


Number

<?xml version="1.0" encoding="UTF-8"?>
<vxml version="2.1" xmlns="http://www.w3.org/2001/vxml" xmlns:voxeo="http://community.voxeo.com/xmlns/vxml">
<var name="number1" expr="0"/>
<var name="number2" expr="243"/>
<var name="number3" expr="8721"/>
<var name="number4" expr="8123.2"/>
<var name="number5" expr="-321.12"/>
<form id="F1">
  <block>
    <prompt xml:lang="en-us-fmj">
      <say-as interpret-as="vxml:number"><value expr="number1"/></say-as><break/>
      <say-as interpret-as="vxml:number"><value expr="number2"/></say-as><break/>
      <say-as interpret-as="vxml:number"><value expr="number3"/></say-as><break/>
      <say-as interpret-as="vxml:number"><value expr="number4"/></say-as><break/>
      <say-as interpret-as="vxml:number"><value expr="number5"/></say-as><break/>

    </prompt>
  </block>
</form>
</vxml>



Phone

<?xml version="1.0" encoding="UTF-8"?>
<vxml version="2.1" xmlns="http://www.w3.org/2001/vxml" xmlns:voxeo="http://community.voxeo.com/xmlns/vxml">
<!-- NOTE: The use a plus "+" is not permitted in the telephone number. -->
<var name="tele1" expr="'8004441234'"/>
<var name="tele2" expr="'3003334321x824'"/>
<form id="F1">
  <block>
    <prompt xml:lang="en-us-fmj">
      <say-as interpret-as="vxml:phone"><value expr="tele1"/></say-as><break/>
      <say-as interpret-as="vxml:phone"><value expr="tele2"/></say-as><break/>

    </prompt>
  </block>
</form>
</vxml>



Time

<?xml version="1.0" encoding="UTF-8"?>
<vxml version="2.1" xmlns="http://www.w3.org/2001/vxml" xmlns:voxeo="http://community.voxeo.com/xmlns/vxml">
<var name="time1" expr="'0113a'"/>
<var name="time2" expr="'1013p'"/>
<var name="time3" expr="'1157h'"/>
<form id="F1">
  <block>
    <prompt xml:lang="en-us-fmj">
      <say-as interpret-as="vxml:time"><value expr="time1"/></say-as><break/>
      <say-as interpret-as="vxml:time"><value expr="time2"/></say-as><break/>
      <say-as interpret-as="vxml:time"><value expr="time3"/></say-as><break/>

    </prompt>
  </block>
</form>
</vxml>



Boolean

<?xml version="1.0" encoding="UTF-8"?>
<vxml version="2.1" xmlns="http://www.w3.org/2001/vxml" xmlns:voxeo="http://community.voxeo.com/xmlns/vxml">
<form id="F1">
  <field name="F_1" type="boolean">
    <prompt xml:lang="en-us-fmj">
      Do you like Voice X M L?
    </prompt>
    <filled>
      <prompt xml:lang="en-us-fmj">
        You said <say-as interpret-as="vxml:boolean">
      <value expr="F_1"/></say-as>

      </prompt>
    </filled>
  </field>
</form>
</vxml>


By now, you should be a say-as expert.  Still craving SSML knowledge?  Fear not, for we have more SSML goodies for you below.

<emphasis> element


<?xml version="1.0" encoding="UTF-8"?>
<vxml version = "2.1">
<form id="F_1">
  <block>
    <prompt xml:lang="en-us-fmj">
      That is a <emphasis> big </emphasis> cat!
      That is a <emphasis level="strong"> huge </emphasis> dog!

    </prompt>
  </block>
</form>
</vxml>



<sub> element


<?xml version="1.0" encoding="UTF-8"?>
<vxml version = "2.1">
<form id="F_1">
  <block>
    <prompt xml:lang="en-us-fmj">
      this message brought to you by the
        <sub alias="World Wide Web Consortium">W3C</sub>
    </prompt>
  </block>
</form>
</vxml>



<prosody> element


<?xml version="1.0" encoding="UTF-8"?>
<vxml version = "2.1">
<form id="F_1">
  <block>
    <prompt xml:lang="en-us-fmj">
    <!-- Note: The "duration" attribute currently does not work with Speechify TTS -->
      <prosody duration="8000ms">
        Testing with long duration
      </prosody>

      <prosody duration="50ms">
        Testing with short duration
      </prosody>

      <prosody rate="slow">
        Testing with slow rate
      </prosody>

      <prosody rate="fast">
        Testing with fast rate
      </prosody>

      <prosody volume="soft">
        Testing with low volume
      </prosody>

      <prosody volume="loud">
        Testing with high volume
      </prosody>

      <prosody pitch="low">
        Testing with low pitch
      </prosody>

      <prosody pitch="high">
        Testing with high pitch
      </prosody>

    </prompt>
  </block>
</form>
</vxml>



<break> element


<?xml version="1.0" encoding="UTF-8"?>
<vxml version = "2.1">
<form id="F_1">
  <block>
    <prompt xml:lang="en-us-fmj">
      We will now test a break in our T T S output
      starting right here <break strength="weak"/> and then we
      will have another right <break time="3000"/> here.
    </prompt>
  </block>
</form>
</vxml>



<phoneme> element


<?xml version="1.0" encoding="UTF-8"?>
<vxml version = "2.1">
<form id="F_1">
  <block>
    <prompt xml:lang="en-us-fmj" bargein="false">
      Playing back tomato phoneme example.
    <break/>
      <!-- Note: The "phoneme" element currently does not work with Speechify TTS -->
      <!-- This will output tomato instead of apple -->
      <phoneme alphabet="x-cmu" ph="T AH0 M EY1 T OW0"> apple </phoneme>
    <break/>
    </prompt>
  </block>
</form>
</vxml>



<sentence> element


<?xml version="1.0" encoding="UTF-8"?>
<vxml version = "2.1">
<form id="F_1">
  <block>
    <prompt>
      <sentence xml:lang="en-us-fmj">
        Brave Sir Robin ran away.
      </sentence>
      <sentence xml:lang="en-us-fmj">
        When danger reared its ugly head, he bravely turned his tail and fled.
      </sentence>
      <sentence xml:lang="en-us-fmj">
        Yes, brave Sir Robin turned about, and valiantly, he chickened out.
      </sentence>

    </prompt>
  </block>
</form>
</vxml>



<paragraph> element


<?xml version="1.0" encoding="UTF-8"?>
<vxml version = "2.1">
<form id="F_1">
  <block>
    <prompt>
      <paragraph xml:lang="en-us-fmj">
        The 12-gauge double-barreled Remington. S-Mart's top of the line. You can find this in the sporting goods department. That's right, this sweet baby was made in Grand Rapids, Michigan.
      </paragraph>

    </prompt>
  </block>
</form>
</vxml>



Download the Code!

  Speechify TTS code


  ANNOTATIONS: EXISTING POSTS
0 posts - click the button below to add a note to this page

login
  Rhetorical TTS Guide: SSML  |  TOC  |  N: VOIP Dialing  

© 2013 Voxeo Corporation  |  Voxeo IVR  |  VoiceXML & CCXML IVR Developer Site