chrome.tts

Beschreibung

Verwenden Sie die chrome.tts API, um die synthetisierte Sprachausgabe abzuspielen. Weitere Informationen finden Sie in der zugehörigen ttsEngine API, mit der eine Erweiterung eine Sprach-Engine implementieren kann.

Chrome bietet diese Funktion unter Windows (mit SAPI 5), Mac OS X und ChromeOS mithilfe der vom Betriebssystem bereitgestellten Sprachsynthesefunktionen. Der Nutzer kann auf allen Plattformen Erweiterungen installieren, die sich als alternative Sprach-Engines registrieren.

Berechtigungen

tts

Konzepte und Nutzung

Sprache generieren

Rufen Sie speak() über die Erweiterung an, um zu sprechen. Beispiel:

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

Wenn Sie die Spracheingabe beenden möchten, rufen Sie einfach stop() auf:

chrome.tts.stop();

Sie können Optionen bereitstellen, um verschiedene Eigenschaften der Sprache zu steuern, z. B. Geschwindigkeit, Tonhöhe und mehr. Beispiel:

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

Es empfiehlt sich auch, die Sprache anzugeben, damit ein Synthesizer ausgewählt wird, der diese Sprache (und gegebenenfalls den regionalen Dialekt) unterstützt.

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

Standardmäßig wird bei jedem speak()-Aufruf die laufende Sprachausgabe unterbrochen und sofort gesprochen. Um festzustellen, ob ein Anruf unterbrochen werden würde, können Sie isSpeaking() aufrufen. Mit der Option enqueue können Sie außerdem veranlassen, dass diese Äußerung einer Warteschlange von Äußerungen hinzugefügt wird, die gesprochen wird, wenn die aktuelle Äußerung beendet ist.

chrome.tts.speak('Speak this first.');
chrome.tts.speak(
    'Speak this next, when the first sentence is done.', {'enqueue': true});

Eine vollständige Beschreibung aller Optionen finden Sie unter tts.speak(). Nicht alle Sprach-Engines unterstützen alle Optionen.

Übergeben Sie eine Callback-Funktion, die keine Argumente annimmt, um Fehler abzufangen und sicherzustellen, dass speak() korrekt aufgerufen wird. Prüfen Sie im Callback runtime.lastError, ob Fehler aufgetreten sind.

chrome.tts.speak(
  utterance,
  options,
  function() {
    if (chrome.runtime.lastError) {
      console.log('Error: ' + chrome.runtime.lastError.message);
    }
  }
);

Der Callback wird sofort zurückgegeben, bevor die Engine mit der Sprachgenerierung begonnen hat. Der Callback soll Sie auf Syntaxfehler bei der Verwendung der TTS API aufmerksam machen. Es geht nicht darum, alle möglichen Fehler abzufangen, die beim Synthetisieren und Ausgabe von Sprache auftreten können. Damit auch diese Fehler abgefangen werden, müssen Sie einen Event-Listener verwenden, der im nächsten Abschnitt beschrieben wird.

Auf Ereignisse warten

Übergeben Sie in den Optionen einen Event-Listener an speak(), um mehr Echtzeitinformationen zum Status der synthetisierten Sprache zu erhalten:

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

Jedes Ereignis enthält einen Ereignistyp, den Zeichenindex der aktuellen Sprache relativ zur Äußerung und bei Fehlerereignissen eine optionale Fehlermeldung. Die Ereignistypen sind:

  • 'start': Die Suchmaschine hat damit begonnen, die Äußerung zu sprechen.
  • 'word': Eine Wortgrenze wurde erreicht. Verwenden Sie event.charIndex, um die aktuelle Sprachposition zu bestimmen.
  • 'sentence': Eine Satzgrenze wurde erreicht. Verwenden Sie event.charIndex, um die aktuelle Sprachposition zu bestimmen.
  • 'marker': Eine SSML-Markierung wurde erreicht. Verwenden Sie event.charIndex, um die aktuelle Sprachposition zu bestimmen.
  • 'end': Die Suchmaschine hat die Äußerung beendet.
  • 'interrupted': Diese Äußerung wurde durch einen weiteren Aufruf von speak() oder stop() unterbrochen und nicht beendet.
  • 'cancelled': Diese Äußerung wurde in die Warteschlange gestellt, aber dann durch einen weiteren Aufruf von speak() oder stop() abgebrochen und hat überhaupt nichts zu sagen.
  • 'error': Es ist ein suchmaschinenspezifischer Fehler aufgetreten, der nicht gesprochen werden kann. Weitere Informationen finden Sie unter event.errorMessage.

