Beschrijving
Gebruik de chrome.ttsEngine
API om een tekst-naar-spraak-engine (TTS) te implementeren met behulp van een extensie. Als uw extensie zich registreert met behulp van deze API, ontvangt deze gebeurtenissen met een uiting die moet worden uitgesproken en andere parameters wanneer een extensie of Chrome-app de tts
API gebruikt om spraak te genereren. Uw toestel kan vervolgens elke beschikbare webtechnologie gebruiken om de spraak te synthetiseren en uit te voeren, en gebeurtenissen terug te sturen naar de belfunctie om de status te rapporteren.
Machtigingen
ttsEngine
Overzicht
Een toestel kan zichzelf registreren als spraakengine. Door dit te doen kan het sommige of alle oproepen naar functies zoals tts.speak
en tts.stop
onderscheppen en een alternatieve implementatie bieden. Extensies zijn gratis om elke beschikbare webtechnologie te gebruiken om spraak te leveren, inclusief streaming audio vanaf een server, HTML5-audio. Een extensie zou zelfs iets anders kunnen doen met de uitingen, zoals het weergeven van ondertitels in een pop-upvenster of deze als logberichten naar een externe server sturen.
Manifest
Om een TTS-engine te implementeren, moet een extensie de machtiging "ttsEngine" declareren en vervolgens alle stemmen die deze biedt in het extensiemanifest declareren, zoals dit:
{
"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 toestel kan een willekeurig aantal stemmen specificeren.
De parameter voice_name
is vereist. De naam moet beschrijvend genoeg zijn zodat deze de naam van de stem en de gebruikte engine identificeert. In het onwaarschijnlijke geval dat twee extensies stemmen met dezelfde naam registreren, kan een cliënt de ID opgeven van de extensie die de synthese moet uitvoeren.
De parameter lang
is optioneel, maar wordt ten zeerste aanbevolen. Bijna altijd kan een stem spraak in slechts één taal synthetiseren. Wanneer een engine meer dan één taal ondersteunt, kan deze eenvoudig voor elke taal een aparte stem registreren. Onder zeldzame omstandigheden waarin een enkele stem meer dan één taal kan verwerken, is het het gemakkelijkst om gewoon twee afzonderlijke stemmen op te sommen en deze intern met dezelfde logica af te handelen. Als u echter een stem wilt maken die uitingen in welke taal dan ook afhandelt, laat dan de parameter lang
weg uit het manifest van uw extensie.
Ten slotte is de parameter event_types
vereist als de engine gebeurtenissen kan verzenden om de client op de hoogte te houden van de voortgang van de spraaksynthese. Het wordt ten zeerste aanbevolen om het gebeurtenistype 'end'
te ondersteunen om aan te geven wanneer de spraak is afgelopen, anders kan Chrome geen uitingen in de wachtrij plannen.
Eenmaal geladen kan een extensie de lijst met gedeclareerde stemmen vervangen door chrome.ttsEngine.updateVoices
aan te roepen. (Merk op dat de parameters die worden gebruikt in de programmatische aanroep om updateVoices
in camel-hoofdlettergebruik te hebben: bijvoorbeeld voiceName
, in tegenstelling tot het manifestbestand dat voice_name
gebruikt.)
De mogelijke gebeurtenistypen die u kunt verzenden, komen overeen met de gebeurtenistypen die de methode speak()
ontvangt:
-
'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. -
'error'
: Er is een motorspecifieke fout opgetreden en deze uiting kan niet worden uitgesproken. Geef meer informatie door inevent.errorMessage
.
De 'interrupted'
en 'cancelled'
gebeurtenissen worden niet door de spraakengine verzonden; ze worden automatisch gegenereerd door Chrome.
Tekst-naar-spraak-clients kunnen de steminformatie uit het manifest van uw extensie halen door tts.getVoices
aan te roepen, ervan uitgaande dat u luisteraars voor spraakgebeurtenissen hebt geregistreerd, zoals hieronder wordt beschreven.
Spraakgebeurtenissen afhandelen
Om spraak te genereren op verzoek van clients, moet uw toestel luisteraars 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 al dan niet naar een toestel te sturen, wordt uitsluitend gebaseerd op de vraag of het toestel de gegeven stemparameters in zijn manifest ondersteunt en geregistreerde luisteraars heeft voor onSpeak
en onStop
. Met andere woorden: een toestel kan op geen enkele manier een spraakverzoek ontvangen en dynamisch beslissen of het wordt afgehandeld.
Soorten
AudioBuffer
Parameters die een audiobuffer en bijbehorende gegevens bevatten.
Eigenschappen
- audioBuffer
ArrayBuffer
De audiobuffer van de tekst-naar-spraak-engine. Het moet een exacte lengte hebben van audioStreamOptions.bufferSize en gecodeerd als mono, op audioStreamOptions.sampleRate, en als lineaire pcm, 32-bits float met handtekening, dat wil zeggen het type Float32Array in javascript.
- charIndex
nummer optioneel
De tekenindex die aan deze audiobuffer is gekoppeld.
- isLaatsteBuffer
Booleaans optioneel
Waar als deze audiobuffer de laatste is voor de tekst die wordt uitgesproken.
AudioStreamOptions
Bevat het audiostreamformaat dat naar verwachting door een engine wordt geproduceerd.
Eigenschappen
- buffergrootte
nummer
Het aantal samples in een audiobuffer.
- monstertarief
nummer
De samplefrequentie die wordt verwacht in een audiobuffer.
SpeakOptions
Opties opgegeven voor de methode tts.speak().
Eigenschappen
- geslacht
VoiceGender optioneel
Verouderd sinds Chrome 92Geslacht 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 deze 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. Deze waarde ligt gegarandeerd tussen 0,1 en 10,0. Wanneer een stem dit volledige bereik aan tarieven niet ondersteunt, retourneer dan geen foutmelding. In plaats daarvan beperkt u de snelheid tot het bereik dat door de stem wordt ondersteund.
- stemNaam
tekenreeks optioneel
De naam van de stem die voor synthese moet worden gebruikt.
- volume
nummer optioneel
Spreekvolume tussen 0 en 1, waarbij 0 het laagst is en 1 het hoogst, met een standaardwaarde van 1,0.
VoiceGender
Geslacht is verouderd en wordt genegeerd.
Enum
"mannelijk" "vrouwelijk"
Methoden
updateVoices()
chrome.ttsEngine.updateVoices(
voices: TtsVoice[],
)
Geroepen door een engine om de lijst met stemmen bij te werken. Deze lijst overschrijft alle stemmen die in het manifest van deze extensie zijn gedeclareerd.
Parameters
- stemmen
TtsVoice []
Array van
tts.TtsVoice
objecten die de beschikbare stemmen voor spraaksynthese vertegenwoordigen.
Evenementen
onPause
chrome.ttsEngine.onPause.addListener(
callback: function,
)
Optioneel: als een engine de pauzegebeurtenis ondersteunt, moet deze de huidige uiting die wordt uitgesproken, indien aanwezig, pauzeren totdat deze een hervattingsgebeurtenis of stopgebeurtenis ontvangt. Houd er rekening mee dat een stopgebeurtenis ook de gepauzeerde status moet opheffen.
Parameters
- terugbellen
functie
De
callback
parameter ziet er als volgt uit:() => void
onResume
chrome.ttsEngine.onResume.addListener(
callback: function,
)
Optioneel: als een engine de pauzegebeurtenis ondersteunt, moet deze ook de hervattingsgebeurtenis ondersteunen, om door te gaan met het uitspreken van de huidige uiting, indien aanwezig. Houd er rekening mee dat een stopgebeurtenis ook de gepauzeerde status moet opheffen.
Parameters
- terugbellen
functie
De
callback
parameter ziet er als volgt 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
- terugbellen
functie
De
callback
parameter ziet er als volgt uit:(utterance: string, options: SpeakOptions, sendTtsEvent: function) => void
- uiting
snaar
- opties
- sendTtsEvent
functie
De parameter
sendTtsEvent
ziet er als volgt uit:(event: tts.TtsEvent) => void
- evenement
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 doordat Chrome audioafspeelservices biedt en de verzending van tts-gebeurtenissen afhandelt.
Parameters
- terugbellen
functie
De
callback
parameter ziet er als volgt uit:(utterance: string, options: SpeakOptions, audioStreamOptions: AudioStreamOptions, sendTtsAudio: function, sendError: function) => void
- uiting
snaar
- opties
- audioStreamOpties
- verzendTtsAudio
functie
De parameter
sendTtsAudio
ziet er als volgt uit:(audioBufferParams: AudioBuffer) => void
- audioBufferParams
Parameters die een audiobuffer en bijbehorende gegevens bevatten.
- verzendfout
functie
Chroom 94+De parameter
sendError
ziet er als volgt uit:(errorMessage?: string) => void
- foutbericht
tekenreeks optioneel
Een tekenreeks die de fout beschrijft.
onStop
chrome.ttsEngine.onStop.addListener(
callback: function,
)
Wordt geactiveerd wanneer er een oproep wordt gedaan naar tts.stop en dit toestel mogelijk bezig is met spreken. Als een toestel een oproep ontvangt naar onStop en de spraak al is gestopt, mag het toestel niets doen (geen fout genereren). Als de spraak zich in de gepauzeerde toestand bevindt, zou dit de gepauzeerde toestand moeten annuleren.
Parameters
- terugbellen
functie
De
callback
parameter ziet er als volgt uit:() => void