Documentation de référence sur le langage de balisage de synthèse vocale (SSML)

Text-to-Speech accepte un certain nombre de fonctionnalités SSML bêta, en plus des éléments SSML standards de Text-to-Speech. Pour plus d'informations sur la personnalisation de vos résultats de synthèse vocale à l'aide d'éléments SSML, consultez la section Text-to-Speech.Tutoriel SSML etDocumentation de référence SSML s'affiche en haut de l'écran.

Récapitulatif des fonctionnalités SSML compatibles en version bêta:

  • <phoneme>: permet de personnaliser la prononciation de mots spécifiques.
  • <say-as interpret-as="duration">: permet de spécifier les durées.
  • <voice>: basculez entre les voix dans la même requête.
  • <lang>: utilisez plusieurs langues dans une même requête.
  • Points temporels: utilisez la balise <mark> pour renvoyer le point temporel d'un point spécifié de votre transcription.

<phoneme>

Vous pouvez utiliser la balise <phoneme> pour produire des prononciations personnalisées de mots intégrés. Text-to-Speech accepte les alphabets phonétiques IPA et X-SAMPA. Consultez la page Téléphones pour obtenir la liste des langues et des téléphones compatibles.

Chaque application du tag <phoneme> dirige la prononciation d'un seul mot:

  <phoneme alphabet="ipa" ph="ˌmænɪˈtoʊbə">manitoba</phoneme>
  <phoneme alphabet="x-sampa" ph='m@"hA:g@%ni:'>mahogany</phoneme>

Repère de résistance

Trois niveaux de stress peuvent être ajoutés à une transcription:

  1. Niveau de stress principal: signalé par la mention /ˈ/ dans IPA et /"/ dans X-SAMPA.
  2. Le stress secondaire: associé à / / dans IPA et /%/ dans X-SAMPA.
  3. Inspiré: aucun symbole n'est (indiquant dans l'une ou l'autre des notations).

Certaines langues peuvent comporter moins de trois niveaux ou ne pas indiquer du tout du stress. Consultez la page Numéros de téléphone pour connaître les niveaux de stress disponibles dans votre langue. Les repères de stress sont placés au début de chaque syllabe stressé. Par exemple, en anglais américain:

Exemple de mot IPA X-SAMPA
eau ˈwɑːtɚ "wA:t@`"
Les fonds sous-marins ˌʌnɚˈwɑːtɚ %Vnd@"wA:t@

Transcriptions larges et étroites

En règle générale, vos transcriptions doivent être plus larges et phonétiques. Par exemple, en anglais des États-Unis, transcrivez les codes intervocales /t/ au lieu d'utiliser une pression du doigt.

Exemple de mot IPA X-SAMPA
beurre ˈbʌtɚ au lieu de ʌɾɚbʌɾɚ "bVt@` au lieu de "bV4@"

Dans certains cas, l'utilisation de la représentation phonétique peut donner un résultat naturel à vos résultats de la synthèse vocale, par exemple, si la séquence de téléphones est difficile à prononcer.

C'est le cas, par exemple, du système de voyance en /s/ en anglais. Dans ce cas, l'assimilation doit être reflétée dans la transcription:

Exemple de mot IPA X-SAMPA
cats ˈkæts "k{ts"
dogs ˈdɑːgz au lieu de ˈdɑːgs "dA:gz au lieu de "dA:gs

réduit jusqu'à 50 %

Chaque syllabe doit contenir une seule voyelle. En d'autres termes, évitez d'éviter les consensus syllabiques et de les transcrire à l'aide d'une voyelle réduite. Exemple :

Exemple de mot IPA X-SAMPA
chaton ˈkɪtən au lieu de ˈkɪtn "kIt@n au lieu de "kitn"
bouilloire ˈkɛtəl au lieu de ˈkɛtl "kEt@l au lieu de "kEtl"

Syllabification

Si vous le souhaitez, vous pouvez spécifier des limites syllabes à l'aide de /./. Chaque syllabe doit contenir un seul voyelle. Exemple :

Exemple de mot IPA X-SAMPA
lisibilité "ˌɹiː.də.ˈbɪ.lə.ti" %r\i:.d@."bI.l@.ti:

Durées

Text-to-Speech accepte la fonction <say-as interpret-as="duration"> pour lire correctement les durées. Par exemple, l'exemple suivant serait prononcé "cinq heures et trente minutes":

<say-as interpret-as="duration" format="h:m">5:30</say-as>

La chaîne de format accepte les valeurs suivantes:

Abréviations Valeur
h heures
m minutes
s secondes
ms millisecondes

<voice>

Le tag <voice> vous permet d'utiliser plusieurs voix dans une seule requête SSML. Dans l'exemple suivant, la voix par défaut est une voix masculine en anglais. Tous les mots seront synthétisés dans cette voix, à l'exception de "qu'est-ce qui t-amène cii" qui sera écrit en français à l'aide d'une voix féminine au lieu de la langue par défaut (anglais) et du sexe (masculin).

