chrome.ttsEngine

refresh date: 2026-09-25 robots: noindex

Beschreibung

Mit der chrome.ttsEngine API können Sie eine Text-zu-Sprache-Engine(TTS) mithilfe einer Erweiterung implementieren. Wenn sich Ihre Erweiterung mit dieser API registriert, erhält sie Ereignisse mit einer zu sprechenden Äußerung und anderen Parametern, wenn eine Erweiterung oder Chrome-App die tts API zum Generieren von Sprache verwendet. Ihre Erweiterung kann dann jede verfügbare Webtechnologie verwenden, um die Sprache zu synthetisieren und auszugeben, und Ereignisse an die aufrufende Funktion zurücksenden, um den Status zu melden.

Berechtigungen

ttsEngine

Übersicht

Eine Erweiterung kann sich selbst als Sprach-Engine registrieren. Dadurch können einige oder alle Aufrufe von Funktionen wie tts.speak und tts.stop abgefangen und eine alternative Implementierung bereitgestellt werden. Erweiterungen können jede verfügbare Webtechnologie verwenden, um Sprache bereitzustellen, einschließlich Streaming-Audio von einem Server und HTML5-Audio. Eine Erweiterung könnte sogar etwas anderes mit den Äußerungen tun, z. B. Untertitel in einem Pop-up-Fenster anzeigen oder sie als Logeinträge an einen Remote-Server senden.

Manifest

Um eine TTS-Engine zu implementieren, muss eine Erweiterung die Berechtigung „ttsEngine“ deklarieren und dann alle von ihr bereitgestellten Stimmen im Erweiterungsmanifest deklarieren, etwa so:

{
  "name": "My TTS Engine",
  "version": "1.0",
  "permissions": ["ttsEngine"],
  "tts_engine": {
    "voices": [
      {
        "voice_name": "Alice",
        "lang": "en-US",
        "event_types": ["start", "marker", "end"]
      },
      {
        "voice_name": "Pat",
        "lang": "en-US",
        "event_types": ["end"]
      }
    ]
  },
  "background": {
    "page": "background.html",
    "persistent": false
  }
}

Eine Erweiterung kann eine beliebige Anzahl von Stimmen angeben.

Der Parameter voice_name ist erforderlich. Der Name sollte so aussagekräftig sein, dass er den Namen der Stimme und die verwendete Engine identifiziert. In dem unwahrscheinlichen Fall, dass zwei Erweiterungen Stimmen mit demselben Namen registrieren, kann ein Client die ID der Erweiterung angeben, die die Synthese durchführen soll.

Der Parameter lang ist optional, wird aber dringend empfohlen. Fast immer kann eine Stimme Sprache nur in einer einzigen Sprache synthetisieren. Wenn eine Engine mehr als eine Sprache unterstützt, kann sie problemlos eine separate Stimme für jede Sprache registrieren. In seltenen Fällen, in denen eine einzelne Stimme mehr als eine Sprache verarbeiten kann, ist es am einfachsten, zwei separate Stimmen aufzulisten und sie intern mit derselben Logik zu verarbeiten. Wenn Sie jedoch eine Stimme erstellen möchten, die Äußerungen in einer beliebigen Sprache verarbeiten kann, lassen Sie den Parameter lang im Manifest Ihrer Erweiterung weg.

Schließlich ist der Parameter event_types erforderlich, wenn die Engine Ereignisse senden kann, um den Client über den Fortschritt der Sprachsynthese zu informieren. Es wird dringend empfohlen, mindestens den Ereignistyp 'end' zu unterstützen, um anzugeben, wann die Sprache beendet ist. Andernfalls kann Chrome keine in der Warteschlange befindlichen Äußerungen planen.

Nach dem Laden kann eine Erweiterung die Liste der deklarierten Stimmen durch Aufrufen von chrome.ttsEngine.updateVoices ersetzen. (Beachten Sie, dass die im programmatischen Aufruf von updateVoices verwendeten Parameter in Camel-Case-Schreibweise angegeben sind, z.B. voiceName, im Gegensatz zur Manifestdatei, in der voice_name verwendet wird.)

