chrome.tts

Description

Utiliser l'API chrome.tts pour écouter la synthèse vocale. Consultez également l'API ttsEngine associée, qui permet à une extension d'implémenter un moteur de synthèse vocale.

Chrome offre cette fonctionnalité sous Windows (avec SAPI 5), Mac OS X et ChromeOS grâce aux fonctionnalités de synthèse vocale fournies par le système d'exploitation. Sur toutes les plates-formes, l'utilisateur peut installer des extensions qui s'enregistrent en tant que moteurs de synthèse vocale.

Autorisations

tts

Concepts et utilisation

Générer la voix

Appelez le speak() depuis votre extension pour parler. Exemple :

chrome.tts.speak('Hello, world.');

Pour arrêter de parler immédiatement, appelez simplement stop():

chrome.tts.stop();

Vous pouvez fournir des options qui contrôlent diverses propriétés de la voix, telles que sa vitesse, son ton, etc. Exemple :

chrome.tts.speak('Hello, world.', {'rate': 2.0});

Il est également judicieux de spécifier la langue afin de choisir un synthétiseur prenant en charge cette langue (et le dialecte régional, le cas échéant).

chrome.tts.speak('Hello, world.', {'lang': 'en-US', 'rate': 2.0});

Par défaut, chaque appel au speak() interrompt les discussions en cours et parle immédiatement. Pour déterminer si un appel risque d'interrompre quelque chose, vous pouvez appeler isSpeaking(). En outre, vous pouvez utiliser l'option enqueue pour ajouter cet énoncé à une file d'attente d'énoncés qui seront prononcés à la fin de l'énoncé actuel.

chrome.tts.speak('Speak this first.');
chrome.tts.speak(
    'Speak this next, when the first sentence is done.', {'enqueue': true});

Vous trouverez une description complète de toutes les options dans la section tts.speak(). Tous les moteurs de synthèse vocale n'acceptent pas toutes les options.

Pour détecter les erreurs et vous assurer que vous appelez speak() correctement, transmettez une fonction de rappel qui n'accepte aucun argument. Dans le rappel, vérifiez runtime.lastError pour voir si des erreurs se sont produites.

chrome.tts.speak(
  utterance,
  options,
  function() {
    if (chrome.runtime.lastError) {
      console.log('Error: ' + chrome.runtime.lastError.message);
    }
  }
);

Le rappel est renvoyé immédiatement, avant que le moteur ait commencé à générer des paroles. L'objectif du rappel est de vous alerter en cas d'erreurs de syntaxe dans votre utilisation de l'API de synthèse vocale, et non de détecter toutes les erreurs possibles qui pourraient se produire lors de la synthèse et de la sortie vocale. Pour détecter ces erreurs également, vous devez utiliser un écouteur d'événements, décrit dans la section suivante.

Écouter des événements

Pour obtenir plus d'informations en temps réel sur l'état de la voix synthétisée, transmettez un écouteur d'événements dans les options à speak(), comme ceci:

chrome.tts.speak(
  utterance,
  {
    onEvent: function(event) {
      console.log('Event ' + event.type + ' at position ' + event.charIndex);
      if (event.type == 'error') {
        console.log('Error: ' + event.errorMessage);
      }
    }
  },
  callback
);

Chaque événement inclut un type d'événement, l'index de caractères de la voix actuelle par rapport à l'énoncé et, pour les événements d'erreur, un message d'erreur facultatif. Les types d'événements sont les suivants:

  • 'start': le moteur a commencé à énoncer l'énoncé.
  • 'word': une limite de mot a été atteinte. Utilisez event.charIndex pour déterminer la position actuelle de la voix.
  • 'sentence': une limite de phrase a été atteinte. Utilisez event.charIndex pour déterminer la position actuelle de la voix.
  • 'marker': un repère SSML a été atteint. Utilisez event.charIndex pour déterminer la position actuelle de la voix.
  • 'end': le moteur a fini de prononcer l'énoncé.
  • 'interrupted': cet énoncé a été interrompu par un autre appel à speak() ou stop() et n'a pas abouti.
  • 'cancelled': cet énoncé a été mis en file d'attente, puis annulé par un autre appel à speak() ou stop() et n'a jamais commencé à parler.
  • 'error': une erreur spécifique au moteur s'est produite et cet énoncé ne peut pas être énoncé. Pour en savoir plus, consultez event.errorMessage.

