Améliorer la synthèse avec le langage de balisage de synthèse vocale (SSML, Speech Synthesis Markup Language)

Le langage SSML (Speech Synthesis Markup Language) est un langage de marques basé sur le XML, qui permet aux développeurs de spécifier la manière dont un texte d’entrée est converti en parole synthétisée via la synthèse vocale. Comparé à du texte brut, le SSML permet aux développeurs de régler finement la tonalité, la prononciation, le débit, le volume et d’autres paramètres de la synthèse vocale. La ponctuation normale, telle que la pause après un point ou l’utilisation de l’intonation correcte quand une phrase se termine par un point d’interrogation, est traitée automatiquement.

L’implémentation en SSML du service Speech est basée sur le langage SSML (Speech Synthesis Markup Language) version 1.0 du World Wide Web Consortium.

Important

Les caractères chinois comptent pour deux caractères dans la facturation, notamment le kanji utilisé en japonais, le hanja utilisé en coréen ou le hanzi utilisé dans d’autres langues. Pour plus d’informations, voir la tarification.

Voix neuronales prédéfinies et voix neuronales personnalisées

Utilisez une voix neuronale semblable à celle d’un humain, ou créez votre propre voix neuronale personnalisée et unique pour votre produit ou votre marque. Pour obtenir la liste complète des langues, des paramètres régionaux et des voix pris en charge, consultez Prise en charge linguistique. Pour en savoir plus sur l’utilisation d’une voix neuronale prédéfinie et d’une voix neuronale personnalisée, consultez Vue d’ensemble de la synthèse vocale.

Notes

Vous pouvez entendre des exemples de textes lus dans différents styles et avec différentes hauteurs de voix sur ce site web de synthèse vocale.

Caractères spéciaux

Quand vous utilisez du SSML, gardez à l’esprit que les caractères spéciaux, par exemple les guillemets, les apostrophes et les crochets doivent faire l’objet d’une séquence d’échappement. Pour plus d’informations, consultez la page Extensible Markup Language (XML) 1.0 : Annexe D.

Éléments SSML pris en charge

Chaque document SSML est créé avec des éléments SSML (ou les balises). Ces éléments sont utilisés pour ajuster la tonalité, la prosodie, le volume et d’autres paramètres. Les sections suivantes détaillent la manière dont chaque élément est utilisé, et s’il est obligatoire ou facultatif.

Important

N’oubliez pas d’utiliser des guillemets doubles autour des valeurs d’attribut. Les normes pour un code XML bien formé valide exigent que les valeurs d’attribut soient placées entre guillemets. Par exemple, <prosody volume="90"> est un élément bien formé valide, mais <prosody volume=90> ne l’est pas. Il arrive que le SSML ne reconnaisse pas les valeurs d’attribut qui ne sont pas placées entre des guillemets doubles.

Créer un document SSML

L’élément speak est l’élément racine. Il est obligatoire pour tous les documents SSML. L’élément speak contient des informations importantes, telles que la version, la langue et la définition de vocabulaire de balisage.

Syntaxe

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="string"></speak>

Attributs

Attribut Description Obligatoire ou facultatif
version Indique la version de la spécification SSML utilisée pour interpréter le balisage de document. La version actuelle est 1.0. Obligatoire
xml:lang Spécifie la langue du document racine. La valeur peut contenir un code de langue à deux lettres minuscules, par exemple en. La valeur peut également contenir le code de langue et le pays/la région en majuscules, par exemple en-US. Obligatoire
xmlns Spécifie l’URI du document définissant le vocabulaire de balisage (types d’éléments et noms d’attribut) du document SSML. L’URI en cours est http://www.w3.org/2001/10/synthesis. Obligatoire

Choisir une voix de synthèse vocale

L’élément voice est obligatoire. Il permet de spécifier la voix utilisée pour la synthèse vocale.

Syntaxe

<voice name="string">
    This text will get converted into synthesized speech.
</voice>

Attribut

Attribut Description Obligatoire ou facultatif
name Identifie la voix utilisée pour la sortie de synthèse vocale. Pour accéder à la liste complète des voix prises en charge, voir Prise en charge des langues. Obligatoire

Exemple

Notes

Cet exemple utilise la voix en-US-JennyNeural. Pour accéder à la liste complète des voix prises en charge, voir Prise en charge des langues.

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
    <voice name="en-US-JennyNeural">
        This is the text that is spoken.
    </voice>
</speak>

Utiliser plusieurs voix

Dans l’élément speak, vous pouvez spécifier plusieurs voix pour la sortie de synthèse vocale. Ces voix peuvent être dans différentes langues. Pour chaque voix, le texte doit être encapsulé dans un élément voice.

Attribut

Attribut Description Obligatoire ou facultatif
name Identifie la voix utilisée pour la sortie de synthèse vocale. Pour accéder à la liste complète des voix prises en charge, voir Prise en charge des langues. Obligatoire

Exemple

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
    <voice name="en-US-JennyNeural">
        Good morning!
    </voice>
    <voice name="en-US-ChristopherNeural">
        Good morning to you too Jenny!
    </voice>
</speak>

Ajuster les styles oraux

Par défaut, la synthèse vocale synthétise le texte en utilisant un style d’élocution neutre pour les voix neuronales. Vous pouvez régler le style de d’élocution, le degré de style et le rôle au niveau de la phrase.

Les styles, le degré de style et les rôles sont pris en charge pour un sous-ensemble de voix neuronale. Si un style ou un rôle n’est pas pris en charge, le service utilise le style d’élocution neutre par défaut. Pour déterminer les styles et les rôles pris en charge pour chaque voix, utilisez :

Attribut Description Obligatoire ou facultatif
style Spécifie le style oral. Les styles d’élocution sont spécifiques à la voix. Obligatoire en cas d’ajustement du style oral pour une voix neuronale. Si vous utilisez mstts:express-as, le style doit être fourni. Si une valeur non valide est fournie, cet élément est ignoré.
styledegree Spécifie l’intensité du style d’élocution. Valeurs acceptées : 0,01 à 2 incluse. La valeur par défaut est 1, ce qui correspond à l’intensité de style prédéfinie. L’unité minimale est 0,01, ce qui aboutit à une légère tendance pour le style cible. La valeur 2 produit un doublement de l’intensité de style par défaut. facultatif. Si vous ne définissez pas l’attribut style, l’attribut styledegree est ignoré. Les ajustements du degré de style d’élocution sont pris en charge pour les voix neuronales en chinois (mandarin simplifié).
role Spécifie le jeu de rôle. L’âge et le sexe correspondant à la voix ne sont pas les mêmes, mais le nom de la voix ne change pas. facultatif. Les ajustements de rôle sont pris en charge pour ces voix neuronales en chinois (mandarin simplifié) : zh-CN-XiaomoNeural, zh-CN-XiaoxuanNeural, zh-CN-YunxiNeural et zh-CN-YunyeNeural.

