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
ttsEngineOverzicht
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. Gebruikevent.charIndexom de huidige spraakpositie te bepalen.'sentence': Er is een zinsgrens bereikt. Gebruikevent.charIndexom de huidige spraakpositie te bepalen.'marker': Er is een SSML-markering bereikt. Gebruikevent.charIndexom 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 inevent.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
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
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
De installatiestatus van een stem.
Enum
"notInstalled"
"installing"
"installed"
'mislukt'
LanguageStatus
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
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
Opties die zijn opgegeven voor de methode tts.speak().
Eigenschappen
-
gender
VoiceGender optioneel
Beëindigd sinds Chrome 92Gender 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
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.
-
source
Type aanvrager.
TtsClientSource
Type aanvrager.
Enum
"chromefeature"
"extension"
VoiceGender
Gender is beëindigd en wordt genegeerd.
Enum
"male"
"female"
Methoden
updateLanguage()
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
-
status
De installatiestatus van de taal.
updateVoices()
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
TtsVoice[]
Matrix van
tts.TtsVoice-objecten die de beschikbare stemmen voor spraaksynthese vertegenwoordigen.
Evenementen
onInstallLanguageRequest
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
callbackziet er zo uit:(requestor: TtsClient, lang: string) => void
-
aanvrager
-
lang
tekenreeks
-
onLanguageStatusRequest
chrome.ttsEngine.onLanguageStatusRequest.addListener(
callback: function,
)
Wordt geactiveerd als een TTS-client de installatiestatus van een taal aanvraagt.
Parameters
-
callback
functie
De parameter
callbackziet er zo uit:(requestor: TtsClient, lang: string) => void
-
aanvrager
-
lang
tekenreeks
-
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
callbackziet 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
callbackziet 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
callbackziet er zo uit:(utterance: string, options: SpeakOptions, sendTtsEvent: function) => void
-
uiting
tekenreeks
-
opties
-
sendTtsEvent
functie
De parameter
sendTtsEventziet 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.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
callbackziet er zo uit:(utterance: string, options: SpeakOptions, audioStreamOptions: AudioStreamOptions, sendTtsAudio: function, sendError: function) => void
-
uiting
tekenreeks
-
opties
-
audioStreamOptions
-
sendTtsAudio
functie
De parameter
sendTtsAudioziet er zo uit:(audioBufferParams: AudioBuffer) => void
-
audioBufferParams
Parameters die een audiobuffer en bijbehorende gegevens bevatten.
-
-
sendError
functie
Chrome 94+De parameter
sendErrorziet 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
callbackziet er zo uit:() => void
onUninstallLanguageRequest
chrome.ttsEngine.onUninstallLanguageRequest.addListener(
callback: function,
)
Wordt geactiveerd als een TTS-client aangeeft dat een taal niet meer nodig is.
Parameters
-
callback
functie
De parameter
callbackziet er zo uit:(requestor: TtsClient, lang: string, uninstallOptions: LanguageUninstallOptions) => void
-
aanvrager
-
lang
tekenreeks
-
uninstallOptions
-