chrome.ttsEngine

Description

Utilisez l'API chrome.ttsEngine pour implémenter un moteur de synthèse vocale à l'aide d'une extension. Si votre extension s'enregistre à l'aide de cette API, elle recevra des événements contenant un énoncé à prononcer et d'autres paramètres lorsqu'une extension ou une application Chrome utilise l'API tts pour générer de la parole. Votre extension peut ensuite utiliser n'importe quelle technologie Web disponible pour synthétiser et générer la parole, et renvoyer des événements à la fonction appelante pour signaler l'état.

Autorisations

ttsEngine

Concepts et utilisation

Une extension peut s'enregistrer en tant que moteur vocal. Il peut ainsi intercepter tout ou partie des appels aux fonctions telles que tts.speak() et tts.stop() et fournir une implémentation alternative. Les extensions sont libres d'utiliser n'importe quelle technologie Web disponible pour fournir la parole, y compris le streaming audio à partir d'un serveur ou l'audio HTML5. Une extension peut même effectuer une autre action avec les énoncés, comme afficher des sous-titres dans un pop-up ou les envoyer en tant que messages de journaux à un serveur distant.

Pour implémenter un moteur TTS, une extension doit déclarer l'autorisation "ttsEngine", puis déclarer toutes les voix qu'elle fournit dans le fichier manifeste de l'extension, comme ceci :

{
  "name": "My TTS Engine",
  "version": "1.0",
  "permissions": ["ttsEngine"],
  "tts_engine": {
    "voices": [
      {
        "voice_name": "Alice",
        "lang": "en-US",
        "event_types": ["start", "marker", "end"]
      },
      {
        "voice_name": "Pat",
        "lang": "en-US",
        "event_types": ["end"]
      }
    ]
  },
  "background": {
    "page": "background.html",
    "persistent": false
  }
}

Une extension peut spécifier n'importe quel nombre de voix.

Le paramètre voice_name est obligatoire. Le nom doit être suffisamment descriptif pour identifier le nom de la voix et le moteur utilisé. Dans le cas peu probable où deux extensions enregistreraient des voix portant le même nom, un client peut spécifier l'ID de l'extension qui doit effectuer la synthèse.

Le paramètre lang est facultatif, mais vivement recommandé. Presque toujours, une voix ne peut synthétiser la parole que dans une seule langue. Lorsqu'un moteur est compatible avec plusieurs langues, il peut facilement enregistrer une voix distincte pour chaque langue. Dans de rares cas où une seule voix peut gérer plusieurs langues, il est plus simple de lister deux voix distinctes et de les gérer avec la même logique en interne. Toutefois, si vous souhaitez créer une voix qui gère les énoncés dans n'importe quelle langue, omettez le paramètre lang du fichier manifeste de votre extension.

Enfin, le paramètre event_types est obligatoire si le moteur peut envoyer des événements pour informer le client de la progression de la synthèse vocale. Il est fortement recommandé de prendre en charge au minimum le type d'événement 'end' pour indiquer quand la synthèse vocale est terminée. Sans cela, Chrome ne peut pas planifier les énoncés mis en file d'attente.