Style

Vous utilisez l’élément mstts:express-as pour exprimer des émotions telles que la gaieté, l’empathie et le calme. Vous pouvez également optimiser la voix pour différents scénarios, par exemple le service clientèle, la diffusion d’actualités et l’Assistant vocal.

Pour obtenir la liste des styles pris en charge par chaque voix neuronale, consultez styles et rôles vocaux pris en charge.

Syntaxe

<mstts:express-as style="string"></mstts:express-as>

Exemple

Cet extrait de code SSML illustre la manière dont l’élément <mstts:express-as> est utilisé pour modifier le style oral en cheerful.

<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-JennyNeural">
        <mstts:express-as style="cheerful">
            That'd be just amazing!
        </mstts:express-as>
    </voice>
</speak>

Le tableau suivant contient les descriptions de chaque style pris en charge.

Style Description
style="advertisement_upbeat" Exprime un ton enthousiaste et énergique pour la promotion d’un produit ou d’un service.
style="affectionate" Exprime un ton chaleureux et affectueux, avec une hauteur de voix et une énergie vocale plus grandes. L’orateur attire l’attention de celui qui écoute. La personnalité de l’orateur est souvent d’une nature attachante.
style="angry" Exprime la colère et la contrariété.
style="assistant" Donne un ton chaleureux et détendu aux assistants numériques.
style="calm" Exprime une attitude sympathique, calme et posée dans une conversation. Le ton, la hauteur de voix et la prosodie sont bien plus uniformes par rapport aux autres types de voix.
style="chat" Exprime un ton informel et détendu
style="cheerful" Exprime un ton positif et joyeux.
style="customerservice" Donne un ton convivial et pragmatique au support technique.
style="depressed" Exprime un ton mélancolique et découragé avec une hauteur de voix plus basse et moins d’énergie.
style="disgruntled" Exprime un ton dédaigneux et plaintif. L’expression de cette émotion témoigne du mécontentement et du mépris.
style="documentary-narration" Narre les documentaires dans un style détendu, intéressé et informatif adapté au doublage de documentaires, aux commentaires d’experts et à du contenu similaire.
style="embarrassed" Exprime un ton incertain et hésitant quand l’orateur se sent mal à l’aise.
style="empathetic" Exprime un sentiment de bienveillance et de compréhension.
style="envious" Exprime un ton d’admiration quand vous désirez quelque chose que quelqu’un d’autre possède.
style="excited" Exprime un ton enjoué et optimiste. Donne l’impression que quelque chose de formidable est en train de se passer et que cela comble de joie l’orateur.
style="fearful" Exprime un ton effrayé et nerveux, avec une plus grande hauteur de voix, une plus grande énergie vocale et un débit plus rapide. L’orateur est dans un état de tension et de malaise.
style="friendly" Exprime un ton agréable, engageant et chaleureux. Donne une impression de sincérité et de bienveillance.
style="gentle" Exprime un ton doux, poli et agréable, avec une hauteur de voix et une énergie vocale moins élevées.
style="hopeful" Exprime un ton chaleureux et ardent. Donne l’impression que quelque chose d’agréable va arriver à l’orateur.
style="lyrical" Exprime les émotions d’une manière mélodique et sentimentale.
style="narration-professional" Donne un ton professionnel et objectif à la lecture de contenu.
style="narration-relaxed" Donne un ton réconfortant et mélodieux à la lecture de contenu.
style="newscast" Exprime un ton formel et professionnel pour la présentation des actualités.
style="newscast-casual" Exprime la souplesse et la décontraction pour la diffusion d’informations générales.
style="newscast-formal" Exprime un ton formel, confiant et autoritaire pour la diffusion des actualités.
style="poetry-reading" Exprime l’émotion et la rythmique de la voix pendant la lecture d’un poème.
style="sad" Exprime la tristesse.
style="serious" Exprime un ton strict et autoritaire. L’orateur a souvent l’air sévère et peu détendu et sa cadence reste ferme.
style="shouting" Donne l’impression qu’il parle de loin ou de l’extérieur et qu’il cherche à se faire entendre clairement
style="sports_commentary" Exprime un ton décontracté et captivant pour la diffusion d’un événement sportif.
style="sports_commentary_excited" Exprime un ton intense et énergique pour la diffusion de moments forts à l’occasion d’un événement sportif.
style="whispering" Parle très doucement sur un ton posé et calme
style="terrified" Exprime une peur intense, parlant très vite et avec une voix tremblante. L’orateur semble être hors de lui et dans une situation délicate.
style="unfriendly" Exprime un ton froid et indifférent.

Degré de style

L’intensité du style d’élocution peut être réglée pour mieux correspondre à votre cas d’usage. Vous pouvez spécifier un style plus prononcé ou plus doux avec l’attribut styledegree pour rendre la voix plus expressive ou plus modérée.

Pour obtenir la liste des voix neuronales qui prennent en charge le degré de style d’élocution, consultez styles et rôles vocaux pris en charge.

Syntaxe

<mstts:express-as style="string" styledegree="value"></mstts:express-as>

Exemple

Cet extrait de code SSML illustre la manière dont l’attribut styledegree est utilisé pour modifier l’intensité du style d’élocution pour zh-CN-XiaomoNeural.

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis"
       xmlns:mstts="https://www.w3.org/2001/mstts" xml:lang="zh-CN">
    <voice name="zh-CN-XiaoxiaoNeural">
        <mstts:express-as style="sad" styledegree="2">
            快走吧,路上一定要注意安全,早去早回。
        </mstts:express-as>
    </voice>
</speak>

Rôle

En plus d’ajuster les styles d’élocution et le degré de style, vous pouvez également ajuster le paramètre role pour que la voix imite un âge et un sexe différents. Par exemple, une voix masculine peut devenir plus aigüe et changer d’intonation pour imiter une voix féminine, mais le nom de la voix ne changera pas.

Pour obtenir la liste des rôles pris en charge par chaque voix neuronale, consultez styles et rôles vocaux pris en charge.

Syntaxe

<mstts:express-as role="string" style="string"></mstts:express-as>

Exemple

Cet extrait de code SSML illustre la manière dont l’attribut role est utilisé pour changer le jeu de rôle pour zh-CN-XiaomoNeural.

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis"
       xmlns:mstts="https://www.w3.org/2001/mstts" xml:lang="zh-CN">
    <voice name="zh-CN-XiaomoNeural">
        女儿看见父亲走了进来,问道:
        <mstts:express-as role="YoungAdultFemale" style="calm">
            “您来的挺快的,怎么过来的?”
        </mstts:express-as>
        父亲放下手提包,说:
        <mstts:express-as role="OlderAdultMale" style="calm">
            “刚打车过来的,路上还挺顺畅。”
        </mstts:express-as>
    </voice>
</speak>

Le tableau suivant contient les descriptions de chaque rôle pris en charge.