<speak>And then she asked, <voice language="fr-FR" gender="female">qu'est-ce qui
t'amène ici</voice><break time="250ms"/> in her sweet and gentle voice.</speak>

Vous pouvez également utiliser un tag <voice> pour spécifier une voix individuelle (le nom de la voix sur la page des voix compatibles) au lieu de spécifier une valeur language et/ou gender:

<speak>The dog is friendly<voice name="fr-CA-Wavenet-B">mais la chat est
mignon</voice><break time="250ms"/> said a pet shop
owner</speak>

Lorsque vous utilisez le tag <voice>, Text-to-Speech s'attend à recevoir un name (nom de la voix que vous souhaitez utiliser) ou une combinaison des attributs suivants. Les trois attributs sont facultatifs, mais vous devez en indiquer au moins un si vous ne fournissez pas de name.

  • gender: il peut s'agir de "homme", de "femme" ou de "neutre".
  • variant: en tant que condition de départage dans les cas où la voix peut être utilisée de plusieurs façons en fonction de votre configuration.
  • language: la langue souhaitée. Vous ne pouvez spécifier qu'une seule langue dans un tag <voice> donné. Spécifiez votre langue au format BCP-47. Vous trouverez le code BCP-47 de votre langue dans la colonne Code de langue de la page "Langues et langues compatibles".

Vous pouvez également contrôler la priorité relative de chacun des attributs gender, variant et language à l'aide de deux tags supplémentaires: required et ordering.

  • required: si un attribut est désigné comme required et n'est pas configuré correctement, la requête échoue.
  • ordering: tous les attributs répertoriés après une balise ordering sont considérés comme des attributs préférés plutôt que obligatoires. L'API Text-to-Speech considère les attributs préférés dans la mesure du possible dans l'ordre indiqué après le tag ordering. Si des attributs préférés sont configurés de manière incorrecte, Text-to-Speech peut toujours renvoyer une voix valide, mais la configuration incorrecte est supprimée.

Exemples de configurations à l'aide des balises required et ordering:

<speak>And there it was <voice language="en-GB" gender="male" required="gender"
ordering="gender language">a flying bird </voice>roaring in the skies for the
first time.</speak>
<speak>Today is supposed to be <voice language="en-GB" gender="female"
ordering="language gender">Sunday Funday.</voice></speak>

<lang>

Vous pouvez utiliser <lang> pour inclure du texte dans plusieurs langues dans une même requête SSML. Toutes les langues seront synthétisées dans la même voix, sauf si vous utilisez la balise <voice> pour modifier explicitement la voix. La chaîne xml:lang doit contenir la langue cible au format BCP-47 (cette valeur est répertoriée sous la forme "code de langue" dans la table des voix disponibles). Dans l'exemple suivant, "chat" sera écrit en français et non dans la langue par défaut (anglais):

<speak>The french word for cat is <lang xml:lang="fr-FR">chat</lang></speak>

Text-to-Speech accepte le tag <lang> de la façon la plus optimale possible. Toutes les combinaisons de langues ne produisent pas les mêmes résultats de qualité si elles sont spécifiées dans une même requête SSML. Dans certains cas, une combinaison linguistique peut produire un effet détectable, mais subtil ou perçu comme négatif. Problèmes connus :

  • Le tag <lang> n'est pas accepté avec les caractères Kanji. L'entrée est translitée et lue sous forme de caractères chinois.
  • Les langues semi-sensibles telles que l'arabe, l'hébreu et le perse ne sont pas acceptées par la balise <lang>. Elles entraînent une interruption du son. Si vous souhaitez utiliser l'une de ces langues, nous vous recommandons d'utiliser le tag <voice> pour passer à une voix parlant la langue de votre choix (si elle est disponible).

Chronologies SSML

L'API Text-to-Speech permet d'utiliser des repères temporels dans les données audio que vous avez créées. Un repère temporel est un horodatage (en secondes, mesuré à partir du début du contenu audio généré) correspondant à un moment donné du script. Vous pouvez définir un point temporel dans votre script à l'aide du tag <mark>. Lorsque le contenu audio est généré, l'API renvoie le décalage horaire entre le début du contenu audio et le point temporel.

Pour définir un repère temporel, suivez les deux étapes suivantes :

  1. Ajoutez une balise SSML <mark> à un moment donné du script pour lequel vous souhaitez obtenir un horodatage.
  2. Définissez TimepointType sur SSML_MARK. Si ce champ n'est pas défini, les repères temporels ne sont pas renvoyés par défaut.

L'exemple suivant renvoie deux repères temporels:

  • timepoint_1: indique la durée (en secondes) de début du mot "Mark" dans le contenu audio généré.
  • timepoint_2: indique la durée (en secondes) de génération du mot "see" dans le contenu audio généré.
<speak>Hello <mark name="timepoint_1"/> Mark. Good to <mark
name="timepoint_2"/> see you.</speak>