chrome.tts

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.

Toestemmingen

tts

Overzicht

Chrome biedt native ondersteuning voor spraak op Windows (met behulp van SAPI 5), Mac OS X en ChromeOS, door gebruik te maken van de spraaksynthesemogelijkheden van het besturingssysteem. Op alle platforms kan de gebruiker extensies installeren die zich registreren als alternatieve spraakengines.

Spraak genereren

Roep de speak() aan vanuit uw toestel om te spreken. Bijvoorbeeld:

chrome.tts.speak('Hello, world.');

Om direct te stoppen met spreken, roep je gewoon stop() aan:

chrome.tts.stop();

Je kunt opties opgeven waarmee je verschillende eigenschappen van de spraak kunt regelen, zoals de snelheid, toonhoogte en meer. Bijvoorbeeld:

chrome.tts.speak('Hello, world.', {'rate': 2.0});

Het is ook raadzaam om de taal te specificeren, zodat een synthesizer wordt gekozen die die taal (en eventueel een regionaal dialect) ondersteunt.

chrome.tts.speak('Hello, world.', {'lang': 'en-US', 'rate': 2.0});

Standaard onderbreekt elke aanroep van speak() een lopende spraak en spreekt direct. Om te bepalen of een aanroep iets zou onderbreken, kunt u isSpeaking() aanroepen. Daarnaast kunt u de optie enqueue gebruiken om deze uiting toe te voegen aan een wachtrij met uitingen die worden uitgesproken zodra 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 is te vinden in het onderstaande tts.speak . Niet alle spraakengines ondersteunen alle opties.

Om fouten op te sporen en ervoor te zorgen dat je speak() -functie correct aanroept, geef je een callbackfunctie mee die geen argumenten accepteert. Controleer binnen de callbackfunctie 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 retourneert direct, voordat de engine spraak begint te genereren. Het doel van de callback is om u te attenderen op syntaxfouten in uw gebruik van de TTS API, niet om alle mogelijke fouten op te vangen die zich kunnen voordoen tijdens het synthetiseren en uitvoeren van spraak. Om ook deze fouten op te vangen, moet u een gebeurtenislistener gebruiken, zoals hieronder beschreven.

Luisteren naar evenementen

Om meer realtime informatie te krijgen over de status van de gesynthetiseerde spraak, kunt u een gebeurtenislistener doorgeven in de opties van de functie 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
);

Each event includes an event type, the character index of the current speech relative to the utterance, and for error events, an optional error message. The event types are:

  • '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.
  • 'interrupted' : Deze uiting werd onderbroken door een andere aanroep van speak() of stop() en werd niet voltooid.
  • 'cancelled' : Deze uiting werd in de wachtrij geplaatst, maar vervolgens geannuleerd door een andere aanroep van speak() of stop() en is nooit begonnen met spreken.
  • 'error' : Er is een enginespecifieke fout opgetreden en deze uiting kan niet worden uitgesproken. Raadpleeg event.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 van deze uiting meer worden ontvangen.

Sommige stemmen ondersteunen mogelijk niet alle gebeurtenistypen, en sommige stemmen verzenden mogelijk helemaal geen gebeurtenissen. Als u een stem alleen wilt gebruiken als deze bepaalde gebeurtenissen verzendt, kunt u de gewenste gebeurtenissen doorgeven in het lid requiredEventTypes van het options-object, of getVoices() gebruiken om een ​​stem te kiezen die aan uw vereisten voldoet. Beide methoden worden hieronder beschreven.

SSML-opmaak

De in deze API gebruikte spraakfragmenten kunnen opmaak bevatten met behulp van de Speech Synthesis Markup Language (SSML) . Als u SSML gebruikt, moet het eerste argument voor speak() een volledig SSML-document zijn met een XML-header en een <speak> -tag op het hoogste niveau, en geen 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 engines zijn verplicht om SSML-tags die ze niet ondersteunen te negeren en de onderliggende tekst toch voor te lezen.

Een stem kiezen