Rôle Description
role="Girl" La voix imite celle d’une petite fille.
role="Boy" La voix imite celle d’un petit garçon.
role="YoungAdultFemale" La voix imite celle d’une jeune femme adulte.
role="YoungAdultMale" La voix imite celle d’un jeune homme adulte.
role="OlderAdultFemale" La voix imite celle d’une femme adulte plus âgée.
role="OlderAdultMale" La voix imite celle d’un homme adulte plus âgé.
role="SeniorFemale" La voix imite celle d’une femme d’âge mûr.
role="SeniorMale" La voix imite celle d’un homme d’âge mûr.

Ajuster les langues parlées

Par défaut, toutes les voix neuronales parlent couramment leur propre langue et l’anglais sans l’utilisation de l’élément <lang xml:lang>. Par exemple, si le texte d’entrée en anglais est « I’m excited to try text to speech » et que vous utilisez la voix es-ES-ElviraNeural, le texte est parlé en anglais avec un accent espagnol. Avec la plupart des voix neuronales, la définition d’une langue parlée spécifique avec l’élément <lang xml:lang> au niveau de la phrase ou du mot n’est pas prise en charge pour le moment.

Vous pouvez ajuster la langue parlée pour la voix neuronale en-US-JennyMultilingualNeural au niveau de la phrase et au niveau du mot à l’aide de l’élément <lang xml:lang>. La voix neuronale en-US-JennyMultilingualNeural est multilingue et s’exprime en 14 langues (par exemple, l’anglais, l’espagnol et le chinois). Les langues prises en charge sont indiquées dans un tableau à la suite de la syntaxe <lang> et des définitions d’attributs.

Syntaxe

<lang xml:lang="string"></lang>

Attribut

Attribut Description Obligatoire ou facultatif
lang Spécifie la langue dans laquelle la voix neuronale doit s’exprimer. Obligatoire pour ajuster la langue utilisée par la voix neuronale. Si vous utilisez lang xml:lang, les paramètres régionaux doivent être fournis.

Notes

L’élément <lang xml:lang> est incompatible avec les éléments prosody et break. Vous ne pouvez pas ajuster la pause et la prosodie, par exemple la hauteur de voix, le contour de ton, le débit ou le volume, dans cet élément.

Pour déterminer les langues parlées prises en charge pour chaque voix neuronale, reportez-vous au tableau suivant. Si la voix ne s’exprime pas dans la langue correspondant au texte entré, le service Speech ne génère pas de données audio synthétisées.

Voix Paramètres régionaux principaux et par défaut Paramètres régionaux supplémentaires
en-US-JennyMultilingualNeural en-US de-DE, en-AU, en-CA, en-GB, es-ES, es-MX, fr-CA, fr-FR, it-IT, ja-JP, ko-KR, pt-BR, zh-CN

Exemple

La langue principale de en-US-JennyMultilingualNeural est en-US. Vous devez définir en-US comme langue par défaut dans l’élément speak, que la langue soit ou non ajustée ailleurs. Cet extrait de code SSML montre comment parler en de-DE avec la voix neuronale en-US-JennyMultilingualNeural.

<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-JennyMultilingualNeural">
        <lang xml:lang="de-DE">
            Wir freuen uns auf die Zusammenarbeit mit Ihnen!
        </lang>
    </voice>
</speak>

Dans l’élément speak, vous pouvez spécifier plusieurs langues (dont en-US) pour la sortie de synthèse vocale. Pour chaque langue ajustée, le texte doit correspondre à la langue et être encapsulé dans un élément voice. Cet extrait de code SSML montre comment utiliser <lang xml:lang> pour changer les langages parlées en es-MX, en-US et fr-FR.

<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-JennyMultilingualNeural">
        <lang xml:lang="es-MX">
            ¡Esperamos trabajar con usted!
        </lang>
        <lang xml:lang="en-US">
           We look forward to working with you!
        </lang>
        <lang xml:lang="fr-FR">
            Nous avons hâte de travailler avec vous!
        </lang>
    </voice>
</speak>

Ajouter ou supprimer une interruption ou une pause

Utilisez l’élément break pour insérer des pauses ou des interruptions entre les mots. Vous pouvez également l’utiliser pour empêcher les pauses ajoutées automatiquement par la synthèse vocale.

Notes

Utilisez cet élément pour remplacer le comportement par défaut de la synthèse vocale d’un mot ou d’une expression, si le rendu de la synthèse vocale ne semble pas naturel. Affectez à strength la valeur none pour éviter la rupture prosodique, qui est automatiquement insérée par la synthèse vocale.

Syntaxe

<break strength="string" />
<break time="string" />

Attributs

Attribut Description Obligatoire ou facultatif
strength Spécifie la durée relative d’une pause à l’aide de l’une des valeurs suivantes :
  • Aucun
  • x-weak
  • weak
  • medium (par défaut)
  • strong
  • x-strong
Facultatif
time Spécifie la durée absolue d’une pause en secondes ou en millisecondes (ms). Cette valeur doit être inférieure à 5 000 ms. 2s et 500ms sont des exemples de valeurs valides. Facultatif
Puissance Description
Aucune, ou si aucune valeur fournie 0 ms
X-weak 250 ms
Weak 500 ms
Moyenne 750 ms
Remarque 1 000 ms
X-strong 1 250 ms

Exemple

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
    <voice name="en-US-JennyNeural">
        Welcome to Microsoft Cognitive Services <break time="100ms" /> Text-to-Speech API.
    </voice>
</speak>

Ajouter un silence

Utilisez l’élément mstts:silence pour insérer des pauses avant ou après le texte, ou entre deux phrases adjacentes.

Notes

La différence entre mstts:silence et break vient du fait que break peut être ajouté n’importe où dans le texte. Le silence fonctionne uniquement au début ou à la fin du texte entré, ou à la limite de deux phrases adjacentes.

Syntaxe

<mstts:silence  type="string"  value="string"/>

Attributs

Attribut Description Obligatoire ou facultatif
type Spécifie l’emplacement du silence à ajouter :
  • Leading - Au début du texte
  • Tailing - À la fin du texte
  • Sentenceboundary - Entre des phrases adjacentes
Obligatoire
Value Spécifie la durée absolue d’une pause en secondes ou millisecondes. Cette valeur doit être inférieure à 5 000 ms. 2s et 500ms sont des exemples de valeurs valides. Obligatoire

Exemple

Dans cet exemple, mtts:silence est utilisé pour ajouter 200 ms de silence entre deux phrases.

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xmlns:mstts="http://www.w3.org/2001/mstts" xml:lang="en-US">
<voice name="en-US-JennyNeural">
<mstts:silence  type="Sentenceboundary" value="200ms"/>
If we’re home schooling, the best we can do is roll with what each day brings and try to have fun along the way.
A good place to start is by trying out the slew of educational apps that are helping children stay happy and smash their schooling at the same time.
</voice>
</speak>

