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. 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 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 im Erweiterungsmanifest bereitgestellten Stimmen 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
}
}
In einer 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 Suchmaschine mehr als eine Sprache unterstützt, kann sie problemlos für jede Sprache eine separate Stimme registrieren. 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 beliebigen Sprachen verarbeitet, lassen Sie den Parameter lang
im Manifest der Erweiterung weg.
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 bei der Methode speak()
empfangen werden:
'start'
: Der Engine hat mit der Aussprache des Satzes begonnen.'word'
: Eine Wortgrenze wurde erreicht. Verwenden Sieevent.charIndex
, um die aktuelle Sprachposition zu 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 Suchmaschine hat die Äußerung vollständig gesprochen.'error'
: Es ist ein suchmaschinenspezifischer Fehler 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.
Sprachausgabe-Clients können die Sprachinformationen aus dem Manifest der Erweiterung abrufen. Dazu rufen Sie tts.getVoices
auf, 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 Audiopuffer 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
"nicht installiert"
„installing“
„installed“
"fehlgeschlagen"
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.
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 synthetisierte Sprache.
-
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
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 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. Dieser Wert liegt garantiert zwischen 0,1 und 10,0 (einschließlich). Wenn eine Stimme nicht die gesamte Bandbreite der Geschwindigkeiten unterstützt, gib keinen Fehler zurück. Legen Sie stattdessen den Bereich fest, 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
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
"männlich"
"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. Durch diese Liste werden alle Stimmen überschrieben, 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 Suchmaschine sollte versuchen, die Sprache herunterzuladen und zu installieren, und dann ttsEngine.updateLanguage mit dem Ergebnis aufrufen. Bei Erfolg sollte die Suchmaschine außerdem 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. Bei einem Stoppereignis sollte auch der pausierte Status gelöscht werden.
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 die erste ist, die 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. Anders als bei ttsEngine.onSpeak bietet Chrome Audiowiedergabedienste an und verarbeitet das Senden von tts-Ereignissen.
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 von onStop erhält und die Sprachausgabe bereits angehalten wird, 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