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 ChromeOS, met behulp van spraaksynthesemogelijkheden van het besturingssysteem. Op alle platforms kan de gebruiker extensies installeren die zichzelf registreren als alternatieve spraakengines.

Machtigingen

tts

Concepten en gebruik

Genereer spraak

Bel speak() vanaf uw toestel om te spreken. Bijvoorbeeld:

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

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

chrome.tts.stop();

U kunt opties bieden die verschillende eigenschappen van de spraak 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 zo te specificeren dat er een synthesizer wordt gekozen die die taal (en eventueel het regionale dialect) ondersteunt.

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

Standaard onderbreekt elke oproep om te speak() alle lopende spraak en spreekt onmiddellijk. Om te bepalen of een oproep iets zou onderbreken, kunt u isSpeaking() aanroepen. Bovendien kunt u de optie enqueue gebruiken om ervoor te zorgen dat deze uiting wordt toegevoegd aan een wachtrij met uitingen die zal worden uitgesproken wanneer 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 vindt u onder tts.speak() . Niet alle spraakengines ondersteunen alle opties.

Om fouten op te sporen en er zeker van te zijn dat u speak() correct aanroept, geeft u een callback-functie door die geen argumenten nodig heeft. 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 keert meteen terug, voordat de engine spraak is gaan genereren. Het doel van de callback is om u te waarschuwen voor syntaxisfouten bij uw gebruik van de TTS API, en niet om alle mogelijke fouten op te vangen die kunnen optreden tijdens het synthetiseren en uitvoeren van spraak. Om deze fouten ook op te vangen, moet u een gebeurtenislistener gebruiken, zoals beschreven in de volgende sectie.

Luister naar evenementen

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

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

  • '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.
  • 'interrupted' : deze uiting werd onderbroken door een andere aanroep om speak() of stop() en werd niet voltooid.
  • 'cancelled' : deze uiting werd in de wachtrij geplaatst, maar vervolgens geannuleerd door een andere aanroep om speak() of stop() gebruiken en begon helemaal nooit te spreken.
  • 'error' : Er is een motorspecifieke fout opgetreden en deze uiting kan niet worden uitgesproken. Controleer 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 uit deze uiting worden ontvangen.

Sommige stemmen ondersteunen mogelijk niet alle gebeurtenistypen, en sommige stemmen verzenden mogelijk helemaal geen gebeurtenissen. Als u een stem niet wilt gebruiken, tenzij deze bepaalde gebeurtenissen verzendt, geeft u de benodigde gebeurtenissen door in het requiredEventTypes lid van het optieobject, of gebruikt u getVoices() om een ​​stem te kiezen die aan uw vereisten voldoet. Beide worden hieronder beschreven.

SSML-opmaak

Uitingen die in deze API worden gebruikt, kunnen opmaak bevatten met behulp van de Speech Synthesis Markup Language (SSML) . Als u SSML gebruikt, moet het eerste argument voor speak() een compleet SSML-document zijn met een XML-header en een <speak> -tag op het hoogste niveau, en niet een 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 zoekmachines zijn verplicht om SSML's die ze niet ondersteunen te negeren en toch de onderliggende tekst uit te spreken.

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 door het besturingssysteem geleverde spraaksynthese elke tekst in ten minste één taal moeten kunnen uitspreken. Sommige gebruikers hebben echter mogelijk een verscheidenheid aan stemmen beschikbaar via hun besturingssysteem en 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 om de gebruiker een keuzelijst te presenteren.

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

Chroom 54+

Enum

"begin"

"einde"

"woord"

"zin"

"markering"

"onderbroken"

"geannuleerd"

"fout"

"pauze"

"cv"

TtsEvent

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

Eigenschappen

  • charIndex

    nummer optioneel

    De index van het huidige teken in de uiting. Bij woordgebeurtenissen wordt de gebeurtenis geactiveerd aan het einde van het ene woord en vóór het begin van het volgende. De charIndex vertegenwoordigt een punt in de tekst aan het begin van het volgende uit te spreken woord.

  • foutbericht

    tekenreeks optioneel

    De foutbeschrijving, als het gebeurtenistype error is.

  • lengte

    nummer optioneel

    Chroom 74+

    De lengte van het volgende deel van de uiting. Bij een word is dit bijvoorbeeld de lengte van het woord dat vervolgens wordt uitgesproken. Het wordt ingesteld op -1 als het niet door de spraakengine wordt ingesteld.

  • Het type kan zijn: start zodra de spraak is begonnen, word wanneer een woordgrens wordt bereikt, sentence wanneer een zinsgrens wordt bereikt, marker wanneer een SSML-markeringselement wordt bereikt, end wanneer het einde van de uiting wordt bereikt, interrupted wanneer de de uiting wordt gestopt of onderbroken voordat het einde wordt bereikt, cancelled wanneer deze uit de wachtrij wordt verwijderd voordat deze ooit is gesynthetiseerd, of er treedt error wanneer er een andere fout optreedt. Bij het pauzeren van spraak wordt een pause geactiveerd als een bepaalde uiting halverwege wordt gepauzeerd, en resume als een uiting de spraak hervat. Houd er rekening mee dat pauze- en hervattingsgebeurtenissen mogelijk niet worden geactiveerd als de spraak tussen uitingen wordt gepauzeerd.