Spécifier des paragraphes et des phrases

Les éléments p et s sont utilisés pour désigner respectivement les paragraphes et les phrases. En l’absence de ces éléments, la synthèse vocale détermine automatiquement la structure du document SSML.

L’élément p peut contenir du texte et les éléments suivants : audio, break, phoneme, prosody, say-as, sub, mstts:express-as et s.

L’élément s peut contenir du texte et les éléments suivants : audio, break, phoneme, prosody, say-as, mstts:express-as et sub.

Syntaxe

<p></p>
<s></s>

Exemple

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
    <voice name="en-US-JennyNeural">
        <p>
            <s>Introducing the sentence element.</s>
            <s>Used to mark individual sentences.</s>
        </p>
        <p>
            Another simple paragraph.
            Sentence structure in this paragraph is not explicitly marked.
        </p>
    </voice>
</speak>

Utiliser des phonèmes pour améliorer la prononciation

L’élément ph est utilisé pour la prononciation phonétique dans les documents SSML. L’élément ph peut contenir du texte mais aucun autre élément. Fournissez toujours un discours contrôlable de visu comme solution de secours.

Les alphabets phonétiques sont constitués de phonèmes composés de lettres, de chiffres ou de caractères parfois combinés. Chaque phonème décrit un son vocal unique. Cela contraste avec l’alphabet latin, où chaque lettre peut représenter plusieurs sons parlés. Tenez compte des différentes prononciations de la lettre « c » dans les mots « casser » et « cesser », ou des différentes prononciations de la combinaison de lettres « ch » dans les mots « chose » et « almanach ».

Notes

L’étiquette Phonemes peut ne pas fonctionner sur tous les paramètres régionaux.

Syntaxe

<phoneme alphabet="string" ph="string"></phoneme>

Attributs

Attribut Description Obligatoire ou facultatif
alphabet Spécifie l’alphabet phonétique à utiliser quand vous synthétisez la prononciation de la chaîne dans l’attribut ph. La chaîne qui spécifie l’alphabet doit être spécifiée en lettres minuscules. Les options suivantes sont les alphabets que vous pouvez spécifier :
L’alphabet s’applique uniquement au phoneme dans l’élément.
Facultatif
ph Chaîne contenant des phonèmes spécifiant la prononciation du mot figurant dans l’élément phoneme. Si la chaîne spécifiée contient des phones non reconnus, la synthèse vocale rejette la totalité du document SSML et ne produit aucune des sorties vocales spécifiées dans le document. Obligatoire en cas d’utilisation de phonèmes

Exemples

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
    <voice name="en-US-JennyNeural">
        <phoneme alphabet="ipa" ph="təˈmeɪtoʊ"> tomato </phoneme>
    </voice>
</speak>
<speak version="1.0" xmlns="https://www.w3.org/2001/10/synthesis" xml:lang="en-US">
    <voice name="en-US-JennyNeural">
        <phoneme alphabet="sapi" ph="iy eh n y uw eh s"> en-US </phoneme>
    </voice>
</speak>
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
    <voice name="en-US-JennyNeural">
        <s>His name is Mike <phoneme alphabet="ups" ph="JH AU"> Zhou </phoneme></s>
    </voice>
</speak>

Utiliser un lexique personnalisé pour améliorer la prononciation

Parfois, la synthèse vocale ne peut pas prononcer un mot avec précision. Il peut s’agir, par exemple, du nom d’une entreprise, d’un terme médical ou d’un emoji. Vous pouvez définir la façon dont les entités uniques sont lues en SSML à l’aide des balises phoneme et sub. Si vous devez définir la façon dont plusieurs entités sont lues, vous pouvez créer un lexique personnalisé à l’aide de la balise lexicon.

Le lexique personnalisé prend en charge le codage UTF-8.

Notes

La fonctionnalité de lexique personnalisée peut ne pas fonctionner pour certains nouveaux paramètres régionaux.

L’élément lexicon n’est pas pris en charge par l’API Audio Long.

Syntaxe

<lexicon uri="string"/>

Attribut

Attribut Description Obligatoire ou facultatif
uri Adresse du document PLS externe Obligatoire

Utilisation

Pour définir le mode de lecture de plusieurs entités, vous pouvez créer un lexique personnalisé, qui est stocké sous forme de fichier .xml ou .pls. Le code suivant est un exemple de fichier .xml.

<?xml version="1.0" encoding="UTF-8"?>
<lexicon version="1.0"
      xmlns="http://www.w3.org/2005/01/pronunciation-lexicon"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.w3.org/2005/01/pronunciation-lexicon
        http://www.w3.org/TR/2007/CR-pronunciation-lexicon-20071212/pls.xsd"
      alphabet="ipa" xml:lang="en-US">
  <lexeme>
    <grapheme>BTW</grapheme>
    <alias>By the way</alias>
  </lexeme>
  <lexeme>
    <grapheme> Benigni </grapheme>
    <phoneme> bɛˈniːnji</phoneme>
  </lexeme>
  <lexeme>
    <grapheme>😀</grapheme>
    <alias>test emoji</alias>
  </lexeme>
</lexicon>

L’élément lexicon contient au moins un élément lexeme. Chaque élément lexeme contient au moins un élément grapheme et un ou plusieurs éléments grapheme, alias et phoneme. L’élément grapheme contient du texte qui décrit l’orthographe. Les éléments alias sont utilisés pour indiquer la prononciation d’un acronyme ou d’un terme abrégé. L’élément phoneme fournit du texte qui décrit la façon dont lexeme est prononcé. Quand les éléments alias et phoneme sont fournis avec le même élément grapheme, alias a une priorité plus élevée.

Important

L’élément lexeme respecte la casse dans le lexique personnalisé. Par exemple, si vous fournissez uniquement un phonème pour le lexeme « Hello », il ne fonctionnera pas pour le lexeme « hello ».

Le lexique contient l’attribut xml:lang nécessaire afin d’indiquer les paramètres régionaux pour lesquels il doit être appliqué. Un lexique personnalisé est limité à un seul paramètre régional pour des raisons de conception. Il ne fonctionne donc pas si vous l’appliquez à un autre paramètre régional.

Vous ne pouvez pas définir directement la prononciation d’une expression à l’aide du lexique personnalisé. Si vous devez définir la prononciation d’un acronyme ou d’un terme abrégé, indiquez d’abord un alias, puis associez le phoneme à cet alias. Par exemple :

  <lexeme>
    <grapheme>Scotland MV</grapheme>
    <alias>ScotlandMV</alias>
  </lexeme>
  <lexeme>
    <grapheme>ScotlandMV</grapheme>
    <phoneme>ˈskɒtlənd.ˈmiːdiəm.weɪv</phoneme>
  </lexeme>

Notes

La limite de la syllabe est « . » dans l’alphabet phonétique international (API).

