chrome.tts

Description

Utilisez l'API chrome.tts pour lire la synthèse vocale synthétisée. 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, via de synthèse vocale fournies par le système d'exploitation. Sur toutes les plateformes, l’utilisateur peut installent des extensions qui s'enregistrent en tant que moteurs de reconnaissance vocale alternatifs ;

Autorisations

tts

Concepts et utilisation

Générer un discours

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

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

Pour arrêter de parler immédiatement, il vous suffit d'appeler stop():

chrome.tts.stop();

Vous pouvez fournir des options qui contrôlent diverses propriétés de la parole, telles que le débit, le ton et plus encore. Exemple :

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

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

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

Par défaut, chaque appel à speak() interrompt immédiatement tout discours en cours et parle immédiatement. À déterminer si un appel est susceptible d'interrompre quoi que ce soit, vous pouvez appeler isSpeaking(). De plus, vous utiliser l'option enqueue pour ajouter cet énoncé à une file d'attente d'énoncés être énoncé lorsque l'énoncé actuel est terminé.

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

Une description complète de toutes les options est disponible sous tts.speak(). Pas tous les discours les moteurs acceptent 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, consultez runtime.lastError pour voir s'il y en a les erreurs.

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 ne commence à générer de la voix. L'objectif est de vous alerter en cas d'erreurs de syntaxe dans votre utilisation de l'API de synthèse vocale, et non pour intercepter tous les les erreurs qui peuvent se produire lors de la synthèse et de la sortie vocale. Pour détecter ces erreurs vous devez également 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 synthèse vocale, transmettez un écouteur d'événements dans les options pour 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, c'est-à-dire l'index de caractères du discours en cours par rapport à 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 mots a été atteinte. Utiliser event.charIndex pour déterminer la voix actuelle la position de votre annonce.
  • 'sentence': une limite de phrase a été atteinte. Utiliser event.charIndex pour déterminer la valeur actuelle la position de la voix.
  • 'marker': un repère SSML a été atteint. Utiliser event.charIndex pour déterminer la voix actuelle la position de votre annonce.
  • 'end': le moteur a fini de lire l'énoncé.
  • 'interrupted': cet énoncé a été interrompu par un autre appel à speak() ou stop() et a pas terminé.
  • '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 propre au moteur s'est produite et cet énoncé ne peut pas être énoncé. Chèque event.errorMessage pour en savoir plus.

Quatre des types d'événements ('end', 'interrupted', 'cancelled' et 'error') sont finalisés. Après si l'un de ces événements est reçu, cet énoncé ne sera plus prononcé et aucun nouvel événement ne sera l'énoncé sera reçu.

Il est possible que certaines voix ne soient pas compatibles avec tous les types d'événements et qu'elles n'envoient aucun événement. Si vous ne souhaitent pas utiliser une voix à moins qu'elle n'envoie certains événements, transmettez les événements requis dans le champ requiredEventTypes de l'objet options, ou utilisez getVoices() pour choisir une voix qui correspond vos exigences. Tous deux sont décrits dans ce qui suit.

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 reconnaissance vocale n'acceptent pas tous les tags SSML, et certains ne le sont pas du tout, mais tous les moteurs doivent ignorer tout SSML qu'ils ne prennent pas en charge et é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 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 n'importe quel texte dans au moins une langue. Certains utilisateurs peuvent avoir de différentes voix, grâce à leur système d'exploitation et aux moteurs de reconnaissance vocale implémentés par d'autres extensions Chrome. Dans ce cas, vous pouvez mettre en œuvre du code personnalisé pour choisir voix, ou pour présenter à l'utilisateur une liste d'options.

Pour obtenir la liste de toutes les voix, appelez getVoices() et transmettez-lui une fonction qui reçoit un tableau de TtsVoice comme 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 (version 54 ou ultérieure)

Énumération

"start"

"end"

"mot"

"sentence"

"marker"

"interrompu"

"annulé"

"erreur"

"pause"

"reprendre"

TtsEvent

Événement provenant du moteur de synthèse vocale permettant de communiquer l'état d'un énoncé.