Vier der Ereignistypen – 'end', 'interrupted', 'cancelled' und 'error' – sind final. Nachdem eines dieser Ereignisse empfangen wurde, spricht diese Äußerung nicht mehr und es werden keine neuen Ereignisse aus dieser Äußerung empfangen.

Einige Stimmen unterstützen möglicherweise nicht alle Ereignistypen und einige Stimmen senden möglicherweise überhaupt keine Ereignisse. Wenn Sie eine Stimme nur dann verwenden möchten, wenn sie bestimmte Ereignisse sendet, übergeben Sie die erforderlichen Ereignisse im requiredEventTypes-Mitglied des Optionsobjekts oder verwenden Sie getVoices(), um eine Stimme auszuwählen, die Ihren Anforderungen entspricht. Beide werden im Folgenden beschrieben.

SSML-Markup

Die in dieser API verwendeten Äußerungen umfassen möglicherweise Markups mit der Speech Synthesis Markup Language (SSML). Wenn Sie SSML verwenden, muss das erste Argument für speak() ein vollständiges SSML-Dokument mit einem XML-Header und einem <speak>-Tag der obersten Ebene sein. Es darf sich nicht um ein Dokumentfragment handeln.

Beispiel:

chrome.tts.speak(
  '<?xml version="1.0"?>' +
  '<speak>' +
  '  The <emphasis>second</emphasis> ' +
  '  word of this sentence was emphasized.' +
  '</speak>'
);

Nicht alle Sprach-Engines unterstützen alle SSML-Tags und einige auch überhaupt nicht. Alle Suchmaschinen müssen jedoch nicht unterstützte SSML-Tags ignorieren und den zugrunde liegenden Text lesen.

Stimme auswählen

Standardmäßig wählt Chrome für jede Äußerung, die Sie sprechen möchten, basierend auf der Sprache die am besten geeignete Stimme aus. Auf den meisten Windows-, Mac OS X- und ChromeOS-Systemen sollte die vom Betriebssystem bereitgestellte Sprachsynthese jeden Text in mindestens einer Sprache sprechen können. Einigen Nutzern stehen jedoch möglicherweise eine Vielzahl von Stimmen aus ihrem Betriebssystem und von Sprach-Engines zur Verfügung, die von anderen Chrome-Erweiterungen implementiert wurden. In diesen Fällen können Sie benutzerdefinierten Code implementieren, um die entsprechende Stimme auszuwählen oder dem Nutzer eine Liste mit Auswahlmöglichkeiten anzuzeigen.

Um eine Liste aller Stimmen abzurufen, rufen Sie getVoices() auf und übergeben Sie eine Funktion, die ein Array von TtsVoice-Objekten als Argument empfängt:

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

Chrome 54 und höher

Enum

"start"

TtsEvent

Ein Ereignis von der TTS-Engine, um den Status einer Äußerung zu kommunizieren.

Attribute

  • charIndex

    Nummer optional

    Der Index des aktuellen Zeichens in der Äußerung. Bei Word-Ereignissen wird das Ereignis am Ende eines Wortes und vor dem Anfang des nächsten ausgelöst. Das charIndex steht für einen Punkt im Text am Anfang des nächsten gesprochenen Wortes.

  • errorMessage

    String optional

    Die Fehlerbeschreibung, wenn der Ereignistyp error ist.

  • Länge

    Nummer optional

    Chrome 74 und höher

    Die Länge des nächsten Teils der Äußerung. Bei einem word-Ereignis ist dies beispielsweise die Länge des Wortes, das als Nächstes gesprochen wird. Er wird auf -1 gesetzt, wenn er nicht von der Sprach-Engine festgelegt wird.

  • Typ

    Der Typ kann start sein, sobald die Sprache begonnen hat, word, wenn eine Wortgrenze erreicht wird, sentence, wenn eine Satzgrenze erreicht wird, marker, wenn ein SSML-Markierungselement erreicht ist, end, wenn das Ende der Äußerung erreicht ist, interrupted, wenn die Äußerung vor ihrem Ende gestoppt oder unterbrochen wird, cancelled, wenn sie aus der Warteschlange entfernt wird, bevor sie noch synthetisiert wird, oder error, wenn ein anderer Fehler auftritt. Beim Pausieren der Sprache wird ein pause-Ereignis ausgelöst, wenn eine bestimmte Äußerung in der Mitte pausiert wird, und resume, wenn eine Äußerung dadurch fortgesetzt wird. Die Ereignisse „Pausieren“ und „Fortsetzen“ werden möglicherweise nicht ausgelöst, wenn die Sprachausgabe zwischen Äußerungen pausiert wird.

