chrome.tts

refresh date: 2026-09-25 robots: noindex

Description

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

Autorisations

tts

Présentation

Chrome est compatible de manière native avec la synthèse vocale sur Windows (à l'aide de SAPI 5), Mac OS X et ChromeOS, en utilisant les 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 alternatifs.

Génération de la voix…

Appelez 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 différentes propriétés du discours, telles que son débit, sa hauteur, etc. Exemple :

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

Il est également judicieux de spécifier la langue afin qu'un synthétiseur compatible avec cette langue (et le dialecte régional, le cas échéant) soit choisi.

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

Par défaut, chaque appel à speak() interrompt tout discours en cours et parle immédiatement. Pour déterminer si un appel interromprait une activité, vous pouvez appeler isSpeaking(). Vous pouvez également utiliser l'option enqueue pour ajouter cet énoncé à une file d'attente d'énoncés qui seront prononcés une fois l'énoncé actuel terminé.

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 ci-dessous. Tous les moteurs de reconnaissance vocale ne sont pas compatibles avec toutes les options.

Pour détecter les erreurs et vous assurer que vous appelez correctement speak(), transmettez une fonction de rappel qui n'accepte aucun argument. Dans le rappel, vérifiez runtime.lastError pour voir s'il y a eu des 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 la synthèse vocale. Le but du rappel est de vous avertir des erreurs de syntaxe dans votre utilisation de l'API TTS, et non de détecter toutes les erreurs possibles qui pourraient se produire lors du processus de synthèse et de sortie vocale. Pour intercepter également ces erreurs, vous devez utiliser un écouteur d'événements, comme décrit ci-dessous.

É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 à speak(), comme suit :

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ère de la parole 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é à prononcer l'énoncé.
  • 'word' : une limite de mot a été atteinte. Utilisez event.charIndex pour déterminer la position actuelle de la synthèse vocale.
  • '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 synthèse vocale.
  • 'end' : le moteur a fini de prononcer l'énoncé.
  • 'interrupted' : cet énoncé a été interrompu par un autre appel à speak() ou stop() et n'est pas terminé.
  • 'cancelled' : cet énoncé a été mis en file d'attente, mais a ensuite été annulé par un autre appel à speak() ou stop(), et n'a jamais commencé à être prononcé.
  • 'error' : une erreur spécifique au moteur s'est produite et cet énoncé ne peut pas être prononcé. Pour en savoir plus, consultez event.errorMessage.

Quatre des types d'événements ('end', 'interrupted', 'cancelled' et 'error') sont finaux. Une fois l'un de ces événements reçu, cet énoncé ne sera plus prononcé et aucun nouvel événement de cet énoncé ne sera reçu.

Il est possible que certaines voix ne soient pas compatibles avec tous les types d'événements, et que d'autres n'envoient aucun événement. Si vous ne souhaitez pas utiliser une voix à moins qu'elle n'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 qui répond à vos exigences. Les deux options sont décrites 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 le langage SSML, le premier argument de speak() doit être un document SSML complet avec un en-tête XML et une balise <speak> de niveau supérieur, 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 ne sont pas compatibles avec toutes les balises SSML, et certains ne sont pas du tout compatibles avec le langage SSML. Toutefois, tous les moteurs doivent ignorer les balises SSML qu'ils ne prennent pas en charge et continuer à énoncer le texte sous-jacent.

Choisir une voix

Par défaut, Chrome choisit la voix la plus appropriée pour chaque énoncé que vous souhaitez prononcer, 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 devrait pouvoir lire n'importe quel texte dans au moins une langue. Toutefois, certains utilisateurs peuvent disposer de plusieurs voix, provenant de leur système d'exploitation et de moteurs de synthèse vocale implémentés par d'autres extensions Chrome. Dans ce cas, vous pouvez implémenter un code personnalisé pour choisir la voix appropriée ou présenter une liste de choix à l'utilisateur.

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 ou version ultérieure

Énumération

"start"

"end"

"word"

"sentence"

"marker"

"interrupted"

"cancelled"

"error"

"pause"

"resume"

TtsEvent

Événement du moteur TTS pour communiquer l'état d'un énoncé.

Propriétés

  • charIndex

    number facultatif

    Index du caractère actuel dans l'énoncé. Pour les événements de 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 à prononcer.

  • errorMessage

    chaîne facultatif

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

  • longueur

    number 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 est définie sur -1 si elle n'est pas définie par le moteur de reconnaissance vocale.

  • type

    Le type peut être start dès que l'activité vocale a commencé, word lorsqu'une limite de mot est atteinte, sentence lorsqu'une limite de phrase est atteinte, marker lorsqu'un élément de balise 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. Lorsque la synthèse vocale est mise en pause, un événement pause est déclenché si un énoncé particulier est mis en pause au milieu, et resume si un énoncé reprend la synthèse vocale. Notez que les événements de mise en pause et de reprise peuvent ne pas se déclencher si la synthèse vocale est mise en pause entre deux énoncés.

TtsOptions

Chrome 77 ou version ultérieure

Options de reconnaissance vocale pour le moteur TTS.

Propriétés

  • desiredEventTypes

    string[] facultatif

    Types d'événements TTS que vous souhaitez écouter. Si ce champ est manquant, tous les types d'événements peuvent être envoyés.

  • enqueue

    boolean facultatif

    Si la valeur est "true", met en file d'attente cet énoncé si la synthèse vocale est déjà en cours. Si la valeur est "false" (valeur par défaut), interrompt tout discours 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, s'il est connu.

  • gender (genre)

    VoiceGender facultatif

    Obsolète depuis Chrome 77

    Le genre est obsolète et sera ignoré.

    Genre de la 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".

  • argumentaire

    number facultatif

    Hauteur de la voix comprise entre 0 et 2 inclus, 0 étant la plus basse et 2 la plus haute. La valeur 1.0 correspond à la hauteur par défaut d'une voix.

  • vitesse de réaction

    number facultatif

    Débit d'élocution par rapport au débit par défaut pour cette voix. La valeur par défaut est 1.0, ce qui correspond généralement à un débit 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 minimum et maximum. Par exemple, une voix particulière peut ne pas parler plus de trois fois plus vite que la normale, même si vous spécifiez une valeur supérieure à 3,0.

  • requiredEventTypes

    string[] facultatif

    Types d'événements TTS que la voix doit accepter.

  • voiceName

    chaîne facultatif

    Nom de la voix à utiliser pour la synthèse. Si ce champ n'est pas renseigné, n'importe quelle voix disponible est utilisée.

  • volume

    number facultatif

    Volume de la voix 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

    void facultatif

    Cette fonction est appelée avec les événements qui se produisent lors de la 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

    Obsolète depuis Chrome 70

    Le genre est obsolète et sera ignoré.

    Genre de cette voix.

  • lang

    chaîne facultatif

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

  • télécommande

    boolean facultatif

    Si la valeur est "true", le moteur de synthèse est une ressource réseau distante. La latence peut être plus élevée et des frais de bande passante peuvent s'appliquer.

  • voiceName

    chaîne facultatif

    Nom de la voix.

VoiceGender

Chrome 54 et versions ultérieures Obsolète depuis Chrome 70

Le genre est obsolète et est ignoré.

Énumération

"male"

"female"

Méthodes

getVoices()

Promise
chrome.tts.getVoices(
  callback?: function,
)
: Promise<TtsVoice[]>

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

Paramètres

  • callback

    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<TtsVoice[]>

    Chrome 101 ou version ultérieure

    Les promesses ne sont compatibles qu'avec Manifest V3 et les versions ultérieures. Les autres plates-formes doivent utiliser des rappels.

isSpeaking()

Promise
chrome.tts.isSpeaking(
  callback?: function,
)
: Promise<boolean>

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

Paramètres

  • callback

    function facultatif

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

    (speaking: boolean) => void

    • parler

      booléen

      "True" si l'utilisateur parle, "false" dans le cas contraire.

Renvoie

  • Promise<boolean>

    Chrome 101 ou version ultérieure

    Les promesses ne sont compatibles qu'avec Manifest V3 et les versions ultérieures. Les autres plates-formes doivent utiliser des rappels.

pause()

chrome.tts.pause(): void

Met en pause la synthèse vocale, potentiellement au milieu d'un énoncé. Un appel à "resume" ou "stop" réactivera la synthèse vocale.

resume()

chrome.tts.resume(): void

Si la lecture à voix haute a été suspendue, elle reprend là où elle s'est arrêtée.

speak()

Promise
chrome.tts.speak(
  utterance: string,
  options?: TtsOptions,
  callback?: function,
)
: Promise<void>

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

Paramètres

  • énoncé

    chaîne

    Texte à énoncer, soit du texte brut, soit un document SSML complet et bien formé. Les moteurs de reconnaissance vocale qui ne sont pas compatibles avec le SSML suppriment les balises et lisent le texte. La longueur maximale du texte est de 32 768 caractères.

  • options

    TtsOptions facultatif

    Options de synthèse vocale.

  • callback

    function facultatif

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

    () => void

Renvoie

  • Promise<void>

    Chrome 101 ou version ultérieure

    Résolution immédiate, avant la fin de l'énonciation. Si une erreur se produit, la promesse sera rejetée. Utilisez options.onEvent pour obtenir des commentaires plus détaillés.

    Les promesses ne sont compatibles qu'avec Manifest V3 et les versions ultérieures. Les autres plates-formes doivent utiliser des rappels.

stop()

chrome.tts.stop(): void

Arrête tout discours en cours et vide la file d'attente de tous les énoncés en attente. De plus, si la synthèse vocale était en pause, elle sera réactivée pour le prochain appel de la fonction speak.

Événements

onVoicesChanged

Chrome 124 ou version ultérieure
chrome.tts.onVoicesChanged.addListener(
  callback: function,
)

Appelé lorsque la liste des tts.TtsVoice qui seraient renvoyés par getVoices a changé.

Paramètres

  • callback

    fonction

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

    () => void