chrome.tts

Beschreibung

Verwenden Sie die chrome.tts API, um die synthetische Sprachausgabe abzuspielen. Weitere Informationen finden Sie in der zugehörigen ttsEngine API, die es einer Erweiterung ermöglicht, eine Sprach-Engine zu implementieren.

Chrome bietet diese Möglichkeit unter Windows (mit SAPI 5), Mac OS X und ChromeOS mit Sprachsynthesefunktionen des Betriebssystems. Auf allen Plattformen können Nutzer:innen Erweiterungen installieren, die sich als alternative Sprachmodule registrieren

Berechtigungen

tts

Konzepte und Verwendung

Sprachausgabe generieren

Wenn du etwas sagen möchtest, ruf über deine Erweiterung speak() an. Beispiel:

chrome.tts.speak('Hello, world.');

Wenn du nicht mehr sprechen möchtest, ruf einfach stop() an:

chrome.tts.stop();

Sie können Optionen bereitstellen, mit denen verschiedene Eigenschaften der Sprache gesteuert werden, z. B. Sprechgeschwindigkeit, Tonhöhe und mehr. Beispiel:

chrome.tts.speak('Hello, world.', {'rate': 2.0});

Es ist außerdem ratsam, die Sprache anzugeben, damit ein Synthesizer diese Sprache unterstützt (und regionalen Dialekt (falls zutreffend) ausgewählt.

chrome.tts.speak('Hello, world.', {'lang': 'en-US', 'rate': 2.0});

Standardmäßig wird bei jedem speak()-Aufruf die laufende Sprachausgabe unterbrochen und sofort gesprochen. Bis feststellen, ob ein Anruf irgendetwas unterbrechen würde, kannst du isSpeaking() aufrufen. Darüber hinaus können Sie Mit der Option enqueue kann diese Äußerung einer Warteschlange mit Äußerungen hinzugefügt werden, für die wird gesprochen, wenn die aktuelle Äußerung beendet ist.

chrome.tts.speak('Speak this first.');
chrome.tts.speak(
    'Speak this next, when the first sentence is done.', {'enqueue': true});

Eine vollständige Beschreibung aller Optionen finden Sie unter tts.speak(). Nicht alle Spracheingaben unterstützen alle Optionen.

Um Fehler abzufangen und sicherzustellen, dass Sie speak() korrekt aufrufen, übergeben Sie eine Callback-Funktion, die nimmt keine Argumente an. Im Callback siehst du, ob in runtime.lastError Fehler.

chrome.tts.speak(
  utterance,
  options,
  function() {
    if (chrome.runtime.lastError) {
      console.log('Error: ' + chrome.runtime.lastError.message);
    }
  }
);

Der Callback wird sofort zurückgegeben, noch bevor die Suchmaschine mit dem Generieren der Sprache begonnen hat. Der Zweck der Callback ist es, Sie auf Syntaxfehler bei der Verwendung der TTS API hinzuweisen, nicht alle möglichen Fehler, die beim Synthetisieren und Ausgeben von Sprache auftreten können. Um diese Fehler zu erkennen müssen Sie einen Event-Listener verwenden, der im nächsten Abschnitt beschrieben wird.

Auf Ereignisse warten

Um mehr Echtzeitinformationen zum Status der synthetisierten Sprache zu erhalten, übergeben Sie einen Ereignis-Listener in die Optionen für speak() so:

chrome.tts.speak(
  utterance,
  {
    onEvent: function(event) {
      console.log('Event ' + event.type + ' at position ' + event.charIndex);
      if (event.type == 'error') {
        console.log('Error: ' + event.errorMessage);
      }
    }
  },
  callback
);

Jedes Ereignis enthält einen Ereignistyp, den Zeichenindex der aktuellen Sprache relativ zum Äußerungen und bei Fehlerereignissen eine optionale Fehlermeldung. Es gibt folgende Ereignistypen:

  • '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.
  • 'interrupted': Diese Äußerung wurde durch einen anderen Aufruf von speak() oder stop() unterbrochen und hat noch nicht fertig sind.
  • 'cancelled': Diese Äußerung wurde in die Warteschlange gestellt, dann aber durch einen anderen Aufruf von speak() abgebrochen oder stop() und fing nie an zu sprechen.
  • 'error': Es ist ein suchmaschinenspezifischer Fehler aufgetreten und diese Äußerung kann nicht gesprochen werden. Prüfen event.errorMessage.

Vier der Ereignistypen – 'end', 'interrupted', 'cancelled' und 'error' – sind endgültig. Nachher eines dieser Ereignisse eingeht, spricht diese Äußerung nicht mehr und es werden keine neuen Ereignisse von diesem Äußerung empfangen.

Einige Stimmen unterstützen möglicherweise nicht alle Ereignistypen und manche Stimmen senden überhaupt keine Ereignisse. Wenn Sie eine Stimme nur dann verwenden möchten, wenn sie bestimmte Ereignisse sendet, übergeben Sie die erforderlichen Ereignisse in der requiredEventTypes-Mitglied des Optionsobjekts an oder verwenden Sie getVoices(), um eine Stimme auszuwählen, die Ihren Anforderungen entsprechen. Beide werden im Folgenden beschrieben.

SSML-Markup

Die in dieser API verwendeten Äußerungen können Markups mit der Speech Synthesis Markup Language enthalten. (SSML). Wenn Sie SSML verwenden, sollte das erste Argument von speak() ein vollständiges SSML-Dokument mit ein XML-Header und ein <speak>-Tag auf oberster Ebene, kein Dokumentfragment.

Beispiel:

chrome.tts.speak(
  '<?xml version="1.0"?>' +
  '<speak>' +
  '  The <emphasis>second</emphasis> ' +
  '  word of this sentence was emphasized.' +
  '</speak>'
);

Nicht alle Sprach-Engines unterstützen alle SSML-Tags und manche unterstützen SSML eventuell auch gar nicht, aber alle Suchmaschinen müssen nicht unterstützte SSML ignorieren und den zugrunde liegenden Text trotzdem vorlesen.

Stimme auswählen

Standardmäßig wählt Chrome die am besten geeignete Stimme für jede Äußerung aus, die Sie sprechen möchten. die Sprache. Bei den meisten Windows-, Mac OS X- und ChromeOS-Systemen ist die Sprachsynthese durch den muss das Betriebssystem jeden Text in mindestens einer Sprache sprechen können. Einige Nutzer haben möglicherweise eine allerdings mit einer Vielzahl von Stimmen, die über das Betriebssystem und die implementierten Sprach-Engines verfügbar sind. durch andere Chrome-Erweiterungen. In diesen Fällen können Sie benutzerdefinierten Code implementieren, um den geeigneten oder dem Nutzer eine Liste mit Auswahlmöglichkeiten vorlegen.

Um eine Liste aller Stimmen zu erhalten, rufen Sie getVoices() auf und übergeben Sie eine Funktion, die ein Array von TtsVoice-Objekte als Argument:

chrome.tts.getVoices(
  function(voices) {
    for (var i = 0; i < voices.length; i++) {
      console.log('Voice ' + i + ':');
      console.log('  name: ' + voices[i].voiceName);
      console.log('  lang: ' + voices[i].lang);
      console.log('  extension id: ' + voices[i].extensionId);
      console.log('  event types: ' + voices[i].eventTypes);
    }
  }
);

Typen

EventType

Chrome (ab Version 54)

Enum

"start"

„Ende“

"Wort"

"Satz"

„Markierung“

"unterbrochen"

"storniert"

"Fehler"

"Pause"

"Resume"

TtsEvent

Ein Ereignis von der Text-in-Sprache-Engine, um den Status einer Äußerung zu senden.

Attribute

  • charIndex

    Zahl optional

    Der Index des aktuellen Zeichens in der Äußerung. Bei Wortereignissen wird das Ereignis am Ende eines Wortes und vor dem Beginn des nächsten ausgelöst. charIndex steht für einen Textpunkt am Anfang des nächsten gesprochenen Worts.

  • errorMessage

    String optional

    Die Fehlerbeschreibung, wenn der Ereignistyp error ist.

  • Länge

    Zahl optional

    Chrome 74 und höher

    Die Länge des nächsten Teils der Äußerung. In einem word-Ereignis ist dies beispielsweise die Länge des Wortes, das als Nächstes gesprochen wird. Er wird auf -1 gesetzt, wenn er nicht von der Sprach-Engine eingestellt wird.

  • Typ

    Folgende Typen sind möglich: start, sobald die Sprache begonnen hat, word, wenn eine Wortgrenze erreicht wird, sentence, wenn eine Satzgrenze erreicht wird, marker, wenn ein SSML-Markierungselement erreicht wird, end, wenn das Ende der Äußerung erreicht ist, interrupted, wenn die Äußerung vor dem Ende angehalten oder unterbrochen wird, cancelled, wenn sie vor der Synthese aus der Warteschlange entfernt wird, oder error, wenn ein anderer Fehler auftritt. Wird die Sprachausgabe angehalten, wird ein pause-Ereignis ausgelöst, wenn eine bestimmte Äußerung in der Mitte pausiert wird, und resume, wenn die Sprachausgabe wieder fortgesetzt wird. Ereignisse zum Anhalten und Fortsetzen werden möglicherweise nicht ausgelöst, wenn die Sprachausgabe zwischen Äußerungen pausiert wird.

TtsOptions

Chrome 77 oder höher

Die Sprachoptionen für die Text-in-Sprache-Engine.

Attribute

  • desiredEventTypes

    string[] optional

    Die TTS-Ereignistypen, die Sie anhören möchten. Fehlt diese Angabe, werden möglicherweise alle Ereignistypen gesendet.

  • in die Warteschlange stellen

    Boolescher Wert optional

    Falls wahr, wird diese Äußerung in die Warteschlange gestellt, wenn die Sprachausgabe bereits läuft. Bei „false“ (Standardeinstellung) wird die aktuelle Sprachausgabe unterbrochen und die Sprachwarteschlange wird geleert, bevor die neue Äußerung gesprochen wird.

  • extensionId

    String optional

    Die Erweiterungs-ID der zu verwendenden Sprach-Engine, falls bekannt.

  • gender

    VoiceGender optional

    <ph type="x-smartling-placeholder"></ph> Seit Chrome 77 verworfen

    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 einer 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. Werte unter 0,1 oder über 10,0 sind grundsätzlich nicht zulässig, aber viele Stimmen schränken die Mindest- und Höchstraten weiter ein. So kann es beispielsweise vorkommen, dass eine bestimmte Stimme nicht schneller als dreimal spricht, selbst wenn Sie einen Wert über 3,0 angeben.

  • requiredEventTypes

    string[] optional

    Die TTS-Ereignistypen, die die Stimme unterstützen muss.

  • voiceName

    String optional

    Der Name der Stimme, die für die Synthese verwendet werden soll. Wenn das Feld leer ist, wird eine beliebige verfügbare Stimme verwendet.

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

  • onEvent

    void optional

    Diese Funktion wird mit Ereignissen aufgerufen, die beim Aussprechen der Äußerung auftreten.

    Die Funktion onEvent sieht so aus:

    (event: TtsEvent) => {...}

    • event

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

TtsVoice

Eine Beschreibung einer Stimme, die für die Sprachsynthese verfügbar ist.

Attribute

  • eventTypes

    EventType[] optional

    Alle Arten von Rückrufereignissen, die mit dieser Stimme gesendet werden können.

  • extensionId

    String optional

    Die ID der Erweiterung, die diese Stimme bereitstellt.

  • gender

    VoiceGender optional

    <ph type="x-smartling-placeholder"></ph> Seit Chrome 70 verworfen

    Das Geschlecht wurde eingestellt und wird ignoriert.

    Das Geschlecht dieser Stimme.

  • lang

    String optional

    Die von dieser Stimme unterstützte Sprache im Format Sprache-Region. Beispiele: „en“, „en-US“, „en-GB“, „zh-CN“.

  • Standortunabhängig

    Boolescher Wert optional

    Falls wahr, ist die Synthese-Engine eine Remote-Netzwerkressource. Dies kann eine höhere Latenz und Bandbreitenkosten verursachen.

  • voiceName

    String optional

    Die Bezeichnung der Stimme.

VoiceGender

Chrome (ab Version 54) Seit Chrome 70 eingestellt

Das Geschlecht wurde eingestellt und wird ignoriert.

Enum

"männlich"

"weiblich"

Methoden

getVoices()

<ph type="x-smartling-placeholder"></ph> Versprechen
chrome.tts.getVoices(
  callback?: function,
)

Ruft ein Array aller verfügbaren Stimmen ab.

Parameter

  • callback

    Funktion optional

    Der Parameter callback sieht so aus:

    (voices: TtsVoice[]) => void

    • Stimmen

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

Returns

  • Promise&lt;TtsVoice[]&gt;

    Chrome 101 oder höher

    Promise-Objekte werden in Manifest V3 und höher unterstützt, Callbacks sind jedoch für Abwärtskompatibilität. Sie können nicht beide in demselben Funktionsaufruf verwenden. Die Promise wird mit demselben Typ aufgelöst, der an das Callback übergeben wird.

isSpeaking()

<ph type="x-smartling-placeholder"></ph> Versprechen
chrome.tts.isSpeaking(
  callback?: function,
)

Prüft, ob die Suchmaschine derzeit spricht. Unter Mac OS X lautet das Ergebnis immer dann, wenn die Sprach-Engine des Systems spricht, auch wenn die Sprachausgabe nicht von Chrome initiiert wurde.

Parameter

  • callback

    Funktion optional

    Der Parameter callback sieht so aus:

    (speaking: boolean) => void

    • sprechen

      boolean

      „True“, wenn gesprochen wird, andernfalls „false“.

Returns

  • Promise&lt;boolean&gt;

    Chrome 101 oder höher

    Promise-Objekte werden in Manifest V3 und höher unterstützt, Callbacks sind jedoch für Abwärtskompatibilität. Sie können nicht beide in demselben Funktionsaufruf verwenden. Die Promise wird mit demselben Typ aufgelöst, der an das Callback übergeben wird.

pause()

chrome.tts.pause()

Unterbricht die Sprachsynthese, möglicherweise mitten in einer Äußerung. Bei einem Anruf zum Fortsetzen oder Anhalten wird die Sprachpause fortgesetzt.

resume()

chrome.tts.resume()

Wenn die Sprachausgabe angehalten wurde, wird sie an der Stelle fortgesetzt, an der sie unterbrochen wurde.

speak()

<ph type="x-smartling-placeholder"></ph> Versprechen
chrome.tts.speak(
  utterance: string,
  options?: TtsOptions,
  callback?: function,
)

Sprachausgabe von Text mithilfe einer Text-in-Sprache-Engine.

Parameter

  • Äußerung

    String

    Der zu sprechende Text, entweder Nur-Text oder ein vollständiges, wohlgeformtes SSML-Dokument. Sprach-Engines, die SSML nicht unterstützen, entfernen die Tags und sprechen den Text vor. Die maximale Länge des Textes beträgt 32.768 Zeichen.

  • Optionen

    TtsOptions optional

    Die Sprachoptionen.

  • callback

    Funktion optional

    Der Parameter callback sieht so aus:

    () => void

Returns

  • Versprechen<void>

    Chrome 101 oder höher

    Promise-Objekte werden in Manifest V3 und höher unterstützt, Callbacks sind jedoch für Abwärtskompatibilität. Sie können nicht beide in demselben Funktionsaufruf verwenden. Die Promise wird mit demselben Typ aufgelöst, der an das Callback übergeben wird.

stop()

chrome.tts.stop()

Beendet die aktuelle Sprachausgabe und leert die Warteschlange aller ausstehenden Äußerungen. Wenn die Sprachausgabe pausiert war, wird sie jetzt für den nächsten Anruf wieder aktiviert.

Ereignisse

onVoicesChanged

Chrome 124 und höher
chrome.tts.onVoicesChanged.addListener(
  callback: function,
)

Wird aufgerufen, wenn sich die Liste der tts.TtsVoice, die von getVoices zurückgegeben wird, geändert hat.

Parameter

  • callback

    Funktion

    Der Parameter callback sieht so aus:

    () => void