chrome.tts

Beschreibung

Verwenden Sie die chrome.tts API, um synthetisierte Sprachausgabe (TTS) abzuspielen. Weitere Informationen finden Sie in der zugehörigen ttsEngine API, mit der eine Erweiterung eine Spracherkennung implementieren kann.

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

Berechtigungen

tts

Konzepte und Verwendung

Sprache generieren

Rufen Sie speak() über Ihre Nebenstelle an, um zu sprechen. Beispiel:

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

Wenn ich sofort aufhören soll zu sprechen, kannst du einfach stop() aufrufen:

chrome.tts.stop();

Sie können Optionen angeben, mit denen sich verschiedene Eigenschaften der Sprache steuern lassen, z. B. die Sprechgeschwindigkeit und die Tonhöhe. Beispiel:

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

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

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

Standardmäßig wird bei jedem Aufruf von speak() die laufende Sprachausgabe unterbrochen und sofort gesprochen. Mit isSpeaking() können Sie ermitteln, ob ein Anruf etwas unterbrechen würde. Außerdem können Sie mit der Option enqueue dafür sorgen, dass diese Äußerung einer Warteschlange von Äußerungen hinzugefügt wird, die gesprochen werden, 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 Spracherkennungs-Engines unterstützen alle Optionen.

Um Fehler zu erkennen und sicherzustellen, dass Sie speak() richtig aufrufen, übergeben Sie eine Callback-Funktion, die keine Argumente akzeptiert. 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 Rückruf wird sofort zurückgegeben, bevor die Engine mit der Sprachgenerierung begonnen hat. Der Zweck des Callbacks besteht darin, Sie auf Syntaxfehler bei der Verwendung der TTS API aufmerksam zu machen, nicht alle möglichen Fehler abzufangen, die bei der Synthese und Ausgabe von Sprache auftreten können. Um auch diese Fehler abzufangen, müssen Sie einen Event-Listener verwenden, der im nächsten Abschnitt beschrieben wird.

Auf Ereignisse warten

Wenn Sie weitere Echtzeitinformationen zum Status der synthetisierten Sprache erhalten möchten, übergeben Sie einen Event-Listener in den Optionen an speak(), wie hier gezeigt:

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 Engine hat mit der Sprachausgabe begonnen.
  • 'word': Eine Wortgrenze wurde erreicht. Verwenden Sie event.charIndex, um die aktuelle Position der gesprochenen Sprache zu ermitteln.
  • 'sentence': Eine Satzgrenze wurde erreicht. Verwenden Sie event.charIndex, um die aktuelle Sprechposition zu ermitteln.
  • 'marker': Eine SSML-Markierung wurde erreicht. Verwenden Sie event.charIndex, um die aktuelle Position der gesprochenen Sprache zu ermitteln.
  • 'end': Die Engine hat die Äußerung vollständig gesprochen.
  • 'interrupted': Diese Äußerung wurde durch einen anderen Aufruf von speak() oder stop() unterbrochen und nicht beendet.
  • 'cancelled': Diese Äußerung wurde in die Warteschlange gestellt, dann aber durch einen anderen Aufruf von speak() oder stop() abgebrochen und es wurde nie gesprochen.
  • 'error': Ein enginespezifischer Fehler ist aufgetreten und diese Äußerung kann nicht gesprochen werden. Weitere Informationen finden Sie unter event.errorMessage.

Vier der Ereignistypen – 'end', 'interrupted', 'cancelled' und 'error' – sind final. Nachdem eines dieser Ereignisse empfangen wurde, wird diese Äußerung nicht mehr gesprochen und es werden keine neuen Ereignisse von 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 verwenden möchten, wenn sie bestimmte Ereignisse sendet, übergeben Sie die erforderlichen Ereignisse im requiredEventTypes-Element des Optionsobjekts oder verwenden Sie getVoices(), um eine Stimme auszuwählen, die Ihren Anforderungen entspricht. Beide werden im Folgenden beschrieben.

