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

Konzepte und Verwendung

Eine Erweiterung kann sich als Sprachmodul 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 verwendet werden, um Sprache bereitzustellen, einschließlich Audiostreaming von einem Server und HTML5-Audio. Eine Erweiterung kann sogar etwas anderes mit den Äußerungen tun, z. B. Untertitel in einem Pop-up anzeigen oder sie als Protokollnachrichten an einen Remote-Server senden.

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

In einer 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 Suchmaschine mehr als eine Sprache unterstützt, kann sie problemlos für jede Sprache eine separate Stimme registrieren. 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 beliebigen Sprachen verarbeitet, lassen Sie den Parameter lang im Manifest der Erweiterung weg.

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 bei der Methode speak() empfangen werden:

  • 'start': Der Engine hat mit der Aussprache des Satzes begonnen.
  • 'word': Eine Wortgrenze wurde erreicht. Verwenden Sie event.charIndex, um die aktuelle Sprachposition zu 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 Suchmaschine hat die Äußerung vollständig gesprochen.
  • 'error': Es ist ein suchmaschinenspezifischer 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 Spracherkennung gesendet, sondern automatisch von Chrome generiert.

Sprachausgabe-Clients können die Sprachinformationen aus dem Manifest der Erweiterung abrufen. Dazu rufen Sie tts.getVoices auf, vorausgesetzt, Sie haben Sprachereignis-Listener wie unten beschrieben registriert.

Sprach-Ereignisse 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 Audiopuffer 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

"nicht installiert"

„installing“

„installed“

"fehlgeschlagen"

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.

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 synthetisierte Sprache.

  • lang

    String optional

    Die Sprache, die für die Synthese verwendet werden soll, in der Form Sprache-Region. Beispiele: „en“, „en-US“, „en-GB“, „zh-CN“.

  • Wurf

    Zahl 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 Verhältnis zur Standardgeschwindigkeit dieser 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 (einschließlich). Wenn eine Stimme nicht die gesamte Bandbreite der Geschwindigkeiten unterstützt, gib keinen Fehler zurück. Legen Sie stattdessen den Bereich fest, der von der Stimme unterstützt wird.

  • 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

Ausstehend

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

Ausstehend

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

"männlich"

"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. Durch diese Liste werden alle Stimmen überschrieben, 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

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

Wird ausgelöst, wenn ein TTS-Client die Installation einer neuen Sprache anfordert. Die Suchmaschine sollte versuchen, die Sprache herunterzuladen und zu installieren, und dann ttsEngine.updateLanguage mit dem Ergebnis aufrufen. Bei Erfolg sollte die Suchmaschine außerdem 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. Bei einem Stoppereignis sollte auch der pausierte Status gelöscht werden.

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 die erste ist, die 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. Anders als bei ttsEngine.onSpeak bietet Chrome Audiowiedergabedienste an und verarbeitet das Senden von tts-Ereignissen.

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 von onStop erhält und die Sprachausgabe bereits angehalten wird, 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