Quatre types d'événements ('end', 'interrupted', 'cancelled' et 'error') sont finalisés. Une fois que l'un de ces événements a été reçu, cet énoncé n'est plus parlé et aucun nouvel énoncé ne sera reçu.

Certaines voix ne sont pas compatibles avec tous les types d'événements, et d'autres n'en envoient aucun. Si vous ne souhaitez utiliser une voix que si elle envoie certains événements, transmettez les événements dont vous avez besoin dans le membre requiredEventTypes de l'objet d'options, ou utilisez getVoices() pour choisir une voix répondant à vos besoins. Les deux sont décrits ci-dessous.

Balisage SSML

Les énoncés utilisés dans cette API peuvent inclure un balisage à l'aide du langage de balisage de synthèse vocale (SSML). Si vous utilisez SSML, le premier argument de speak() doit être un document SSML complet avec un en-tête XML et une balise <speak> de premier niveau, et non un fragment de document.

Exemple :

chrome.tts.speak(
  '<?xml version="1.0"?>' +
  '<speak>' +
  '  The <emphasis>second</emphasis> ' +
  '  word of this sentence was emphasized.' +
  '</speak>'
);

Tous les moteurs de synthèse vocale n'acceptent pas toutes les balises SSML, et certains ne sont pas forcément compatibles avec le SSML. Toutefois, tous les moteurs doivent ignorer les balises SSML non compatibles et doivent continuer à énoncer le texte sous-jacent.

Sélectionner une voix

Par défaut, Chrome choisit la voix la plus appropriée pour chaque énoncé que vous souhaitez énoncer, en fonction de la langue. Sur la plupart des systèmes Windows, Mac OS X et ChromeOS, la synthèse vocale fournie par le système d'exploitation doit pouvoir énoncer tout type de texte dans au moins une langue. Certains utilisateurs disposent toutefois de diverses voix provenant de leur système d'exploitation et de moteurs de synthèse vocale mis en œuvre par d'autres extensions Chrome. Dans ce cas, vous pouvez implémenter du code personnalisé pour choisir la voix appropriée ou pour présenter à l'utilisateur une liste de choix.

Pour obtenir la liste de toutes les voix, appelez getVoices() et transmettez-lui une fonction qui reçoit un tableau d'objets TtsVoice en tant qu'argument:

chrome.tts.getVoices(
  function(voices) {
    for (var i = 0; i < voices.length; i++) {
      console.log('Voice ' + i + ':');
      console.log('  name: ' + voices[i].voiceName);
      console.log('  lang: ' + voices[i].lang);
      console.log('  extension id: ' + voices[i].extensionId);
      console.log('  event types: ' + voices[i].eventTypes);
    }
  }
);

Types

EventType

Chrome 54 et versions ultérieures

Enum

"start"

"end"

"sentence"

"cancelled"

"error"

"pause"

TtsEvent

Événement provenant du moteur de synthèse vocale pour communiquer le statut d'un énoncé.

Propriétés

  • charIndex

    numéro facultatif

    Index du caractère actuel de l'énoncé. Pour les événements de type mot, l'événement se déclenche à la fin d'un mot et avant le début du suivant. charIndex représente un point dans le texte au début du mot suivant à énoncer.

  • errorMessage

    string facultatif

    Description de l'erreur, si le type d'événement est error.

  • length

    numéro facultatif

    Chrome 74 et versions ultérieures

    Longueur de la partie suivante de l'énoncé. Par exemple, dans un événement word, il s'agit de la longueur du mot qui sera prononcé ensuite. Si ce n'est pas le cas, elle est définie sur -1.

  • Type

    Le type peut être start dès que la voix commence, word lorsqu'une limite de mot est atteinte, sentence lorsqu'une limite de phrase est atteinte, marker lorsqu'un élément de marque SSML est atteint, end lorsque la fin de l'énoncé est atteinte, interrupted lorsque l'énoncé est arrêté ou interrompu avant la fin, cancelled lorsqu'il est supprimé de la file d'attente avant d'être synthétisé ou error lorsqu'une autre erreur se produit. Lorsque vous suspendez un énoncé, un événement pause est déclenché si un énoncé particulier est mis en pause au milieu, et resume si un énoncé reprend la parole. Notez que les événements de pause et de reprise peuvent ne pas se déclencher si les paroles sont mises en pause entre les énoncés.

