chrome.ttsEngine

refresh date: 2026-09-25 robots: noindex

Beschrijving

Gebruik de chrome.ttsEngine API om een tekst-naar-spraak-engine(TTS) te implementeren met een extensie. Als je extensie zich registreert met deze API, krijgt deze gebeurtenissen met een uitspraak die moet worden uitgesproken en andere parameters als een extensie of Chrome-app de tts API gebruikt om spraak te genereren. Je extensie kan dan elke beschikbare webtechnologie gebruiken om de spraak te synthetiseren en uit te voeren, en gebeurtenissen terug te sturen naar de aanroepende functie om de status te melden.

Rechten

ttsEngine

Overzicht

Een extensie kan zichzelf registreren als spraakengine. Zo kan de app sommige of alle aanroepen naar functies zoals tts.speak en tts.stop onderscheppen en een alternatieve implementatie bieden. Extensies kunnen elke beschikbare webtechnologie gebruiken om spraak te bieden, waaronder streaming audio van een server en HTML5-audio. Een extensie kan zelfs iets anders doen met de uitingen, zoals ondertiteling tonen in een pop-upvenster of ze als logboekberichten naar een externe server sturen.

Manifest

Als je een TTS-engine wilt implementeren, moet een extensie het recht ttsEngine definiëren en daarna alle stemmen die de extensie biedt, definiëren in het extensiemanifest, zoals hier:

{
  "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
  }
}

Een extensie kan een onbeperkt aantal stemmen specificeren.

De parameter voice_name is vereist. De naam moet beschrijvend genoeg zijn om de naam van de stem en de gebruikte engine te identificeren. In het onwaarschijnlijke geval dat 2 extensies stemmen met dezelfde naam registreren, kan een client de ID van de extensie specificeren die de synthese moet uitvoeren.

De parameter lang is optioneel, maar wordt sterk aanbevolen. Een stem kan bijna altijd maar in één taal spraak synthetiseren. Als een engine meerdere talen ondersteunt, kan deze makkelijk een afzonderlijke stem voor elke taal registreren. In zeldzame gevallen waarin één stem meer dan één taal kan verwerken, is het het makkelijkst om gewoon twee afzonderlijke stemmen te vermelden en deze intern met dezelfde logica te verwerken. Als je echter een stem wilt maken die uitingen in elke taal kan verwerken, laat je de parameter lang weg uit het manifest van je extensie.

Tot slot is de parameter event_types vereist als de engine gebeurtenissen kan sturen om de client te updaten over de voortgang van de spraaksynthese. We raden je sterk aan om minimaal het gebeurtenistype 'end' te ondersteunen om aan te geven wanneer de spraak is afgelopen. Anders kan Chrome geen uitingen in de wachtrij plannen.

Nadat een extensie is geladen, kan deze de lijst met gedeclareerde stemmen vervangen door chrome.ttsEngine.updateVoices aan te roepen. (De parameters die worden gebruikt in de programmatic aanroep naar updateVoices, zijn in camelCase: bijvoorbeeld voiceName, in tegenstelling tot het manifestbestand dat voice_name gebruikt.)

De mogelijke gebeurtenistypen die u kunt sturen, komen overeen met de gebeurtenistypen die de methode speak() ontvangt:

  • 'start': De engine is begonnen met de uiting uit te spreken.
  • 'word': Er is een woordgrens bereikt. Gebruik event.charIndex om de huidige spraakpositie te bepalen.
  • 'sentence': Er is een zinsgrens bereikt. Gebruik event.charIndex om de huidige spraakpositie te bepalen.
  • 'marker': Er is een SSML-markering bereikt. Gebruik event.charIndex om de huidige spraakpositie te bepalen.
  • 'end': De engine is klaar met de uiting.
  • 'error': Er is een enginespecifieke fout opgetreden en deze uiting kan niet worden uitgesproken. Geef meer informatie door in event.errorMessage.

De gebeurtenissen 'interrupted' en 'cancelled' worden niet verstuurd door de spraakengine, maar worden automatisch gegenereerd door Chrome.

Tekst-naar-spraak-clients kunnen de spraakinformatie uit het manifest van je extensie ophalen door tts.getVoices aan te roepen, ervan uitgaande dat je listeners voor spraakgebeurtenissen hebt geregistreerd zoals hieronder beschreven.

Spraakgebeurtenissen verwerken

Als je spraak wilt genereren op verzoek van clients, moet je extensie listeners registreren voor zowel onSpeak als onStop, zoals hier:

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);

De beslissing om een bepaald spraakverzoek wel of niet naar een extensie te sturen, is uitsluitend gebaseerd op de vraag of de extensie de gegeven spraakparameters in het manifest ondersteunt en geregistreerde listeners heeft voor onSpeak en onStop. Met andere woorden: een extensie kan geen spraakverzoek krijgen en dynamisch beslissen of het verzoek wordt verwerkt.

