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 Stimmen, die sie bereitstellt, 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 wurde der Ausspruch zur Aussprache gegeben.
- 'word': Es wurde ein Wortende erreicht. Mit- event.charIndexkönnen Sie die aktuelle Position der Sprachausgabe ermitteln.
- 'sentence': Es wurde ein Satzende erreicht. Mit- event.charIndexkönnen Sie die aktuelle Position der Sprachausgabe ermitteln.
- 'marker': Eine SSML-Markierung wurde erreicht. Mit- event.charIndexkönnen Sie die aktuelle Position der Sprachausgabe ermitteln.
- 'end': Der Sprachsynthesizer hat die Aussprache des Satzes 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 erhält und dynamisch entscheidet, ob sie verarbeitet werden soll.
Typen
AudioBuffer
Parameter, die einen Audiopuffer und zugehörige Daten enthalten.
Attribute
- 
    audioBufferArrayBuffer Der Audiopuffer der Sprachausgabe-Engine. Die Länge sollte genau audioStreamOptions.bufferSize betragen und als Mono, bei audioStreamOptions.sampleRate und als lineares PCM, 32-Bit-signiertes Float, d.h. der Typ „Float32Array“ in JavaScript, codiert sein. 
- 
    charIndexnumber optional Der Zeichenindex, der mit diesem Audio-Puffer verknüpft ist. 
- 
    isLastBufferboolescher Wert optional „Wahr“, wenn dieser Audiopuffer der letzte für den gesprochenen Text ist. 
AudioStreamOptions
Enthält das Audiostream-Format, das von einer Engine generiert werden soll.
Attribute
- 
    bufferSizeZahl Die Anzahl der Samples in einem Audio-Puffer. 
- 
    sampleRateZahl Die in einem Audio-Puffer erwartete Abtastrate. 
LanguageInstallStatus
Der Installationsstatus einer Stimme.
Enum
"notInstalled" 
 
„installing“ 
 
„installed“ 
 
„failed“ 
 
LanguageStatus
Installationsstatus einer Sprache.
Attribute
- 
    FehlerString optional Details zu Installationsfehlern Optional ausgefüllt, wenn die Sprache nicht installiert werden konnte. 
- 
    installStatusInstallationsstatus 
- 
    langString Sprachstring in Form von Sprachcode-Regionscode, wobei die Region weggelassen werden kann. Beispiele: de, de-DE, zh-CH. 
LanguageUninstallOptions
Optionen zum Deinstallieren einer bestimmten Sprache.
Attribute
- 
    uninstallImmediatelyboolean „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 werden soll. Wenn „false“ festgelegt ist, werden möglicherweise andere Kriterien wie die letzte Nutzung verwendet, um zu bestimmen, wann die Deinstallation erfolgen soll. 
SpeakOptions
Für die Methode „tts.speak()“ angegebene Optionen.
Attribute
- 
    genderVoiceGender optional Seit Chrome 92 eingestelltDas Geschlecht wird nicht mehr unterstützt und ignoriert. Geschlecht der Stimme für synthetisierte Sprache. 
- 
    langString optional Die Sprache, die für die Synthese verwendet werden soll, im Format Sprache-Region. Beispiele: „de“, „de-DE“, „en-US“, „en-GB“, „zh-CN“. 
- 
    Wurfnumber 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. 
- 
    Geschwindigkeitnumber 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. 
- 
    voiceNameString optional Der Name der Stimme, die für die Synthese verwendet werden soll. 
- 
    Volumenumber 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
Kennung des Clients, der den Status anfordert.
Attribute
- 
    idString 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. 
- 
    sourceArt des Antragstellers. 
TtsClientSource
Art des Antragstellers.
Enum
"chromefeature" 
 
"extension" 
 
VoiceGender
Das Geschlecht wird nicht mehr unterstützt und ignoriert.
Enum
"male" 
 
"female" 
 
Methoden
updateLanguage()
chrome.ttsEngine.updateLanguage(
status: LanguageStatus,
): void
Wird von einer Engine aufgerufen, wenn eine Sprache installiert oder deinstalliert wird. Wird auch als Antwort auf eine Statusanfrage von einem Kunden aufgerufen. Wenn eine Stimme installiert oder deinstalliert wird, sollte die Engine auch ttsEngine.updateVoices aufrufen, um die Stimme zu registrieren.
Parameter
- 
    StatusDer Installationsstatus der Sprache. 
updateVoices()
chrome.ttsEngine.updateVoices(
voices: TtsVoice[],
): void
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
- 
    StimmenTtsVoice[] Array von tts.TtsVoice-Objekten, die die verfügbaren Stimmen für die Sprachsynthese darstellen.
Ereignisse
onInstallLanguageRequest
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
- 
    callbackFunktion Der Parameter callbacksieht so aus:(requestor: TtsClient, lang: string) => void - 
    Anfragender
- 
    langString 
 
- 
    
onLanguageStatusRequest
chrome.ttsEngine.onLanguageStatusRequest.addListener(
callback: function,
)
Wird ausgelöst, wenn ein TTS-Client den Installationsstatus einer Sprache anfordert.
Parameter
- 
    callbackFunktion Der Parameter callbacksieht so aus:(requestor: TtsClient, lang: string) => void - 
    Anfragender
- 
    langString 
 
- 
    
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 pausierten Status löschen.
Parameter
- 
    callbackFunktion Der Parameter callbacksieht 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 pausierten Status löschen.
Parameter
- 
    callbackFunktion Der Parameter callbacksieht 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
- 
    callbackFunktion Der Parameter callbacksieht so aus:(utterance: string, options: SpeakOptions, sendTtsEvent: function) => void - 
    ÄußerungString 
- 
    Optionen
- 
    sendTtsEventFunktion Der Parameter sendTtsEventsieht so aus:(event: tts.TtsEvent) => void - 
    eventDas Ereignis von der Sprachausgabe-Engine, das den Status dieser Äußerung angibt. 
 
- 
    
 
- 
    
onSpeakWithAudioStream
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
- 
    callbackFunktion Der Parameter callbacksieht so aus:(utterance: string, options: SpeakOptions, audioStreamOptions: AudioStreamOptions, sendTtsAudio: function, sendError: function) => void - 
    ÄußerungString 
- 
    Optionen
- 
    audioStreamOptions
- 
    sendTtsAudioFunktion Der Parameter sendTtsAudiosieht so aus:(audioBufferParams: AudioBuffer) => void - 
    audioBufferParamsParameter, die einen Audiopuffer und zugehörige Daten enthalten. 
 
- 
    
- 
    sendErrorFunktion Chrome 94 und höherDer Parameter sendErrorsieht so aus:(errorMessage?: string) => void - 
    errorMessageString 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
- 
    callbackFunktion Der Parameter callbacksieht so aus:() => void 
onUninstallLanguageRequest
chrome.ttsEngine.onUninstallLanguageRequest.addListener(
callback: function,
)
Wird ausgelöst, wenn ein TTS-Client angibt, dass eine Sprache nicht mehr benötigt wird.
Parameter
- 
    callbackFunktion Der Parameter callbacksieht so aus:(requestor: TtsClient, lang: string, uninstallOptions: LanguageUninstallOptions) => void - 
    Anfragender
- 
    langString 
- 
    uninstallOptions
 
-