Beschreibung
Verwenden Sie die chrome.ttsEngine
API, um eine Sprachausgabe-Engine mithilfe einer Erweiterung zu implementieren. Wenn Ihre Erweiterung über diese API registriert wird, empfängt sie Ereignisse, die eine gesprochene Äußerung und andere Parameter enthalten, wenn eine Erweiterung oder Chrome-App die tts
API zum Generieren von Sprache verwendet. Ihre Erweiterung kann dann jede verfügbare Webtechnologie zum Synthetisieren und Ausgeben der Sprache verwenden und Ereignisse an die aufrufende Funktion zurücksenden, um den Status zu melden.
Berechtigungen
ttsEngine
Überblick
Eine Erweiterung kann sich selbst als Sprach-Engine registrieren. Dadurch können einige oder alle Aufrufe von Funktionen wie tts.speak
und tts.stop
abgefangen und eine alternative Implementierung bereitgestellt werden.
Für Erweiterungen kann jede verfügbare Webtechnologie zur Sprachbereitstellung kostenlos genutzt werden, einschließlich Audiostreaming von einem Server oder HTML5-Audio. Eine Erweiterung kann sogar andere Äußerungen ausführen, z. B. Untertitel in einem Pop-up-Fenster anzeigen oder als Log-Nachrichten an einen Remote-Server senden.
Manifest
Zum Implementieren einer TTS-Engine muss eine Erweiterung die Berechtigung "ttsEngine" deklarieren und dann alle von ihr bereitgestellten Stimmen im Manifest der Erweiterung wie folgt deklarieren:
{
"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 aussagekräftig sein, dass der Name der Stimme und die verwendete Engine identifiziert werden kann. Im 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. Fast immer kann eine Stimme
gesprochene Inhalte in nur einer Sprache synthetisieren. Wenn eine Engine mehr als eine Sprache unterstützt, kann für jede Sprache problemlos eine eigene Stimme registriert werden. In seltenen Fällen, in denen eine einzelne Stimme mehr als eine Sprache verarbeiten kann, ist es am einfachsten, zwei separate Stimmen aufzulisten und sie mit derselben Logik intern zu verarbeiten. Wenn Sie jedoch eine Stimme erstellen möchten, die Äußerungen in einer beliebigen Sprache verarbeitet, lassen Sie den lang
-Parameter im Manifest Ihrer Erweiterung weg.
Der Parameter event_types
ist schließlich erforderlich, wenn die Engine Ereignisse senden kann, um den Client über den Fortschritt der Sprachsynthese zu aktualisieren. Es empfiehlt sich zumindest, den Ereignistyp 'end'
zu unterstützen, um anzugeben, wann die Sprachausgabe beendet ist. Andernfalls kann Chrome keine Äußerungen in der Warteschlange planen.
Nach dem Laden kann eine Erweiterung die Liste der deklarierten Stimmen durch Aufrufen von chrome.ttsEngine.updateVoices
ersetzen. Die Parameter, die im programmatischen Aufruf von updateVoices
verwendet werden, werden in der Camel-Case-Schreibweise verwendet. Beispiel: voiceName
, im Gegensatz zur Manifestdatei, die voice_name
verwendet.)
Die möglichen Ereignistypen, die Sie senden können, entsprechen den Ereignistypen, die die Methode speak()
empfängt:
'start'
: Die Suchmaschine hat damit begonnen, die Äußerung zu sprechen.'word'
: Eine Wortgrenze wurde erreicht. Verwenden Sieevent.charIndex
, um die aktuelle Sprachposition zu bestimmen.'sentence'
: Eine Satzgrenze wurde erreicht. Verwenden Sieevent.charIndex
, um die aktuelle Sprachposition zu bestimmen.'marker'
: Eine SSML-Markierung wurde erreicht. Verwenden Sieevent.charIndex
, um die aktuelle Sprachposition zu bestimmen.'end'
: Die Suchmaschine hat die Äußerung beendet.'error'
: Es ist ein suchmaschinenspezifischer Fehler aufgetreten, der nicht gesprochen werden kann. Übergeben Sie weitere Informationen inevent.errorMessage
.
Die Ereignisse 'interrupted'
und 'cancelled'
werden nicht von der Speech Engine gesendet, sondern automatisch von Chrome generiert.
Sprachausgabe-Clients können die Sprachinformationen aus dem Manifest der Erweiterung durch Aufrufen von tts.getVoices
abrufen, sofern Sie Sprachereignis-Listener wie unten beschrieben registriert haben.
Sprachereignisse verarbeiten
Damit auf Anfrage von Clients Sprache generiert wird, muss die Erweiterung Listener für onSpeak
und onStop
so 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 allein davon ab, ob die Erweiterung die angegebenen Voice-Parameter in ihrem Manifest unterstützt und ob sie registrierte Listener für onSpeak
und onStop
hat. Mit anderen Worten: Es gibt keine Möglichkeit für eine Erweiterung, eine Sprachanfrage zu empfangen und dynamisch zu entscheiden, ob sie sie verarbeiten soll.
Typen
AudioBuffer
Parameter, die einen Audiozwischenspeicher und zugehörige Daten enthalten.
Attribute
-
audioBuffer
ArrayBuffer
Der Audiozwischenspeicher der Sprachausgabe-Engine. Sie sollte die Länge exakt „audioStreamOptions.bufferSize“ haben und als Mono, unter audioStreamOptions.sampleRate und als lineares pcm, vorzeichenbehaftetes 32-Bit-Gleitkommazahl, codiert sein, d.h. den Typ „Float32Array“ in JavaScript.
-
charIndex
Nummer optional
Der Zeichenindex, der diesem Audiozwischenspeicher zugeordnet ist.
-
isLastBuffer
Boolescher Wert optional
„True“, wenn dieser Audiozwischenspeicher der letzte gesprochene Text ist.
AudioStreamOptions
Enthält das Audiostreamformat, das voraussichtlich von einer Suchmaschine produziert wird.
Attribute
-
bufferSize
Zahl
Die Anzahl der Samples in einem Audiopuffer.
-
sampleRate
Zahl
Die in einem Audiopuffer erwartete Abtastrate.
SpeakOptions
Für die Methode „tts.speak()“ angegebene Optionen.
Attribute
-
gender
VoiceGender optional
Seit Chrome 92 eingestelltDas Geschlecht wurde eingestellt und wird ignoriert.
Geschlecht der Stimme für künstliche Sprachausgabe.
-
lang
String optional
Die für die Synthese zu verwendende Sprache im Format Sprache-Region. Beispiele: „en“, „en-US“, „en-GB“, „zh-CN“.
-
Wurf
Nummer optional
Tonhöhe zwischen 0 und einschließlich 2, wobei 0 die niedrigste und 2 die höchste Stufe ist. 1,0 entspricht der Standardtonhöhe dieser Stimme.
-
Geschwindigkeit
Nummer optional
Sprechgeschwindigkeit bezogen auf die Standardfrequenz für diese Stimme. Die Standardeinstellung beträgt 1,0, normalerweise 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 dieses gesamte Spektrum an Raten unterstützt, geben Sie keinen Fehler zurück. Begrenzen Sie die Rate stattdessen auf den Bereich, den die Stimme unterstützt.
-
voiceName
String optional
Der Name der Stimme, die für die Synthese verwendet werden soll.
-
Volume
Nummer optional
Sprachlautstärke zwischen 0 und einschließlich 1, wobei 0 die niedrigste und 1 die höchste Lautstärke ist.Der Standardwert ist 1, 0.
VoiceGender
Das Geschlecht wurde eingestellt und wird ignoriert.
Enum
Methoden
updateVoices()
chrome.ttsEngine.updateVoices(
voices: TtsVoice[],
)
Wird von einer Suchmaschine aufgerufen, um die Liste der Stimmen zu aktualisieren. Diese Liste überschreibt alle Stimmen, die im Manifest dieser Erweiterung deklariert sind.
Parameters
-
Stimmen
TtsVoice[]
Array mit
tts.TtsVoice
-Objekten, die die verfügbaren Stimmen für die Sprachsynthese darstellen.
Veranstaltungen
onPause
chrome.ttsEngine.onPause.addListener(
callback: function,
)
Optional: Wenn eine Suchmaschine das Pausenereignis unterstützt, sollte sie die aktuell gesprochene Äußerung (sofern vorhanden) pausieren, bis ein Fortsetzungs- oder Stopp-Ereignis empfangen wird. Durch ein Stoppereignis muss auch der Status „Pausiert“ gelöscht werden.
Parameters
-
callback
Funktion
Der Parameter
callback
sieht so aus:() => void
onResume
chrome.ttsEngine.onResume.addListener(
callback: function,
)
Optional: Wenn eine Suchmaschine das Ereignis „Pausieren“ unterstützt, sollte sie auch das Ereignis „Fortsetzen“ unterstützen, damit die aktuelle Äußerung (falls vorhanden) weiter gesprochen wird. Durch ein Stoppereignis muss auch der Status „Pausiert“ gelöscht werden.
Parameters
-
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 erste mit dem Optionsobjekt übereinstimmt.
Parameters
-
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.ttsEngine.onSpeakWithAudioStream.addListener(
callback: function,
)
Wird aufgerufen, wenn der Nutzer tts.speak() aufruft und eine der Stimmen aus dem Manifest dieser Erweiterung als erste mit dem Optionsobjekt übereinstimmt. Der Unterschied zu „ttsEngine.onSpeak“ besteht darin, dass Chrome Audiowiedergabedienste bereitstellt und das Senden von tts-Ereignissen übernimmt.
Parameters
-
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 Audiozwischenspeicher 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 Anruf an tts.stop erfolgt und diese Erweiterung mitten im Gespräch ist. Wenn eine Erweiterung einen Aufruf an onStop empfängt und die Sprachausgabe bereits angehalten wurde, wird nichts weiter ausgeführt und es wird kein Fehler ausgegeben. Wenn die Spracheingabe im Status „Pausiert“ ist, wird dadurch die Pausierung aufgehoben.
Parameters
-
callback
Funktion
Der Parameter
callback
sieht so aus:() => void