Usare Speech Synthesis Markup Language
Mentre l'SDK di Voce di Azure AI consente di inviare testo normale da sintetizzare in parlato (ad esempio, usando il metodo SpeakTextAsync()), il servizio supporta anche una sintassi basata su XML per descrivere le caratteristiche del parlato che si vuole generare. Questa sintassi Speech Synthesis Markup Language (SSML) offre un maggiore controllo sulla resa dell'output parlato, consentendo di:
- Specificare un modo di parlare, ad esempio "entusiasta" o "allegro" quando si usa una voce neurale.
- Inserire pause o momenti di silenzio.
- Specificare fonemi (pronunce fonetiche), ad esempio per pronunciare il testo "SQL" come "siquel".
- Regolare la prosodia della voce (che influisce su tono, timbro e velocità di pronuncia).
- Usare regole comuni di tipo "pronuncia come", ad esempio per specificare che una determinata stringa deve essere espressa come data, ora, numero di telefono o in un altro formato.
- Inserire audio o parlato registrato, ad esempio per includere un messaggio registrato standard o simulare rumore di fondo.
Si consideri l'esempio di codice SSML seguente:
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis"
xmlns:mstts="https://www.w3.org/2001/mstts" xml:lang="en-US">
<voice name="en-US-AriaNeural">
<mstts:express-as style="cheerful">
I say tomato
</mstts:express-as>
</voice>
<voice name="en-US-GuyNeural">
I say <phoneme alphabet="sapi" ph="t ao m ae t ow"> tomato </phoneme>.
<break strength="weak"/>Lets call the whole thing off!
</voice>
</speak>
Questo codice SSML specifica un dialogo parlato tra due voci neurali diverse, come indicato di seguito:
- Ariana (allegra): "I say tomato:
- Guy: "I say tomato (pronunciato tom-ah-toe) ... Let's call the whole thing off!"
Per inviare una descrizione SSML al servizio Voce, è possibile usare il metodo SpeakSsmlAsync(), come illustrato di seguito:
speechSynthesizer.SpeakSsmlAsync(ssml_string);
Per altre informazioni su SSML, vedere la documentazione dell'SDK di Voce di Azure AI.