Une fois chargée, une extension peut remplacer la liste des voix déclarées en appelant chrome.ttsEngine.updateVoices. (Notez que les paramètres utilisés dans l'appel programmatique à updateVoices sont en camel case, par exemple voiceName, contrairement au fichier manifeste qui utilise voice_name.)

Les types d'événements que vous pouvez envoyer correspondent aux types d'événements que reçoit la méthode speak() :

  • '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 parole.
  • 'sentence' : une limite de phrase a été atteinte. Utilisez event.charIndex pour déterminer la position actuelle de la parole.
  • 'marker' : un marqueur SSML a été atteint. Utilisez event.charIndex pour déterminer la position actuelle de la parole.
  • 'end' : le moteur a fini de prononcer l'énoncé.
  • 'error' : une erreur spécifique au moteur s'est produite et cette expression ne peut pas être prononcée. Transmettez plus d'informations dans event.errorMessage.

Les événements 'interrupted' et 'cancelled' ne sont pas envoyés par le moteur vocal. Ils sont générés automatiquement par Chrome.

Les clients de synthèse vocale peuvent obtenir les informations vocales à partir du fichier manifeste de votre extension en appelant tts.getVoices, en supposant que vous ayez enregistré des écouteurs d'événements vocaux comme décrit ci-dessous.

Gérer les événements vocaux

Pour générer de la parole à la demande des clients, votre extension doit enregistrer des écouteurs pour onSpeak et onStop, comme ceci :

const speakListener = (utterance, options, sendTtsEvent) => {
  sendTtsEvent({type: 'start', charIndex: 0})

  // (start speaking)

  sendTtsEvent({type: 'end', charIndex: utterance.length})
};

const stopListener = () => {
  // (stop all speech)
};

chrome.ttsEngine.onSpeak.addListener(speakListener);
chrome.ttsEngine.onStop.addListener(stopListener);

La décision d'envoyer ou non une requête vocale donnée à une extension dépend uniquement de la prise en charge des paramètres vocaux donnés dans son fichier manifeste et de l'enregistrement d'écouteurs pour onSpeak et onStop. En d'autres termes, une extension ne peut pas recevoir de requête vocale et décider de manière dynamique si elle doit la traiter.

Types

AudioBuffer

Chrome 92 et versions ultérieures

Paramètres contenant un tampon audio et les données associées.

Propriétés

  • audioBuffer

    ArrayBuffer

    Tampon audio du moteur de synthèse vocale. Il doit avoir une longueur exactement égale à audioStreamOptions.bufferSize et être encodé en mono, à audioStreamOptions.sampleRate, et en PCM linéaire, float signé 32 bits, c'est-à-dire le type Float32Array en JavaScript.

  • charIndex

    number facultatif

    Index du caractère associé à ce tampon audio.

  • isLastBuffer

    booléen facultatif

    Valeur "true" si ce tampon audio est le dernier pour le texte prononcé.

AudioStreamOptions

Chrome 92 et versions ultérieures

Contient le format du flux audio que le moteur est censé produire.

Propriétés

  • bufferSize

    nombre

    Nombre d'échantillons dans un tampon audio.

  • sampleRate

    nombre

    Taux d'échantillonnage attendu dans un tampon audio.

LanguageInstallStatus

Chrome 132 et versions ultérieures

État d'installation d'une voix.

Énumération

"notInstalled"

"installing"

"installed"

"failed"

LanguageStatus

Chrome 132 et versions ultérieures

État d'installation d'une langue.

Propriétés

  • erreur

    chaîne facultatif

    Informations détaillées sur les échecs d'installation. Renseigné de manière facultative si la langue n'a pas pu être installée.

  • installStatus

    État de l'installation.

  • lang

    chaîne

    Chaîne de langue sous la forme « code de langue-code de région », où la région peut être omise. Par exemple, "en", "en-AU" ou "zh-CH".

LanguageUninstallOptions

Chrome 132 et versions ultérieures

Options de désinstallation d'une langue donnée.

Propriétés

  • uninstallImmediately

    booléen

    True si le client de synthèse vocale souhaite que la langue soit immédiatement désinstallée. Le moteur peut choisir de désinstaller la langue ou non, et à quel moment, en fonction de ce paramètre et des informations sur le demandeur. Si la valeur est "false", d'autres critères peuvent être utilisés, comme l'utilisation récente, pour déterminer quand désinstaller l'application.

SpeakOptions

Chrome 92 et versions ultérieures

Options spécifiées pour la méthode tts.speak().

Propriétés

  • gender (genre)

    VoiceGender facultatif

    Obsolète depuis Chrome 92

    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 (0 étant la plus basse et 2 la plus haute). La valeur 1,0 correspond à la hauteur par défaut de cette voix.

  • vitesse de réaction

    number facultatif

    Débit vocal par rapport au débit par défaut de cette voix. 1,0 est le débit par défaut, qui correspond généralement à environ 180 à 220 mots par minute. La valeur 2,0 est deux fois plus rapide et la valeur 0,5 est deux fois moins rapide. Cette valeur est garantie d'être comprise entre 0,1 et 10,0 (inclus). Lorsqu'une voix ne prend pas en charge cette gamme complète de débits, ne renvoyez pas d'erreur. À la place, définissez le débit sur la plage compatible avec la voix.

  • voiceName

    chaîne facultatif

    Nom de la voix à utiliser pour la synthèse.

  • volume

    number facultatif

    Volume de la voix compris entre 0 et 1 (inclus), où 0 correspond au volume le plus faible et 1 au volume le plus élevé (la valeur par défaut est 1, 0).

TtsClient

Chrome 131 et versions ultérieures

Identifiant du client qui demande l'état.

Propriétés

  • id

    chaîne

    Client effectuant une demande de gestion des langues. Pour une extension, il s'agit de l'ID unique de l'extension. Pour les fonctionnalités Chrome, il s'agit du nom lisible de la fonctionnalité.

  • Type de demandeur.

TtsClientSource

Chrome 131 et versions ultérieures

Type de demandeur.

Énumération

"chromefeature"

"extension"

VoiceGender

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

Le genre est obsolète et sera ignoré.

Énumération

"male"

"female"

Méthodes

updateLanguage()

Chrome 132 et versions ultérieures
chrome.ttsEngine.updateLanguage(
  status: LanguageStatus,
)
: void

Appelé par un moteur lorsqu'une installation de langue est tentée et lorsqu'une langue est désinstallée. Également appelé en réponse à une demande d'état d'un client. Lorsqu'une voix est installée ou désinstallée, le moteur doit également appeler ttsEngine.updateVoices pour enregistrer la voix.

Paramètres

updateVoices()

Chrome 66 et versions ultérieures
chrome.ttsEngine.updateVoices(
  voices: TtsVoice[],
)
: void

Appelé par un moteur pour mettre à jour sa liste de voix. Cette liste remplace toutes les voix déclarées dans le fichier manifeste de cette extension.

Paramètres

  • voix

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

Événements

onInstallLanguageRequest

Chrome 131 et versions ultérieures
chrome.ttsEngine.onInstallLanguageRequest.addListener(
  callback: function,
)

Déclenché lorsqu'un client TTS demande à installer une nouvelle langue. Le moteur doit essayer de télécharger et d'installer la langue, puis appeler ttsEngine.updateLanguage avec le résultat. En cas de réussite, le moteur doit également appeler ttsEngine.updateVoices pour enregistrer les nouvelles voix disponibles.

Paramètres

  • callback

    fonction

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

    (requestor: TtsClient, lang: string) => void

onLanguageStatusRequest

Chrome 132 et versions ultérieures
chrome.ttsEngine.onLanguageStatusRequest.addListener(
  callback: function,
)

Déclenché lorsqu'un client TTS demande l'état d'installation d'une langue.

Paramètres

  • callback

    fonction

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

    (requestor: TtsClient, lang: string) => void

onPause

chrome.ttsEngine.onPause.addListener(
  callback: function,
)

Facultatif : Si un moteur prend en charge l'événement de pause, il doit mettre en pause l'énoncé en cours, le cas échéant, jusqu'à ce qu'il reçoive un événement de reprise ou d'arrêt. Notez qu'un événement d'arrêt doit également effacer l'état de pause.

Paramètres

  • callback

    fonction

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

    () => void

onResume

chrome.ttsEngine.onResume.addListener(
  callback: function,
)

Facultatif : Si un moteur prend en charge l'événement de pause, il doit également prendre en charge l'événement de reprise pour continuer à prononcer l'énoncé actuel, le cas échéant. Notez qu'un événement d'arrêt doit également effacer l'état de pause.

Paramètres

  • callback

    fonction

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

    () => void

onSpeak

chrome.ttsEngine.onSpeak.addListener(
  callback: function,
)

Appelée lorsque l'utilisateur appelle tts.speak() et que l'une des voix du fichier manifeste de cette extension est la première à correspondre à l'objet d'options.

Paramètres

  • callback

    fonction

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

    (utterance: string, options: SpeakOptions, sendTtsEvent: function) => void

    • énoncé

      chaîne

    • options
    • sendTtsEvent

      fonction

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

      (event: tts.TtsEvent) => void

      • événement

        Événement du moteur de synthèse vocale indiquant l'état de cette énonciation.

onSpeakWithAudioStream

Chrome 92 et versions ultérieures
chrome.ttsEngine.onSpeakWithAudioStream.addListener(
  callback: function,
)

Appelée lorsque l'utilisateur appelle tts.speak() et que l'une des voix du fichier manifeste de cette extension est la première à correspondre à l'objet d'options. Diffère de ttsEngine.onSpeak en ce que Chrome fournit des services de lecture audio et gère l'envoi des événements tts.

Paramètres

  • callback

    fonction

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

    (utterance: string, options: SpeakOptions, audioStreamOptions: AudioStreamOptions, sendTtsAudio: function, sendError: function) => void

    • énoncé

      chaîne

    • options
    • audioStreamOptions
    • sendTtsAudio

      fonction

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

      (audioBufferParams: AudioBuffer) => void

      • audioBufferParams

        Paramètres contenant un tampon audio et les données associées.

    • sendError

      fonction

      Chrome 94 et versions ultérieures

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

      (errorMessage?: string) => void

      • errorMessage

        chaîne facultatif

        Chaîne décrivant l'erreur.

onStop

chrome.ttsEngine.onStop.addListener(
  callback: function,
)

Déclenché lorsqu'un appel est effectué vers tts.stop et que cette extension est peut-être en train de parler. Si une extension reçoit un appel à onStop et que la synthèse vocale est déjà arrêtée, elle ne doit rien faire (ne pas générer d'erreur). Si la synthèse vocale est en pause, cette action doit annuler la pause.

Paramètres

  • callback

    fonction

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

    () => void

onUninstallLanguageRequest

Chrome 132 et versions ultérieures
chrome.ttsEngine.onUninstallLanguageRequest.addListener(
  callback: function,
)

Déclenché lorsqu'un client TTS indique qu'une langue n'est plus nécessaire.

Paramètres