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.

Chrome biedt deze mogelijkheid op Windows (met SAPI 5), Mac OS X en Chrome OS, met behulp van de spraaksynthesemogelijkheden van het besturingssysteem. Op alle platforms kan de gebruiker extensies installeren die zichzelf registreren als alternatieve spraakengines.

Machtigingen

tts

Begrippen en gebruik

Spraak genereren

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

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

Om onmiddellijk te stoppen met spreken, roept u gewoon stop() aan:

chrome.tts.stop(); 

U kunt opties bieden waarmee u 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 een goed idee om de taal te specificeren, zodat er een synthesizer wordt gekozen die die taal ondersteunt (en eventueel een regionaal dialect).

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

Standaard onderbreekt elke aanroep van speak() alle 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 wanneer de huidige uiting is afgelopen.

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 onder tts.speak() . Niet alle spraakengines ondersteunen alle opties.

Om fouten op te sporen en ervoor te zorgen dat je speak() correct aanroept, geef je een callbackfunctie door die geen argumenten accepteert. Controleer binnen de callback 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 waarschuwen voor syntaxisfouten in uw gebruik van de TTS API, niet om alle mogelijke fouten op te sporen die kunnen optreden tijdens het synthetiseren en uitvoeren van spraak. Om ook deze fouten op te sporen, moet u een event listener gebruiken, die in de volgende sectie wordt beschreven.

Luister naar evenementen

Om meer realtime informatie over de status van gesynthetiseerde spraak te krijgen, kunt u een gebeurtenislistener in de opties van speak() doorgeven, zoals deze:

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

Elke gebeurtenis bevat een gebeurtenistype, de tekenindex van de huidige spraak ten opzichte van de uiting en, voor foutgebeurtenissen, een optioneel foutbericht. De gebeurtenistypen zijn:

  • 'start' : De engine is begonnen met het uitspreken van de uiting.
  • '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 spreekpositie 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.
  • 'interrupted' : Deze uiting werd onderbroken door een andere aanroep van speak() of stop() en is niet voltooid.
  • 'cancelled' : Deze uiting werd in de wachtrij geplaatst, maar vervolgens geannuleerd door een andere aanroep van speak() of stop() en is nooit meer begonnen met spreken.
  • 'error' : Er is een engine-specifieke 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, wordt deze uiting niet meer uitgesproken en worden er geen nieuwe gebeurtenissen van deze uiting meer 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, geeft u de gewenste gebeurtenissen door aan het lid requiredEventTypes van het options-object of gebruikt u getVoices() om een stem te kiezen die aan uw vereisten voldoet. Beide worden hieronder beschreven.

SSML-markering

Uitingen die in deze API worden gebruikt, kunnen markup bevatten met behulp van de Speech Synthesis Markup Language (SSML) . Als u SSML gebruikt, moet het eerste argument van 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 zelfs helemaal niet. Maar alle engines moeten SSML negeren die ze niet ondersteunen en toch de onderliggende tekst uitspreken.

Kies een stem

Standaard kiest Chrome de meest geschikte stem voor elke uiting die u wilt uitspreken, op basis van de taal. Op de meeste Windows-, Mac OS X- en ChromeOS-systemen zou de spraaksynthese van het besturingssysteem elke tekst in ten minste één taal moeten kunnen uitspreken. Sommige gebruikers hebben echter mogelijk verschillende stemmen beschikbaar, zowel via hun besturingssysteem als via spraakengines die door andere Chrome-extensies zijn geïmplementeerd. In die gevallen kunt u aangepaste code implementeren om de juiste stem te kiezen of de gebruiker een lijst met keuzemogelijkheden te tonen.

Om een lijst met alle stemmen te krijgen, roept u getVoices() aan en geeft u er een functie aan door die een reeks 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);     }   } ); 

Typen

EventType

Chroom 54+

Enum

"begin"

"einde"

"woord"

"zin"

"marker"

"onderbroken"

"geannuleerd"

"fout"

"pauze"

"cv"

TtsEvent

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

Eigenschappen

  • tekenindex

    nummer optioneel

    De index van het huidige teken in de uiting. Bij woordgebeurtenissen wordt de gebeurtenis geactiveerd 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 wordt uitgesproken.

  • foutbericht

    string optioneel

    De foutbeschrijving, als het gebeurtenistype error is.

  • lengte

    nummer optioneel

    Chroom 74+

    De lengte van het volgende deel van de uiting. Bijvoorbeeld, in een word is dit de lengte van het woord dat als volgende wordt uitgesproken. Deze wordt op -1 gezet als de spraakengine deze waarde niet heeft ingesteld.

  • Het type kan start zijn zodra de spraak is gestart, word wanneer een woordgrens is bereikt, sentence wanneer een zinsgrens is bereikt, marker wanneer een SSML-markeerelement is bereikt, end wanneer het einde van de uiting is bereikt, interrupted wanneer de uiting wordt gestopt of onderbroken voordat het einde is bereikt, cancelled wanneer deze uit de wachtrij wordt verwijderd voordat deze is gesynthetiseerd, of error wanneer er een andere fout optreedt. Bij het pauzeren van spraak wordt een pause -gebeurtenis geactiveerd als een bepaalde uiting middenin wordt gepauzeerd, en resume als een uiting de spraak hervat. Let op: de 'pause'- en 'resume'-gebeurtenissen worden mogelijk niet geactiveerd als de spraak tussen uitingen wordt gepauzeerd.

