chrome.ttsEngine

Beschreibung

Verwenden Sie die chrome.ttsEngine API, um eine Sprachausgabe-Engine mithilfe einer Erweiterung zu implementieren. Wenn Ihre Erweiterung über diese API registriert wird, empfängt sie Ereignisse, die eine gesprochene Äußerung und andere Parameter enthalten, wenn eine Erweiterung oder Chrome-App die tts API zum Generieren von Sprache verwendet. Ihre Erweiterung kann dann jede verfügbare Webtechnologie zum Synthetisieren und Ausgeben der Sprache verwenden und Ereignisse an die aufrufende Funktion zurücksenden, um den Status zu melden.

Berechtigungen

ttsEngine

Konzepte und Nutzung

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. Für Erweiterungen kann jede verfügbare Webtechnologie zur Sprachbereitstellung kostenlos genutzt werden, einschließlich Audiostreaming von einem Server oder HTML5-Audio. Eine Erweiterung kann sogar andere Äußerungen ausführen, z. B. Untertitel in einem Pop-up anzeigen oder als Log-Nachrichten an einen Remote-Server senden.

Zum Implementieren einer TTS-Engine muss eine Erweiterung die Berechtigung "ttsEngine" deklarieren und dann alle von ihr bereitgestellten Stimmen im Manifest der Erweiterung wie folgt deklarieren:

{
  "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 der Name der Stimme und die verwendete Engine identifiziert werden kann. Im 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 gesprochene Inhalte in nur einer Sprache synthetisieren. Wenn eine Engine mehr als eine Sprache unterstützt, kann für jede Sprache problemlos eine eigene Stimme registriert werden. 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 mit derselben Logik intern zu verarbeiten. Wenn Sie jedoch eine Stimme erstellen möchten, die Äußerungen in einer beliebigen Sprache verarbeitet, lassen Sie den lang-Parameter im Manifest Ihrer Erweiterung weg.

Der Parameter event_types ist schließlich erforderlich, wenn die Engine Ereignisse senden kann, um den Client über den Fortschritt der Sprachsynthese zu aktualisieren. Es empfiehlt sich zumindest, den Ereignistyp 'end' zu unterstützen, um anzugeben, wann die Sprachausgabe beendet ist. Andernfalls kann Chrome keine Äußerungen in der Warteschlange planen.

Nach dem Laden kann eine Erweiterung die Liste der deklarierten Stimmen durch Aufrufen von chrome.ttsEngine.updateVoices ersetzen. Die Parameter, die im programmatischen Aufruf von updateVoices verwendet werden, werden in der Camel-Case-Schreibweise verwendet. Beispiel: voiceName, im Gegensatz zur Manifestdatei, die voice_name verwendet.)

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

  • '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.
  • 'error': Es ist ein suchmaschinenspezifischer Fehler aufgetreten, der nicht gesprochen werden kann. Übergeben Sie weitere Informationen in event.errorMessage.

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

Sprachausgabe-Clients können die Sprachinformationen aus dem Manifest der Erweiterung durch Aufrufen von tts.getVoices abrufen, sofern Sie Sprachereignis-Listener wie unten beschrieben registriert haben.

Sprachereignisse verarbeiten

Damit auf Anfrage von Clients Sprache generiert wird, muss die Erweiterung Listener für onSpeak und onStop so registrieren:

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 allein davon ab, ob die Erweiterung die angegebenen Voice-Parameter in ihrem Manifest unterstützt und ob sie registrierte Listener für onSpeak und onStop hat. Mit anderen Worten: Es gibt keine Möglichkeit für eine Erweiterung, eine Sprachanfrage zu empfangen und dynamisch zu entscheiden, ob sie sie verarbeiten soll.

Typen

AudioBuffer

Chrome 92 und höher

Parameter, die einen Audiozwischenspeicher und zugehörige Daten enthalten.

Attribute

  • audioBuffer

    ArrayBuffer

    Der Audiozwischenspeicher der Sprachausgabe-Engine. Sie sollte die Länge exakt „audioStreamOptions.bufferSize“ haben und als Mono, unter audioStreamOptions.sampleRate und als lineares pcm, vorzeichenbehaftetes 32-Bit-Gleitkommazahl, codiert sein, d.h. den Typ „Float32Array“ in JavaScript.

  • charIndex

    Nummer optional

    Der Zeichenindex, der diesem Audiozwischenspeicher zugeordnet ist.

  • isLastBuffer

    Boolescher Wert optional

    „True“, wenn dieser Audiozwischenspeicher der letzte gesprochene Text ist.

AudioStreamOptions

Chrome 92 und höher

Enthält das Audiostreamformat, das voraussichtlich von einer Suchmaschine produziert wird.

Attribute

  • bufferSize

    Zahl

    Die Anzahl der Samples in einem Audiopuffer.

  • sampleRate

    Zahl

    Die in einem Audiopuffer erwartete Abtastrate.

SpeakOptions

Chrome 92 und höher

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

Attribute

  • gender

    VoiceGender optional

    Seit Chrome 92 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 dieser 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. Dieser Wert liegt garantiert zwischen 0,1 und 10,0 (einschließlich). Wenn eine Stimme nicht dieses gesamte Spektrum an Raten unterstützt, geben Sie keinen Fehler zurück. Begrenzen Sie die Rate 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

    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.

VoiceGender

Chrome 54 oder höher Seit Chrome 70 eingestellt

Das Geschlecht wurde eingestellt und wird ignoriert.

Enum

Methoden

updateVoices()

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

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

Parameters

  • Stimmen

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

Veranstaltungen

onPause

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

Optional: Wenn eine Suchmaschine das Pausenereignis unterstützt, sollte sie die aktuell gesprochene Äußerung (sofern vorhanden) pausieren, bis ein Fortsetzungs- oder Stopp-Ereignis empfangen wird. Durch ein Stoppereignis muss auch der Status „Pausiert“ gelöscht werden.

Parameters

  • callback

    Funktion

    Der Parameter callback sieht so aus:

    ()=>void

onResume

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

Optional: Wenn eine Suchmaschine das Ereignis „Pausieren“ unterstützt, sollte sie auch das Ereignis „Fortsetzen“ unterstützen, damit die aktuelle Äußerung (falls vorhanden) weiter gesprochen wird. Durch ein Stoppereignis muss auch der Status „Pausiert“ gelöscht werden.

Parameters

  • 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.

Parameters

  • 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 aus 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 erste mit dem Optionsobjekt übereinstimmt. Der Unterschied zu „ttsEngine.onSpeak“ besteht darin, dass Chrome Audiowiedergabedienste bereitstellt und das Senden von tts-Ereignissen übernimmt.

Parameters

  • 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 Audiozwischenspeicher 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 Anruf an tts.stop erfolgt und diese Erweiterung mitten im Gespräch ist. Wenn eine Erweiterung einen Aufruf an onStop empfängt und die Sprachausgabe bereits angehalten wurde, wird nichts weiter ausgeführt und es wird kein Fehler ausgegeben. Wenn die Spracheingabe im Status „Pausiert“ ist, wird dadurch die Pausierung aufgehoben.

Parameters

  • callback

    Funktion

    Der Parameter callback sieht so aus:

    ()=>void