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 les événements contenant un énoncé à prononcer ainsi que d'autres paramètres lorsqu'une extension ou une application Chrome utilise l'API tts pour générer des paroles. Votre extension peut ensuite utiliser n'importe quelle technologie Web disponible pour synthétiser et émettre le discours, puis renvoyer des événements à la fonction appelante pour signaler l'état.

Autorisations

ttsEngine

Concepts et utilisation

Une extension peut s'enregistrer elle-même en tant que moteur de synthèse vocale. Ainsi, il peut intercepter tout ou partie des appels à des fonctions telles que tts.speak() et tts.stop() et fournissent une autre implémentation. Les extensions peuvent utiliser n'importe quelle technologie Web disponible pour transmettre la voix, y compris le streaming audio. à partir d'un serveur, HTML5. Une extension peut même faire quelque chose de différent avec les énoncés, comme afficher les sous-titres dans une fenêtre pop-up ou les envoyer sous forme de messages de journal à un serveur distant.

Pour implémenter un moteur de synthèse vocale, une extension doit déclarer le moteur "ttsEngine". l'autorisation, puis déclarez toutes qu'il 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 un nombre illimité 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 l'éventualité peu probable où deux extensions enregistrent des voix portant le même nom, un client peut spécifier l'identifiant de l'extension qui doit effectuer la synthèse.

Le paramètre lang est facultatif, mais vivement recommandé. Presque toujours, une voix peut synthétiser la parole dans une seule langue. Lorsqu'un moteur prend en charge plusieurs langues, il peut facilement enregistrer une voix distincte pour chaque langue. Dans de rares cas où une seule voix peut gérer plus d'une langue, il est plus simple de répertorier deux voix distinctes et de les gérer en utilisant la même logique en interne. Toutefois, si vous souhaitez créer une voix capable de gérer les énoncés langue, omettez le paramètre lang dans le fichier manifeste de votre extension.

Enfin, le paramètre event_types est obligatoire si le moteur peut envoyer des événements pour mettre à jour le client sur les progrès de la synthèse vocale. Au minimum, la prise en charge du type d'événement 'end' pour indiquer est vivement recommandé lorsque la lecture est terminée. Sinon, Chrome ne pourra pas programmer d'énoncés 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 pour updateVoices sont en Camel Case ("casse de chameau") : par exemple, voiceName, contrairement au fichier manifeste qui utilise voice_name).

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

  • '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é.
  • 'error': une erreur propre au moteur s'est produite et cet énoncé ne peut pas être énoncé. Réussir plus informations dans event.errorMessage.

Les événements 'interrupted' et 'cancelled' ne sont pas envoyés par le moteur de synthèse vocale. lorsqu'elles sont générées automatiquement par Chrome.

Les clients de synthèse vocale peuvent récupérer les informations vocales dans le fichier manifeste de votre extension en appelant tts.getVoices, en supposant que vous avez enregistré des écouteurs d'événements vocaux comme décrit ci-dessous.

Gérer les événements vocaux

Pour générer du discours à 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 si l'extension accepte les paramètres vocaux indiqués dans son fichier manifeste et si elle a enregistré pour onSpeak et onStop. En d'autres termes, il n'existe aucun moyen pour une extension de requête vocale et décidez de manière dynamique de la gérer ou non.

Types

AudioBuffer

Chrome 92 ou version ultérieure

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. Elle doit avoir une longueur exactement audioStreamOptions.bufferSize et être encodée en mono, à audioStreamOptions.sampleRate, et sous forme de pcm linéaire, float signé 32 bits, c'est-à-dire le type Float32Array en JavaScript.

  • charIndex

    numéro facultatif

    Index de caractères associé à ce tampon audio.

  • isLastBuffer

    Booléen facultatif

    "True" si ce tampon audio est le dernier pour le texte énoncé.

AudioStreamOptions

Chrome 92 ou version ultérieure

Contient le format de flux audio qui devrait être produit par un moteur.

Propriétés

  • bufferSize

    Nombre

    Nombre d'échantillons contenus dans un tampon audio.

  • sampleRate

    Nombre

    Taux d'échantillonnage attendu dans un tampon audio.

SpeakOptions

Chrome 92 ou version ultérieure

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

Propriétés

  • gender (genre)

    VoiceGender facultatif

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

    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 tonalité par défaut de cette 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. Cette valeur sera comprise entre 0,1 et 10, inclus. Lorsqu'une voix n'est pas compatible avec cette plage complète de tarifs, ne renvoyez pas d'erreur. Ajustez plutôt le débit à la plage compatible avec la voix.

  • voiceName

    chaîne facultatif

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

  • 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.

VoiceGender

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

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

Énumération

"homme"

"femme"

Méthodes

updateVoices()

Chrome (version 66 ou ultérieure)
chrome.ttsEngine.updateVoices(
  voices: TtsVoice[],
)

Appelée 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

onPause

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

Facultatif: si un moteur accepte l'événement de pause, il doit mettre en pause l'énoncé actuel, 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 "Mis en pause".

Paramètres

  • rappel

    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 accepter l'événement de reprise afin de pouvoir continuer à énoncer l'énoncé actuel, le cas échéant. Notez qu'un événement d'arrêt doit également effacer l'état "Mis en pause".

Paramètres

  • rappel

    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 options.

Paramètres

  • rappel

    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 cet énoncé.

onSpeakWithAudioStream

Chrome 92 ou version ultérieure
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 options. À la différence de ttsEngine.onSpeak, Chrome fournit des services de lecture audio et gère l'envoi d'événements tts.

Paramètres

  • rappel

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

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

      (errorMessage?: string) => void

      • Message d'erreur

        chaîne facultatif

        Chaîne décrivant l'erreur.

onStop

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

Déclenché lorsqu'un appel est passé à tts.stop et que cette extension est peut-être en train de parler. Si une extension reçoit un appel à onStop et que la parole est déjà arrêtée, elle ne devrait rien faire (et ne pas générer d'erreur). Si la parole est à l'état "Suspendue", cela devrait annuler la mise en pause.

Paramètres

  • rappel

    fonction

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

    () => void