Typen

AudioBuffer

Chrome 92+

Parameters die een audiobuffer en bijbehorende gegevens bevatten.

Eigenschappen

  • audioBuffer

    ArrayBuffer

    De audiobuffer van de tekst-naar-spraak-engine. De lengte moet exact audioStreamOptions.bufferSize zijn en gecodeerd als mono, met audioStreamOptions.sampleRate, en als lineaire pcm, 32-bits float met teken, d.w.z. het type Float32Array in javascript.

  • charIndex

    number optioneel

    De tekenindex die aan deze audiobuffer is gekoppeld.

  • isLastBuffer

    booleaans optioneel

    Waar als deze audiobuffer de laatste is voor de tekst die wordt uitgesproken.

AudioStreamOptions

Chrome 92+

Bevat de indeling van de audiostream die naar verwachting door een engine wordt geproduceerd.

Eigenschappen

  • bufferSize

    getal

    Het aantal samples in een audiobuffer.

  • sampleRate

    getal

    De verwachte samplingsnelheid in een audiobuffer.

LanguageInstallStatus

Chrome 132+

De installatiestatus van een stem.

Enum

"notInstalled"

"installing"

"installed"

'mislukt'

LanguageStatus

Chrome 132+

Installatiestatus van een taal.

Eigenschappen

  • fout

    tekenreeks optioneel

    Informatie over installatiefouten. Optioneel ingevuld als de taal niet kan worden geïnstalleerd.

  • installStatus

    Installatiestatus.

  • lang

    tekenreeks

    Taaltekenreeks in de vorm van taalcode-regiocode, waarbij de regio kan worden weggelaten. Voorbeelden zijn nl, nl-BE, zh-CH.

LanguageUninstallOptions

Chrome 132+

Opties om een bepaalde taal te verwijderen.

Eigenschappen

  • uninstallImmediately

    booleaans

    Waar als de TTS-client wil dat de taal onmiddellijk wordt verwijderd. De engine kan kiezen of en wanneer de taal moet worden verwijderd, op basis van deze parameter en de informatie van de aanvrager. Als je dit beleid instelt op False, kan het andere criteria gebruiken, zoals recent gebruik, om te bepalen wanneer de app moet worden verwijderd.

SpeakOptions

Chrome 92+

Opties die zijn opgegeven voor de methode tts.speak().

Eigenschappen

  • gender

    VoiceGender optioneel

    Beëindigd sinds Chrome 92

    Gender is beëindigd en wordt genegeerd.

    Gender van de stem voor gesynthetiseerde spraak.

  • lang

    tekenreeks optioneel

    De taal die moet worden gebruikt voor synthese, in de vorm taal-regio. Voorbeelden: 'en', 'en-US', 'en-GB', 'zh-CN'.

  • pitch

    number optioneel

    Spreektoonhoogte tussen 0 en 2, waarbij 0 de laagste en 2 de hoogste is. 1.0 komt overeen met de standaard toonhoogte van deze stem.

  • reactiesnelheid

    number optioneel

    Spreeksnelheid ten opzichte van de standaardsnelheid voor deze stem. 1.0 is de standaardsnelheid, normaal gesproken ongeveer 180 tot 220 woorden per minuut. 2.0 is 2 keer zo snel en 0.5 is half zo snel. Deze waarde ligt gegarandeerd tussen 0,1 en 10,0 (inclusief). Als een stem dit volledige bereik van snelheden niet ondersteunt, retourneer je geen fout. Beperk in plaats daarvan de snelheid tot het bereik dat de stem ondersteunt.

  • voiceName

    tekenreeks optioneel

    De naam van de stem die moet worden gebruikt voor synthese.

  • volume

    number optioneel

    Spreekvolume tussen 0 en 1 inclusief, waarbij 0 het laagst is en 1 het hoogst, met een standaardwaarde van 1,0.

TtsClient

Chrome 131+

ID voor de client die de status aanvraagt.

Eigenschappen

  • id

    tekenreeks

    Klant die een verzoek voor taalbeheer indient. Voor een extensie is dit de unieke extensie-ID. Voor Chrome-functies is dit de door mensen leesbare naam van de functie.

  • Type aanvrager.

TtsClientSource

Chrome 131+

Type aanvrager.

Enum

"chromefeature"

"extension"

VoiceGender

Chrome 54+ Beëindigd sinds Chrome 70

Gender is beëindigd en wordt genegeerd.

Enum

"male"

"female"

Methoden

updateLanguage()

Chrome 132+
chrome.ttsEngine.updateLanguage(
  status: LanguageStatus,
)
: void