TtsOptions

Chrome 77 oder höher

Die Sprachoptionen für die Sprachausgabe-Engine.

Attribute

  • desiredEventTypes

    string[] optional

    Die TTS-Ereignistypen, die Sie anhören möchten. Fehlt diese Angabe, werden möglicherweise alle Ereignistypen gesendet.

  • in Warteschlange stellen

    Boolescher Wert optional

    Bei "true" wird diese Äußerung in die Warteschlange gestellt, wenn TTS bereits ausgeführt wird. Unterbricht bei "false" (Standardeinstellung), wird die aktuelle Sprache unterbrochen und die Sprachwarteschlange wird geleert, bevor diese neue Äußerung ausgegeben wird.

  • extensionId

    String optional

    Die Erweiterungs-ID der zu verwendenden Sprach-Engine, falls bekannt.

  • gender

    VoiceGender optional

    Seit Chrome 77 eingestellt

    Das Geschlecht wurde eingestellt und wird ignoriert.

    Geschlecht der Stimme für künstliche Sprachausgabe.

  • lang

    String optional

    Die für die Synthese zu verwendende Sprache im Format Sprache-Region. Beispiele: „en“, „en-US“, „en-GB“, „zh-CN“.

  • Wurf

    Nummer optional

    Tonhöhe zwischen 0 und einschließlich 2, wobei 0 die niedrigste und 2 die höchste Stufe ist. 1,0 entspricht der Standardtonhöhe einer Stimme.

  • Geschwindigkeit

    Nummer optional

    Sprechgeschwindigkeit bezogen auf die Standardfrequenz für diese Stimme. Die Standardeinstellung beträgt 1,0, normalerweise 180 bis 220 Wörter pro Minute. 2,0 bedeutet doppelt so schnell, 0,5 halb so schnell. Werte unter 0,1 oder über 10,0 sind streng verboten, aber viele Stimmen schränken die Mindest- und Höchstwerte weiter ein. Beispielsweise spricht eine bestimmte Stimme möglicherweise nicht schneller als dreimal normal, selbst wenn Sie einen Wert über 3,0 angeben.

  • requiredEventTypes

    string[] optional

    Die TTS-Ereignistypen, die die Stimme unterstützen muss.

  • voiceName

    String optional

    Der Name der Stimme, die für die Synthese verwendet werden soll. Wenn das Feld leer ist, wird eine beliebige verfügbare Stimme verwendet.

  • Volume

    Nummer optional

    Sprachlautstärke zwischen 0 und einschließlich 1, wobei 0 die niedrigste und 1 die höchste Lautstärke ist.Der Standardwert ist 1, 0.

  • onEvent

    void optional

    Diese Funktion wird mit Ereignissen aufgerufen, die beim Vorlesen der Äußerung auftreten.

    Die Funktion onEvent sieht so aus:

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

    • event

      Das Aktualisierungsereignis der Sprachausgabe-Engine, das den Status dieser Äußerung angibt.

TtsVoice

Die Beschreibung einer Stimme, die für Sprachsynthese verfügbar ist.

Attribute

  • eventTypes

    EventType[] optional

    Alle Rückrufereignistypen, die diese Stimme senden kann.

  • extensionId

    String optional

    Die ID der Erweiterung, die diese Stimme bereitstellt.

  • gender

    VoiceGender optional

    Seit Chrome 70 eingestellt

    Das Geschlecht wurde eingestellt und wird ignoriert.

    Das Geschlecht dieser Stimme.

  • lang

    String optional

    Die von dieser Stimme unterstützte Sprache im Format Sprache-Region. Beispiele: „en“, „en-US“, „en-GB“, „zh-CN“.

  • Homeoffice

    Boolescher Wert optional

    Bei „true“ ist das Synthesemodul eine Remote-Netzwerkressource. Dies kann eine höhere Latenz und Bandbreitenkosten verursachen.

  • voiceName

    String optional

    Die Bezeichnung der Stimme.

