Beschreibung
Mit der chrome.ttsEngine
API können Sie eine Text-in-Sprache-Engine(TTS) mithilfe einer Erweiterung implementieren. Wenn sich Ihre Erweiterung über diese API registriert, empfängt sie Ereignisse mit einer gesprochenen Äußerung sowie andere Parameter, wenn eine Erweiterung oder Chrome-App die tts
API zur Generierung von Sprache verwendet. Ihre Erweiterung kann dann jede verfügbare Webtechnologie verwenden, um die Sprache zu synthetisieren und auszugeben und Ereignisse an die aufrufende Funktion zurückzusenden, um den Status zu melden.
Berechtigungen
ttsEngine
Konzepte und Verwendung
Eine Erweiterung kann sich selbst als Sprach-Engine registrieren. Dadurch können einige oder alle Aufrufe
auf Funktionen wie tts.speak()
und tts.stop()
und stellen eine alternative Implementierung bereit.
Bei den Erweiterungen kann für die Sprachausgabe, einschließlich Streaming von Audio, jede verfügbare Webtechnologie kostenlos verwendet werden.
von einem Server, HTML5-Audio. Eine Erweiterung kann sogar etwas anderes bewirken,
mit den Äußerungen, z. B. Untertitel in einem Pop-up anzeigen oder als Log-Nachrichten an
einen Remote-Server.
Zum Implementieren einer Text-in-Sprache-Engine muss eine Erweiterung den Parameter „ttsEngine“ deklarieren. und erklären dann, Stimmen im Erweiterungsmanifest zur Verfügung:
{
"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
Name der verwendeten Stimme und Suchmaschine. Im unwahrscheinlichen Fall, dass zwei Erweiterungen Stimmen registrieren
mit demselben Namen 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 synthetisieren,
in nur einer Sprache sprechen. Wenn eine Suchmaschine mehr als eine Sprache unterstützt, kann sie problemlos
Für jede Sprache eine eigene Stimme registrieren In seltenen Fällen, in denen eine einzelne Stimme
mehrere Sprachen unterstützt, ist es am einfachsten, zwei
unterschiedliche Stimmen aufzulisten und diese mit
dieselbe Logik intern. Wenn Sie jedoch eine Stimme erstellen möchten, die Äußerungen in beliebigen
Sprache zu verwenden, lassen Sie den lang
-Parameter im Manifest der Erweiterung weg.
Der Parameter event_types
ist schließlich erforderlich, wenn die Suchmaschine Ereignisse zum Aktualisieren des Clients senden kann.
den Fortschritt der Sprachsynthese. Es wird mindestens der Ereignistyp 'end'
unterstützt, um anzugeben,
nach Abschluss der Sprachausgabe wird dringend empfohlen, da Chrome andernfalls keine Äußerungen in der Warteschlange planen kann.
Nach dem Laden kann eine Erweiterung die Liste der deklarierten Stimmen durch folgenden Aufruf ersetzen:
chrome.ttsEngine.updateVoices
Beachten Sie, dass die im programmatischen Aufruf von
updateVoices
sind in der Camel-Case-Schreibweise angegeben, z.B. voiceName
, im Gegensatz zur Manifestdatei, in der
voice_name
)
Die möglichen Ereignistypen, die Sie senden können, entsprechen den Ereignistypen, die in der Methode speak()
verwendet werden.
erhält:
'start'
: Die Suchmaschine hat mit der Aussprache der Äußerung begonnen.'word'
: Eine Wortgrenze wurde erreicht.event.charIndex
verwenden, um die aktuelle Sprache zu bestimmen .'sentence'
: Eine Satzgrenze wurde erreicht. Mitevent.charIndex
ermitteln Sie den aktuellen Sprechposition.'marker'
: Eine SSML-Markierung wurde erreicht.event.charIndex
verwenden, um die aktuelle Sprache zu bestimmen .'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. Mehr bestehen Informationen inevent.errorMessage
.
Die Ereignisse 'interrupted'
und 'cancelled'
werden nicht von der Sprach-Engine gesendet. Sie werden generiert.
automatisch von Chrome.
Sprachausgabe-Clients können die Sprachinformationen aus dem Manifest Ihrer Erweiterung abrufen, indem sie folgende URL aufrufen:
tts.getVoices
, vorausgesetzt, Sie haben Sprachereignis-Listener wie unten beschrieben registriert.
Sprachereignisse verarbeiten
Um auf Anfrage von Clients Sprache zu generieren, muss Ihre Erweiterung Listener für beides registrieren
onSpeak
und onStop
, wie hier:
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, beruht ausschließlich auf
Ob die Erweiterung die angegebenen Sprachparameter in ihrem Manifest unterstützt und registriert wurde
Listener für onSpeak
und onStop
. Mit anderen Worten: Eine Erweiterung erhält keine
Sprachanfrage und entscheidet dynamisch, 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 exakt „audioStreamOptions.bufferSize“ lauten und es muss als Mono, mit „audioStreamOptions.sampleRate“ codiert sein. Außerdem sollte sie als lineares Pcm-, 32-Bit-Gleitkommazahl mit Vorzeichen, d. h. den Typ „Float32Array“ in JavaScript, codiert sein.
-
charIndex
Zahl optional
Der mit diesem Audio-Zwischenspeicher verknüpfte Zeichenindex.
-
isLastBuffer
Boolescher Wert optional
"True", wenn dieser Audiopuffer der letzte gesprochene Text ist.
AudioStreamOptions
Enthält das Audiostreamformat, das voraussichtlich von einer Suchmaschine erzeugt werden soll.
Attribute
-
bufferSize
Zahl
Die Anzahl der Samples in einem Audiozwischenspeicher.
-
sampleRate
Zahl
Die in einem Audiopuffer erwartete Abtastrate.
SpeakOptions
Optionen, die für die Methode tts.speak() angegeben wurden.
Attribute
-
gender
VoiceGender optional
<ph type="x-smartling-placeholder"></ph> Eingestellt seit Chrome 92Das Geschlecht wurde eingestellt und wird ignoriert.
Das Geschlecht der Stimme für die künstliche Sprachausgabe.
-
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
Die Tonhöhe der Sprechgeschwindigkeit muss zwischen 0 und 2 liegen, wobei 0 der niedrigste und 2 der höchste Wert ist. 1,0 entspricht der Standardtonhöhe dieser Stimme.
-
Geschwindigkeit
Zahl 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 diesen gesamten Preisbereich unterstützt, geben Sie 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
Zahl optional
Sprachlautstärke zwischen 0 und 1 (jeweils einschließlich, 0 ist die niedrigste und 1 die höchste), der Standardwert ist 1,0.
VoiceGender
Das Geschlecht wurde eingestellt und wird ignoriert.
Enum
"männlich"
"weiblich"
Methoden
updateVoices()
chrome.ttsEngine.updateVoices(
voices: TtsVoice[],
)
Wird von einer Suchmaschine aufgerufen, um ihre Stimmenliste 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
onPause
chrome.ttsEngine.onPause.addListener(
callback: function,
)
Optional: Wenn eine Suchmaschine das Pausenereignis unterstützt, sollte sie gegebenenfalls die aktuelle gesprochene Äußerung anhalten, bis sie ein Fortsetzungs- oder Stopp-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 Suchmaschine das Ereignis „pause“ unterstützt, sollte sie auch das Ereignis „Resume“ unterstützen, damit gegebenenfalls die aktuelle Äußerung gesprochen wird. Bei einem Stoppereignis sollte auch der pausierte Status gelöscht werden.
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 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 die erste ist, die 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 Audiopuffer 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 bei tts.stop eingeht und diese Erweiterung möglicherweise mitten im Sprechen läuft. Wenn eine Erweiterung einen Aufruf von onStop erhält und die Sprachausgabe bereits gestoppt wird, sollte sie nichts tun und keinen Fehler auslösen. Wenn die Sprachausgabe im Status „Pausiert“ ist, sollte dadurch auch der pausierte Status aufgehoben werden.
Parameter
-
callback
Funktion
Der Parameter
callback
sieht so aus:() => void