refresh date: 2026-09-25 robots: noindex
Beschrijving
Gebruik de chrome.tts API om gesynthetiseerde tekst-naar-spraak (TTS) af te spelen. Bekijk ook de gerelateerde ttsEngine API, waarmee een extensie een spraakengine kan implementeren.
Rechten
ttsOverzicht
Chrome biedt systeemeigen ondersteuning voor spraak op Windows (met SAPI 5), Mac OS X en ChromeOS, met de mogelijkheden voor spraaksynthese van het besturingssysteem. Op alle platforms kan de gebruiker extensies installeren die zichzelf registreren als alternatieve spraakengines.
Spraak genereren
Bel speak() vanaf je extensie om te spreken. Voorbeeld:
chrome.tts.speak('Hello, world.');
Als je meteen wilt stoppen met praten, bel je stop():
chrome.tts.stop();
Je kunt opties bieden die verschillende eigenschappen van de spraak bepalen, zoals de snelheid en toonhoogte. Voorbeeld:
chrome.tts.speak('Hello, world.', {'rate': 2.0});
Het is ook een goed idee om de taal te specificeren, zodat een synthesizer wordt gekozen die die taal (en het regionale dialect, indien van toepassing) ondersteunt.
chrome.tts.speak('Hello, world.', {'lang': 'en-US', 'rate': 2.0});
Standaard onderbreekt elke aanroep van speak() de lopende spraak en spreekt onmiddellijk. Als je wilt weten of een gesprek iets onderbreekt, kun je isSpeaking() bellen. Daarnaast kun je de optie enqueue gebruiken om deze uiting toe te voegen aan een wachtrij met uitingen die worden uitgesproken nadat de huidige uiting is afgerond.
chrome.tts.speak('Speak this first.');
chrome.tts.speak(
'Speak this next, when the first sentence is done.', {'enqueue': true});
Een volledige beschrijving van alle opties vindt u in de tts.speak hieronder. Niet alle spraakengines ondersteunen alle opties.
Als je fouten wilt opsporen en wilt zorgen dat je speak() correct aanroept, geef je een callbackfunctie door die geen argumenten accepteert. Controleer in de callback runtime.lastError om te zien of er fouten zijn.
chrome.tts.speak(
utterance,
options,
function() {
if (chrome.runtime.lastError) {
console.log('Error: ' + chrome.runtime.lastError.message);
}
}
);
De callback wordt meteen geretourneerd, voordat de engine is begonnen met het genereren van spraak. Het doel van de callback is om je te waarschuwen voor syntaxisfouten in je gebruik van de TTS API, niet om alle mogelijke fouten op te vangen die kunnen optreden tijdens het proces van spraaksynthese en -uitvoer. Als u deze fouten ook wilt onderscheppen, moet u een gebeurtenislistener gebruiken, zoals hieronder beschreven.
Luisteren naar gebeurtenissen
Als je meer realtime informatie wilt over de status van gesynthetiseerde spraak, geef je een gebeurtenislistener door in de opties voor speak(), zoals hier:
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
);
Elke gebeurtenis bevat een gebeurtenistype, de tekenindex van de huidige spraak ten opzichte van de uiting en, voor foutgebeurtenissen, een optionele foutmelding. De gebeurtenistypen zijn:
'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.'interrupted': Deze uiting werd onderbroken door een andere aanroep vanspeak()ofstop()en is niet afgerond.'cancelled': Deze uiting is in de wachtrij geplaatst, maar daarna geannuleerd door een andere aanroep naarspeak()ofstop()en is nooit begonnen met spreken.'error': Er is een enginespecifieke fout opgetreden en deze uiting kan niet worden uitgesproken. Ga naarevent.errorMessagevoor meer informatie.
4 van de gebeurtenistypen ('end', 'interrupted', 'cancelled' en 'error') zijn definitief. Nadat een van die gebeurtenissen is ontvangen, wordt deze uiting niet meer uitgesproken en worden er geen nieuwe gebeurtenissen van deze uiting meer ontvangen.
Sommige stemmen ondersteunen misschien niet alle gebeurtenistypen en sommige stemmen sturen misschien helemaal geen gebeurtenissen. Als je
geen stem wilt gebruiken tenzij deze bepaalde gebeurtenissen stuurt, geef je de vereiste gebeurtenissen door in het
requiredEventTypes-lid van het optieobject of gebruik je getVoices() om een stem te kiezen die aan
je vereisten voldoet. Beide worden hieronder beschreven.
SSML-opmaak
Uitingen die in deze API worden gebruikt, kunnen opmaak bevatten die gebruikmaakt van de Speech Synthesis Markup Language (SSML). Als je SSML gebruikt, moet het eerste argument voor speak() een volledig SSML-document zijn met een XML-header en een <speak>-tag op het hoogste niveau, geen documentfragment.
Voorbeeld:
chrome.tts.speak(
'<?xml version="1.0"?>' +
'<speak>' +
' The <emphasis>second</emphasis> ' +
' word of this sentence was emphasized.' +
'</speak>'
);
Niet alle spraakengines ondersteunen alle SSML-tags en sommige ondersteunen SSML helemaal niet, maar alle engines moeten SSML die ze niet ondersteunen negeren en de onderliggende tekst nog steeds uitspreken.
Een stem kiezen
Chrome kiest standaard de meest geschikte stem voor elke uiting die je wilt uitspreken, op basis van de taal. Op de meeste Windows-, Mac OS X- en ChromeOS-systemen kan de spraaksynthese van het besturingssysteem elke tekst in minstens één taal uitspreken. Sommige gebruikers hebben misschien verschillende stemmen beschikbaar via hun besturingssysteem en via spraakengines die zijn geïmplementeerd door andere Chrome-extensies. In die gevallen kun je aangepaste code implementeren om de juiste stem te kiezen of de gebruiker een lijst met keuzes te tonen.
Als je een lijst met alle stemmen wilt krijgen, roep je getVoices() aan en geef je een functie door die een array van TtsVoice-objecten als argument krijgt:
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);
}
}
);
Typen
EventType
Enum
"start"
"end"
"word"
"sentence"
"marker"
"interrupted"
"cancelled"
"error"
'pauzeren'
"resume"
TtsEvent
Een gebeurtenis van de TTS-engine om de status van een uiting te communiceren.
Eigenschappen
-
charIndex
number optioneel
De index van het huidige teken in de uiting. Voor woordgebeurtenissen wordt de gebeurtenis geactiveerd aan het einde van een woord en vóór het begin van het volgende woord. De
charIndexstaat voor een punt in de tekst aan het begin van het volgende woord dat wordt uitgesproken. -
errorMessage
tekenreeks optioneel
De foutbeschrijving, als het gebeurtenistype
erroris. -
lengte
number optioneel
Chrome 74+De lengte van het volgende deel van de uiting. In een
word-gebeurtenis is dit bijvoorbeeld de lengte van het woord dat als volgende wordt uitgesproken. De waarde wordt ingesteld op -1 als deze niet is ingesteld door de spraakengine. -
type
Het type kan
startzijn zodra de spraak is gestart,wordals een woordgrens is bereikt,sentenceals een zingrens is bereikt,markerals een SSML-markeringselement is bereikt,endals het einde van de uiting is bereikt,interruptedals de uiting wordt gestopt of onderbroken voordat het einde is bereikt,cancelledals de uiting uit de wachtrij wordt verwijderd voordat deze wordt gesynthetiseerd oferrorals er een andere fout optreedt. Als spraak wordt gepauzeerd, wordt eenpause-gebeurtenis geactiveerd als een bepaalde uiting in het midden wordt gepauzeerd enresumeals een uiting de spraak hervat. Gebeurtenissen voor onderbreken en hervatten worden misschien niet geactiveerd als de spraak tussen uitingen wordt onderbroken.
TtsOptions
De spraakopties voor de TTS-engine.
Eigenschappen
-
desiredEventTypes
string[] optioneel
De TTS-gebeurtenistypen waarnaar je wilt luisteren. Als deze ontbreekt, kunnen alle gebeurtenistypen worden gestuurd.
-
in de wachtrij plaatsen
booleaans optioneel
Als dit waar is, wordt deze uiting in de wachtrij geplaatst als TTS al bezig is. Als deze waarde onwaar is (de standaardwaarde), wordt de huidige spraak onderbroken en wordt de spraakwachtrij gewist voordat deze nieuwe uiting wordt uitgesproken.
-
extensionId
tekenreeks optioneel
De extensie-ID van de spraakengine die moet worden gebruikt, indien bekend.
-
gender
VoiceGender optioneel
Beëindigd sinds Chrome 77Gender 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 standaardtoonhoogte van een 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. Waarden onder 0,1 of boven 10,0 zijn strikt niet toegestaan, maar veel stemmen beperken de minimale en maximale snelheden verder. Een bepaalde stem spreekt bijvoorbeeld misschien niet sneller dan 3 keer normaal, zelfs niet als je een waarde groter dan 3,0 invoert.
-
requiredEventTypes
string[] optioneel
De TTS-gebeurtenistypen die de stem moet ondersteunen.
-
voiceName
tekenreeks optioneel
De naam van de stem die moet worden gebruikt voor synthese. Als dit veld leeg is, wordt een beschikbare stem gebruikt.
-
volume
number optioneel
Spreekvolume tussen 0 en 1 inclusief, waarbij 0 het laagst is en 1 het hoogst, met een standaardwaarde van 1,0.
-
onEvent
void optioneel
Deze functie wordt aangeroepen met gebeurtenissen die plaatsvinden tijdens het uitspreken van de uiting.
De functie
onEventziet er zo uit:(event: TtsEvent) => {...}
-
gebeurtenis
De updategebeurtenis van de tekst-naar-spraak-engine die de status van deze uiting aangeeft.
-
TtsVoice
Een beschrijving van een stem die beschikbaar is voor spraaksynthese.
Eigenschappen
-
eventTypes
EventType[] optioneel
Alle typen callbackgebeurtenissen die deze stem kan sturen.
-
extensionId
tekenreeks optioneel
De ID van de extensie die deze stem biedt.
-
gender
VoiceGender optioneel
Beëindigd sinds Chrome 70Gender is beëindigd en wordt genegeerd.
Het gender van deze stem.
-
lang
tekenreeks optioneel
De taal die deze stem ondersteunt, in de vorm taal-regio. Voorbeelden: 'en', 'en-US', 'en-GB', 'zh-CN'.
-
afstandsbediening
booleaans optioneel
Als dit waar is, is de synthese-engine een externe netwerkbron. Dit kan een hogere latentie hebben en bandbreedtekosten met zich meebrengen.
-
voiceName
tekenreeks optioneel
De naam van de stem.
VoiceGender
Gender is beëindigd en wordt genegeerd.
Enum
"male"
"female"
Methoden
getVoices()
chrome.tts.getVoices(
callback?: function,
): Promise<TtsVoice[]>
Haalt een array van alle beschikbare stemmen op.
Parameters
-
callback
functie optioneel
De parameter
callbackziet er zo uit:(voices: TtsVoice[]) => void
-
stemmen
TtsVoice[]
Matrix van
tts.TtsVoice-objecten die de beschikbare stemmen voor spraaksynthese vertegenwoordigen.
-
Retourzendingen
-
Promise<TtsVoice[]>
Chrome 101+Promises worden alleen ondersteund voor Manifest V3 en hoger. Andere platforms moeten callbacks gebruiken.
isSpeaking()
chrome.tts.isSpeaking(
callback?: function,
): Promise<boolean>
Controleert of de engine op dit moment spreekt. In Mac OS X is het resultaat waar wanneer de spraakengine van het systeem spreekt, zelfs als de spraak niet is gestart door Chrome.
Parameters
-
callback
functie optioneel
De parameter
callbackziet er zo uit:(speaking: boolean) => void
-
spreken
booleaans
Waar als er wordt gesproken, anders onwaar.
-
Retourzendingen
-
Promise<boolean>
Chrome 101+Promises worden alleen ondersteund voor Manifest V3 en hoger. Andere platforms moeten callbacks gebruiken.
pause()
chrome.tts.pause(): void
Onderbreekt de spraaksynthese, mogelijk midden in een uiting. Een aanroep om te hervatten of te stoppen, heft de pauze van de spraak op.
resume()
chrome.tts.resume(): void
Als de spraak is onderbroken, wordt de spraak hervat waar deze is gestopt.
speak()
chrome.tts.speak(
utterance: string,
options?: TtsOptions,
callback?: function,
): Promise<void>
Spreekt tekst uit met een tekst-naar-spraak-engine.
Parameters
-
uiting
tekenreeks
De tekst die moet worden uitgesproken, als platte tekst of als een compleet, goed opgemaakt SSML-document. Spraakengines die SSML niet ondersteunen, verwijderen de tags en spreken de tekst uit. De maximale lengte van de tekst is 32.768 tekens.
-
opties
TtsOptions optioneel
De spraakopties.
-
callback
functie optioneel
De parameter
callbackziet er zo uit:() => void
Retourzendingen
-
Promise<void>
Chrome 101+Wordt meteen opgelost, voordat de spraak is afgelopen. Als er een fout optreedt, wordt de promise afgewezen. Gebruik options.onEvent voor gedetailleerdere feedback.
Promises worden alleen ondersteund voor Manifest V3 en hoger. Andere platforms moeten callbacks gebruiken.
stop()
chrome.tts.stop(): void
Stopt de huidige spraak en wist de wachtrij met uitingen die in behandeling zijn. Als de spraak was onderbroken, wordt deze nu hervat voor het volgende gesprek.
Evenementen
onVoicesChanged
chrome.tts.onVoicesChanged.addListener(
callback: function,
)
Wordt aangeroepen als de lijst met tts.TtsVoice die wordt geretourneerd door getVoices is gewijzigd.
Parameters
-
callback
functie
De parameter
callbackziet er zo uit:() => void