Die möglichen Ereignistypen, die Sie senden können, entsprechen den Ereignistypen, die die Methode speak() empfängt:

  • 'start': Die Engine hat mit der Sprachausgabe begonnen.
  • '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 Engine hat die Äußerung fertig gesprochen.
  • 'error': Es ist ein Engine-spezifischer Fehler aufgetreten und diese Äußerung kann nicht gesprochen werden. Übergeben Sie weitere Informationen in event.errorMessage.

Die Ereignisse 'interrupted' und 'cancelled' werden nicht von der Sprach-Engine gesendet, sondern automatisch von Chrome generiert.

Text-to-Speech-Clients können die Sprachinformationen aus dem Manifest Ihrer Erweiterung abrufen, indem sie tts.getVoices aufrufen, sofern Sie wie unten beschrieben Event-Listener für Sprache registriert haben.

Sprachereignisse verarbeiten

Damit Ihre Erweiterung auf Anfrage von Clients Sprache generieren kann, müssen Sie Listener für onSpeak und onStop registrieren, z. B. so:

const speakListener = (utterance, options, sendTtsEvent) => {
  sendTtsEvent({type: 'start', charIndex: 0})

  // (start speaking)

  sendTtsEvent({type: 'end', charIndex: utterance.length})
};

const stopListener = () => {
  // (stop all speech)
};

chrome.ttsEngine.onSpeak.addListener(speakListener);
chrome.ttsEngine.onStop.addListener(stopListener);

Die Entscheidung, ob eine bestimmte Sprachanfrage an eine Erweiterung gesendet wird, hängt ausschließlich davon ab, ob die Erweiterung die angegebenen Sprachparameter in ihrem Manifest unterstützt und Listener für onSpeak und onStop registriert hat. Mit anderen Worten: Es gibt keine Möglichkeit, dass eine Erweiterung eine Sprachanfrage empfängt und dynamisch entscheidet, ob sie verarbeitet werden soll.

Typen

AudioBuffer

Chrome 92 oder höher

Parameter, die einen Audio-Zwischenspeicher und zugehörige Daten enthalten.

Attribute

  • audioBuffer

    ArrayBuffer

    Der Audiopuffer des Text-to-Speech-Moduls. Sie sollte genau die Länge „audioStreamOptions.bufferSize“ haben und als Mono mit „audioStreamOptions.sampleRate“ und als lineares PCM, 32-Bit-Gleitkommazahl mit Vorzeichen, d.h. als Float32Array-Typ in JavaScript, codiert sein.

  • charIndex

    number optional

    Der Zeichenindex, der diesem Audiopuffer zugeordnet ist.

  • isLastBuffer

    Boolesch optional

    „True“, wenn dieser Audiopuffer der letzte für den gesprochenen Text ist.

AudioStreamOptions

Chrome 92 oder höher

Enthält das Audiostreamformat, das von einer Engine erzeugt werden soll.

Attribute

  • bufferSize

    Zahl

    Die Anzahl der Samples in einem Audio-Zwischenspeicher.

  • sampleRate

    Zahl

    Die in einem Audiopuffer erwartete Abtastrate.

LanguageInstallStatus

Chrome 132 oder höher

Der Installationsstatus einer Stimme.

Enum

"notInstalled"

"installing"

"installed"

"failed"

LanguageStatus

Chrome 132 oder höher

Installationsstatus einer Sprache.

Attribute

  • Fehler

    String optional

    Details zu Installationsfehlern. Optional ausgefüllt, wenn die Sprache nicht installiert werden konnte.

  • installStatus

    Installationsstatus.

  • lang

    String

    Sprachstring in der Form „Sprachcode-Regionscode“, wobei die Region weggelassen werden kann. Beispiele: en, en-AU, zh-CH.

LanguageUninstallOptions

Chrome 132 oder höher

Optionen zum Deinstallieren einer bestimmten Sprache.

