chrome.ttsEngine

Beschreibung

Mit der chrome.ttsEngine API können Sie eine TTS-Engine(Text-to-Speech) mithilfe einer Erweiterung implementieren. Wenn Ihre Erweiterung sich über diese API registriert, erhält sie Ereignisse mit einer auszusprechenden Ä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 zurück an die aufrufende Funktion senden, um den Status zu melden.

Berechtigungen

ttsEngine

Übersicht

Eine Erweiterung kann sich als Sprachmodul registrieren. So kann er einige oder alle Aufrufe von Funktionen wie tts.speak und tts.stop abfangen und eine alternative Implementierung bereitstellen. Für Erweiterungen kann jede verfügbare Webtechnologie verwendet werden, um Sprache bereitzustellen, einschließlich Audiostreaming von einem Server und HTML5-Audio. Eine Erweiterung kann mit den Äußerungen auch etwas anderes tun, z. B. Untertitel in einem Pop-up-Fenster anzeigen oder sie als Protokollnachrichten an einen Remote-Server senden.

Manifest

Um eine TTS-Engine zu implementieren, muss eine Erweiterung die Berechtigung „ttsEngine“ und dann alle von ihr bereitgestellten Stimmen im Erweiterungsmanifest angeben. Das geht 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
  }
}

Für eine Erweiterung kann eine beliebige Anzahl von Stimmen angegeben werden.

Der Parameter voice_name ist erforderlich. Der Name sollte aussagekräftig genug sein, um den Namen der Stimme und die verwendete Engine anzugeben. Für den unwahrscheinlichen Fall, dass zwei Erweiterungen Stimmen mit demselben Namen registrieren, kann ein Kunde die ID der Erweiterung angeben, die die Synthese ausführen soll.

Der Parameter lang ist optional, wird aber dringend empfohlen. Fast immer kann eine Stimme nur in einer einzigen Sprache synthetisiert werden. Wenn eine Engine mehrere Sprachen unterstützt, kann für jede Sprache ganz einfach eine separate Stimme registriert werden. In seltenen Fällen, in denen eine einzelne Stimme mehrere Sprachen 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 jeder Sprache verarbeitet, lassen Sie den Parameter lang aus dem Manifest Ihrer Erweiterung aus.

Der Parameter event_types ist erforderlich, damit 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 Spracheingabe beendet ist. Andernfalls kann Chrome keine anstehenden Äußerungen planen.

Nach dem Laden kann eine Erweiterung die Liste der angegebenen Stimmen durch Aufrufen von chrome.ttsEngine.updateVoices ersetzen. Hinweis: Die Parameter, die im programmatischen Aufruf von updateVoices verwendet werden, sind in Camel Case geschrieben: 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 von der speak()-Methode empfangen werden:

  • 'start': Der Engine hat mit der Aussprache des Satzes begonnen.
  • 'word': Es wurde ein Wortende erreicht. Mit event.charIndex können Sie die aktuelle Position der Sprachausgabe ermitteln.
  • 'sentence': Es wurde ein Satzende erreicht. Mit event.charIndex können Sie die aktuelle Position der Sprachausgabe ermitteln.
  • 'marker': Eine SSML-Markierung wurde erreicht. Mit event.charIndex können Sie die aktuelle Position der Sprachausgabe ermitteln.
  • 'end': Die Sprachausgabe ist beendet.
  • 'error': Ein enginespezifischer Fehler ist 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 Spracherkennung gesendet, sondern automatisch von Chrome generiert.

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

Spracherkennungsereignisse verarbeiten

Damit Sprache auf Anfrage von Kunden generiert werden kann, muss Ihre Erweiterung Listener sowohl für onSpeak als auch für onStop registrieren. Das geht 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 und höher

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

Attribute

  • audioBuffer

    ArrayBuffer

    Der Audiopuffer der Sprachausgabe-Engine. Die Länge sollte genau audioStreamOptions.bufferSize betragen und als Mono mit audioStreamOptions.sampleRate und als lineares PCM, 32-Bit-signiertes Float, d.h. der Typ „Float32Array“ in JavaScript, codiert sein.

  • charIndex

    number optional

    Der Zeichenindex, der mit diesem Audio-Puffer verknüpft ist.

  • isLastBuffer

    boolescher Wert optional

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

AudioStreamOptions

Chrome 92 und höher

Enthält das Audiostream-Format, das von einer Engine generiert werden soll.

Attribute

  • bufferSize

    Zahl

    Die Anzahl der Samples in einem Audio-Puffer.

  • sampleRate

    Zahl

    Die in einem Audio-Puffer erwartete Abtastrate.

