Lo Speech Synthesis Markup Language (SSML) (in inglese: linguaggio di markup per la sintesi vocale) è un linguaggio di markup basato su XML e orientato ai sistemi di conversione del testo in parlato, per controllarne e ottimizzarne la resa. Il linguaggio è stato specificato dal gruppo di studio "Voice browser" del World Wide Web Consortium (W3C) e trova frequente applicazioni in script di tipo VoiceXML per sistemi di telefonia interattiva automatizzata. Viene impiegato inoltre per la produzione di audiolibri.
Sebbene alla specifica attuale abbiano contribuito molte aziende produttrici di sistemi di sintesi vocale (tra cui il centro di ricerca italiano CSELT[1]), l'SSML si basa su JSML (Java Speech Markup Language), linguaggio di markup concepito da Sun Microsystems. Il linguaggio non costituisce uno standard obbligatorio: infatti, ogni sintetizzatore vocale deve essere comunque in grado di eseguire la conversione anche in assenza di markup e del resto le definizioni stesse del linguaggio non prevedono un markup specifico per alcune funzionalità di base che si suppongono già presenti in qualsiasi sistema di sintesi vocale (come per esempio la resa in pause della punteggiatura).
I tag definiti in SSML sono in grado di controllare la resa di un sistema di sintesi durante tutte le sei fasi fondamentali del processo tipico di elaborazione[2]:
La versione 1.0 di SSML, attualmente in forza, ha introdotto tutti gli elementi di base. Tuttavia, in seguito sia al miglioramento delle tecniche di sintesi che soprattutto all'emergere di nuove realtà industriali ed economiche, soprattutto in Asia, è sorta la necessità di estendere e migliorare il controllo tramite markup[3].
Da queste esigenze è partita la definizione della versione 1.1, che estende praticamente tutte le funzionalità di markup della versione 1.0. Tra le principali funzionalità aggiunte ci sono:
Il W3C ha pubblicato la versione 1.1 in fase "raccomandazione candidata" una prima volta[4] il 7 novembre 2008 e un successivo aggiornamento[5] il 27 agosto 2009: questo significa che per i produttori è già possibile utilizzare il contenuto della specifica per le prime implementazioni di prova. La fase successiva, immediatamente precedente all'approvazione definitiva, prevede il passaggio a "raccomandazione proposta". Tale passaggio, che in base al processo del W3C sarebbe potuto avvenire solo dopo il 27 novembre 2009, è avvenuto il 7 settembre 2010.
Questo è un esempio di documento SSML che controlla la generazione dello stesso messaggio in due lingue differenti (inglese americano e spagnolo messicano), associate a una scelta:
<?xml version="1.0"?>
<speak xmlns="http://www.w3.org/2001/10/synthesis"
xmlns:dc="http://purl.org/dc/elements/1.1/"
version="1.0">
<metadata>
<dc:title xml:lang="en">Telephone Menu: Level 1</dc:title>
</metadata>
<p>
<s xml:lang="en-US">
<voice name="David" gender="male" age="25">
For English, press <emphasis>one</emphasis>.
</voice>
</s>
<s xml:lang="es-MX">
<voice name="Miguel" gender="male" age="25">
Para español, oprima el <emphasis>dos</emphasis>.
</voice>
</s>
</p>
</speak>