TtsOptions

Chrome 77 et versions ultérieures

Options vocales pour le moteur de synthèse vocale.

Propriétés

  • desiredEventTypes

    string[] facultatif

    Types d'événements de synthèse vocale que vous souhaitez écouter. Si ce champ n'est pas renseigné, tous les types d'événements peuvent être envoyés.

  • mettre en file d'attente

    Booléen facultatif

    Si la valeur est "true", cet énoncé est mis en file d'attente si la synthèse vocale est déjà en cours. Si la valeur est "false" (valeur par défaut), toutes les conversations en cours sont interrompues et la file d'attente est vide avant d'énoncer le nouvel énoncé.

  • extensionId

    string facultatif

    ID d'extension du moteur de synthèse vocale à utiliser, s'il est connu.

  • gender (genre)

    VoiceGender facultatif

    Obsolète depuis Chrome 77

    Le critère de sexe est obsolète et sera ignoré.

    Genre de la voix pour la synthèse vocale.

  • lang

    string facultatif

    Langue à utiliser pour la synthèse, au format langue-région. Exemples: "en", "en-US", "en-GB", "zh-CN".

  • lancer

    numéro facultatif

    Le ton de la voix doit être compris entre 0 et 2 inclus, 0 représentant le niveau le plus bas et 2 le plus élevé. 1,0 correspond à la hauteur par défaut d'une voix.

  • vitesse de réaction

    numéro facultatif

    Débit par rapport au débit par défaut de cette voix. 1,0 est la vitesse par défaut, normalement de 180 à 220 mots par minute. La valeur 2,0 est deux fois plus rapide et la valeur 0,5 est deux fois moins rapide. Les valeurs inférieures à 0,1 ou supérieures à 10,0 sont strictement interdites, mais de nombreuses voix limitent davantage les débits minimal et maximal. Par exemple, il est possible qu'une voix spécifique ne parle pas plus de trois fois la normale, même si vous spécifiez une valeur supérieure à 3,0.

  • requiredEventTypes

    string[] facultatif

    Types d'événements de synthèse vocale que la voix doit accepter.

  • voiceName

    string facultatif

    Nom de la voix à utiliser pour la synthèse. Si ce champ est vide, toute voix disponible est utilisée.

  • volume

    numéro facultatif

    Volume d'élocution compris entre 0 et 1 inclus, 0 étant le plus bas et 1 le plus élevé, avec une valeur par défaut de 1,0.

  • onEvent

    vide facultatif

    Cette fonction est appelée avec des événements qui se produisent au cours du processus de prononciation de l'énoncé.

    La fonction onEvent se présente comme suit :

    (event: TtsEvent)=> {...}

    • event

      Événement de mise à jour du moteur de synthèse vocale indiquant l'état de cet énoncé.

TtsVoice

Description d'une voix disponible pour la synthèse vocale.

Propriétés

  • eventTypes

    EventType[] facultatif

    Tous les types d'événements de rappel que cette voix peut envoyer.

  • extensionId

    string facultatif

    ID de l'extension fournissant cette voix.

  • gender (genre)

    VoiceGender facultatif

    Obsolète depuis Chrome 70

    Le critère de sexe est obsolète et sera ignoré.

    Genre de cette voix.

  • lang

    string facultatif

    Langue que cette voix prend en charge, au format langue-région. Exemples: "en", "en-US", "en-GB", "zh-CN".

  • télécommande

    Booléen facultatif

    Si la valeur est "true", le moteur de synthèse est une ressource réseau distante. La latence peut être plus élevée, ce qui peut entraîner des coûts liés à la bande passante.

  • voiceName

    string facultatif

    Nom de la voix.

