chrome.ttsEngine

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. Gebruik event.charIndex om de huidige spraakpositie te bepalen.
  • 'sentence' : Er is een zinsgrens bereikt. Gebruik event.charIndex om de huidige spraakpositie te bepalen.
  • 'marker' : Er is een SSML-marker bereikt. Gebruik event.charIndex om 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 in event.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

Chrome 92+

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

Chrome 92+

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

Chrome 132+

De installatiestatus van een stem.

Enum

"niet geïnstalleerd"

"installeren"

"geïnstalleerd"

"mislukt"

LanguageStatus

Chrome 132+

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

Chrome 132+

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

Chrome 92+

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

Chrome 131+

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.

  • Type aanvrager.

TtsClientSource

Chrome 131+

Type aanvrager.

Enum

"chromefeature"

"verlenging"

VoiceGender

Chrome 54+ Niet meer ondersteund sinds Chrome 70.

Geslacht wordt afgekeurd en zal worden genegeerd.

Enum

"mannelijk"

"vrouwelijk"

Methoden

updateLanguage()

Chrome 132+
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 66+
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

    Een array van tts.TtsVoice -objecten die de beschikbare stemmen voor spraaksynthese vertegenwoordigen.

Evenementen

onInstallLanguageRequest

Chrome 131+
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 callback parameter ziet er als volgt uit:

    (requestor: TtsClient, lang: string) => void

onLanguageStatusRequest

Chrome 132+
chrome.ttsEngine.onLanguageStatusRequest.addListener(
  callback: function,
)

Wordt geactiveerd wanneer een TTS-client de installatiestatus van een taal opvraagt.

Parameters

  • terugbelverzoek

    functie

    De callback parameter ziet er als volgt uit:

    (requestor: TtsClient, lang: string) => void

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 callback parameter 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 callback parameter 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 callback parameter ziet er als volgt uit:

    (utterance: string, options: SpeakOptions, sendTtsEvent: function) => void

    • uitspraak

      snaar

    • opties
    • sendTtsEvent

      functie

      De parameter sendTtsEvent ziet 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 92+
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 callback parameter ziet er als volgt uit:

    (utterance: string, options: SpeakOptions, audioStreamOptions: AudioStreamOptions, sendTtsAudio: function, sendError: function) => void

    • uitspraak

      snaar

    • opties
    • audioStreamOptions
    • sendTtsAudio

      functie

      De parameter sendTtsAudio ziet er als volgt uit:

      (audioBufferParams: AudioBuffer) => void

      • audioBufferParams

        Parameters die een audiobuffer en bijbehorende gegevens bevatten.

    • sendError

      functie

      Chrome 94+

      De parameter sendError ziet 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 callback parameter ziet er als volgt uit:

    () => void

onUninstallLanguageRequest

Chrome 132+
chrome.ttsEngine.onUninstallLanguageRequest.addListener(
  callback: function,
)

Wordt geactiveerd wanneer een TTS-client aangeeft dat een taal niet langer nodig is.

Parameters