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.
Autorisations
tts
Présentation
Chrome offre une compatibilité native avec la reconnaissance vocale sous Windows (avec SAPI 5), Mac OS X et ChromeOS, avec 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 ;
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, 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 dans le tts.speak
ci-dessous. 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 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 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. Utiliserevent.charIndex
pour déterminer la voix actuelle la position de votre annonce.'sentence'
: une limite de phrase a été atteinte. Utiliserevent.charIndex
pour déterminer la valeur actuelle la position de la voix.'marker'
: un repère SSML a été atteint. Utiliserevent.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()
oustop()
et a pas terminé.'cancelled'
: cet énoncé a été mis en file d'attente, puis annulé par un autre appel àspeak()
oustop()
et n'a jamais commencé à parler.'error'
: une erreur propre au moteur s'est produite et cet énoncé ne peut pas être énoncé. Chèqueevent.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. Les deux sont documentés 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 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.
Choisir 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
É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é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 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é ouerror
lorsqu'une autre erreur se produit. Lors de la mise en pause d'une voix, un événementpause
est déclenché si un énoncé particulier est mis en pause au milieu, etresume
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
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 77Le 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 70Le 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
Le critère de sexe est obsolète et est ignoré.
Énumération
"homme"
"femme"
Méthodes
getVoices()
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
TtsVoice[]
Tableau d'objets
tts.TtsVoice
représentant les voix disponibles pour la synthèse vocale.
-
Renvoie
-
Promise<TtsVoice[]>
Chrome 101 et versions ultérieuresLes promesses ne sont compatibles qu'avec Manifest V3 et versions ultérieures. Les autres plates-formes doivent utiliser des rappels.
isSpeaking()
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<boolean>
Chrome 101 et versions ultérieuresLes promesses ne sont compatibles qu'avec Manifest V3 et versions ultérieures. Les autres plates-formes doivent utiliser des rappels.
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()
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érieuresLes promesses ne sont compatibles qu'avec Manifest V3 et versions ultérieures. Les autres plates-formes doivent utiliser des rappels.
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.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