SSML-Markup

Äußerungen, die in dieser API verwendet werden, können Markup mit der Speech Synthesis Markup Language (SSML) enthalten. Wenn Sie SSML verwenden, sollte das erste Argument für speak() ein vollständiges SSML-Dokument mit einem XML-Header und einem <speak>-Tag der obersten Ebene sein, nicht ein Dokumentfragment.

Beispiel:

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

Nicht alle Speech-Engines unterstützen alle SSML-Tags und einige unterstützen SSML möglicherweise gar nicht. Alle Engines müssen jedoch alle SSML-Tags ignorieren, die sie nicht unterstützen, und den zugrunde liegenden Text trotzdem ausgeben.

Eine Stimme auswählen

Standardmäßig wählt Chrome für jede gesprochene Äußerung die am besten geeignete Stimme aus, basierend auf der Sprache. Auf den meisten Windows-, Mac OS X- und ChromeOS-Systemen sollte die vom Betriebssystem bereitgestellte Sprachsynthese in der Lage sein, jeden Text in mindestens einer Sprache vorzulesen. Einige Nutzer haben möglicherweise eine Vielzahl von Stimmen zur Verfügung, die von ihrem Betriebssystem und von Spracherkennungsmodulen stammen, die von anderen Chrome-Erweiterungen implementiert wurden. In diesen Fällen können Sie benutzerdefinierten Code implementieren, um die passende Stimme auszuwählen oder dem Nutzer eine Liste mit Auswahlmöglichkeiten zu präsentieren.

Wenn Sie eine Liste aller Stimmen abrufen möchten, rufen Sie getVoices() auf und übergeben Sie eine Funktion, die ein Array von TtsVoice-Objekten als Argument erhält:

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"

"end"

"word"

"sentence"

"marker"

„interrupted“

„cancelled“

"error"

"pause"

„resume“

TtsEvent

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

Attribute

  • charIndex

    number optional

    Der Index des aktuellen Zeichens im gesprochenen Text. Bei Wort-Ereignissen wird das Ereignis am Ende eines Worts und vor dem Beginn des nächsten ausgelöst. Das charIndex steht für einen Punkt im Text am Anfang des nächsten zu sprechenden Wortes.

  • errorMessage

    String optional

    Die Fehlerbeschreibung, wenn der Ereignistyp error ist.

  • Länge

    number optional

    Chrome 74 und höher

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

  • 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 wird, end, wenn das Ende der Äußerung erreicht wird, interrupted, wenn die Äußerung vor dem Ende beendet oder unterbrochen wird, cancelled, wenn sie aus der Warteschlange entfernt wird, bevor sie synthetisiert wird, oder error, wenn ein anderer Fehler auftritt. Wenn die Sprache pausiert wird, wird ein pause-Ereignis ausgelöst, wenn eine bestimmte Äußerung in der Mitte pausiert wird, und resume, wenn eine Äußerung die Sprache fortsetzt. Hinweis: Ereignisse zum Pausieren und Fortsetzen werden möglicherweise nicht ausgelöst, wenn die Sprache zwischen Äußerungen pausiert wird.

TtsOptions

Chrome 77 und höher

Die Sprachoptionen für die TTS-Engine.