Vous pouvez également fournir directement l’alias attendu pour l’acronyme ou le terme abrégé. Par exemple :

  <lexeme>
    <grapheme>Scotland MV</grapheme>
    <alias>Scotland Media Wave</alias>
  </lexeme>

Important

L’élément phoneme ne peut pas contenir d’espaces blancs quand vous utilisez l’alphabet phonétique international (API).

Pour plus d’informations sur le fichier de lexique personnalisé, consultez Pronunciation Lexicon Specification (PLS) Version 1.0.

Ensuite, publiez votre fichier de lexique personnalisé. Nous n’avons défini aucune restriction sur l’emplacement de stockage de ce fichier, mais nous vous recommandons d’utiliser le service Stockage Blob Azure.

Une fois que vous avez publié votre lexique personnalisé, vous pouvez le référencer à partir de votre SSML.

Notes

L’élément lexicon doit être dans l’élément voice.

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis"
          xmlns:mstts="http://www.w3.org/2001/mstts"
          xml:lang="en-US">
    <voice name="en-US-JennyNeural">
        <lexicon uri="http://www.example.com/customlexicon.xml"/>
        BTW, we will be there probably at 8:00 tomorrow morning.
        Could you help leave a message to Robert Benigni for me?
    </voice>
</speak>

Quand vous utilisez ce lexique personnalisé, « BTW » est lu « By the way ». « Benigni » est lu avec l’alphabet phonétique international (API) fourni « bɛˈniːnji ».

Il est facile de faire des erreurs dans le lexique personnalisé. Microsoft fournit donc un outil de validation pour le lexique personnalisé. Il fournit des messages d’erreur détaillés qui vous aident à trouver des erreurs. Avant d’envoyer du texte en SSML avec le lexique personnalisé au service Speech, vérifiez votre lexique personnalisé à l’aide de cet outil.

Limitations

  • Taille du fichier : la taille limite maximale du fichier de lexique personnalisé est de 100 Ko. Si un fichier dépasse cette taille, la demande de synthèse échoue.
  • Actualisation du cache du lexique : le lexique personnalisé est mis en cache avec l’URI en tant que clé de la synthèse vocale quand il est chargé pour la première fois. Dans la mesure où le lexique ayant le même URI n’est pas rechargé avant 15 minutes, le changement de lexique personnalisé doit attendre 15 minutes tout au plus pour prendre effet.

Jeux de phonèmes du service Speech

Dans l’exemple précédent, nous utilisons l’alphabet phonétique international (API), également appelé jeu de phones de l’alphabet phonétique international. Nous vous suggérons d’utiliser l’alphabet phonétique international (API), car il s’agit d’une norme internationale. Pour certains caractères de l’alphabet phonétique international (API), il existe une version « précomposée » et une version « décomposée » quand ils sont représentés dans la norme Unicode. Le lexique personnalisé prend uniquement en charge l’Unicode décomposé.

Dans la mesure où l’alphabet phonétique international n’est pas facile à mémoriser, le service Speech définit un jeu phonétique pour les paramètres régionaux suivants : en-US, fr-FR, de-DE, es-ES, ja-JP, zh-CN, zh-HK et zh-TW.

Vous pouvez utiliser x-microsoft-sapi en tant que valeur de l’attribut alphabet avec des lexiques personnalisés, comme indiqué ici :

<?xml version="1.0" encoding="UTF-8"?>
<lexicon version="1.0"
      xmlns="http://www.w3.org/2005/01/pronunciation-lexicon"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.w3.org/2005/01/pronunciation-lexicon
        http://www.w3.org/TR/2007/CR-pronunciation-lexicon-20071212/pls.xsd"
      alphabet="x-microsoft-sapi" xml:lang="en-US">
  <lexeme>
    <grapheme>BTW</grapheme>
    <alias> By the way </alias>
  </lexeme>
  <lexeme>
    <grapheme> Benigni </grapheme>
    <phoneme> b eh 1 - n iy - n y iy </phoneme>
  </lexeme>
</lexicon>

Pour plus d’informations sur l’alphabet phonétique détaillé du service Speech, reportez-vous aux jeux de phonèmes du service Speech.

Ajuster la prosodie

L’élément prosody est utilisé pour spécifier les changements apportés à la hauteur de voix, au contour de ton, à la tessiture, au débit et au volume de la sortie de synthèse vocale. L’élément prosody peut contenir du texte et les éléments suivants : audio, break, p, phoneme, prosody, say-as, sub et s.

Étant donné que les valeurs d’attribut prosodique peuvent varier sur une vaste plage, le module de reconnaissance vocale interprète les valeurs affectées comme une suggestion de ce que les valeurs prosodiques réelles de la voix sélectionnée devraient être. La synthèse vocale limite ou remplace les valeurs non prises en charge. Des valeurs non prises en charge sont, par exemple, une tonalité de 1 MHz ou un volume de 120.

Syntaxe

<prosody pitch="value" contour="value" range="value" rate="value" volume="value"></prosody>

Attributs

Attribut Description Obligatoire ou facultatif
pitch Indique la tonalité de base pour le texte. Vous pouvez exprimer la tonalité comme suit :
  • Valeur absolue : exprimée sous la forme d’un nombre suivi de « Hz » (Hertz). Par exemple : <prosody pitch="600Hz">some text</prosody>.
  • Valeur relative :
    • Comme valeur relative : exprimée sous la forme d’un nombre précédé du signe « + » ou « - » et suivi de « Hz » ou « st », qui spécifie l’importance d’un changement de tonalité. Par exemple, <prosody pitch="+80Hz">some text</prosody> ou <prosody pitch="-2st">some text</prosody>. « st » indique que l’unité de changement est le demi-ton, c’est-à-dire la moitié d’un ton sur l’échelle diatonique standard.
    • Comme un pourcentage : exprimé sous la forme d’un nombre précédé de « + » (éventuellement) ou « - » et suivi de « % », indiquant la modification relative. Par exemple, <prosody pitch="50%">some text</prosody> ou <prosody pitch="-50%">some text</prosody>.
  • Valeur constante :
    • x-low
    • low
    • moyenne
    • high
    • x-high
    • default
Facultatif
contour Contour prend maintenant en charge la voix neuronale. Le contour représente les changements de tonalité. Ces changements sont représentés sous la forme d’un tableau de cibles aux positions temporelles spécifiées dans la sortie vocale. Chaque cible est définie par des ensembles de paires de paramètres. Par exemple :

<prosody contour="(0%,+20Hz) (10%,-2st) (40%,+10Hz)">