TtsOptions

Chroom 77+

De spraakopties voor de TTS-engine.

Eigenschappen

  • gewensteEventTypes

    string[] optioneel

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

  • in de wachtrij plaatsen

    boolean optioneel

    Indien true, wordt deze uiting in de wachtrij geplaatst als TTS al bezig is. Indien false (standaard), wordt alle huidige spraak onderbroken en wordt de wachtrij leeggemaakt voordat deze nieuwe uiting wordt uitgesproken.

  • extensie-ID

    string optioneel

    De extensie-ID van de spraakengine die moet worden gebruikt, indien bekend.

  • geslacht

    VoiceGender optioneel

    Verouderd sinds Chrome 77

    Geslacht is niet toegestaan en wordt genegeerd.

    Geslacht van de stem voor synthetische spraak.

  • lang

    string optioneel

    De taal die voor 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, 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 onder 0,1 of boven 10,0 zijn absoluut niet toegestaan, maar veel stemmen beperken de minimum- en maximumsnelheid verder. Zo spreekt een bepaalde stem mogelijk niet sneller dan 3 keer de normale snelheid, zelfs niet 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 synthese wordt gebruikt. Indien leeg, wordt elke beschikbare stem gebruikt.

  • volume

    nummer optioneel

    Spreekvolume tussen 0 en 1 (inclusief), waarbij 0 het laagst en 1 het hoogst is, met een standaardwaarde van 1,0.

  • opEvenement

    leeg optioneel

    Deze functie wordt aangeroepen met gebeurtenissen die plaatsvinden tijdens het uitspreken van de uiting.

    De onEvent -functie ziet er als volgt uit:

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

    • evenement

      De updategebeurtenis van de tekst-naar-spraak-engine die de status van deze uiting aangeeft.

TtsVoice

Een beschrijving van een stem die beschikbaar is voor spraaksynthese.

Eigenschappen

  • gebeurtenistypen

    EventType [] optioneel

    Alle callbackgebeurtenistypen die deze stem kan verzenden.

  • extensie-ID

    string optioneel

    De ID van de extensie die deze stem levert.

  • geslacht

    VoiceGender optioneel

    Verouderd sinds Chrome 70

    Geslacht is niet toegestaan en wordt 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 en bandbreedtekosten met zich meebrengen.

  • stemNaam

    string optioneel

    De naam van de stem.

VoiceGender

Chrome 54+ Verouderd sinds Chrome 70

Geslacht is niet relevant en wordt genegeerd.

Enum

"mannelijk"

"vrouwelijk"

Methoden

getVoices()

chrome.tts.getVoices(): Promise<TtsVoice[]>

Haalt een reeks op van alle beschikbare stemmen.

Retourneren

isSpeaking()

chrome.tts.isSpeaking(): Promise<boolean>

Controleert of de engine momenteel spreekt. Op Mac OS X is het resultaat waar wanneer de spraakengine van het systeem spreekt, zelfs als de spraak niet door Chrome is geïnitieerd.

Retourneren

  • Belofte<boolean>

    Chroom 101+

pause()

chrome.tts.pause(): void

Pauzeert spraaksynthese, mogelijk midden in een uiting. Een oproep om te hervatten of te stoppen hervat de spraaksynthese.

resume()

chrome.tts.resume(): void

Als de spraak is gepauzeerd, wordt de spraak hervat waar deze was gebleven.

speak()

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

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

Parameters

  • uiting

    snaar

    De uit te spreken tekst, hetzij platte tekst of een volledig, correct geformuleerd SSML-document. Spraakengines die SSML niet ondersteunen, verwijderen de tags en spreken de tekst uit. De maximale lengte van de tekst is 32.768 tekens.

  • opties

    TtsOptions optioneel

    De spraakopties.

Retourneren

  • Belofte<leegte>

    Chroom 101+

stop()

chrome.tts.stop(): void

Stopt alle huidige spraak en verwijdert alle uitingen uit de wachtrij. Bovendien wordt een eventueel onderbroken spraak nu hervat voor het volgende gesprek.

Evenementen

onVoicesChanged

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

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

Parameters

  • terugbellen

    functie

    De callback ziet er als volgt uit:

    () => void