chrome.ttsEngine

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

Concepten en gebruik

Een toestel kan zichzelf registreren als spraakengine. Door dit te doen kan het sommige of alle aanroepen van 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-up of deze 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 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. 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-markering bereikt. Gebruik event.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 in event.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

Chroom 92+

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

Chroom 92+

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

Chroom 92+

Opties opgegeven voor de methode tts.speak().

Eigenschappen

  • geslacht

    VoiceGender optioneel

    Verouderd sinds Chrome 92

    Geslacht 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.

TtsClient

In behandeling

Identificatiecode voor de status van de klantaanvraag.

Eigenschappen

  • Identiteitskaart

    snaar

    Klant die een taalbeheerverzoek indient. Voor een extensie is dit de unieke extensie-ID. Voor Chrome-functies is dit de voor mensen leesbare naam van de functie.

  • Type aanvrager.

TtsClientSource

In behandeling

Type aanvrager.

Enum

"chroomfunctie"

"verlenging"

VoiceGender

Chrome 54+ Verouderd sinds Chrome 70

Geslacht is verouderd en wordt genegeerd.

Enum

"mannelijk"

"vrouwelijk"

Methoden

updateVoices()

Chroom 66+
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

    Array van tts.TtsVoice objecten die de beschikbare stemmen voor spraaksynthese vertegenwoordigen.

Evenementen

onInstallLanguageRequest

In behandeling
chrome.ttsEngine.onInstallLanguageRequest.addListener(
  callback: function,
)

Wordt geactiveerd wanneer een TTS-client vraagt ​​om een ​​nieuwe taal te installeren. De engine zou moeten proberen de taal te downloaden en te installeren, en ttsEngine.updateLanguage aanroepen met het resultaat. Als dit lukt, moet de engine ook ttsEngine.updateVoices aanroepen om de nieuw beschikbare stemmen te registreren.

Parameters

  • terugbellen

    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 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

Chroom 92+
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 praten. 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