La première valeur dans chaque paire de paramètres spécifie l’emplacement du changement de tonalité sous la forme d’un pourcentage de la durée du texte. La deuxième valeur correspond à l’augmentation ou la réduction de la hauteur de voix, spécifiée à l’aide d’une valeur relative ou d’une valeur d’énumération pour la hauteur de voix (voir pitch).
Facultatif
range Valeur représentant la plage de tonalités pour le texte. Vous pouvez exprimer range à l’aide des mêmes valeurs absolues, relatives ou d’énumération que celles utilisées pour décrire pitch. Facultatif
rate Indique la cadence d’énonciation du texte. Vous pouvez exprimer rate comme suit :
  • Valeur relative :
    • Comme valeur relative : exprimée sous forme de nombre agissant comme multiplicateur de la valeur par défaut. Par exemple, la valeur 1 n’entraîne aucun changement de la cadence d’origine. La valeur 0,5 entraîne une réduction de moitié de la cadence d’origine. La valeur 2 entraîne deux fois la cadence d’origine.
    • Comme un pourcentage : exprimé sous la forme d’un nombre précédé de « + » (éventuellement) ou « - » et suivi de « % », indiquant la modification relative. Par exemple, <prosody rate="50%">some text</prosody> ou <prosody rate="-50%">some text</prosody>.
  • Valeur constante :
    • x-slow
    • slow
    • moyenne
    • fast
    • x-fast
    • default
Facultatif
volume Indique le niveau de volume de la voix. Vous pouvez exprimer le volume comme suit :
  • Valeur absolue : exprimée sous la forme d’un nombre dans la plage de 0,0 à 100,0, du plus bas au plus fort. Exemple : 75. La valeur par défaut est 100,0.
  • Valeur relative :
    • Valeur relative : exprimée sous la forme d’un nombre précédé du signe « + » ou « - » spécifie une quantité de changement de volume. Exemples : +10 ou -5.5.
    • Comme un pourcentage : exprimé sous la forme d’un nombre précédé de « + » (éventuellement) ou « - » et suivi de « % », indiquant la modification relative. Par exemple, <prosody volume="50%">some text</prosody> ou <prosody volume="+3%">some text</prosody>.
  • Valeur constante :
    • silent
    • x-soft
    • soft
    • moyenne
    • loud
    • x-loud
    • default
Facultatif

Modifier le débit

Le débit de parole peut être appliqué au niveau du mot ou de la phrase. Les changements de débit doivent être compris entre 0,5 et 2 fois le son d’origine.

Exemple

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
    <voice name="en-US-JennyNeural">
        <prosody rate="+30.00%">
            Welcome to Microsoft Cognitive Services Text-to-Speech API.
        </prosody>
    </voice>
</speak>

Modifier le volume

Les modifications de volume peuvent être appliquées au niveau de la phrase. Les changements de volume doivent être compris entre 0 (silence) et 1,5 fois le son d’origine.

Exemple

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
    <voice name="en-US-JennyNeural">
        <prosody volume="+20.00%">
            Welcome to Microsoft Cognitive Services Text-to-Speech API.
        </prosody>
    </voice>
</speak>

Modifier la tonalité

Les modifications de tonalité peuvent être appliquées au niveau de la phrase. Les changements de tonalité doivent être compris entre 0,5 et 1,5 fois le son d’origine.

Exemple

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
    <voice name="en-US-JennyNeural">
        Welcome to <prosody pitch="high">Microsoft Cognitive Services Text-to-Speech API.</prosody>
    </voice>
</speak>

Modifier le contour intonatif

Important

Les changements de contour de ton sont désormais pris en charge avec les voix neurales.

Exemple

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
    <voice name="en-US-JennyNeural">
        <prosody contour="(60%,-60%) (100%,+80%)" >
            Were you the only person in the room?
        </prosody>
    </voice>
</speak>

Ajuster l’accentuation

L’élément facultatif emphasis est utilisé pour ajouter ou supprimer l’accentuation sur le mot pour le texte. Cet élément ne peut contenir que du texte et les éléments suivants : audio, break, emphasis, lang, phoneme, prosody, say-as, sub et voice.

Notes

Le réglage de l’accentuation sur le mot est uniquement disponible pour ces voix neuronales : en-US-GuyNeural, en-US-DavisNeural et en-US-JaneNeural.

Syntaxe

<emphasis level="value"></emphasis>

Attribut

Attribut Description Obligatoire ou facultatif
level Indique la force de l’accentuation à appliquer :
  • reduced
  • none
  • moderate
  • strong

Lorsque l’attribut level n’est pas spécifié, le niveau par défaut est moderate. Pour plus d’informations sur chaque attribut, consultez élément d’accentuation
Facultatif

Exemple

Cet extrait de code SSML montre comment l’élément emphasis est utilisé pour ajouter un niveau modéré d’accentuation pour le mot « réunions ».

<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-GuyNeural">
    I can help you join your <emphasis level="moderate">meetings</emphasis> fast.
    </voice>
</speak>

Ajouter un élément Prononcer

L’élément say-as est facultatif. Il indique le type de contenu, par exemple un nombre ou une date, du texte de l’élément. Cet élément fournit l’aide nécessaire au moteur de synthèse vocale pour prononcer le texte.

Syntaxe

<say-as interpret-as="string" format="digit string" detail="string"> </say-as>

Attributs

Attribut Description Obligatoire ou facultatif
interpret-as Indique le type de contenu du texte d’un élément. Pour connaître la liste des types, consultez le tableau suivant. Obligatoire
format Fournit des informations supplémentaires sur la mise en forme précise du texte de l’élément pour les types de contenu susceptibles de présenter des formats ambigus. Le SSML définit des formats pour les types de contenu qui les utilisent. Consultez le tableau suivant. Facultatif
detail Indique le niveau de détail à prononcer. Par exemple, cet attribut peut demander à ce que le moteur de synthèse vocale prononce les signes de ponctuation. Aucune valeur standard n’est définie pour detail. Facultatif

Les types de contenu suivants sont pris en charge pour les attributs interpret-as et format. Incluez l’attribut format uniquement si la colonne format n’est pas vide dans le tableau ci-dessous.

interpret-as format Interprétation
address Le texte est prononcé sous forme d'adresse. Le moteur de synthèse vocale prononce :

I'm at <say-as interpret-as="address">150th CT NE, Redmond, WA</say-as>

Sous la forme « Je suis à la 150e de Court Northeast Redmond Washington ».
cardinal, number Le texte est prononcé sous forme de nombre cardinal. Le moteur de synthèse vocale prononce :

There are <say-as interpret-as="cardinal">3</say-as> alternatives

Par exemple, « Il existe trois alternatives ».
characters, spell-out Le texte est prononcé sous forme de lettres individuelles (épelées). Le moteur de synthèse vocale prononce :

<say-as interpret-as="characters">test</say-as>

Par exemple, « T E S T ».
date dmy, mdy, ymd, ydm, ym, my, md, dm, d, m, y Le texte est prononcé sous forme de date. L’attribut format spécifie le format de la date (j=day (jour), m=month (mois) et y=year (année) ). Le moteur de synthèse vocale prononce :

Today is <say-as interpret-as="date" format="mdy">10-19-2016</say-as>

Par exemple, « Nous sommes le 19 octobre 2016 ».
digits, number_digit Le texte est prononcé sous forme de séquence de chiffres individuels. Le moteur de synthèse vocale prononce :