LanguageInstallStatus

Ausstehend

Der Installationsstatus einer Stimme.

Enum

"notInstalled"

„installing“

„installed“

„failed“

LanguageStatus

Ausstehend

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 Form von Sprachcode-Regionscode, wobei die Region weggelassen werden kann. Beispiele: de, de-DE, zh-CH.

LanguageUninstallOptions

Ausstehend

Optionen zum Deinstallieren einer bestimmten Sprache.

Attribute

  • uninstallImmediately

    boolean

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

SpeakOptions

Chrome 92 und höher

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

Attribute

  • gender

    VoiceGender optional

    Seit Chrome 92 eingestellt

    Das Geschlecht wird nicht mehr unterstützt und ignoriert.

    Geschlecht der Stimme für synthetisierte Sprache.

  • lang

    String optional

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

  • Wurf

    number optional

    Tonhöhe zwischen 0 und 2, wobei 0 der niedrigste und 2 der höchste Wert ist. 1,0 entspricht der Standardstimmlage dieser Stimme.

  • Geschwindigkeit

    number optional

    Sprechgeschwindigkeit im Vergleich zur Standardgeschwindigkeit für diese Stimme. 1,0 ist die Standardrate, normalerweise etwa 180 bis 220 Wörter pro Minute. 2,0 bedeutet doppelt so schnell, 0,5 halb so schnell. Dieser Wert liegt garantiert zwischen 0,1 und 10,0. Wenn eine Stimme nicht die gesamte Bandbreite der Geschwindigkeiten unterstützt, gib keinen Fehler zurück. Begrenzen Sie stattdessen die Geschwindigkeit 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

    Die Sprechlautstärke liegt zwischen 0 und 1, wobei 0 die niedrigste und 1 die höchste Lautstärke ist.Der Standardwert ist 1, 0.

TtsClient

Chrome 131 und höher

Kennung des Clients, der den Status anfordert.

Attribute

  • id

    String

    Ein Kunde stellt eine Anfrage zur Sprachverwaltung. Bei einer Erweiterung ist dies die eindeutige Erweiterungs-ID. Bei Chrome-Funktionen ist dies der für Menschen lesbare 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 eingestellt

Das Geschlecht wird nicht mehr unterstützt und ignoriert.

Enum

"male"

„weiblich“

Methoden

updateLanguage()

Ausstehend
chrome.ttsEngine.updateLanguage(
  status: LanguageStatus,
)

Wird von einer Engine aufgerufen, wenn eine Sprache installiert oder 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 und höher
chrome.ttsEngine.updateVoices(
  voices: TtsVoice[],
)

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

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. Bei Erfolg 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

Ausstehend
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 Pausieren unterstützt, sollte sie die aktuelle Äußerung pausieren, falls vorhanden, bis sie ein Fortsetzen- oder Beenden-Ereignis empfängt. Hinweis: Ein Stopp-Ereignis sollte auch den Pausierungsstatus löschen.

Parameter

  • callback

    Funktion

    Der Parameter callback sieht so aus:

    () => void

onResume

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

Optional: Wenn eine Engine das Pausieren unterstützt, sollte sie auch das Fortsetzen unterstützen, um die aktuelle Äußerung fortzusetzen, falls vorhanden. Hinweis: Ein Stopp-Ereignis sollte auch den Pausierungsstatus löschen.

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 Erstes 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 von der Sprachausgabe-Engine, das den Status dieser Äußerung angibt.

onSpeakWithAudioStream

Chrome 92 und 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 Erstes mit dem Optionsobjekt übereinstimmt. Unterscheidet sich von ttsEngine.onSpeak dadurch, dass Chrome Audiowiedergabedienste bereitstellt und den Versand von TTS-Ereignissen verarbeitet.

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-Puffer und zugehörige Daten enthalten.

    • sendError

      Funktion

      Chrome 94 und 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 ein Aufruf an tts.stop erfolgt und diese Erweiterung möglicherweise gerade spricht. Wenn eine Erweiterung einen Aufruf an onStop erhält und die Sprache bereits gestoppt wurde, sollte sie nichts tun und keinen Fehler auslösen. Wenn die Sprache pausiert ist, sollte dieser Status aufgehoben werden.

Parameter

  • callback

    Funktion

    Der Parameter callback sieht so aus:

    () => void

onUninstallLanguageRequest

Ausstehend
chrome.ttsEngine.onUninstallLanguageRequest.addListener(
  callback: function,
)

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

Parameter