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
ttsPré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. Utilisezevent.charIndexpour déterminer la position actuelle de la synthèse vocale.'sentence': une limite de phrase a été atteinte. Utilisezevent.charIndexpour déterminer la position actuelle de la voix.'marker': un repère SSML a été atteint. Utilisezevent.charIndexpour 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()oustop()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()oustop(), 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, consultezevent.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
É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.
charIndexrepré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érieureLongueur 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
startdès que l'activité vocale a commencé,wordlorsqu'une limite de mot est atteinte,sentencelorsqu'une limite de phrase est atteinte,markerlorsqu'un élément de balise SSML est atteint,endlorsque la fin de l'énoncé est atteinte,interruptedlorsque l'énoncé est arrêté ou interrompu avant d'atteindre la fin,cancelledlorsqu'il est supprimé de la file d'attente avant d'être synthétisé, ouerrorlorsqu'une autre erreur se produit. Lorsque la synthèse vocale est mise en pause, un événementpauseest déclenché si un énoncé particulier est mis en pause au milieu, etresumesi 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
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 77Le 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
onEventse 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 70Le 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
Le genre est obsolète et est ignoré.
Énumération
"male"
"female"
Méthodes
getVoices()
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
callbackse présente comme suit :(voices: TtsVoice[]) => void
-
voix
TtsVoice[]
Tableau d'objets
tts.TtsVoicereprésentant les voix disponibles pour la synthèse vocale.
-
Renvoie
-
Promise<TtsVoice[]>
Chrome 101 ou version ultérieureLes promesses ne sont compatibles qu'avec Manifest V3 et les versions ultérieures. Les autres plates-formes doivent utiliser des rappels.
isSpeaking()
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
callbackse 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érieureLes 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()
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
callbackse présente comme suit :() => void
Renvoie
-
Promise<void>
Chrome 101 ou version ultérieureRé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.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
callbackse présente comme suit :() => void