<say-as interpret-as="number_digit">123456789</say-as>

Par exemple, « 1 2 3 4 5 6 7 8 9 ».
fraction Le texte est prononcé sous forme de nombre fractionnaire. Le moteur de synthèse vocale prononce :

<say-as interpret-as="fraction">3/8</say-as> of an inch

Par exemple, « Trois huitièmes de pouce ».
ordinal Le texte est prononcé sous forme de nombre ordinal. Le moteur de synthèse vocale prononce :

Select the <say-as interpret-as="ordinal">3rd</say-as> option

Sous la forme « Sélectionnez la troisième option ».
telephone Le texte est prononcé sous forme de numéro de téléphone. L’attribut format peut contenir des chiffres correspondant à l’indicatif d’un pays. Par exemple, « 1 » pour les États-Unis ou « 39 » pour l’Italie. Le moteur de synthèse vocale peut utiliser ces informations pour guider la prononciation d’un numéro de téléphone. Le numéro de téléphone peut également inclure l’indicatif du pays. Dans ce cas, il est prioritaire sur l’indicatif du pays dans l’attribut format. Le moteur de synthèse vocale prononce :

The number is <say-as interpret-as="telephone" format="1">(888) 555-1212</say-as>

Par exemple, « Mon numéro avec indicatif régional est huit huit huit cinq cinq cinq un deux un deux ».
time hms12, hms24 Le texte est prononcé sous forme d'heure. L’attribut format spécifie si l’heure correspond à l’horloge au format 12 heures (hms12) ou 24 heures (hms24). Utilisez deux points pour séparer les nombres représentant les heures, les minutes et les secondes. Voici quelques exemples d’heure valides : 12:35, 1:14:32, 08:15 et 02:50:45. Le moteur de synthèse vocale prononce :

The train departs at <say-as interpret-as="time" format="hms12">4:00am</say-as>

Par exemple, « Le train part à 4 heures ».
duration hms, hm, ms Le texte est prononcé sous forme de durée. L’attribut format spécifie le format de la durée (h=heure, m=minute et s=seconde). Le moteur de synthèse vocale prononce :

<say-as interpret-as="duration">01:18:30</say-as>

Comme « une heure dix-huit minutes et trente secondes ».
Prononce :

<say-as interpret-as="duration" format="ms">01:18</say-as>

Comme « une minute et dix-huit secondes ».
Cette étiquette est prise en charge uniquement sur l’anglais et l’espagnol.
name Le texte est dit sous la forme d’un nom de personne. Le moteur de synthèse vocale prononce :

<say-as interpret-as="name">ED</say-as>

Sous la forme [æd].
Dans les noms chinois, certains caractères se prononcent différemment quand ils apparaissent dans un nom de famille. Par exemple, le moteur de synthèse vocale prononce 仇 dans

<say-as interpret-as="name">仇先生</say-as>

Sous la forme [qiú] et non [chóu].

Utilisation

L’élément say-as peut uniquement contenir du texte.

Exemple

Le moteur de synthèse vocale prononce l’exemple ci-dessous comme suit : « Votre première requête portait sur une chambre le dix-neuf octobre deux mille dix, avec une arrivée à douze heure trente-cinq. »

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
    <voice name="en-US-JennyNeural">
        <p>
        Your <say-as interpret-as="ordinal"> 1st </say-as> request was for <say-as interpret-as="cardinal"> 1 </say-as> room
        on <say-as interpret-as="date" format="mdy"> 10/19/2010 </say-as>, with early arrival at <say-as interpret-as="time" format="hms12"> 12:35pm </say-as>.
        </p>
    </voice>
</speak>

Ajouter un audio enregistré

L’élément audio est facultatif. Vous pouvez l’utiliser pour insérer du contenu audio préenregistré dans un document SSML. Le corps de l’élément audio peut contenir du texte brut ou un balisage SSML qui est prononcé si le fichier audio n’est pas disponible ou ne peut pas être lu. L’élément audio peut également contenir du texte et les éléments suivants : audio, break, p, s, phoneme, prosody, say-as et sub.

Tout audio inclus dans le document SSML doit respecter les exigences suivantes :

  • L’audio doit être hébergé sur un point de terminaison HTTPS accessible via Internet. HTTPS est requis et le domaine qui héberge le fichier doit présenter un certificat TLS/SSL approuvé valide. Nous vous recommandons de placer le fichier audio dans le service Stockage Blob, au sein de la même région Azure que le point de terminaison de synthèse vocale pour réduire la latence.
  • Le fichier audio doit être un fichier *.mp3, *.wav, *.opus, *.ogg, *.flac ou *.wma valide.
  • La durée totale cumulée de tous les fichiers texte et audio dans une seule réponse ne peut pas dépasser 600 secondes.
  • L’audio ne doit pas contenir d’informations propres à un client ou d’autres informations sensibles.

Notes

L’élément « audio » n’est pas pris en charge par l’API Audio Long.

Syntaxe

<audio src="string"/></audio>

Attribut

Attribut Description Obligatoire ou facultatif
src Spécifie l’emplacement/URL du fichier audio. Obligatoire en cas d’utilisation de l’élément audio dans votre document SSML.

Exemple

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
    <voice name="en-US-JennyNeural">
        <p>
            <audio src="https://contoso.com/opinionprompt.wav"/>
            Thanks for offering your opinion. Please begin speaking after the beep.
            <audio src="https://contoso.com/beep.wav">
                Could not play the beep, please voice your opinion now.
            </audio>
        </p>
    </voice>
</speak>

Ajouter un arrière-plan audio

Vous pouvez utiliser l’élément mstts:backgroundaudio pour ajouter un contenu audio d’arrière-plan à vos documents SSML ou mélanger un fichier audio avec la synthèse vocale. Avec mstts:backgroundaudio, vous pouvez exécuter en boucle un fichier audio en arrière-plan, effectuer un fondu d’ouverture de la synthèse vocale, et un fondu de fermeture de la synthèse vocale.

Si le contenu audio d’arrière-plan fourni est plus court que la synthèse vocale ou le fondu de fermeture, il est répété en boucle. S’il est plus long que la synthèse vocale, il s’arrête à la fin du fondu de fermeture.

Un seul fichier audio en arrière-plan est autorisé par document SSML. Vous pouvez intercaler des balises audio dans l’élément voice pour ajouter du contenu audio supplémentaire à votre document SSML.

Notes

L’élément mstts:backgroundaudio doit être placé devant tous les éléments voice, c’est-à-dire le premier enfant de l’élément speak.

L’élément mstts:backgroundaudio n’est pas pris en charge par l’API Audio Long.

Syntaxe

<mstts:backgroundaudio src="string" volume="string" fadein="string" fadeout="string"/>

Attributs