VoiceGender

Chrome 54 ou version ultérieure Obsolète depuis Chrome 70

Le critère de sexe est obsolète et est ignoré.

Enum

"male"

Méthodes

getVoices()

Promesse
chrome.tts.getVoices(
  callback?: function,
)

Récupère un tableau de toutes les voix disponibles.

Paramètres

  • rappel

    fonction facultative

    Le paramètre callback se présente comme suit :

    (voices: TtsVoice[])=>void

    • voix

      Tableau d'objets tts.TtsVoice représentant les voix disponibles pour la synthèse vocale.

Renvoie

  • Promise<TtsVoice[]>

    Chrome 101 et versions ultérieures

    Les promesses sont compatibles avec Manifest V3 et les versions ultérieures, mais des rappels sont fournis pour assurer la rétrocompatibilité. Vous ne pouvez pas utiliser les deux dans le même appel de fonction. La promesse est résolue avec le même type que celui transmis au rappel.

isSpeaking()

Promesse
chrome.tts.isSpeaking(
  callback?: function,
)

Vérifie si le moteur parle. Sous Mac OS X, le résultat est vrai chaque fois que le moteur de synthèse vocale du système parle, même si la voix n'a pas été lancée par Chrome.

Paramètres

  • rappel

    fonction facultative

    Le paramètre callback se présente comme suit :

    (speaking: boolean)=>void

    • parler

      boolean

      "True" en cas d'élocution, "false" dans le cas contraire.

Renvoie

  • Promise<boolean>

    Chrome 101 et versions ultérieures

    Les promesses sont compatibles avec Manifest V3 et les versions ultérieures, mais des rappels sont fournis pour assurer la rétrocompatibilité. Vous ne pouvez pas utiliser les deux dans le même appel de fonction. La promesse est résolue avec le même type que celui transmis au rappel.

pause()

chrome.tts.pause()

Met en pause la synthèse vocale, potentiellement au milieu d'un énoncé. Si vous appelez pour reprendre ou arrêter, la parole reprendra.

resume()

chrome.tts.resume()

Si la voix a été mise en pause, elle reprend là où elle s'était arrêtée.

speak()

Promesse
chrome.tts.speak(
  utterance: string,
  options?: TtsOptions,
  callback?: function,
)

Énonce le texte à l'aide d'un moteur de synthèse vocale.

Paramètres

  • énoncé

    chaîne

    Texte à prononcer, soit en texte brut, soit sous la forme d'un document SSML complet et bien structuré. Les moteurs de reconnaissance vocale qui ne sont pas compatibles avec SSML suppriment les balises et énoncent le texte. La longueur maximale du texte est de 32 768 caractères.

  • options

    TtsOptions facultatif

    Options vocales.

  • rappel

    fonction facultative

    Le paramètre callback se présente comme suit :

    ()=>void

Renvoie

  • Promise<void>

    Chrome 101 et versions ultérieures

    Les promesses sont compatibles avec Manifest V3 et les versions ultérieures, mais des rappels sont fournis pour assurer la rétrocompatibilité. Vous ne pouvez pas utiliser les deux dans le même appel de fonction. La promesse est résolue avec le même type que celui transmis au rappel.

stop()

chrome.tts.stop()

Arrête toute voix en cours et vide la file d'attente des énoncés en attente. De plus, si la voix a été mise en pause, elle sera réactivée lors du prochain appel vocal.

Événements

onVoicesChanged

Chrome 124 et versions ultérieures
chrome.tts.onVoicesChanged.addListener(
  callback: function,
)

Appelée lorsque la liste de tts.TtsVoice qui serait renvoyée par getVoices a changé.

Paramètres

  • rappel

    function

    Le paramètre callback se présente comme suit :

    ()=>void