Standaard kiest Chrome de meest geschikte stem voor elke zin die je wilt uitspreken, op basis van de taal. Op de meeste Windows-, Mac OS X- en ChromeOS-systemen kan de spraaksynthese van het besturingssysteem elke tekst in ten minste één taal voorlezen. Sommige gebruikers hebben echter mogelijk meerdere stemmen tot hun beschikking, zowel van hun besturingssysteem als van spraakengines die door andere Chrome-extensies worden gebruikt. In die gevallen kun je aangepaste code schrijven om de juiste stem te kiezen of om de gebruiker een lijst met opties te presenteren.

Om een ​​lijst van alle stemmen te krijgen, roep je getVoices() aan en geef je een functie mee 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

Chrome 54+

Enum

"begin"

"einde"

"woord"

"zin"

"marker"

"onderbroken"

"geannuleerd"

"fout"

"pauze"

"cv"

TtsEvent

Een gebeurtenis van de TTS-engine om de status van een uitspraak te communiceren.

Eigenschappen

  • charIndex

    nummer optioneel

    De index van het huidige teken in de uitspraak. Bij woordgebeurtenissen vindt de gebeurtenis plaats aan het einde van een woord en vóór het begin van het volgende. De charIndex vertegenwoordigt een punt in de tekst aan het begin van het volgende woord dat uitgesproken moet worden.

  • foutmelding

    string optioneel

    De foutbeschrijving, indien het gebeurtenistype error is.

  • lengte

    nummer optioneel

    Chrome 74+

    De lengte van het volgende deel van de uitspraak. Bijvoorbeeld, bij een word is dit de lengte van het woord dat vervolgens wordt uitgesproken. Deze wordt ingesteld op -1 als deze niet door de spraakengine is ingesteld.

  • type

    The type can be start as soon as speech has started, word when a word boundary is reached, sentence when a sentence boundary is reached, marker when an SSML mark element is reached, end when the end of the utterance is reached, interrupted when the utterance is stopped or interrupted before reaching the end, cancelled when it's removed from the queue before ever being synthesized, or error when any other error occurs. When pausing speech, a pause event is fired if a particular utterance is paused in the middle, and resume if an utterance resumes speech. Note that pause and resume events may not fire if speech is paused in-between utterances.

TtsOptions

Chrome 77+

De spraakopties voor de TTS-engine.

Eigenschappen

  • gewenste gebeurtenistypen

    string[] optioneel

    De TTS-gebeurtenistypen waarnaar u wilt luisteren. Indien deze ontbreken, kunnen alle gebeurtenistypen worden verzonden.

  • in de wachtrij plaatsen

    boolean optioneel

    Indien waar, wordt deze uitspraak in de wachtrij geplaatst als TTS al bezig is. Indien onwaar (de standaardwaarde), wordt de lopende spraak onderbroken en de spraakwachtrij geleegd voordat deze nieuwe uitspraak wordt gedaan.

  • extensie-ID

    string optioneel

    De extensie-ID van de te gebruiken spraakengine, indien bekend.

  • geslacht

    Stemgeslacht optioneel

    Niet meer bruikbaar sinds Chrome 77.

    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 een 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. Waarden lager dan 0,1 of hoger dan 10,0 zijn strikt verboden, maar veel stemmen beperken de minimum- en maximumsnelheid verder – zo spreekt een bepaalde stem mogelijk niet sneller dan drie keer de normale snelheid, zelfs als u een waarde hoger dan 3,0 opgeeft.

  • vereiste gebeurtenistypen

    string[] optioneel

    De TTS-gebeurtenistypen die de stem moet ondersteunen.

  • stemnaam

    string optioneel

    De naam van de stem die voor de synthese moet worden gebruikt. Indien leeg, wordt een willekeurige beschikbare stem gebruikt.

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

  • onEvent

    void optioneel

    Deze functie wordt aangeroepen bij gebeurtenissen die plaatsvinden tijdens het uitspreken van de zin.

    De onEvent functie ziet er als volgt uit:

    (event: TtsEvent) => {...}

    • evenement

      De updategebeurtenis van de tekst-naar-spraakengine die de status van deze uitspraak aangeeft.

TtsVoice

Een beschrijving van een stem die beschikbaar is voor spraaksynthese.