Attribut Description Obligatoire ou facultatif
src Spécifie l’emplacement/URL du fichier audio en arrière-plan. Obligatoire en cas d’utilisation d’un contenu audio en arrière-plan dans votre document SSML
volume Spécifie le volume du fichier audio en arrière-plan. Les valeurs acceptées vont de 0 à 100 inclus. La valeur par défaut est 1. Facultatif
fadein Spécifie la durée du fondu d’ouverture du contenu audio en arrière-plan, en millisecondes. La valeur par défaut est 0, ce qui équivaut à aucune apparition en fondu audio. Les valeurs acceptées vont de 0 à 10000 inclus. Facultatif
fadeout Spécifie la durée du fondu de fermeture du contenu audio en arrière-plan, en millisecondes. La valeur par défaut est 0, ce qui équivaut à aucune disparition en fondu audio. Les valeurs acceptées vont de 0 à 10000 inclus. Facultatif

Exemple

<speak version="1.0" xml:lang="en-US" xmlns:mstts="http://www.w3.org/2001/mstts">
    <mstts:backgroundaudio src="https://contoso.com/sample.wav" volume="0.7" fadein="3000" fadeout="4000"/>
    <voice name="Microsoft Server Speech Text to Speech Voice (en-US, JennyNeural)">
        The text provided in this document will be spoken over the background audio.
    </voice>
</speak>

Élément bookmark

Vous pouvez utiliser l’élément bookmark pour insérer des marqueurs personnalisés en SSML afin d’obtenir le décalage de chaque marqueur dans le flux audio. Nous ne lisons pas les éléments bookmark. L’élément bookmark peut être utilisé pour référencer un emplacement spécifique dans le texte ou la séquence de balises. Bookmark est disponible pour l’ensemble des langues et des voix.

Syntaxe

<bookmark mark="string"/>

Attribut

Attribut Description Obligatoire ou facultatif
mark Spécifie le texte de référence de l’élément bookmark. Obligatoire

Exemple

Par exemple, vous pouvez souhaiter connaître le décalage temporel de chaque nom de fleur dans l’extrait suivant :

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
    <voice name="en-US-AriaNeural">
        We are selling <bookmark mark='flower_1'/>roses and <bookmark mark='flower_2'/>daisies.
    </voice>
</speak>

Obtenir un signet à l’aide du kit SDK Speech

Vous pouvez vous abonner à l’événement BookmarkReached dans le kit SDK Speech pour récupérer les décalages d’éléments bookmark.

Notes

L’événement BookmarkReached est disponible uniquement depuis la version 1.16 du kit SDK Speech.

Les événements BookmarkReached se déclenchent quand les données audio de sortie deviennent disponibles (ce qui va plus vite que la lecture sur un appareil de sortie).

  • AudioOffset signale le temps écoulé du contenu audio de sortie entre le début de la synthèse et l’élément bookmark. Cette valeur est mesurée en centaines de nanosecondes (HNS), 10 000 HNS équivalant à 1 milliseconde.
  • Text est le texte de référence de l’élément bookmark, qui est la chaîne que vous avez définie dans l’attribut mark.

Pour plus d’informations, consultez BookmarkReached.

synthesizer.BookmarkReached += (s, e) =>
{
    // The unit of e.AudioOffset is tick (1 tick = 100 nanoseconds), divide by 10,000 to convert to milliseconds.
    Console.WriteLine($"Bookmark reached. Audio offset: " +
        $"{e.AudioOffset / 10000}ms, bookmark text: {e.Text}.");
};

Pour l’exemple SSML précédent, l’événement BookmarkReached est déclenché deux fois, et la sortie de la console est la suivante :

Bookmark reached. Audio offset: 825ms, bookmark text: flower_1.
Bookmark reached. Audio offset: 1462.5ms, bookmark text: flower_2.

Éléments MathML pris en charge

Le langage MathML (Mathematical Markup Language) est un langage de balisage conforme au format XML, qui permet aux développeurs de spécifier la manière dont un texte d’entrée est converti en parole synthétisée via la synthèse vocale.

Notes

Les éléments MathML (balises) sont actuellement pris en charge par toutes les voix neuronales dans les paramètres régionaux en-US et en-AU.

Exemple

Cet extrait de code SSML montre comment les éléments MathML sont utilisés pour générer la parole synthétisée. La sortie de synthèse vocale pour cet exemple est « a squared plus b squared equals c squared » (a carré plus b carré égale c carré).

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xmlns:mstts="http://www.w3.org/2001/mstts" xml:lang="en-US"><voice name="en-US-JennyNeural"><math xmlns="http://www.w3.org/1998/Math/MathML"><msup><mi>a</mi><mn>2</mn></msup><mo>+</mo><msup><mi>b</mi><mn>2</mn></msup><mo>=</mo><msup><mi>c</mi><mn>2</mn></msup></math></voice></speak>

L’attribut xmlns dans <math xmlns="http://www.w3.org/1998/Math/MathML"> est facultatif.

Tous les éléments des spécifications MathML 2.0 et MathML 3.0 sont prises en charge, à l’exception des éléments de Mathématique élémentaire de MathML 3.0. Les éléments semantics, annotation et annotation-xml ne génèrent pas de contenu vocal. Ils sont donc ignorés.

Notes

Si un élément n’est pas reconnu, il est ignoré, et les éléments enfants qu’il contient sont toujours traités.

Les entités MathML ne sont pas prises en charge par la syntaxe XML. Vous devez donc utiliser les caractères Unicode correspondants pour représenter les entités ; par exemple, l’entité &copy; doit être représentée par ses caractères Unicode &#x00A9;, sinon une erreur se produit.

Élément de visème

Un visème est la description visuelle d’un phonème dans le langage parlé. Il définit la position du visage et de la bouche quand une personne parle. Vous pouvez utiliser l’élément mstts:viseme dans SSML pour demander une sortie de visème. Pour plus d’informations, consultez Obtenir la position faciale avec un visème.

Syntaxe

<mstts:viseme type="string"/>

Attributs

Attribut Description Obligatoire ou facultatif
type Spécifie le type de sortie de visème.
  • redlips_front – synchronisation labiale avec l’ID de visème et la sortie de décalage audio
  • FacialExpression – résultat des formes de fusion
Obligatoire

Notes

Actuellement, seul redlips_front prend en charge les voix neuronales dans les paramètres régionaux en-US, tandis que FacialExpression prend en charge les voix neuronales dans les paramètres régionaux en-US et zh-CN.

Exemple

Cet extrait de code SSML montre comment demander des formes de fusion avec votre voix synthétisée.

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xmlns:mstts="http://www.w3.org/2001/mstts" xml:lang="en-US">
  <voice name="en-US-JennyNeural">
    <mstts:viseme type="FacialExpression"/>
    Rainbow has seven colors: Red, orange, yellow, green, blue, indigo, and violet.
  </voice>
</speak>

Étapes suivantes

Prise en charge linguistique : voix, paramètres régionaux, langues