IBM Cloud Docs
Présentation de SSML

Présentation de SSML

SSML (Speech Synthesis Markup Language) est un langage de balisage basé sur XML qui fournit des annotations de texte pour les applications de synthèse vocale. Il s'agit d'une recommandation du groupe de travail Voice Browser du W3C qui a été adoptée comme langage de balisage standard pour la synthèse vocale par la spécification VoiceXML 2.0. SSML fournit aux développeurs d'applications vocales un moyen standard de contrôler certains aspects du processus de synthèse en leur permettant de spécifier la prononciation, le volume, la hauteur, la vitesse et d'autres attributs via un balisage. Vous pouvez utiliser SSML pour contrôler la synthèse de votre texte avec toutes les langues prises en charge.

Le service IBM Watson® Text to Speech s'appuie sur la version 1.1 de SSML, recommandée par le W3C le 7 septembre 2010. Pour plus d'informations sur la recommandation W3C SSML, voir W3C Speech Synthesis Markup Language(SSML)Version 1.1

Introduction à SSML

SSML agit en augmentant le texte brut transmis à un synthétiseur avec un ensemble prédéfini d’éléments ou balises. Un analyseur XML sépare d’abord le texte brut en entrée des spécifications du balisage. Les spécifications sont ensuite traitées et envoyées en tant qu'un ensemble d'instructions sous une forme que le synthétiseur peut comprendre pour produire les effets souhaités. Pour que l'analyseur XML puisse effectuer ce travail, le balisage doit être correctement formé. Par exemple, les éléments doivent être fermés et plusieurs éléments doivent être correctement imbriqués. Pour une introduction aux concepts XML de base, voir w3schools.com/xml/xml_whatis.asp

Un élément SSML est tout ce qui est contenu entre des balises d'ouverture et de fermeture, balises comprises. Comme illustré dans l'exemple suivant, un élément peut contenir une combinaison d'autres éléments (les balises peuvent être imbriquées) et du texte. De plus, les éléments peuvent nécessiter ou accepter éventuellement des attributs définis avec des valeurs particulières.

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

Un document SSML juridique complet se compose d'un prologue XML, qui contient des informations telles que le codage et le schéma pour valider le document SSML, suivi de l'élément racine, <speak>. Dans la portée de l'élément <speak>, vous spécifiez le texte qui doit être synthétisé, augmenté d'éléments supplémentaires.


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


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

Le prologue XML n'est pas nécessaire pour le texte que vous transmettez au service. Le service prend en charge les fragments SSML, qui sont des éléments SSML qui n'incluent pas l'en-tête XML complet et qui n'ont pas besoin d'inclure leurs éléments parent. Par exemple, les éléments <?xml> et <speak> sont toujours facultatifs pour SSML que vous envoyez pour la synthèse.

Prise en charge de SSML

Pour plus d'informations sur l'utilisation de SSML et des fonctionnalités connexes avec le service, voir ce qui suit :

  • Le service implémente la majeure partie de la spécification W3C et prend en charge les fragments SSML.
    • Pour des informations complètes sur le niveau de prise en charge du service pour tous les éléments SSML, voir Eléments SSML.
    • Pour obtenir des exemples d'utilisation d'éléments SSML avec le text d'une demande de synthèse vocale, voir Exemples de texte d'entrée.
  • Le service prend en charge des fonctions de synthèse supplémentaires pour les voix neuronales et les voix neuronales expressives améliorées:
  • Le service prend en charge des fonctions de synthèse supplémentaires pour les voix neuronales expressives:
  • Le service prend en charge une fonction de synthèse qui vous permet de contrôler la manière dont les chaînes alphanumériques sont définies pour les voix allemandes. Pour plus d'informations, voir Spécification de la manière dont les chaînes sont définies.
  • Le service prend en charge l'utilisation de l'élément SSML <mark> avec l'interface WebSocket pour obtenir des informations de temps pour les mots de l'audio résultant. L'interface WebSocket vous permet également de demander des informations pour toutes les chaînes du texte d'entrée. Pour plus d'informations, voir :
  • L'interface de personnalisation du service prend en charge l'utilisation de l'élément SSML <phoneme> pour spécifier l'orthographe phonétique qu'il utilise pour prononcer un mot. L'orthographe phonétique représente les sons d'un mot, comment ces sons sont divisés en syllabes et quelles syllabes sont accentuées.