Eigenschappen

  • eventTypes

    EventType [] optioneel

    Alle soorten terugbelgebeurtenissen die deze stem kan verzenden.

  • extensie-ID

    string optioneel

    De ID van de extensie die deze stem levert.

  • geslacht

    VoiceGender optional

    Niet meer bruikbaar sinds Chrome 70.

    Geslacht wordt afgekeurd en zal worden genegeerd.

    Het geslacht van deze stem.

  • lang

    string optioneel

    De taal die deze stem ondersteunt, in de vorm taal - regio . Voorbeelden: 'en', 'en-US', 'en-GB', 'zh-CN'.

  • op afstand

    boolean optioneel

    Indien dit het geval is, is de synthese-engine een externe netwerkbron. Dit kan een hogere latentie met zich meebrengen en bandbreedtekosten veroorzaken.

  • stemnaam

    string optioneel

    De naam van de stem.

VoiceGender

Chrome 54+ Niet meer ondersteund sinds Chrome 70.

Het genderaspect wordt afgekeurd en genegeerd.

Enum

"mannelijk"

"vrouwelijk"

Methoden

getVoices()

Belofte
chrome.tts.getVoices(
  callback?: function,
)
: Promise<TtsVoice[]>

Krijgt een overzicht van alle beschikbare stemmen.

Parameters

  • terugbelverzoek

    functie optioneel

    De callback parameter ziet er als volgt uit:

    (voices: TtsVoice[]) => void

    • stemmen

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

Retourneert

  • Promise< TtsVoice []>

    Chrome 101+

    Promises worden alleen ondersteund voor Manifest V3 en later; voor andere platforms moeten callbacks worden gebruikt.

isSpeaking()

Belofte
chrome.tts.isSpeaking(
  callback?: function,
)
: Promise<boolean>

Controleert of de spraakengine momenteel aan het spreken is. Op Mac OS X is het resultaat waar wanneer de systeemspraakengine aan het spreken is, zelfs als de spraak niet door Chrome is geïnitieerd.

Parameters

  • terugbelverzoek

    functie optioneel

    De callback parameter ziet er als volgt uit:

    (speaking: boolean) => void

    • spreken

      booleaans

      Waar als er gesproken wordt, onwaar anders.

Retourneert

  • Belofte<boolean>

    Chrome 101+

    Promises worden alleen ondersteund voor Manifest V3 en later; voor andere platforms moeten callbacks worden gebruikt.

pause()

chrome.tts.pause(): void

Pauzeert de spraaksynthese, mogelijk midden in een uitspraak. Een commando om te hervatten of te stoppen zal de spraak hervatten.

resume()

chrome.tts.resume(): void

Als de spraak werd onderbroken, wordt het spreken hervat vanaf het punt waar het was gebleven.

speak()

Belofte
chrome.tts.speak(
  utterance: string,
  options?: TtsOptions,
  callback?: function,
)
: Promise<void>

Spreekt tekst uit met behulp van een tekst-naar-spraak-engine.

Parameters

  • uitspraak

    snaar

    De tekst die moet worden voorgelezen, kan platte tekst zijn of een volledig, correct opgemaakt SSML-document. Spraakengines die geen SSML ondersteunen, verwijderen de tags en lezen de tekst voor. De maximale lengte van de tekst is 32.768 tekens.

  • opties

    TtsOptions optioneel

    De spraakopties.

  • terugbelverzoek

    functie optioneel

    De callback parameter ziet er als volgt uit:

    () => void

Retourneert

  • Promise<void>

    Chrome 101+

    Wordt direct opgelost, voordat de spraak is voltooid. Als er een fout optreedt, wordt de belofte afgewezen. Gebruik options.onEvent voor meer gedetailleerde feedback.

    Promises worden alleen ondersteund voor Manifest V3 en later; voor andere platforms moeten callbacks worden gebruikt.

stop()

chrome.tts.stop(): void

Stopt alle lopende spraak en leegt de wachtrij van alle openstaande uitspraken. Bovendien wordt spraak, indien gepauzeerd, nu hervat voor de volgende spreker.

Evenementen

onVoicesChanged

Chrome 124+
chrome.tts.onVoicesChanged.addListener(
  callback: function,
)

Wordt aangeroepen wanneer de lijst met tts.TtsVoice die door getVoices zou worden geretourneerd, is gewijzigd.

Parameters

  • terugbelverzoek

    functie

    De callback parameter ziet er als volgt uit:

    () => void