Attribute

  • uninstallImmediately

    boolean

    „True“, wenn der TTS-Client die Sprache sofort deinstallieren möchte. Die Engine kann anhand dieses Parameters und der Informationen des Anfragenden entscheiden, ob oder wann die Sprache deinstalliert werden soll. Wenn „false“, werden möglicherweise andere Kriterien wie die letzte Nutzung verwendet, um zu bestimmen, wann die App deinstalliert werden soll.

SpeakOptions

Chrome 92 oder höher

Für die Methode „tts.speak()“ angegebene Optionen.

Attribute

  • gender

    VoiceGender optional

    Eingestellt seit Chrome 92

    „Gender“ wurde eingestellt und wird ignoriert.

    Geschlecht der Stimme für synthetisierte 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

    Tonhöhe zwischen 0 und 2 (einschließlich), wobei 0 die niedrigste und 2 die höchste ist. 1.0 entspricht der Standardtonhöhe dieser Stimme.

  • Geschwindigkeit

    number optional

    Sprechgeschwindigkeit im Verhältnis 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. Dieser Wert liegt garantiert zwischen 0,1 und 10,0 (einschließlich). Wenn eine Stimme diesen gesamten Bereich von Geschwindigkeiten nicht unterstützt, geben Sie keinen Fehler zurück. Begrenzen Sie die Geschwindigkeit stattdessen auf den Bereich, den die Stimme unterstützt.

  • voiceName

    String optional

    Der Name der Stimme, die für die Synthese verwendet werden soll.

  • Volume

    number optional

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

TtsClient

Chrome 131 und höher

Kennung für den Client, der den Status anfordert.

Attribute

  • id

    String

    Client, der eine Anfrage zur Sprachverwaltung stellt. Bei einer Erweiterung ist dies die eindeutige Erweiterungs-ID. Bei Chrome-Funktionen ist dies der menschenlesbare Name der Funktion.

  • Art des Antragstellers.

TtsClientSource

Chrome 131 und höher

Art des Antragstellers.

Enum

"chromefeature"

"extension"

VoiceGender

Chrome 54 und höher Seit Chrome 70 veraltet

„Gender“ wurde eingestellt und wird ignoriert.

Enum

"male"

"female"

Methoden

updateLanguage()

Chrome 132 oder höher
chrome.ttsEngine.updateLanguage(
  status: LanguageStatus,
)
: void

Wird von einer Engine aufgerufen, wenn versucht wird, eine Sprache zu installieren, und wenn eine Sprache deinstalliert wird. Wird auch als Antwort auf eine Statusanfrage von einem Client aufgerufen. Wenn eine Stimme installiert oder deinstalliert wird, sollte die Engine auch „ttsEngine.updateVoices“ aufrufen, um die Stimme zu registrieren.

Parameter

updateVoices()

Chrome 66 oder höher
chrome.ttsEngine.updateVoices(
  voices: TtsVoice[],
)
: void

Wird von einer Engine aufgerufen, um die Liste der Stimmen zu aktualisieren. Diese Liste überschreibt alle Stimmen, die im Manifest dieser Erweiterung deklariert sind.

Parameter

  • Stimmen

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

Ereignisse

onInstallLanguageRequest

Chrome 131 und höher
chrome.ttsEngine.onInstallLanguageRequest.addListener(
  callback: function,
)

Wird ausgelöst, wenn ein TTS-Client die Installation einer neuen Sprache anfordert. Die Engine sollte versuchen, die Sprache herunterzuladen und zu installieren, und ttsEngine.updateLanguage mit dem Ergebnis aufrufen. Wenn der Vorgang erfolgreich war, sollte die Engine auch „ttsEngine.updateVoices“ aufrufen, um die neu verfügbaren Stimmen zu registrieren.

Parameter

  • callback

    Funktion

    Der Parameter callback sieht so aus:

    (requestor: TtsClient, lang: string) => void

onLanguageStatusRequest

Chrome 132 oder höher
chrome.ttsEngine.onLanguageStatusRequest.addListener(
  callback: function,
)

Wird ausgelöst, wenn ein TTS-Client den Installationsstatus einer Sprache anfordert.