Propriétés

  • charIndex

    numéro facultatif

    Index du caractère actuel dans l'énoncé. Pour les événements de mot, ils se déclenchent à 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.

  • Message d'erreur

    chaîne facultatif

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

  • longueur

    numéro facultatif

    Chrome 74 ou version ultérieure

    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. Elle sera définie sur -1 si elle n'est pas définie par le moteur de synthèse vocale.

  • 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 d'atteindre 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. Lors de la mise en pause d'une voix, un événement pause est déclenché si un énoncé particulier est mis en pause au milieu, et resume si un énoncé reprend. Notez que les événements de pause et de reprise peuvent ne pas se déclencher si la voix est mise en pause entre les énoncés.

TtsOptions

Chrome 77 ou version ultérieure

Options de synthèse vocale du 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", l'énoncé est placé en file d'attente si la synthèse vocale est déjà en cours. Si la valeur est "false" (valeur par défaut), interrompt toute voix en cours et vide la file d'attente avant de prononcer ce nouvel énoncé.

  • extensionId

    chaîne facultatif

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

  • gender (genre)

    VoiceGender facultatif

    <ph type="x-smartling-placeholder"></ph> Obsolète depuis Chrome 77

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

    Genre de voix pour la synthèse vocale.

  • lang

    chaîne facultatif

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

  • suggestion

    numéro facultatif

    Tonalité vocale comprise entre 0 et 2 inclus, 0 étant la plus basse et 2 la plus élevée. La valeur 1,0 correspond à la hauteur par défaut d'une voix.

  • vitesse de réaction

    numéro facultatif

    Débit d'élocution par rapport au débit par défaut pour cette voix. 1,0 est le taux par défaut, normalement autour 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 imposent des limites supplémentaires aux fréquences minimale et maximale. Par exemple, il est possible qu'une voix spécifique ne parle pas plus vite que 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

    chaîne facultatif

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

  • volume

    numéro facultatif

    Volume d'élocution compris entre 0 et 1 inclus, 0 étant le plus faible et 1 le plus élevé, la valeur par défaut étant 1,0.

  • onEvent

    vide facultatif

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

    La fonction onEvent se présente comme suit:

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

    • événement

      É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

    chaîne facultatif

    ID de l'extension fournissant cette voix.

  • gender (genre)

    VoiceGender facultatif

    <ph type="x-smartling-placeholder"></ph> Obsolète depuis Chrome 70

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

    Genre de cette voix.

  • lang

    chaîne facultatif

    Langue de la voix, 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. Cela peut entraîner une latence plus élevée et des coûts liés à la bande passante.

  • voiceName

    chaîne facultatif

    Nom de la voix.

VoiceGender

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

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

Énumération

"homme"

"femme"

Méthodes

getVoices()

<ph type="x-smartling-placeholder"></ph> Promesse
chrome.tts.getVoices(
  callback?: function,
)

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

Paramètres

  • rappel

    function facultatif

    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&lt;TtsVoice[]&gt;

    Chrome 101 et versions ultérieures

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

isSpeaking()

<ph type="x-smartling-placeholder"></ph> Promesse
chrome.tts.isSpeaking(
  callback?: function,
)

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

Paramètres

  • rappel

    function facultatif

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

    (speaking: boolean) => void

    • parler

      booléen

      "True" en cas de parole, "false" dans le cas contraire.

Renvoie

  • Promise&lt;boolean&gt;

    Chrome 101 et versions ultérieures

    Les promesses sont prises en charge dans Manifest V3 et versions ultérieures, mais les rappels sont fournis pour rétrocompatibilité. Vous ne pouvez pas utiliser les deux sur le même appel de fonction. La 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é. La reprise ou l'arrêt d'un appel réactive la lecture de la voix.

resume()

chrome.tts.resume()

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

speak()

<ph type="x-smartling-placeholder"></ph> Promesse
chrome.tts.speak(
  utterance: string,
  options?: TtsOptions,
  callback?: function,
)

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

Paramètres

  • énoncé

    chaîne

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

  • options

    TtsOptions facultatif

    Options de voix.

  • rappel

    function facultatif

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

    () => void

Renvoie

  • Promesse<void>

    Chrome 101 et versions ultérieures

    Les promesses sont prises en charge dans Manifest V3 et versions ultérieures, mais les rappels sont fournis pour rétrocompatibilité. Vous ne pouvez pas utiliser les deux sur le même appel de fonction. La 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 pour que vous puissiez prendre la parole lors de l'appel suivant.

Événements

onVoicesChanged

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

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

Paramètres

  • rappel

    fonction

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

    () => void