Beschrijving
Gebruik de chrome.ttsEngine API om een tekst-naar-spraak (TTS)-engine te implementeren met behulp van een extensie. Als uw extensie zich registreert bij deze API, ontvangt deze gebeurtenissen met een uit te spreken zin en andere parameters wanneer een extensie of Chrome-app de tts API gebruikt om spraak te genereren. Uw extensie kan vervolgens gebruikmaken van beschikbare webtechnologie om de spraak te synthetiseren en uit te voeren, en gebeurtenissen terugsturen naar de aanroepende functie om de status te rapporteren.
Toestemmingen
ttsEngine Concepten en gebruik
Een extensie kan zichzelf registreren als spraakengine. Daardoor kan de extensie bepaalde of alle aanroepen naar functies zoals tts.speak() en tts.stop() onderscheppen en een alternatieve implementatie aanbieden. Extensies kunnen alle beschikbare webtechnologieën gebruiken om spraak te leveren, waaronder streaming audio vanaf een server en HTML5-audio. Een extensie kan zelfs iets anders doen met de gesproken tekst, zoals ondertiteling weergeven in een pop-up of de tekst als logberichten naar een externe server sturen.
Om een TTS-engine te implementeren, moet een extensie de machtiging "ttsEngine" declareren en vervolgens alle stemmen die de extensie biedt, in het manifest van de extensie opgeven, zoals in dit voorbeeld:
{
"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 willekeurig aantal stemmen specificeren.
De parameter voice_name is verplicht. De naam moet voldoende beschrijvend zijn om de naam van de stem en de gebruikte engine te identificeren. In het onwaarschijnlijke geval dat twee extensies stemmen met dezelfde naam registreren, kan een client de ID van de extensie opgeven die de synthese moet uitvoeren.
De parameter lang is optioneel, maar sterk aanbevolen. Een spraaksynthese-engine kan vrijwel altijd slechts één taal aan. Wanneer een engine meerdere talen ondersteunt, kan deze eenvoudig een aparte spraaksynthese-engine voor elke taal registreren. In de zeldzame gevallen waarin één spraaksynthese-engine meerdere talen aankan, is het het eenvoudigst om twee aparte spraaksynthese-engines te gebruiken en deze intern met dezelfde logica te verwerken. Als u echter een spraaksynthese-engine wilt maken die spraak in elke taal kan verwerken, laat u de parameter lang weg uit het manifest van uw extensie.
Tot slot 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 is ten zeerste aan te raden om minimaal het gebeurtenistype 'end' te ondersteunen om aan te geven wanneer de spraak is voltooid, anders kan Chrome de in de wachtrij geplaatste spraakfragmenten niet inplannen.
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 van updateVoices in camel case zijn: 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 speak() methode ontvangt:
-
'start': De motor is begonnen met het uitspreken van de zin. -
'word': Een woordgrens is 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-marker bereikt. Gebruikevent.charIndexom de huidige spraakpositie te bepalen. -
'end': De motor heeft zijn uitspraak beëindigd. -
'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 door de spraakengine verzonden; ze worden automatisch door Chrome gegenereerd.
Tekst-naar-spraakclients kunnen de spraakinformatie uit het manifest van uw extensie halen door tts.getVoices aan te roepen, ervan uitgaande dat u spraakgebeurtenisluisteraars hebt geregistreerd zoals hieronder beschreven.
Beheer spraakevenementen
Om spraak te genereren op verzoek van clients, moet uw extensie luisteraars registreren voor zowel onSpeak als onStop , zoals in dit voorbeeld:
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 extensie te sturen, is uitsluitend gebaseerd op de vraag of de extensie de opgegeven spraakparameters in het manifest ondersteunt en of er luisteraars zijn geregistreerd voor onSpeak en onStop . Met andere woorden, een extensie kan niet dynamisch beslissen of een spraakverzoek moet worden afgehandeld.
Soorten
AudioBuffer
Parameters die een audiobuffer en bijbehorende gegevens bevatten.
Eigenschappen
- audioBuffer
ArrayBuffer
De audiobuffer van de tekst-naar-spraak-engine. Deze moet precies de lengte van audioStreamOptions.bufferSize hebben en gecodeerd zijn als mono, met audioStreamOptions.sampleRate, en als lineaire pcm, 32-bits signed float, oftewel het Float32Array-type in JavaScript.
- charIndex
nummer optioneel
De tekenindex die aan deze audiobuffer is gekoppeld.
- isLastBuffer
boolean optioneel
Dit is waar als deze audiobuffer de laatste is voor de gesproken tekst.
AudioStreamOptions
Bevat het audiostreamformaat dat naar verwachting door een engine zal worden geproduceerd.
Eigenschappen
- bufferSize
nummer
Het aantal samples in een audiobuffer.
- sampleRate
nummer
De verwachte samplefrequentie in een audiobuffer.
LanguageInstallStatus
De installatiestatus van een stem.
Enum
"niet geïnstalleerd" "installeren" "geïnstalleerd" "mislukt"
LanguageStatus
Installatiestatus van een taal.
Eigenschappen
- fout
string optioneel
Details over installatiefouten. Optioneel ingevuld als de taal niet geïnstalleerd kon worden.
- installatiestatus
Installatiestatus.
- lang
snaar
Taalcode in de vorm van een taalcode-regiocode, waarbij de regiocode weggelaten kan worden. Voorbeelden zijn en, en-AU, zh-CH.
LanguageUninstallOptions
Opties voor het verwijderen van een bepaalde taal.
Eigenschappen
- Onmiddellijk verwijderen
booleaans
Als dit waar is, moet de TTS-client de taal direct verwijderen. De engine kan op basis van deze parameter en de informatie van de aanvrager bepalen of en wanneer de taal moet worden verwijderd. Als dit onwaar is, kan de engine andere criteria gebruiken, zoals recent gebruik, om te bepalen wanneer de taal moet worden verwijderd.
SpeakOptions
Opties die zijn opgegeven aan de tts.speak() methode.
Eigenschappen
- geslacht
Stemgeslacht optioneel
Niet meer bruikbaar sinds Chrome 92.Geslacht wordt afgekeurd en zal worden genegeerd.
Stemgeslacht voor synthetische spraak.
- lang
string optioneel
De taal die voor de synthese gebruikt moet worden, in de vorm taal - regio . Voorbeelden: 'en', 'en-US', 'en-GB', 'zh-CN'.
- toonhoogte
nummer optioneel
Spreektoonhoogte tussen 0 en 2 (inclusief), waarbij 0 de laagste en 2 de hoogste toonhoogte is. 1.0 komt overeen met de standaardtoonhoogte van deze stem.
- tarief
nummer optioneel
Spreeksnelheid ten opzichte van de standaardsnelheid 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, inclusief. Als een stem dit volledige bereik aan snelheden niet ondersteunt, geef dan geen foutmelding. Beperk in plaats daarvan de snelheid tot het bereik dat de stem wel ondersteunt.
- stemnaam
string optioneel
De naam van de stem die voor de synthese gebruikt moet worden.
- volume
nummer optioneel
Spreekvolume tussen 0 en 1 (inclusief), waarbij 0 het laagste en 1 het hoogste volume is, met een standaardwaarde van 1,0.
TtsClient
Identificatiecode voor de client die de status opvraagt.
Eigenschappen
- id
snaar
Client dient een verzoek in voor taalbeheer. Voor een extensie is dit de unieke extensie-ID. Voor Chrome-functies is dit de leesbare naam van de functie.
- bron
Type aanvrager.
TtsClientSource
Type aanvrager.
Enum
"chromefeature" "verlenging"
VoiceGender
Geslacht wordt afgekeurd en zal worden genegeerd.
Enum
"mannelijk" "vrouwelijk"
Methoden
updateLanguage()
chrome.ttsEngine.updateLanguage(
status: LanguageStatus,
): void
Deze functie wordt door een engine aangeroepen wanneer een taal wordt geïnstalleerd en wanneer een taal wordt verwijderd. Ook wordt deze functie aangeroepen als reactie op een statusverzoek van een client. Wanneer 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
Deze functie wordt door een engine aangeroepen 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 []
Een array van
tts.TtsVoice-objecten die de beschikbare stemmen voor spraaksynthese vertegenwoordigen.
Evenementen
onInstallLanguageRequest
chrome.ttsEngine.onInstallLanguageRequest.addListener(
callback: function,
)
Deze functie wordt geactiveerd wanneer een TTS-client een nieuwe taal aanvraagt. De engine moet proberen de taal te downloaden en te installeren en vervolgens ttsEngine.updateLanguage aanroepen met het resultaat. Bij succes moet de engine ook ttsEngine.updateVoices aanroepen om de nieuw beschikbare stemmen te registreren.
Parameters
- terugbelverzoek
functie
De
callbackparameter ziet er als volgt uit:(requestor: TtsClient, lang: string) => void
- aanvrager
- lang
snaar
onLanguageStatusRequest
chrome.ttsEngine.onLanguageStatusRequest.addListener(
callback: function,
)
Wordt geactiveerd wanneer een TTS-client de installatiestatus van een taal opvraagt.
Parameters
- terugbelverzoek
functie
De
callbackparameter ziet er als volgt uit:(requestor: TtsClient, lang: string) => void
- aanvrager
- lang
snaar
onPause
chrome.ttsEngine.onPause.addListener(
callback: function,
)
Optioneel: als een engine de pauze-gebeurtenis ondersteunt, moet deze de huidige gesproken tekst (indien aanwezig) pauzeren totdat een hervat- of stop-gebeurtenis wordt ontvangen. Houd er rekening mee dat een stop-gebeurtenis ook de pauzestatus moet opheffen.
Parameters
- terugbelverzoek
functie
De
callbackparameter ziet er als volgt uit:() => void
onResume
chrome.ttsEngine.onResume.addListener(
callback: function,
)
Optioneel: als een engine de pauze-gebeurtenis ondersteunt, moet deze ook de hervat-gebeurtenis ondersteunen, om de huidige uitspraak, indien aanwezig, voort te zetten. Houd er rekening mee dat een stop-gebeurtenis ook de pauzestatus moet opheffen.
Parameters
- terugbelverzoek
functie
De
callbackparameter ziet er als volgt uit:() => void
onSpeak
chrome.ttsEngine.onSpeak.addListener(
callback: function,
)
Deze functie wordt aangeroepen wanneer de gebruiker een aanroep doet naar tts.speak() en een van de stemmen uit het manifest van deze extensie als eerste overeenkomt met het optiesobject.
Parameters
- terugbelverzoek
functie
De
callbackparameter ziet er als volgt uit:(utterance: string, options: SpeakOptions, sendTtsEvent: function) => void
- uitspraak
snaar
- opties
- sendTtsEvent
functie
De parameter
sendTtsEventziet er als volgt uit:(event: tts.TtsEvent) => void
- evenement
De gebeurtenis van de tekst-naar-spraakengine die de status van deze uitspraak aangeeft.
onSpeakWithAudioStream
chrome.ttsEngine.onSpeakWithAudioStream.addListener(
callback: function,
)
Deze functie wordt aangeroepen wanneer de gebruiker een aanroep doet naar tts.speak() en een van de stemmen uit het manifest van deze extensie als eerste overeenkomt met het optiesobject. Dit verschilt van ttsEngine.onSpeak doordat Chrome audio-afspeelservices levert en de verzending van tts-gebeurtenissen afhandelt.
Parameters
- terugbelverzoek
functie
De
callbackparameter ziet er als volgt uit:(utterance: string, options: SpeakOptions, audioStreamOptions: AudioStreamOptions, sendTtsAudio: function, sendError: function) => void
- uitspraak
snaar
- opties
- audioStreamOptions
- sendTtsAudio
functie
De parameter
sendTtsAudioziet er als volgt uit:(audioBufferParams: AudioBuffer) => void
- audioBufferParams
Parameters die een audiobuffer en bijbehorende gegevens bevatten.
- sendError
functie
Chrome 94+De parameter
sendErrorziet er als volgt uit:(errorMessage?: string) => void
- foutmelding
string optioneel
Een tekenreeks die de fout beschrijft.
onStop
chrome.ttsEngine.onStop.addListener(
callback: function,
)
Deze functie wordt geactiveerd wanneer een oproep naar tts.stop wordt gedaan en dit toestel mogelijk midden in een gesprek is. Als een toestel een oproep naar onStop ontvangt en de spraak al is gestopt, mag er niets gebeuren (er mag geen foutmelding worden gegenereerd). Als de spraak in de pauzestand staat, moet deze pauzestand worden opgeheven.
Parameters
- terugbelverzoek
functie
De
callbackparameter ziet er als volgt uit:() => void
onUninstallLanguageRequest
chrome.ttsEngine.onUninstallLanguageRequest.addListener(
callback: function,
)
Wordt geactiveerd wanneer een TTS-client aangeeft dat een taal niet langer nodig is.
Parameters
- terugbelverzoek
functie
De
callbackparameter ziet er als volgt uit:(requestor: TtsClient, lang: string, uninstallOptions: LanguageUninstallOptions) => void
- aanvrager
- lang
snaar
- opties verwijderen