VoiceGender

Chrome 54 oder höher Seit Chrome 70 eingestellt

Die Angabe des Geschlechts wurde eingestellt und wird ignoriert.

Enum

Methoden

getVoices()

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

Ruft ein Array aller verfügbaren Stimmen ab.

Parameter

  • callback

    Funktion optional

    Der Parameter callback sieht so aus:

    (voices: TtsVoice[])=>void

    • Stimmen

      Array mit tts.TtsVoice-Objekten, die die verfügbaren Stimmen für die Sprachsynthese darstellen.

Returns

  • Promise<TtsVoice[]>

    Chrome 101 und höher

    Promise-Objekte werden in Manifest V3 und höher unterstützt, Callbacks werden jedoch aus Gründen der Abwärtskompatibilität bereitgestellt. Sie können nicht beide in einem Funktionsaufruf verwenden. Das Promise wird mit demselben Typ aufgelöst, der an den Callback übergeben wird.

isSpeaking()

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

Überprüft, ob die Suchmaschine gerade spricht. Unter Mac OS X ist das Ergebnis immer dann „true“, wenn die Sprach-Engine des Systems spricht, auch wenn die Sprache nicht von Chrome initiiert wurde.

Parameter

  • callback

    Funktion optional

    Der Parameter callback sieht so aus:

    (speaking: boolean)=>void

    • sprechen

      boolean

      Wenn gesprochen wird, ist „True“, andernfalls „false“.

Returns

  • Promise<boolean>

    Chrome 101 und höher

    Promise-Objekte werden in Manifest V3 und höher unterstützt, Callbacks werden jedoch aus Gründen der Abwärtskompatibilität bereitgestellt. Sie können nicht beide in einem Funktionsaufruf verwenden. Das Promise wird mit demselben Typ aufgelöst, der an den Callback übergeben wird.

pause()

chrome.tts.pause()

Pausiert die Sprachsynthese, möglicherweise mitten in einer Äußerung. Durch einen Anruf zum Fortsetzen oder Anhalten wird die Sprachausgabe fortgesetzt.

resume()

chrome.tts.resume()

Wenn die Sprachausgabe pausiert wurde, wird sie an der Stelle fortgesetzt, an der sie unterbrochen wurde.

speak()

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

Spricht Text mithilfe einer Sprachausgabe-Funktion an.

Parameter

  • Äußerung

    String

    Zu sprechender Text, entweder Nur-Text oder ein vollständiges, korrekt formatiertes SSML-Dokument. Sprachmodule, die SSML nicht unterstützen, entfernen die Tags und sprechen den Text. Die maximale Länge des Texts beträgt 32.768 Zeichen.

  • Optionen

    TtsOptions optional

    Sprachoptionen

  • callback

    Funktion optional

    Der Parameter callback sieht so aus:

    ()=>void

Returns

  • Promise<void>

    Chrome 101 und höher

    Promise-Objekte werden in Manifest V3 und höher unterstützt, Callbacks werden jedoch aus Gründen der Abwärtskompatibilität bereitgestellt. Sie können nicht beide in einem Funktionsaufruf verwenden. Das Promise wird mit demselben Typ aufgelöst, der an den Callback übergeben wird.

stop()

chrome.tts.stop()

Beendet alle aktuellen Äußerungen und leert die Warteschlange aller ausstehenden Äußerungen. Wenn die Sprachausgabe pausiert wurde, wird sie jetzt für den nächsten Anruf wieder aktiviert.

Veranstaltungen

onVoicesChanged

Chrome 124 oder höher
chrome.tts.onVoicesChanged.addListener(
  callback: function,
)

Wird aufgerufen, wenn sich die Liste der tts.TtsVoice, die von getVoices zurückgegeben wird, geändert hat.

Parameter

  • callback

    Funktion

    Der Parameter callback sieht so aus:

    ()=>void