Attribute

  • desiredEventTypes

    string[] optional

    Die TTS-Ereignistypen, die Sie erfassen möchten. Wenn dieser Parameter fehlt, werden möglicherweise alle Ereignistypen gesendet.

  • enqueue

    boolean optional

    Bei „true“ wird diese Äußerung in die Warteschlange gestellt, wenn die Sprachsynthese bereits läuft. Bei „false“ (Standard) wird die aktuelle Sprachausgabe unterbrochen und die Sprachausgabewarteschlange geleert, bevor diese neue Äußerung gesprochen wird.

  • extensionId

    String optional

    Die Erweiterungs-ID der zu verwendenden Spracherkennungs-Engine, sofern bekannt.

  • gender

    VoiceGender optional

    Seit Chrome 77 eingestellt

    Das Geschlecht wird nicht mehr unterstützt und ignoriert.

    Geschlecht der Stimme für synthetische Sprache.

  • lang

    String optional

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

  • Wurf

    number optional

    Die Sprechtonhöhe muss zwischen 0 und 2 liegen, wobei 0 der niedrigste und 2 der höchste Wert ist. 1,0 entspricht der Standardstimmlage einer Stimme.

  • Geschwindigkeit

    number optional

    Sprechgeschwindigkeit relativ zur Standardgeschwindigkeit für diese Stimme. 1,0 ist die Standardrate, die normalerweise etwa 180 bis 220 Wörter pro Minute beträgt. 2,0 bedeutet doppelt so schnell, 0,5 halb so schnell. Werte unter 0,1 oder über 10,0 sind nicht zulässig. Bei vielen Stimmen werden die Mindest- und Höchstwerte jedoch weiter eingeschränkt. So kann es sein, dass eine bestimmte Stimme nicht schneller als dreimal so schnell wie normal spricht, auch 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 leer, wird eine beliebige verfügbare Stimme verwendet.

  • Volume

    number optional

    Die Sprechlautstärke muss zwischen 0 und 1 liegen (einschließlich), 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 während der Sprachausgabe auftreten.

    Die onEvent-Funktion sieht so aus:

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

    • event

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

TtsVoice

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

Attribute

  • eventTypes

    EventType[] optional

    Alle Callback-Ereignistypen, 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 wird nicht mehr unterstützt und ignoriert.

    Das Geschlecht dieser Stimme.

  • lang

    String optional

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

  • Remote

    boolean optional

    Bei „true“ ist die Synthese-Engine eine Remote-Netzwerkressource. Es kann zu einer höheren Latenz kommen und Bandbreitenkosten können anfallen.

  • voiceName

    String optional

    Die Bezeichnung der Stimme.

VoiceGender

Chrome 54 und höher Seit Chrome 70 eingestellt

Das Geschlecht ist veraltet und wird ignoriert.

Enum

"male"

"female"

Methoden

getVoices()

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

Ruft ein Array aller verfügbaren Stimmen ab.

Parameter

  • callback

    Funktion optional

    Der Parameter callback sieht so aus:

    (voices: TtsVoice[]) => void

    • Stimmen

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

Ausgabe

  • Promise<TtsVoice[]>

    Chrome 101 und höher

isSpeaking()

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

Prüft, ob die Engine gerade spricht. Unter Mac OS X ist das Ergebnis immer „true“, wenn die Spracherkennungs-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

      „True“, wenn gesprochen wird, andernfalls „false“.

Ausgabe

  • Promise<boolean>

    Chrome 101 und höher

pause()

chrome.tts.pause(): void

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

resume()

chrome.tts.resume(): void

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

speak()

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

Gibt Text über ein Sprachausgabemodul aus.

Parameter

  • Äußerung

    String

    Der zu sprechende Text, entweder als Nur-Text oder als vollständiges, wohlgeformtes SSML-Dokument. Sprach-Engines, die SSML nicht unterstützen, entfernen die Tags und geben den Text aus. Der Text darf maximal 32.768 Zeichen lang sein.

  • Optionen

    TtsOptions optional

    Die Sprachoptionen.

  • callback

    Funktion optional

    Der Parameter callback sieht so aus:

    () => void

Ausgabe

  • Promise<void>

    Chrome 101 und höher

stop()

chrome.tts.stop(): void

Die aktuelle Sprachausgabe wird beendet und die Warteschlange aller ausstehenden Äußerungen wird geleert. Wenn die Sprache pausiert wurde, wird die Pause für den nächsten Aufruf von „speak“ aufgehoben.

Ereignisse

onVoicesChanged

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

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

Parameter

  • callback

    Funktion

    Der Parameter callback sieht so aus:

    () => void