Wordt aangeroepen door een engine als een taalinstallatie wordt geprobeerd en als een taal wordt verwijderd. Wordt ook aangeroepen als reactie op een statusverzoek van een client. Als een stem wordt geïnstalleerd of verwijderd, moet de engine ook ttsEngine.updateVoices aanroepen om de stem te registreren.

Parameters

updateVoices()

Chrome 66+
chrome.ttsEngine.updateVoices(
  voices: TtsVoice[],
)
: void

Aangeroepen door een engine om de lijst met stemmen te updaten. Deze lijst overschrijft alle stemmen die zijn gedefinieerd in het manifest van deze extensie.

Parameters

  • stemmen

    Matrix van tts.TtsVoice-objecten die de beschikbare stemmen voor spraaksynthese vertegenwoordigen.

Evenementen

onInstallLanguageRequest

Chrome 131+
chrome.ttsEngine.onInstallLanguageRequest.addListener(
  callback: function,
)

Wordt geactiveerd als een TTS-client een verzoek indient om een nieuwe taal te installeren. De engine moet proberen de taal te downloaden en te installeren en ttsEngine.updateLanguage aanroepen met het resultaat. Als dit lukt, moet de engine ook ttsEngine.updateVoices aanroepen om de nieuwe beschikbare stemmen te registreren.

Parameters

  • callback

    functie

    De parameter callback ziet er zo uit:

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

onLanguageStatusRequest

Chrome 132+
chrome.ttsEngine.onLanguageStatusRequest.addListener(
  callback: function,
)

Wordt geactiveerd als een TTS-client de installatiestatus van een taal aanvraagt.

Parameters

  • callback

    functie

    De parameter callback ziet er zo uit:

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

onPause

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

Optioneel: Als een engine de pauzegebeurtenis ondersteunt, moet deze de huidige uiting die wordt uitgesproken, pauzeren, totdat deze een hervattingsgebeurtenis of stopgebeurtenis krijgt. Een stopgebeurtenis moet ook de status Onderbroken wissen.

Parameters

  • callback

    functie

    De parameter callback ziet er zo uit:

    () => void

onResume

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

Optioneel: Als een engine de pauzegebeurtenis ondersteunt, moet deze ook de hervattingsgebeurtenis ondersteunen om de huidige uiting voort te zetten, indien van toepassing. Een stopgebeurtenis moet ook de status Onderbroken wissen.

Parameters

  • callback

    functie

    De parameter callback ziet er zo uit:

    () => void

onSpeak

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

Wordt aangeroepen wanneer de gebruiker tts.speak() aanroept en een van de stemmen uit het manifest van deze extensie de eerste is die overeenkomt met het optieobject.

Parameters

  • callback

    functie

    De parameter callback ziet er zo uit:

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

    • uiting

      tekenreeks

    • opties
    • sendTtsEvent

      functie

      De parameter sendTtsEvent ziet er zo uit:

      (event: tts.TtsEvent) => void

      • gebeurtenis

        De gebeurtenis van de tekst-naar-spraak-engine die de status van deze uiting aangeeft.

onSpeakWithAudioStream

Chrome 92+
chrome.ttsEngine.onSpeakWithAudioStream.addListener(
  callback: function,
)

Wordt aangeroepen wanneer de gebruiker tts.speak() aanroept en een van de stemmen uit het manifest van deze extensie de eerste is die overeenkomt met het optieobject. Verschilt van ttsEngine.onSpeak omdat Chrome services voor audio afspelen biedt en de verzending van tts-gebeurtenissen afhandelt.

Parameters

  • callback

    functie

    De parameter callback ziet er zo uit:

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

    • uiting

      tekenreeks

    • opties
    • audioStreamOptions
    • sendTtsAudio

      functie

      De parameter sendTtsAudio ziet er zo uit:

      (audioBufferParams: AudioBuffer) => void

      • audioBufferParams

        Parameters die een audiobuffer en bijbehorende gegevens bevatten.

    • sendError

      functie

      Chrome 94+

      De parameter sendError ziet er zo uit:

      (errorMessage?: string) => void

      • errorMessage

        tekenreeks optioneel

        Een tekenreeks die de fout beschrijft.

onStop

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

Wordt geactiveerd als er een aanroep wordt gedaan naar tts.stop en deze extensie misschien bezig is met spreken. Als een extensie een aanroep naar onStop krijgt en de spraak al is gestopt, hoeft de extensie niets te doen (geen foutmelding geven). Als de spraak is onderbroken, moet de onderbroken status worden geannuleerd.

Parameters

  • callback

    functie

    De parameter callback ziet er zo uit:

    () => void

onUninstallLanguageRequest

Chrome 132+
chrome.ttsEngine.onUninstallLanguageRequest.addListener(
  callback: function,
)

Wordt geactiveerd als een TTS-client aangeeft dat een taal niet meer nodig is.

Parameters