TtsOptions

Chroom 77+

De spraakopties voor de TTS-engine.

Eigenschappen

  • gewenste gebeurtenistypen

    tekenreeks[] optioneel

    De TTS-gebeurtenistypen waarnaar u geïnteresseerd bent. Als dit ontbreekt, kunnen alle gebeurtenistypen worden verzonden.

  • in de rij staan

    Booleaans optioneel

    Als dit waar is, wordt deze uiting in de wachtrij geplaatst als TTS al bezig is. Indien false (de standaardinstelling), wordt de huidige spraak onderbroken en wordt de spraakwachtrij leeggemaakt voordat deze nieuwe uiting wordt uitgesproken.

  • extensieId

    tekenreeks optioneel

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

  • geslacht

    VoiceGender optioneel

    Verouderd sinds Chrome 77

    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 een 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. Waarden onder 0,1 of boven 10,0 zijn ten strengste verboden, maar veel stemmen zullen de minimum- en maximumsnelheden nog verder beperken. Een bepaalde stem spreekt bijvoorbeeld misschien niet sneller dan drie keer normaal, zelfs als u een waarde opgeeft die groter is dan 3,0.

  • vereisteEventTypes

    tekenreeks[] optioneel

    De TTS-gebeurtenistypen die de stem moet ondersteunen.

  • stemNaam

    tekenreeks optioneel

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

  • volume

    nummer optioneel

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

  • opEvenement

    ongeldig optioneel

    Deze functie wordt aangeroepen bij 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

    Gebeurtenistype [] optioneel

    Alle typen terugbelgebeurtenissen die deze stem kan verzenden.

  • extensieId

    tekenreeks optioneel

    De ID van het toestel dat deze stem levert.

  • geslacht

    VoiceGender optioneel

    Verouderd sinds Chrome 70

    Geslacht is verouderd en wordt genegeerd.

    Het geslacht van deze stem.

  • lang

    tekenreeks optioneel

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

  • op afstand

    Booleaans optioneel

    Indien waar, is de synthese-engine een externe netwerkbron. Het kan een hogere latentie zijn en er kunnen bandbreedtekosten met zich meebrengen.

  • stemNaam

    tekenreeks optioneel

    De naam van de stem.

VoiceGender

Chrome 54+ Verouderd sinds Chrome 70

Geslacht is verouderd en wordt genegeerd.

Enum

"mannelijk"

"vrouwelijk"

Methoden

getVoices()

Belofte
chrome.tts.getVoices(
  callback?: function,
)

Krijgt een array van alle beschikbare stemmen.

Parameters

  • terugbellen

    functie optioneel

    De callback parameter ziet er als volgt uit:

    (voices: TtsVoice[]) => void

    • stemmen

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

Retouren

  • Beloof < TtsVoice []>

    Chroom 101+

    Beloften worden ondersteund in Manifest V3 en hoger, maar er zijn callbacks beschikbaar voor achterwaartse compatibiliteit. U kunt niet beide gebruiken bij dezelfde functieaanroep. De belofte wordt opgelost met hetzelfde type dat wordt doorgegeven aan de callback.

isSpeaking()

Belofte
chrome.tts.isSpeaking(
  callback?: function,
)

Controleert of de motor 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.

Parameters

  • terugbellen

    functie optioneel

    De callback parameter ziet er als volgt uit:

    (speaking: boolean) => void

    • spreken

      Booleaans

      Waar als je spreekt, anders onwaar.

Retouren

  • Beloof<boolean>

    Chroom 101+

    Beloften worden ondersteund in Manifest V3 en hoger, maar er zijn callbacks beschikbaar voor achterwaartse compatibiliteit. U kunt niet beide gebruiken bij dezelfde functieaanroep. De belofte wordt opgelost met hetzelfde type dat wordt doorgegeven aan de callback.

pause()

chrome.tts.pause()

Pauzeert de spraaksynthese, mogelijk midden in een uiting. Een oproep om de spraak te hervatten of te stoppen zal de pauze van de spraak ongedaan maken.

resume()

chrome.tts.resume()

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

speak()

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

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

Parameters

  • uiting

    snaar

    De uit te spreken tekst, platte tekst of een compleet, goed opgemaakt 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.

  • terugbellen

    functie optioneel

    De callback parameter ziet er als volgt uit:

    () => void

Retouren

  • Beloof <nietig>

    Chroom 101+

    Beloften worden ondersteund in Manifest V3 en hoger, maar er zijn callbacks beschikbaar voor achterwaartse compatibiliteit. U kunt niet beide gebruiken bij dezelfde functieaanroep. De belofte wordt opgelost met hetzelfde type dat wordt doorgegeven aan de callback.

stop()

chrome.tts.stop()

Stopt alle huidige spraak en wist de wachtrij van eventuele openstaande uitingen. Bovendien, als de spraak werd gepauzeerd, wordt deze nu hervat voor de volgende oproep om te spreken.

Evenementen

onVoicesChanged

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

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

Parameters

  • terugbellen

    functie

    De callback parameter ziet er als volgt uit:

    () => void