IBM Cloud Docs
Comprensione di SSML

Comprensione di SSML

SSML (Speech Synthesis Markup Language) è un linguaggio di markup basato su XML che fornisce annotazioni di testo per le applicazioni di sintesi vocale. Si tratta di un suggerimento di W3C Voice-Browser Working Group che è stato adottato come linguaggio di markup standard per la sintesi vocale dalla specifica VoiceXML 2.0. SSML offre agli sviluppatori delle applicazioni per sintesi vocale un modo standard per controllare gli aspetti del processo di sintesi consentendo loro di specificare pronuncia, volume, tono, velocità e altri attributi tramite markup. È possibile utilizzare SSML per controllare la sintesi del testo con tutte le lingue supportate.

Il servizio IBM Watson® Text to Speech basa il suo supporto su SSML versione 1.1che è stato consigliato da W3C il 7 settembre 2010. Per ulteriori informazioni sulla raccomandazione SSML W3C, vedere W3C Speech Synthesis Markup Language(SSML)Versione 1.1.

Introduzione a SSML

SSML opera ampliando il testo semplice che viene passato a un sintetizzatore con una serie predefinita di elementi o tag. Innanzitutto, un parser XML separa il testo semplice di input dalle specifiche di markup. Le specifiche vengono poi elaborate e inviate come una serie di istruzioni in un formato che possa essere compreso dal sintetizzatore per produrre gli effetti desiderati. Affinché il parser XML esegua questo lavoro, è necessario che la markup sia ben formata; ad esempio, gli elementi devono essere chiusi e più elementi devono essere nidificati correttamente. Per un'introduzione ai concetti di base di XML, vedere w3schools.com/xml/xml_whatis.asp

Un elemento SSML è qualsiasi cosa contenuta all'interno di una tag di apertura e della corrispondente tag di chiusura, incluse. Come mostrato nel seguente esempio, un elemento può contenere una combinazione di altri elementi (le tag possono essere nidificate) e testo. Inoltre, gli elementi possono richiedere o accettare facoltativamente attributi impostati su particolari valori.

<tag1>
  <tag2 attributeName="attributeValue">
    ... some text ...
  </tag2>
</tag1>

Un documento SSML completo e legale consiste in un prologo XML, che contiene informazioni come la codifica e lo schema rispetto al quale validare il documento SSML, seguito dall'elemento radice, <speak>. All'interno dell'intervallo dell'elemento <speak>, si specifica il testo che deve essere sintetizzato, aumentato con elementi aggiuntivi.


<?xml version="1.0" encoding="UTF-8"?>


<speak version="1.1">
  ... the body that contains text to be synthesized plus markup ...
</speak>

Il prologo XML non è necessario per il testo che si passa al servizio. Il servizio supporta frammenti SSML, che sono elementi SSML che non includono l'intestazione XML completa e non devono includere i relativi elementi parent. Ad esempio, gli elementi <?xml> e <speak> sono sempre facoltativi per SSML che si invia per la sintesi.

Supporto SSML

Per ulteriori informazioni sull'uso di SSML e delle relative funzioni con il servizio, vedere quanto segue:

Convalida SSML

Il servizio convalida tutti gli elementi SSML che inoltri in qualsiasi contenuto, come testo di input per la sintesi o come la definizione della traduzione di una parola per la personalizzazione. Il servizio non può determinare in anticipo se il testo inoltrato per la sintesi contiene elementi SSML. Di conseguenza, esegue la stessa convalida per tutto il testo di input, indipendentemente dal fatto che contenga SSML.

Convalida di elementi e attributi

Il servizio esegue la seguente convalida di elementi e attributi SSML:

  • Tutto l'input SSML deve essere corretto e ben formato.

  • Il servizio ignora automaticamente gli elementi SSML non supportati. Il servizio sintetizza il testo contenuto nelle tag di un elemento non supportato; solo l'elemento viene ignorato.

  • Il servizio restituisce un codice di errore HTTP 400 per attributi o elementi SSML non validi. Quando si specificano elementi SSML che richiedono un attributo:

    • È necessario specificare l'attributo richiesto.
    • È necessario specificare un valore valido per l'attributo richiesto.
    • Se si includono ulteriori attributi o valori non validi, vengono ignorati.

    Se la richiesta ha esito negativo, la risposta di errore include un messaggio descrittivo. Ad esempio, si supponga di specificare il testo di input seguente, che include l'elemento <say-as> :

    "text": "The price is <say-as interpret-as=\"currency\">$2,500.00</say-as>."
    

    In questo esempio, l'attributo interpret-as è richiesto ed è specificato, ma il suo valore non è valido. Un valore valido per l'attributo è vxml:currency, non currency. La risposta di errore include il seguente messaggio:

    The connection to the Watson Text to Speech service closed with the following error: Tag <say-as> has invalid attribute interpret-as=currency
    

Riepilogo degli errori SSML

La tabella 1 descrive molti errori di convalida SSML comuni. In ogni caso, la richiesta non riesce e il servizio restituisce un codice di errore 400.

Errori di convalida SSML
Errore di convalida Descrizione del problema
Elemento SSML non valido Ad esempio, specifichi una tag in modo errato, ometti un attributo richiesto o includi una tag di apertura ma non quella di chiusura corrispondente.
Caratteri di controllo XML non escape Il testo in ingresso contiene un carattere ", ', &, <, *, > o / invece della stringa di escape o della codifica dei caratteri equivalente. Per ulteriori informazioni, vedi Escape dei caratteri di controllo XML.
Accento della sillaba non valido L'attributo ph di un elemento <phoneme> per IBM SPR include uno stress sillabico non valido. Per ulteriori informazioni sull'indicazione delle sillabe e dell'accento delle sillabe, consultare Specifica delle sillabe.
Simbolo fonetico non valido L'attributo ph di un elemento <phoneme> include un simbolo IPA o SPR non supportato per la lingua specificata.
Nessuna vocale L'attributo ph di un elemento <phoneme> specifica una pronuncia di parola che non include vocali.
Collegamento francese in posizione non valida Nell'attributo ph di un elemento <phoneme>, il carattere di collegamento non segue una consonante o si trova nel mezzo della pronuncia di una parola.
Il simbolo giapponese : non precede una vocale Nell'attributo ph di un elemento <phoneme> in giapponese, un carattere : non si trova prima di una vocale (eventualmente con altri simboli, come il limite della sillaba, in mezzo).
Uso non valido dell'elemento <prosody> SSML Non è possibile utilizzare gli attributi contour, duration, range e volume dell'elemento <prosody> con alcuna voce.
Uso non valido dell'elemento <express-as> SSML È possibile utilizzare l'elemento <express-as> solo con voci neurali espressive.