Beschreibung
Mit der chrome.ttsEngine API können Sie eine Text-to-Speech-Engine(TTS) mithilfe einer Erweiterung implementieren. Wenn Ihre Erweiterung sich mit dieser API registriert, erhält sie Ereignisse mit einer zu sprechenden Äußerung und anderen Parametern, wenn eine Erweiterung oder Chrome-App die tts API zum Generieren von Sprache verwendet. Ihre Erweiterung kann dann beliebige verfügbare Webtechnologien verwenden, um die Sprache zu synthetisieren und auszugeben, und Ereignisse zurück an die aufrufende Funktion senden, um den Status zu melden.
Berechtigungen
ttsEngineKonzepte und Verwendung
Eine Erweiterung kann sich als Spracherkennungsmodul registrieren. Dadurch kann es einige oder alle Aufrufe von Funktionen wie tts.speak() und tts.stop() abfangen und eine alternative Implementierung bereitstellen.
Erweiterungen können beliebige verfügbare Webtechnologien für die Sprachausgabe verwenden, einschließlich Streaming-Audio von einem Server und HTML5-Audio. Eine Erweiterung könnte sogar etwas anderes mit den Äußerungen tun, z. B. Untertitel in einem Pop-up-Fenster anzeigen oder sie als Protokollnachrichten an einen Remote-Server senden.
Um eine TTS-Engine zu implementieren, muss eine Erweiterung die Berechtigung „ttsEngine“ deklarieren und dann alle von ihr bereitgestellten Stimmen im Erweiterungsmanifest deklarieren, wie hier:
{
"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 beschreibend sein, dass er den Namen der Stimme und die verwendete Engine angibt. In dem 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. In den meisten Fällen kann eine Stimme Sprache nur in einer einzigen Sprache synthetisieren. Wenn eine Engine mehr als eine Sprache unterstützt, kann sie problemlos eine separate Stimme für jede Sprache registrieren. In seltenen Fällen, in denen eine einzelne Stimme mehr als eine Sprache verarbeiten kann, ist es am einfachsten, einfach 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 verarbeiten kann, lassen Sie den Parameter lang im Manifest Ihrer Erweiterung weg.
Der Parameter event_types ist erforderlich, wenn 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 in die Warteschlange gestellten Äußerungen planen.
Nach dem Laden kann eine Erweiterung die Liste der deklarierten Stimmen ersetzen, indem sie chrome.ttsEngine.updateVoices aufruft. Beachten Sie, dass die Parameter, die im programmatischen Aufruf von updateVoices verwendet werden, in Camel-Case-Schreibweise angegeben sind (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 die Methode speak() empfängt:
'start': Die Engine hat mit der Sprachausgabe begonnen.'word': Eine Wortgrenze wurde erreicht. Verwenden Sieevent.charIndex, um die aktuelle Position der gesprochenen Sprache zu ermitteln.'sentence': Eine Satzgrenze wurde erreicht. Verwenden Sieevent.charIndex, um die aktuelle Sprachposition zu ermitteln.'marker': Eine SSML-Markierung wurde erreicht. Verwenden Sieevent.charIndex, um die aktuelle Position der gesprochenen Sprache zu ermitteln.'end': Die Engine hat die Äußerung vollständig gesprochen.'error': Ein enginespezifischer Fehler ist aufgetreten und dieser Ausdruck kann nicht gesprochen werden. Weitere Informationen inevent.errorMessageübergeben.
Die Ereignisse 'interrupted' und 'cancelled' werden nicht von der Spracherkennung gesendet, sondern automatisch von Chrome generiert.
Text-to-Speech-Clients können die Sprachinformationen aus dem Manifest Ihrer Erweiterung abrufen, indem sie tts.getVoices aufrufen, sofern Sie Sprachereignis-Listener wie unten beschrieben registriert haben.
Sprachereignisse verarbeiten
Damit Ihre Erweiterung auf Anfrage von Clients Sprache generieren kann, muss sie Listener für onSpeak und onStop 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 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: Eine Erweiterung kann keine Sprachanfrage empfangen und dynamisch entscheiden, ob sie sie verarbeiten soll.
Typen
AudioBuffer
Parameter, die einen Audio-Puffer und zugehörige Daten enthalten.
Properties
-
audioBuffer
ArrayBuffer
Der Audio-Puffer des Text-zu-Sprache-Moduls. Er muss genau die Länge audioStreamOptions.bufferSize haben und als Mono, mit audioStreamOptions.sampleRate und als lineares PCM, 32-Bit-Gleitkommazahl mit Vorzeichen (d.h. der Typ Float32Array in JavaScript) codiert sein.
-
charIndex
number optional
Der Zeichenindex, der diesem Audio-Puffer zugeordnet ist.
-
isLastBuffer
Boolesch optional
„True“, wenn dieser Audio-Puffer der letzte für den gesprochenen Text ist.
AudioStreamOptions
Enthält das Audiostream-Format, das von einer Engine erwartet wird.
Properties
-
bufferSize
Zahl
Die Anzahl der Samples in einem Audio-Puffer.
-
sampleRate
Zahl
Die in einem Audio-Puffer erwartete Abtastrate.
LanguageInstallStatus
Der Installationsstatus einer Stimme.
Enum
"notInstalled"
„installing“
„installed“
„fehlgeschlagen“
LanguageStatus
Installationsstatus einer Sprache.
Properties
-
Fehler
String optional
Details zu Installationsfehlern. Optional ausgefüllt, wenn die Sprache nicht installiert werden konnte.
-
installStatus
Installationsstatus.
-
lang
String
Sprachstring in der Form „Sprachcode-Regionscode“, wobei die Region weggelassen werden kann. Beispiele: en, en-AU, zh-CH.
LanguageUninstallOptions
Optionen zum Deinstallieren einer bestimmten Sprache.
Properties
-
uninstallImmediately
boolean
„True“, wenn der Sprachausgabe-Client die sofortige Deinstallation der Sprache wünscht. Die Engine kann anhand dieses Parameters und der Informationen zum Anfragenden entscheiden, ob und wann die Sprache deinstalliert wird. Wenn „false“ festgelegt ist, können andere Kriterien wie die letzte Nutzung verwendet werden, um zu bestimmen, wann die Deinstallation erfolgen soll.
SpeakOptions
Optionen, die für die Methode „tts.speak()“ angegeben wurden.
Properties
-
gender
VoiceGender optional
Seit Chrome 92 eingestelltDas Geschlecht ist veraltet und wird ignoriert.
Geschlecht der Stimme für synthetische Sprache.
-
lang
String optional
Die Sprache, die für die Synthese verwendet werden soll, im Format Sprache-Region. Beispiele: „en“, „en-US“, „en-GB“, „zh-CN“.
-
Wurf
number optional
Die Sprechtonhöhe muss zwischen 0 und 2 liegen, wobei 0 die niedrigste und 2 die höchste Tonhöhe ist. 1,0 entspricht der Standardtonhöhe dieser Stimme.
-
Geschwindigkeit
number optional
Sprechgeschwindigkeit relativ zur Standardgeschwindigkeit für diese Stimme. 1,0 ist die Standardrate, die normalerweise etwa 180 bis 220 Wörtern pro Minute entspricht. 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 diesen gesamten Bereich von Raten nicht unterstützt, geben Sie keinen Fehler zurück. Beschränken Sie die Rate stattdessen auf den Bereich, 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
Lautstärke der gesprochenen Sprache zwischen 0 und 1 (einschließlich), 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.
Properties
-
id
String
Client, der eine Anfrage zur Sprachverwaltung stellt. Für eine Erweiterung ist dies die eindeutige Erweiterungs-ID. Für Chrome-Funktionen ist dies der menschenlesbare Name der Funktion.
-
source
Art des Antragstellers.
TtsClientSource
Art des Antragstellers.
Enum
"chromefeature"
„extension“
VoiceGender
Das Geschlecht ist veraltet und wird ignoriert.
Enum
"male"
"female"
Methoden
updateLanguage()
chrome.ttsEngine.updateLanguage(
status: LanguageStatus,
): void
Wird von einer Engine aufgerufen, wenn versucht wird, eine Sprache zu installieren, und wenn eine Sprache deinstalliert wird. Wird auch als Reaktion auf eine Statusanfrage eines Clients aufgerufen. Wenn eine Stimme installiert oder deinstalliert wird, sollte die Engine auch „ttsEngine.updateVoices“ aufrufen, um die Stimme zu registrieren.
Parameter
-
Status
Der Installationsstatus der Sprache.
updateVoices()
chrome.ttsEngine.updateVoices(
voices: TtsVoice[],
): void
Wird von einer Engine aufgerufen, um die Liste der Stimmen zu aktualisieren. Diese Liste überschreibt alle Stimmen, die im Manifest dieser Erweiterung deklariert sind.
Parameter
-
Stimmen
TtsVoice[]
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
-
callback
Funktion
Der Parameter
callbacksieht so aus:(requestor: TtsClient, lang: string) => void
-
Anforderer
-
lang
String
-
onLanguageStatusRequest
chrome.ttsEngine.onLanguageStatusRequest.addListener(
callback: function,
)
Wird ausgelöst, wenn ein TTS-Client den Installationsstatus einer Sprache anfordert.
Parameter
-
callback
Funktion
Der Parameter
callbacksieht so aus:(requestor: TtsClient, lang: string) => void
-
Anforderer
-
lang
String
-
onPause
chrome.ttsEngine.onPause.addListener(
callback: function,
)
Optional: Wenn eine Engine das Pausenereignis unterstützt, sollte sie die aktuelle gesprochene Äußerung pausieren, sofern vorhanden, bis sie ein Fortsetzungs- oder Stoppereignis empfängt. Durch ein Stopp-Ereignis sollte der pausierte Status ebenfalls aufgehoben werden.
Parameter
-
callback
Funktion
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, sofern vorhanden. Durch ein Stopp-Ereignis sollte der pausierte Status ebenfalls aufgehoben werden.
Parameter
-
callback
Funktion
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 Options-Objekt übereinstimmt.
Parameter
-
callback
Funktion
Der Parameter
callbacksieht so aus:(utterance: string, options: SpeakOptions, sendTtsEvent: function) => void
-
Äußerung
String
-
Optionen
-
sendTtsEvent
Funktion
Der Parameter
sendTtsEventsieht so aus:(event: tts.TtsEvent) => void
-
event
Das Ereignis der Text-zu-Sprache-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 Options-Objekt übereinstimmt. Unterscheidet sich von ttsEngine.onSpeak dadurch, dass Chrome Audiowiedergabedienste bereitstellt und das Senden von TTS-Ereignissen übernimmt.
Parameter
-
callback
Funktion
Der Parameter
callbacksieht so aus:(utterance: string, options: SpeakOptions, audioStreamOptions: AudioStreamOptions, sendTtsAudio: function, sendError: function) => void
-
Äußerung
String
-
Optionen
-
audioStreamOptions
-
sendTtsAudio
Funktion
Der Parameter
sendTtsAudiosieht so aus:(audioBufferParams: AudioBuffer) => void
-
audioBufferParams
Parameter, die einen Audio-Puffer und zugehörige Daten enthalten.
-
-
sendError
Funktion
Chrome 94 und höherDer Parameter
sendErrorsieht 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 Sprache bereits beendet wurde, sollte sie nichts tun (keinen Fehler auslösen). Wenn sich die Sprache im pausierten Zustand befindet, sollte dies den pausierten Zustand beenden.
Parameter
-
callback
Funktion
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
-
callback
Funktion
Der Parameter
callbacksieht so aus:(requestor: TtsClient, lang: string, uninstallOptions: LanguageUninstallOptions) => void
-
Anforderer
-
lang
String
-
uninstallOptions
-