chrome.ttsEngine

Beschreibung

Mit der chrome.ttsEngine API können Sie eine Text-in-Sprache-Engine(TTS) mithilfe einer Erweiterung implementieren. Wenn sich Ihre Erweiterung über diese API registriert, empfängt sie Ereignisse mit einer gesprochenen Äußerung sowie andere Parameter, wenn eine Erweiterung oder Chrome-App die tts API zur Generierung 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ückzusenden, um den Status zu melden.

Berechtigungen

ttsEngine

Konzepte und Verwendung

Eine Erweiterung kann sich selbst als Sprach-Engine registrieren. Dadurch können einige oder alle Aufrufe auf Funktionen wie tts.speak() und tts.stop() und stellen eine alternative Implementierung bereit. Bei den Erweiterungen kann für die Sprachausgabe, einschließlich Streaming von Audio, jede verfügbare Webtechnologie kostenlos verwendet werden. von einem Server, HTML5-Audio. Eine Erweiterung kann sogar etwas anderes bewirken, mit den Äußerungen, z. B. Untertitel in einem Pop-up anzeigen oder als Log-Nachrichten an einen Remote-Server.

Zum Implementieren einer Text-in-Sprache-Engine muss eine Erweiterung den Parameter „ttsEngine“ deklarieren. und erklären dann, Stimmen im Erweiterungsmanifest zur Verfügung:

{
  "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 Name der verwendeten Stimme und Suchmaschine. Im unwahrscheinlichen Fall, dass zwei Erweiterungen Stimmen registrieren mit demselben Namen 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 synthetisieren, in nur einer Sprache sprechen. Wenn eine Suchmaschine mehr als eine Sprache unterstützt, kann sie problemlos Für jede Sprache eine eigene Stimme registrieren In seltenen Fällen, in denen eine einzelne Stimme mehrere Sprachen unterstützt, ist es am einfachsten, zwei unterschiedliche Stimmen aufzulisten und diese mit dieselbe Logik intern. Wenn Sie jedoch eine Stimme erstellen möchten, die Äußerungen in beliebigen Sprache zu verwenden, lassen Sie den lang-Parameter im Manifest der Erweiterung weg.

Der Parameter event_types ist schließlich erforderlich, wenn die Suchmaschine Ereignisse zum Aktualisieren des Clients senden kann. den Fortschritt der Sprachsynthese. Es wird mindestens der Ereignistyp 'end' unterstützt, um anzugeben, nach Abschluss der Sprachausgabe wird dringend empfohlen, da Chrome andernfalls keine Äußerungen in der Warteschlange planen kann.

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

Die möglichen Ereignistypen, die Sie senden können, entsprechen den Ereignistypen, die in der Methode speak() verwendet werden. erhält:

  • 'start': Die Suchmaschine hat mit der Aussprache der Äußerung begonnen.
  • 'word': Eine Wortgrenze wurde erreicht. event.charIndex verwenden, um die aktuelle Sprache zu bestimmen .
  • 'sentence': Eine Satzgrenze wurde erreicht. Mit event.charIndex ermitteln Sie den aktuellen Sprechposition.
  • 'marker': Eine SSML-Markierung wurde erreicht. event.charIndex verwenden, um die aktuelle Sprache zu bestimmen .
  • '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. Mehr bestehen Informationen in event.errorMessage.

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

Sprachausgabe-Clients können die Sprachinformationen aus dem Manifest Ihrer Erweiterung abrufen, indem sie folgende URL aufrufen: tts.getVoices, vorausgesetzt, Sie haben Sprachereignis-Listener wie unten beschrieben registriert.

Sprachereignisse verarbeiten

Um auf Anfrage von Clients Sprache zu generieren, muss Ihre Erweiterung Listener für beides registrieren onSpeak und onStop, wie hier:

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, beruht ausschließlich auf Ob die Erweiterung die angegebenen Sprachparameter in ihrem Manifest unterstützt und registriert wurde Listener für onSpeak und onStop. Mit anderen Worten: Eine Erweiterung erhält keine Sprachanfrage und entscheidet dynamisch, 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 exakt „audioStreamOptions.bufferSize“ lauten und es muss als Mono, mit „audioStreamOptions.sampleRate“ codiert sein. Außerdem sollte sie als lineares Pcm-, 32-Bit-Gleitkommazahl mit Vorzeichen, d. h. den Typ „Float32Array“ in JavaScript, codiert sein.

  • charIndex

    Zahl optional

    Der mit diesem Audio-Zwischenspeicher verknüpfte Zeichenindex.

  • isLastBuffer

    Boolescher Wert optional

    "True", wenn dieser Audiopuffer der letzte gesprochene Text ist.

AudioStreamOptions

Chrome 92 und höher

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

Attribute

  • bufferSize

    Zahl

    Die Anzahl der Samples in einem Audiozwischenspeicher.

  • sampleRate

    Zahl

    Die in einem Audiopuffer erwartete Abtastrate.

SpeakOptions

Chrome 92 und höher

Optionen, die für die Methode tts.speak() angegeben wurden.

Attribute

  • gender

    VoiceGender optional

    <ph type="x-smartling-placeholder"></ph> Eingestellt seit Chrome 92

    Das Geschlecht wurde eingestellt und wird ignoriert.

    Das Geschlecht der Stimme für die künstliche Sprachausgabe.

  • 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

    Die Tonhöhe der Sprechgeschwindigkeit muss zwischen 0 und 2 liegen, wobei 0 der niedrigste und 2 der höchste Wert ist. 1,0 entspricht der Standardtonhöhe dieser Stimme.

  • Geschwindigkeit

    Zahl 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 diesen gesamten Preisbereich unterstützt, geben Sie 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

    Zahl optional

    Sprachlautstärke zwischen 0 und 1 (jeweils einschließlich, 0 ist die niedrigste und 1 die höchste), der Standardwert ist 1,0.

VoiceGender

Chrome (ab Version 54) Seit Chrome 70 eingestellt

Das Geschlecht wurde eingestellt und wird ignoriert.

Enum

"männlich"

"weiblich"

Methoden

updateVoices()

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

Wird von einer Suchmaschine aufgerufen, um ihre Stimmenliste 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

onPause

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

Optional: Wenn eine Suchmaschine das Pausenereignis unterstützt, sollte sie gegebenenfalls die aktuelle gesprochene Äußerung anhalten, bis sie ein Fortsetzungs- oder Stopp-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 Suchmaschine das Ereignis „pause“ unterstützt, sollte sie auch das Ereignis „Resume“ unterstützen, damit gegebenenfalls die aktuelle Äußerung gesprochen wird. Bei einem Stoppereignis sollte auch der pausierte Status gelöscht werden.

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 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 die erste ist, die 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 Audiopuffer 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 bei tts.stop eingeht und diese Erweiterung möglicherweise mitten im Sprechen läuft. Wenn eine Erweiterung einen Aufruf von onStop erhält und die Sprachausgabe bereits gestoppt wird, sollte sie nichts tun und keinen Fehler auslösen. Wenn die Sprachausgabe im Status „Pausiert“ ist, sollte dadurch auch der pausierte Status aufgehoben werden.

Parameter

  • callback

    Funktion

    Der Parameter callback sieht so aus:

    () => void