Validation du SSML

Le service valide tous les éléments SSML que vous soumettez dans n'importe quel contenu, en tant que texte d'entrée pour la synthèse ou en tant que définition de la traduction d'un mot pour la personnalisation. Le service ne peut pas déterminer à l'avance si le texte soumis à la synthèse contient des éléments SSML. Par conséquent, il effectue la même validation pour tout le texte en entrée, qu'il contienne ou non du code SSML.

Validation des éléments et des attributs

Le service effectue la validation suivante des éléments et attributs SSML:

  • Toutes les entrées SSML doivent être correctes et bien formées.

  • Le service ignore en mode silencieux les éléments SSML non pris en charge. Le service synthétise le texte contenu dans les balises d'un élément non pris en charge ; seul l'élément est ignoré.

  • Le service renvoie un code d'erreur HTTP 400 pour les éléments ou attributs SSML non valides. Lors de la spécification d'éléments SSML nécessitant un attribut:

    • Vous devez spécifier l'attribut requis.
    • Vous devez spécifier une valeur valide pour l'attribut requis.
    • Si vous incluez d'autres attributs ou valeurs non valides, ils sont ignorés.

    Si la demande échoue, la réponse d'erreur inclut un message descriptif. Par exemple, supposons que vous spécifiez le texte d'entrée suivant, qui inclut l'élément <say-as> :

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

    Dans cet exemple, l'attribut interpret-as est obligatoire et est spécifié, mais sa valeur n'est pas valide. Une valeur valide pour l'attribut est vxml:currency, et non currency. La réponse d'erreur inclut le message suivant:

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

Récapitulatif des erreurs SSML

Le tableau 1 décrit de nombreuses erreurs de validation SSML courantes. Dans chaque cas, la demande échoue et le service renvoie un code d'erreur 400.

Erreurs de validation SSML
Erreur de validation Description du problème
Elément SSML non valide Par exemple, vous spécifiez une balise de manière incorrecte, omettez un attribut obligatoire ou incluez une balise d'ouverture mais aucune balise de fermeture correspondante.
Caractères de contrôle XML non échappés Le texte d'entrée lui-même contient un caractère ", ', &, <, > ou / au lieu de la chaîne d'échappement ou du codage de caractère équivalent. Pour plus d'informations, voir Mise en échappement des caractères de contrôle XML.
Accentuation de syllabe non valide L'attribut ph d'un élément <phoneme> pour IBM SPR comprend un accent syllabique non valide. Pour plus d'informations sur l'indication des syllabes et de l'accentuation de syllabe, voir Spécification de syllabes.
Symbole phonétique non valide L'attribut ph d'un élément <phoneme> comprend un symbole IPA ou SPR non pris en charge pour la langue spécifiée.
Aucune voyelle L'attribut ph d'un élément <phoneme> spécifie la prononciation d'un mot qui ne comporte pas de voyelles.
Liaison française dans un lieu non valide Dans l'attribut ph d'un élément <phoneme>, le caractère de liaison ne suit pas une consonne ou se trouve au milieu de la prononciation d'un mot.
Le symbole japonais : ne précède pas une voyelle Dans l'attribut ph d'un élément <phoneme> en japonais, un caractère : ne se trouve pas avant une voyelle (éventuellement avec d'autres symboles, tels que la limite de la syllabe, entre les deux).
Utilisation incorrecte de l'élément SSML <prosody> Vous ne pouvez pas utiliser les attributs contour, duration, range et volume de l'élément <prosody> avec n'importe quelle voix.
Utilisation incorrecte de l'élément SSML <express-as> Vous pouvez utiliser l'élément <express-as> uniquement avec des voix neuronales expressives.