Parameter

  • callback

    Funktion

    Der Parameter callback sieht so aus:

    (requestor: TtsClient, lang: string) => void

onPause

chrome.ttsEngine.onPause.addListener(
  callback: function,
)

Optional: Wenn eine Engine das Pausenereignis unterstützt, sollte sie die aktuelle Äußerung, falls vorhanden, pausieren, bis sie ein Fortsetzungs- oder Stoppereignis empfängt. Beachte, dass ein Stopp-Ereignis auch den Pausenstatus aufheben sollte.

Parameter

  • callback

    Funktion

    Der Parameter callback sieht so aus:

    () => void

onResume

chrome.ttsEngine.onResume.addListener(
  callback: function,
)

Optional: Wenn eine Engine das Pausenereignis unterstützt, sollte sie auch das Fortsetzungsereignis unterstützen, um die aktuelle Äußerung fortzusetzen, falls vorhanden. Beachte, dass ein Stopp-Ereignis auch den Pausenstatus aufheben sollte.

Parameter

  • callback

    Funktion

    Der Parameter callback sieht so aus:

    () => void

onSpeak

chrome.ttsEngine.onSpeak.addListener(
  callback: function,
)

Wird aufgerufen, wenn der Nutzer tts.speak() aufruft und eine der Stimmen aus dem Manifest dieser Erweiterung als erste mit dem Optionsobjekt übereinstimmt.

Parameter

  • callback

    Funktion

    Der Parameter callback sieht so aus:

    (utterance: string, options: SpeakOptions, sendTtsEvent: function) => void

    • Äußerung

      String

    • Optionen
    • sendTtsEvent

      Funktion

      Der Parameter sendTtsEvent sieht so aus:

      (event: tts.TtsEvent) => void

      • event

        Das Ereignis der Text-zu-Sprache-Engine, das den Status dieser Äußerung angibt.

onSpeakWithAudioStream

Chrome 92 oder höher
chrome.ttsEngine.onSpeakWithAudioStream.addListener(
  callback: function,
)

Wird aufgerufen, wenn der Nutzer tts.speak() aufruft und eine der Stimmen aus dem Manifest dieser Erweiterung als erste mit dem Optionsobjekt übereinstimmt. Unterscheidet sich von ttsEngine.onSpeak dadurch, dass Chrome Audiowiedergabedienste bereitstellt und die Weiterleitung von TTS-Ereignissen übernimmt.

Parameter

  • callback

    Funktion

    Der Parameter callback sieht so aus:

    (utterance: string, options: SpeakOptions, audioStreamOptions: AudioStreamOptions, sendTtsAudio: function, sendError: function) => void

    • Äußerung

      String

    • Optionen
    • audioStreamOptions
    • sendTtsAudio

      Funktion

      Der Parameter sendTtsAudio sieht so aus:

      (audioBufferParams: AudioBuffer) => void

      • audioBufferParams

        Parameter, die einen Audio-Zwischenspeicher und zugehörige Daten enthalten.

    • sendError

      Funktion

      Chrome 94 oder höher

      Der Parameter sendError sieht so aus:

      (errorMessage?: string) => void

      • errorMessage

        String optional

        Ein String, der den Fehler beschreibt.

onStop

chrome.ttsEngine.onStop.addListener(
  callback: function,
)

Wird ausgelöst, wenn „tts.stop“ aufgerufen wird und diese Erweiterung möglicherweise gerade spricht. Wenn eine Erweiterung einen Aufruf von „onStop“ erhält und die Sprachausgabe bereits beendet ist, sollte sie nichts tun (keinen Fehler auslösen). Wenn die Sprachausgabe pausiert ist, sollte der pausierte Status dadurch aufgehoben werden.

Parameter

  • callback

    Funktion

    Der Parameter callback sieht so aus:

    () => void

onUninstallLanguageRequest

Chrome 132 oder höher
chrome.ttsEngine.onUninstallLanguageRequest.addListener(
  callback: function,
)

Wird ausgelöst, wenn ein TTS-Client angibt, dass eine Sprache nicht mehr benötigt wird.

Parameter