Beschrijving
Gebruik de chrome.tts
API om gesynthetiseerde tekst-naar-spraak (TTS) af te spelen. Zie ook de gerelateerde ttsEngine
API, waarmee een extensie een spraakengine kan implementeren.
Chrome biedt deze mogelijkheid op Windows (met SAPI 5), Mac OS X en ChromeOS, met behulp van spraaksynthesemogelijkheden van het besturingssysteem. Op alle platforms kan de gebruiker extensies installeren die zichzelf registreren als alternatieve spraakengines.
Machtigingen
tts
Concepten en gebruik
Genereer spraak
Bel speak()
vanaf uw toestel om te spreken. Bijvoorbeeld:
chrome.tts.speak('Hello, world.');
Om onmiddellijk te stoppen met spreken, roep je stop()
aan:
chrome.tts.stop();
U kunt opties bieden die verschillende eigenschappen van de spraak regelen, zoals de snelheid, toonhoogte en meer. Bijvoorbeeld:
chrome.tts.speak('Hello, world.', {'rate': 2.0});
Het is ook een goed idee om de taal zo te specificeren dat er een synthesizer wordt gekozen die die taal (en eventueel het regionale dialect) ondersteunt.
chrome.tts.speak('Hello, world.', {'lang': 'en-US', 'rate': 2.0});
Standaard onderbreekt elke oproep om te speak()
alle lopende spraak en spreekt onmiddellijk. Om te bepalen of een oproep iets zou onderbreken, kunt u isSpeaking()
aanroepen. Bovendien kunt u de optie enqueue
gebruiken om ervoor te zorgen dat deze uiting wordt toegevoegd aan een wachtrij met uitingen die zal worden uitgesproken wanneer de huidige uiting is voltooid.
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 onder tts.speak()
. Niet alle spraakengines ondersteunen alle opties.
Om fouten op te sporen en er zeker van te zijn dat u speak()
correct aanroept, geeft u een callback-functie door die geen argumenten nodig heeft. Controleer binnen de callback runtime.lastError
om te zien of er fouten zijn opgetreden.
chrome.tts.speak(
utterance,
options,
function() {
if (chrome.runtime.lastError) {
console.log('Error: ' + chrome.runtime.lastError.message);
}
}
);
De callback keert meteen terug, voordat de engine spraak is gaan genereren. Het doel van de callback is om u te waarschuwen voor syntaxisfouten bij uw gebruik van de TTS API, en niet om alle mogelijke fouten op te vangen die kunnen optreden tijdens het synthetiseren en uitvoeren van spraak. Om deze fouten ook op te vangen, moet u een gebeurtenislistener gebruiken, zoals beschreven in de volgende sectie.
Luister naar evenementen
Om meer realtime informatie te krijgen over de status van gesynthetiseerde spraak, geeft u een gebeurtenislistener door in de opties om speak()
, zoals dit:
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 omvat een gebeurtenistype, de karakterindex van de huidige spraak ten opzichte van de uiting, en voor foutgebeurtenissen een optioneel foutbericht. De gebeurtenistypen zijn:
-
'start'
: De motor is begonnen met het uitspreken van de uitspraak. -
'word'
: Er is een woordgrens bereikt. Gebruikevent.charIndex
om de huidige spraakpositie te bepalen. -
'sentence'
: Er is een zinsgrens bereikt. Gebruikevent.charIndex
om de huidige spraakpositie te bepalen. -
'marker'
: er is een SSML-markering bereikt. Gebruikevent.charIndex
om de huidige spraakpositie te bepalen. -
'end'
: De engine is klaar met het uitspreken van de uiting. -
'interrupted'
: deze uiting werd onderbroken door een andere aanroep omspeak()
ofstop()
en werd niet voltooid. -
'cancelled'
: deze uiting werd in de wachtrij geplaatst, maar vervolgens geannuleerd door een andere aanroep omspeak()
ofstop()
gebruiken en begon helemaal nooit te spreken. -
'error'
: Er is een motorspecifieke fout opgetreden en deze uiting kan niet worden uitgesproken. Controleerevent.errorMessage
voor meer informatie.
Vier van de gebeurtenistypen 'end'
, 'interrupted'
, 'cancelled'
en 'error'
zijn definitief . Nadat een van deze gebeurtenissen is ontvangen, zal deze uiting niet langer spreken en zullen er geen nieuwe gebeurtenissen uit deze uiting worden ontvangen.
Sommige stemmen ondersteunen mogelijk niet alle gebeurtenistypen, en sommige stemmen verzenden mogelijk helemaal geen gebeurtenissen. Als u een stem niet wilt gebruiken, tenzij deze bepaalde gebeurtenissen verzendt, geeft u de benodigde gebeurtenissen door in het requiredEventTypes
lid van het optieobject, of gebruikt u getVoices()
om een stem te kiezen die aan uw vereisten voldoet. Beide worden hieronder beschreven.
SSML-opmaak
Uitingen die in deze API worden gebruikt, kunnen opmaak bevatten met behulp van de Speech Synthesis Markup Language (SSML) . Als u SSML gebruikt, moet het eerste argument voor speak()
een compleet SSML-document zijn met een XML-header en een <speak>
-tag op het hoogste niveau, en niet een documentfragment.
Bijvoorbeeld:
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 mogelijk helemaal niet, maar alle zoekmachines zijn verplicht om SSML's die ze niet ondersteunen te negeren en toch de onderliggende tekst uit te spreken.
Kies een stem
Standaard kiest Chrome de meest geschikte stem voor elke uiting die u wilt uitspreken, op basis van de taal. Op de meeste Windows-, Mac OS X- en ChromeOS-systemen zou de door het besturingssysteem geleverde spraaksynthese elke tekst in ten minste één taal moeten kunnen uitspreken. Sommige gebruikers hebben echter mogelijk een verscheidenheid aan stemmen beschikbaar via hun besturingssysteem en via spraakengines die door andere Chrome-extensies zijn geïmplementeerd. In die gevallen kunt u aangepaste code implementeren om de juiste stem te kiezen, of om de gebruiker een keuzelijst te presenteren.
Om een lijst met alle stemmen te krijgen, roep je getVoices()
aan en geef je deze een functie door die een array van TtsVoice
objecten als argument ontvangt:
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);
}
}
);
Soorten
EventType
Enum
"begin" "einde" "woord" "zin" "markering" "onderbroken" "geannuleerd" "fout" "pauze" "cv"
TtsEvent
Een gebeurtenis van de TTS-engine om de status van een uiting te communiceren.
Eigenschappen
- charIndex
nummer optioneel
De index van het huidige teken in de uiting. Bij woordgebeurtenissen wordt de gebeurtenis geactiveerd aan het einde van het ene woord en vóór het begin van het volgende. De
charIndex
vertegenwoordigt een punt in de tekst aan het begin van het volgende uit te spreken woord. - foutbericht
tekenreeks optioneel
De foutbeschrijving, als het gebeurtenistype
error
is. - lengte
nummer optioneel
Chroom 74+De lengte van het volgende deel van de uiting. Bij een
word
is dit bijvoorbeeld de lengte van het woord dat vervolgens wordt uitgesproken. Het wordt ingesteld op -1 als het niet door de spraakengine wordt ingesteld. - type
Het type kan zijn:
start
zodra de spraak is begonnen,word
wanneer een woordgrens wordt bereikt,sentence
wanneer een zinsgrens wordt bereikt,marker
wanneer een SSML-markeringselement wordt bereikt,end
wanneer het einde van de uiting wordt bereikt,interrupted
wanneer de de uiting wordt gestopt of onderbroken voordat het einde wordt bereikt,cancelled
wanneer deze uit de wachtrij wordt verwijderd voordat deze ooit is gesynthetiseerd, of er treedterror
wanneer er een andere fout optreedt. Bij het pauzeren van spraak wordt eenpause
geactiveerd als een bepaalde uiting halverwege wordt gepauzeerd, enresume
als een uiting de spraak hervat. Houd er rekening mee dat pauze- en hervattingsgebeurtenissen mogelijk niet worden geactiveerd als de spraak tussen uitingen wordt gepauzeerd.
TtsOptions
De spraakopties voor de TTS-engine.
Eigenschappen
- gewenste gebeurtenistypen
tekenreeks[] optioneel
De TTS-gebeurtenistypen waarnaar u geïnteresseerd bent. Als dit ontbreekt, kunnen alle gebeurtenistypen worden verzonden.
- in de rij staan
Booleaans optioneel
Als dit waar is, wordt deze uiting in de wachtrij geplaatst als TTS al bezig is. Indien false (de standaardinstelling), wordt de huidige spraak onderbroken en wordt de spraakwachtrij leeggemaakt voordat deze nieuwe uiting wordt uitgesproken.
- extensieId
tekenreeks optioneel
De extensie-ID van de te gebruiken spraakengine, indien bekend.
- geslacht
VoiceGender optioneel
Verouderd sinds Chrome 77Geslacht is verouderd en wordt genegeerd.
Geslacht van stem voor gesynthetiseerde spraak.
- lang
tekenreeks optioneel
De taal die gebruikt moet worden voor de synthese, in de vorm taalregio . Voorbeelden: 'en', 'en-US', 'en-GB', 'zh-CN'.
- toonhoogte
nummer optioneel
Spreekhoogte tussen 0 en 2, waarbij 0 het laagst is en 2 het hoogst. 1.0 komt overeen met de standaardtoonhoogte van een stem.
- tarief
nummer optioneel
Spreektarief relatief aan het standaardtarief voor deze stem. 1.0 is de standaardsnelheid, normaal gesproken rond de 180 tot 220 woorden per minuut. 2,0 is twee keer zo snel en 0,5 is half zo snel. Waarden onder 0,1 of boven 10,0 zijn ten strengste verboden, maar veel stemmen zullen de minimum- en maximumsnelheden nog verder beperken. Een bepaalde stem spreekt bijvoorbeeld misschien niet sneller dan drie keer normaal, zelfs als u een waarde opgeeft die groter is dan 3,0.
- vereisteEventTypes
tekenreeks[] optioneel
De TTS-gebeurtenistypen die de stem moet ondersteunen.
- stemNaam
tekenreeks optioneel
De naam van de stem die voor synthese moet worden gebruikt. Indien leeg, wordt elke beschikbare stem gebruikt.
- volume
nummer optioneel
Spreekvolume tussen 0 en 1, waarbij 0 het laagst is en 1 het hoogst, met een standaardwaarde van 1,0.
- opEvenement
ongeldig optioneel
Deze functie wordt aangeroepen bij gebeurtenissen die plaatsvinden tijdens het uitspreken van de uiting.
De
onEvent
functie ziet er als volgt uit:(event: TtsEvent) => {...}
- evenement
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
- gebeurtenistypen
Gebeurtenistype [] optioneel
Alle typen terugbelgebeurtenissen die deze stem kan verzenden.
- extensieId
tekenreeks optioneel
De ID van het toestel dat deze stem levert.
- geslacht
VoiceGender optioneel
Verouderd sinds Chrome 70Geslacht is verouderd en wordt genegeerd.
Het geslacht van deze stem.
- lang
tekenreeks optioneel
De taal die deze stem ondersteunt, in de vorm taalregio . Voorbeelden: 'en', 'en-US', 'en-GB', 'zh-CN'.
- op afstand
Booleaans optioneel
Indien waar, is de synthese-engine een externe netwerkbron. Het kan een hogere latentie zijn en er kunnen bandbreedtekosten met zich meebrengen.
- stemNaam
tekenreeks optioneel
De naam van de stem.
VoiceGender
Geslacht is verouderd en wordt genegeerd.
Enum
"mannelijk" "vrouwelijk"
Methoden
getVoices()
chrome.tts.getVoices(
callback?: function,
)
Krijgt een array van alle beschikbare stemmen.
Parameters
- terugbellen
functie optioneel
De
callback
parameter ziet er als volgt uit:(voices: TtsVoice[]) => void
- stemmen
TtsVoice []
Array van
tts.TtsVoice
objecten die de beschikbare stemmen voor spraaksynthese vertegenwoordigen.
Retouren
Beloof < TtsVoice []>
Chroom 101+Beloften worden ondersteund in Manifest V3 en hoger, maar er zijn callbacks beschikbaar voor achterwaartse compatibiliteit. U kunt niet beide gebruiken bij dezelfde functieaanroep. De belofte wordt opgelost met hetzelfde type dat wordt doorgegeven aan de callback.
isSpeaking()
chrome.tts.isSpeaking(
callback?: function,
)
Controleert of de motor momenteel spreekt. Op Mac OS X is het resultaat waar wanneer de spraakengine van het systeem spreekt, zelfs als de spraak niet door Chrome is geïnitieerd.
Parameters
- terugbellen
functie optioneel
De
callback
parameter ziet er als volgt uit:(speaking: boolean) => void
- spreken
Booleaans
Waar als je spreekt, anders onwaar.
Retouren
Beloof<boolean>
Chroom 101+Beloften worden ondersteund in Manifest V3 en hoger, maar er zijn callbacks beschikbaar voor achterwaartse compatibiliteit. U kunt niet beide gebruiken bij dezelfde functieaanroep. De belofte wordt opgelost met hetzelfde type dat wordt doorgegeven aan de callback.
pause()
chrome.tts.pause()
Pauzeert de spraaksynthese, mogelijk midden in een uiting. Een oproep om de spraak te hervatten of te stoppen zal de pauze van de spraak ongedaan maken.
resume()
chrome.tts.resume()
Als de spraak werd onderbroken, wordt het spreken hervat waar het was gebleven.
speak()
chrome.tts.speak(
utterance: string,
options?: TtsOptions,
callback?: function,
)
Spreekt tekst uit met behulp van een tekst-naar-spraak-engine.
Parameters
- uiting
snaar
De uit te spreken tekst, platte tekst of 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.
- terugbellen
functie optioneel
De
callback
parameter ziet er als volgt uit:() => void
Retouren
Beloof <nietig>
Chroom 101+Beloften worden ondersteund in Manifest V3 en hoger, maar er zijn callbacks beschikbaar voor achterwaartse compatibiliteit. U kunt niet beide gebruiken bij dezelfde functieaanroep. De belofte wordt opgelost met hetzelfde type dat wordt doorgegeven aan de callback.
stop()
chrome.tts.stop()
Stopt alle huidige spraak en wist de wachtrij van eventuele openstaande uitingen. Bovendien, als de spraak werd gepauzeerd, wordt deze nu hervat voor de volgende oproep om te spreken.
Evenementen
onVoicesChanged
chrome.tts.onVoicesChanged.addListener(
callback: function,
)
Wordt gebeld wanneer de lijst met tts.TtsVoice
die door getVoices zou worden geretourneerd, is gewijzigd.
Parameters
- terugbellen
functie
De
callback
parameter ziet er als volgt uit:() => void