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:
- Il servizio implementa la maggior parte della specifica W3C e supporta i frammenti SSML.
- Per informazioni complete sul livello di supporto del servizio per tutti gli elementi SSML, vedi Elementi SSML.
- Per esempi di utilizzo di elementi SSML con il
text
di una richiesta di sintesi vocale, consulta Esempi di testo di input.
- Il servizio supporta ulteriori funzionalità di sintesi per le voci neurali neurali avanzate ed espressive:
- Il servizio supporta ulteriori funzioni di sintesi per le voci neurali espressive:
- Il servizio supporta una funzione di sintesi che ti consente di controllare come vengono scritte le stringhe alfanumeriche per le voci tedesche. Per ulteriori informazioni, consultare Specifica del modo in cui le stringhe vengono scritte.
- Il servizio supporta l'utilizzo dell'elemento
<mark>
SSML con l'interfaccia WebSocket per ottenere le informazioni di temporizzazione per le parole dell'audio risultante. L'interfaccia WebSocket consente anche di richiedere informazioni per tutte le stringhe del testo di input. Per ulteriori informazioni, vedi - L'interfaccia di personalizzazione del servizio supporta l'uso dell'elemento SSML
<phoneme>
per specificare l'ortografia fonetica utilizzata per pronunciare una parola. L'ortografia fonetica rappresenta i suoni di una parola, il modo in cui questi suoni sono divisi in sillabe e quali sillabe ricevono lo stress.- Per informazioni sull'interfaccia di personalizzazione, vedi Informazioni sulla personalizzazione.
- Per informazioni sui simboli validi che puoi utilizzare in una specifica IPA (International Phonetic Alphabet) o IBM SPR (Symbolic Phonetic Representation) per qualsiasi linguaggio supportato, vedi Descrizione dei simboli fonetici.
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
, noncurrency
. 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.
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. |