Beschreibung
Verwenden Sie die chrome.tts
API, um synthetisierte Sprachausgabe (TTS) abzuspielen. Weitere Informationen finden Sie in der zugehörigen ttsEngine
API, mit der eine Erweiterung eine Spracherkennung implementieren kann.
Chrome bietet diese Funktion unter Windows (mit SAPI 5), Mac OS X und ChromeOS mit den vom Betriebssystem bereitgestellten Sprachsynthesefunktionen. Auf allen Plattformen kann der Nutzer Erweiterungen installieren, die sich als alternative Spracherkennungs-Engines registrieren.
Berechtigungen
tts
Konzepte und Verwendung
Sprache generieren
Rufen Sie speak()
über Ihre Nebenstelle an, um zu sprechen. Beispiel:
chrome.tts.speak('Hello, world.');
Wenn ich sofort aufhören soll zu sprechen, kannst du einfach stop()
aufrufen:
chrome.tts.stop();
Sie können Optionen angeben, mit denen sich verschiedene Eigenschaften der Sprache steuern lassen, z. B. die Sprechgeschwindigkeit und die Tonhöhe. Beispiel:
chrome.tts.speak('Hello, world.', {'rate': 2.0});
Es ist auch ratsam, die Sprache anzugeben, damit ein Synthesizer ausgewählt wird, der diese Sprache (und ggf. den regionalen Dialekt) unterstützt.
chrome.tts.speak('Hello, world.', {'lang': 'en-US', 'rate': 2.0});
Standardmäßig wird bei jedem Aufruf von speak()
die laufende Sprachausgabe unterbrochen und sofort gesprochen. Mit isSpeaking()
können Sie ermitteln, ob ein Anruf etwas unterbrechen würde. Außerdem können Sie mit der Option enqueue
dafür sorgen, dass diese Äußerung einer Warteschlange von Äußerungen hinzugefügt wird, die gesprochen werden, wenn die aktuelle Äußerung beendet ist.
chrome.tts.speak('Speak this first.');
chrome.tts.speak(
'Speak this next, when the first sentence is done.', {'enqueue': true});
Eine vollständige Beschreibung aller Optionen finden Sie unter tts.speak()
. Nicht alle Spracherkennungs-Engines unterstützen alle Optionen.
Um Fehler zu erkennen und sicherzustellen, dass Sie speak()
richtig aufrufen, übergeben Sie eine Callback-Funktion, die keine Argumente akzeptiert. Prüfen Sie im Callback runtime.lastError
, ob Fehler aufgetreten sind.
chrome.tts.speak(
utterance,
options,
function() {
if (chrome.runtime.lastError) {
console.log('Error: ' + chrome.runtime.lastError.message);
}
}
);
Der Rückruf wird sofort zurückgegeben, bevor die Engine mit der Sprachgenerierung begonnen hat. Der Zweck des Callbacks besteht darin, Sie auf Syntaxfehler bei der Verwendung der TTS API aufmerksam zu machen, nicht alle möglichen Fehler abzufangen, die bei der Synthese und Ausgabe von Sprache auftreten können. Um auch diese Fehler abzufangen, müssen Sie einen Event-Listener verwenden, der im nächsten Abschnitt beschrieben wird.
Auf Ereignisse warten
Wenn Sie weitere Echtzeitinformationen zum Status der synthetisierten Sprache erhalten möchten, übergeben Sie einen Event-Listener in den Optionen an speak()
, wie hier gezeigt:
chrome.tts.speak(
utterance,
{
onEvent: function(event) {
console.log('Event ' + event.type + ' at position ' + event.charIndex);
if (event.type == 'error') {
console.log('Error: ' + event.errorMessage);
}
}
},
callback
);
Jedes Ereignis enthält einen Ereignistyp, den Zeichenindex der aktuellen Sprache relativ zur Äußerung und bei Fehlerereignissen eine optionale Fehlermeldung. Die Ereignistypen sind:
'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 Sprechposition 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.'interrupted'
: Diese Äußerung wurde durch einen anderen Aufruf vonspeak()
oderstop()
unterbrochen und nicht beendet.'cancelled'
: Diese Äußerung wurde in die Warteschlange gestellt, dann aber durch einen anderen Aufruf vonspeak()
oderstop()
abgebrochen und es wurde nie gesprochen.'error'
: Ein enginespezifischer Fehler ist aufgetreten und diese Äußerung kann nicht gesprochen werden. Weitere Informationen finden Sie unterevent.errorMessage
.
Vier der Ereignistypen – 'end'
, 'interrupted'
, 'cancelled'
und 'error'
– sind final. Nachdem eines dieser Ereignisse empfangen wurde, wird diese Äußerung nicht mehr gesprochen und es werden keine neuen Ereignisse von dieser Äußerung empfangen.
Einige Stimmen unterstützen möglicherweise nicht alle Ereignistypen und einige Stimmen senden möglicherweise überhaupt keine Ereignisse. Wenn Sie eine Stimme nur verwenden möchten, wenn sie bestimmte Ereignisse sendet, übergeben Sie die erforderlichen Ereignisse im requiredEventTypes
-Element des Optionsobjekts oder verwenden Sie getVoices()
, um eine Stimme auszuwählen, die Ihren Anforderungen entspricht. Beide werden im Folgenden beschrieben.
SSML-Markup
Äußerungen, die in dieser API verwendet werden, können Markup mit der Speech Synthesis Markup Language (SSML) enthalten. Wenn Sie SSML verwenden, sollte das erste Argument für speak()
ein vollständiges SSML-Dokument mit einem XML-Header und einem <speak>
-Tag der obersten Ebene sein, nicht ein Dokumentfragment.
Beispiel:
chrome.tts.speak(
'<?xml version="1.0"?>' +
'<speak>' +
' The <emphasis>second</emphasis> ' +
' word of this sentence was emphasized.' +
'</speak>'
);
Nicht alle Speech-Engines unterstützen alle SSML-Tags und einige unterstützen SSML möglicherweise gar nicht. Alle Engines müssen jedoch alle SSML-Tags ignorieren, die sie nicht unterstützen, und den zugrunde liegenden Text trotzdem ausgeben.
Eine Stimme auswählen
Standardmäßig wählt Chrome für jede gesprochene Äußerung die am besten geeignete Stimme aus, basierend auf der Sprache. Auf den meisten Windows-, Mac OS X- und ChromeOS-Systemen sollte die vom Betriebssystem bereitgestellte Sprachsynthese in der Lage sein, jeden Text in mindestens einer Sprache vorzulesen. Einige Nutzer haben möglicherweise eine Vielzahl von Stimmen zur Verfügung, die von ihrem Betriebssystem und von Spracherkennungsmodulen stammen, die von anderen Chrome-Erweiterungen implementiert wurden. In diesen Fällen können Sie benutzerdefinierten Code implementieren, um die passende Stimme auszuwählen oder dem Nutzer eine Liste mit Auswahlmöglichkeiten zu präsentieren.
Wenn Sie eine Liste aller Stimmen abrufen möchten, rufen Sie getVoices()
auf und übergeben Sie eine Funktion, die ein Array von TtsVoice
-Objekten als Argument erhält:
chrome.tts.getVoices(
function(voices) {
for (var i = 0; i < voices.length; i++) {
console.log('Voice ' + i + ':');
console.log(' name: ' + voices[i].voiceName);
console.log(' lang: ' + voices[i].lang);
console.log(' extension id: ' + voices[i].extensionId);
console.log(' event types: ' + voices[i].eventTypes);
}
}
);
Typen
EventType
Enum
"start"
"end"
"word"
"sentence"
"marker"
„interrupted“
„cancelled“
"error"
"pause"
„resume“
TtsEvent
Ein Ereignis von der TTS-Engine, um den Status einer Äußerung zu kommunizieren.
Attribute
-
charIndex
number optional
Der Index des aktuellen Zeichens im gesprochenen Text. Bei Wort-Ereignissen wird das Ereignis am Ende eines Worts und vor dem Beginn des nächsten ausgelöst. Das
charIndex
steht für einen Punkt im Text am Anfang des nächsten zu sprechenden Wortes. -
errorMessage
String optional
Die Fehlerbeschreibung, wenn der Ereignistyp
error
ist. -
Länge
number optional
Chrome 74 und höherDie Länge des nächsten Teils der Äußerung. Bei einem
word
-Ereignis ist das beispielsweise die Länge des Worts, das als Nächstes gesprochen wird. Wenn der Wert nicht von der Spracherkennungs-Engine festgelegt wird, wird er auf -1 gesetzt. -
Typ
Der Typ kann
start
sein, sobald die Sprache begonnen hat,word
, wenn eine Wortgrenze erreicht wird,sentence
, wenn eine Satzgrenze erreicht wird,marker
, wenn ein SSML-Markierungselement erreicht wird,end
, wenn das Ende der Äußerung erreicht wird,interrupted
, wenn die Äußerung vor dem Ende beendet oder unterbrochen wird,cancelled
, wenn sie aus der Warteschlange entfernt wird, bevor sie synthetisiert wird, odererror
, wenn ein anderer Fehler auftritt. Wenn die Sprache pausiert wird, wird einpause
-Ereignis ausgelöst, wenn eine bestimmte Äußerung in der Mitte pausiert wird, undresume
, wenn eine Äußerung die Sprache fortsetzt. Hinweis: Ereignisse zum Pausieren und Fortsetzen werden möglicherweise nicht ausgelöst, wenn die Sprache zwischen Äußerungen pausiert wird.
TtsOptions
Die Sprachoptionen für die TTS-Engine.
Attribute
-
desiredEventTypes
string[] optional
Die TTS-Ereignistypen, die Sie erfassen möchten. Wenn dieser Parameter fehlt, werden möglicherweise alle Ereignistypen gesendet.
-
enqueue
boolean optional
Bei „true“ wird diese Äußerung in die Warteschlange gestellt, wenn die Sprachsynthese bereits läuft. Bei „false“ (Standard) wird die aktuelle Sprachausgabe unterbrochen und die Sprachausgabewarteschlange geleert, bevor diese neue Äußerung gesprochen wird.
-
extensionId
String optional
Die Erweiterungs-ID der zu verwendenden Spracherkennungs-Engine, sofern bekannt.
-
gender
VoiceGender optional
Seit Chrome 77 eingestelltDas Geschlecht wird nicht mehr unterstützt und ignoriert.
Geschlecht der Stimme für synthetische Sprache.
-
lang
String optional
Die für die Synthese zu verwendende Sprache 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 der niedrigste und 2 der höchste Wert ist. 1,0 entspricht der Standardstimmlage einer Stimme.
-
Geschwindigkeit
number optional
Sprechgeschwindigkeit relativ zur Standardgeschwindigkeit für diese Stimme. 1,0 ist die Standardrate, die normalerweise etwa 180 bis 220 Wörter pro Minute beträgt. 2,0 bedeutet doppelt so schnell, 0,5 halb so schnell. Werte unter 0,1 oder über 10,0 sind nicht zulässig. Bei vielen Stimmen werden die Mindest- und Höchstwerte jedoch weiter eingeschränkt. So kann es sein, dass eine bestimmte Stimme nicht schneller als dreimal so schnell wie normal spricht, auch wenn Sie einen Wert über 3,0 angeben.
-
requiredEventTypes
string[] optional
Die TTS-Ereignistypen, die die Stimme unterstützen muss.
-
voiceName
String optional
Der Name der Stimme, die für die Synthese verwendet werden soll. Wenn leer, wird eine beliebige verfügbare Stimme verwendet.
-
Volume
number optional
Die Sprechlautstärke muss zwischen 0 und 1 liegen (einschließlich), wobei 0 die niedrigste und 1 die höchste Lautstärke ist.Der Standardwert ist 1, 0.
-
onEvent
void optional
Diese Funktion wird mit Ereignissen aufgerufen, die während der Sprachausgabe auftreten.
Die
onEvent
-Funktion sieht so aus:(event: TtsEvent) => {...}
-
event
Das Update-Ereignis der Sprachausgabe-Engine, das den Status dieser Äußerung angibt.
-
TtsVoice
Eine Beschreibung einer Stimme, die für die Sprachsynthese verfügbar ist.
Attribute
-
eventTypes
EventType[] optional
Alle Callback-Ereignistypen, die diese Stimme senden kann.
-
extensionId
String optional
Die ID der Erweiterung, die diese Stimme bereitstellt.
-
gender
VoiceGender optional
Seit Chrome 70 eingestelltDas Geschlecht wird nicht mehr unterstützt und ignoriert.
Das Geschlecht dieser Stimme.
-
lang
String optional
Die Sprache, die von dieser Stimme unterstützt wird, im Format Sprache-Region. Beispiele: „en“, „en-US“, „en-GB“, „zh-CN“.
-
Remote
boolean optional
Bei „true“ ist die Synthese-Engine eine Remote-Netzwerkressource. Es kann zu einer höheren Latenz kommen und Bandbreitenkosten können anfallen.
-
voiceName
String optional
Die Bezeichnung der Stimme.
VoiceGender
Das Geschlecht ist veraltet und wird ignoriert.
Enum
"male"
"female"
Methoden
getVoices()
chrome.tts.getVoices(
callback?: function,
): Promise<TtsVoice[]>
Ruft ein Array aller verfügbaren Stimmen ab.
Parameter
-
callback
Funktion optional
Der Parameter
callback
sieht so aus:(voices: TtsVoice[]) => void
-
Stimmen
TtsVoice[]
Array von
tts.TtsVoice
-Objekten, die die verfügbaren Stimmen für die Sprachsynthese darstellen.
-
Ausgabe
-
Promise<TtsVoice[]>
Chrome 101 und höher
isSpeaking()
chrome.tts.isSpeaking(
callback?: function,
): Promise<boolean>
Prüft, ob die Engine gerade spricht. Unter Mac OS X ist das Ergebnis immer „true“, wenn die Spracherkennungs-Engine des Systems spricht, auch wenn die Sprache nicht von Chrome initiiert wurde.
Parameter
-
callback
Funktion optional
Der Parameter
callback
sieht so aus:(speaking: boolean) => void
-
sprechen
boolean
„True“, wenn gesprochen wird, andernfalls „false“.
-
Ausgabe
-
Promise<boolean>
Chrome 101 und höher
pause()
chrome.tts.pause(): void
Pausiert die Sprachsynthese, möglicherweise mitten in einer Äußerung. Durch einen Anruf zum Fortsetzen oder Beenden wird die Sprachausgabe fortgesetzt.
resume()
chrome.tts.resume(): void
Wenn die Sprache pausiert wurde, wird an der Stelle fortgesetzt, an der sie unterbrochen wurde.
speak()
chrome.tts.speak(
utterance: string,
options?: TtsOptions,
callback?: function,
): Promise<void>
Gibt Text über ein Sprachausgabemodul aus.
Parameter
-
Äußerung
String
Der zu sprechende Text, entweder als Nur-Text oder als vollständiges, wohlgeformtes SSML-Dokument. Sprach-Engines, die SSML nicht unterstützen, entfernen die Tags und geben den Text aus. Der Text darf maximal 32.768 Zeichen lang sein.
-
Optionen
TtsOptions optional
Die Sprachoptionen.
-
callback
Funktion optional
Der Parameter
callback
sieht so aus:() => void
Ausgabe
-
Promise<void>
Chrome 101 und höher
stop()
chrome.tts.stop(): void
Die aktuelle Sprachausgabe wird beendet und die Warteschlange aller ausstehenden Äußerungen wird geleert. Wenn die Sprache pausiert wurde, wird die Pause für den nächsten Aufruf von „speak“ aufgehoben.
Ereignisse
onVoicesChanged
chrome.tts.onVoicesChanged.addListener(
callback: function,
)
Wird aufgerufen, wenn sich die Liste der tts.TtsVoice
ändert, die von getVoices zurückgegeben werden.
Parameter
-
callback
Funktion
Der Parameter
callback
sieht so aus:() => void