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. 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 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 von ihr bereitgestellten Stimmen 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 hat mit der Aussprache des Satzes begonnen.'word'
: Es wurde ein Wortende erreicht. Mitevent.charIndex
können Sie die aktuelle Position der Sprachausgabe ermitteln.'sentence'
: Es wurde ein Satzende erreicht. Mitevent.charIndex
können Sie die aktuelle Position der Sprachausgabe ermitteln.'marker'
: Eine SSML-Markierung wurde erreicht. Mitevent.charIndex
können Sie die aktuelle Position der Sprachausgabe ermitteln.'end'
: Die Sprachausgabe ist beendet.'error'
: Ein enginespezifischer Fehler ist aufgetreten und diese Äußerung kann nicht gesprochen werden. Übergeben Sie weitere Informationen inevent.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.
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
Parameter, die einen Audio-Puffer 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
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
Der Installationsstatus einer Stimme.
Enum
"notInstalled"
„installing“
„installed“
„failed“
LanguageStatus
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.
LanguageUninstallOptions
Optionen zum Deinstallieren einer bestimmten Sprache.
Attribute
-
uninstallImmediately
boolean
„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 wird. 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
-
gender
VoiceGender optional
Seit Chrome 92 eingestelltDas Geschlecht wird nicht mehr unterstützt und ignoriert.
Geschlecht der Stimme für synthetisierte Sprache.
-
lang
String optional
Die für die Synthese zu verwendende Sprache im Format Sprache-Region. Beispiele: „de“, „de-DE“, „en-US“, „en-GB“, „zh-CN“.
-
Wurf
number 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 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.
-
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
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.
-
source
Art des Antragstellers.
TtsClientSource
Art des Antragstellers.
Enum
"chromefeature"
"extension"
VoiceGender
Das Geschlecht wird nicht mehr unterstützt und ignoriert.
Enum
"male"
„weiblich“
Methoden
updateLanguage()
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
-
Status
Der Installationsstatus der Sprache.
updateVoices()
chrome.ttsEngine.updateVoices(
voices: TtsVoice[],
)
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
-
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
callback
sieht so aus:(requestor: TtsClient, lang: string) => void
-
Anfragender
-
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
callback
sieht so aus:(requestor: TtsClient, lang: string) => void
-
Anfragender
-
lang
String
-
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 Pausierungsstatus löschen.
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 als Erstes 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.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
-
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öherDer 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 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
-
callback
Funktion
Der Parameter
callback
sieht 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
callback
sieht so aus:(requestor: TtsClient, lang: string, uninstallOptions: LanguageUninstallOptions) => void
-
Anfragender
-
lang
String
-
uninstallOptions
-