Beschreibung
Verwenden Sie die chrome.tts
API, um die synthetisierte Sprachausgabe abzuspielen. Weitere Informationen finden Sie in der zugehörigen ttsEngine
API, mit der eine Erweiterung eine Sprach-Engine implementieren kann.
Chrome bietet diese Funktion unter Windows (mit SAPI 5), Mac OS X und ChromeOS mithilfe der vom Betriebssystem bereitgestellten Sprachsynthesefunktionen. Der Nutzer kann auf allen Plattformen Erweiterungen installieren, die sich als alternative Sprach-Engines registrieren.
Berechtigungen
tts
Konzepte und Nutzung
Sprache generieren
Rufen Sie speak()
über die Erweiterung an, um zu sprechen. Beispiel:
chrome.tts.speak('Hello, world.');
Wenn Sie die Spracheingabe beenden möchten, rufen Sie einfach stop()
auf:
chrome.tts.stop();
Sie können Optionen bereitstellen, um verschiedene Eigenschaften der Sprache zu steuern, z. B. Geschwindigkeit, Tonhöhe und mehr. Beispiel:
chrome.tts.speak('Hello, world.', {'rate': 2.0});
Es empfiehlt sich auch, die Sprache anzugeben, damit ein Synthesizer ausgewählt wird, der diese Sprache (und gegebenenfalls den regionalen Dialekt) unterstützt.
chrome.tts.speak('Hello, world.', {'lang': 'en-US', 'rate': 2.0});
Standardmäßig wird bei jedem speak()
-Aufruf die laufende Sprachausgabe unterbrochen und sofort gesprochen. Um festzustellen, ob ein Anruf unterbrochen werden würde, können Sie isSpeaking()
aufrufen. Mit der Option enqueue
können Sie außerdem veranlassen, dass diese Äußerung einer Warteschlange von Äußerungen hinzugefügt wird, die gesprochen wird, 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 Sprach-Engines unterstützen
alle Optionen.
Übergeben Sie eine Callback-Funktion, die keine Argumente annimmt, um Fehler abzufangen und sicherzustellen, dass speak()
korrekt aufgerufen wird. 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 Callback wird sofort zurückgegeben, bevor die Engine mit der Sprachgenerierung begonnen hat. Der Callback soll Sie auf Syntaxfehler bei der Verwendung der TTS API aufmerksam machen. Es geht nicht darum, alle möglichen Fehler abzufangen, die beim Synthetisieren und Ausgabe von Sprache auftreten können. Damit auch diese Fehler abgefangen werden, müssen Sie einen Event-Listener verwenden, der im nächsten Abschnitt beschrieben wird.
Auf Ereignisse warten
Übergeben Sie in den Optionen einen Event-Listener an speak()
, um mehr Echtzeitinformationen zum Status der synthetisierten Sprache zu erhalten:
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 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.'interrupted'
: Diese Äußerung wurde durch einen weiteren Aufruf vonspeak()
oderstop()
unterbrochen und nicht beendet.'cancelled'
: Diese Äußerung wurde in die Warteschlange gestellt, aber dann durch einen weiteren Aufruf vonspeak()
oderstop()
abgebrochen und hat überhaupt nichts zu sagen.'error'
: Es ist ein suchmaschinenspezifischer Fehler aufgetreten, der nicht gesprochen werden kann. Weitere Informationen finden Sie unterevent.errorMessage
.
Vier der Ereignistypen – 'end'
, 'interrupted'
, 'cancelled'
und 'error'
– sind final. Nachdem eines dieser Ereignisse empfangen wurde, spricht diese Äußerung nicht mehr und es werden keine neuen Ereignisse aus 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 dann verwenden möchten, wenn sie bestimmte Ereignisse sendet, übergeben Sie die erforderlichen Ereignisse im requiredEventTypes
-Mitglied des Optionsobjekts oder verwenden Sie getVoices()
, um eine Stimme auszuwählen, die Ihren Anforderungen entspricht. Beide werden im Folgenden beschrieben.
SSML-Markup
Die in dieser API verwendeten Äußerungen umfassen möglicherweise Markups mit der Speech Synthesis Markup Language (SSML). Wenn Sie SSML verwenden, muss das erste Argument für speak()
ein vollständiges SSML-Dokument mit einem XML-Header und einem <speak>
-Tag der obersten Ebene sein. Es darf sich nicht um ein Dokumentfragment handeln.
Beispiel:
chrome.tts.speak(
'<?xml version="1.0"?>' +
'<speak>' +
' The <emphasis>second</emphasis> ' +
' word of this sentence was emphasized.' +
'</speak>'
);
Nicht alle Sprach-Engines unterstützen alle SSML-Tags und einige auch überhaupt nicht. Alle Suchmaschinen müssen jedoch nicht unterstützte SSML-Tags ignorieren und den zugrunde liegenden Text lesen.
Stimme auswählen
Standardmäßig wählt Chrome für jede Äußerung, die Sie sprechen möchten, basierend auf der Sprache die am besten geeignete Stimme aus. Auf den meisten Windows-, Mac OS X- und ChromeOS-Systemen sollte die vom Betriebssystem bereitgestellte Sprachsynthese jeden Text in mindestens einer Sprache sprechen können. Einigen Nutzern stehen jedoch möglicherweise eine Vielzahl von Stimmen aus ihrem Betriebssystem und von Sprach-Engines zur Verfügung, die von anderen Chrome-Erweiterungen implementiert wurden. In diesen Fällen können Sie benutzerdefinierten Code implementieren, um die entsprechende Stimme auszuwählen oder dem Nutzer eine Liste mit Auswahlmöglichkeiten anzuzeigen.
Um eine Liste aller Stimmen abzurufen, rufen Sie getVoices()
auf und übergeben Sie eine Funktion, die ein Array von TtsVoice
-Objekten als Argument empfängt:
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"
TtsEvent
Ein Ereignis von der TTS-Engine, um den Status einer Äußerung zu kommunizieren.
Attribute
-
charIndex
Nummer optional
Der Index des aktuellen Zeichens in der Äußerung. Bei Word-Ereignissen wird das Ereignis am Ende eines Wortes und vor dem Anfang des nächsten ausgelöst. Das
charIndex
steht für einen Punkt im Text am Anfang des nächsten gesprochenen Wortes. -
errorMessage
String optional
Die Fehlerbeschreibung, wenn der Ereignistyp
error
ist. -
Länge
Nummer optional
Chrome 74 und höherDie Länge des nächsten Teils der Äußerung. Bei einem
word
-Ereignis ist dies beispielsweise die Länge des Wortes, das als Nächstes gesprochen wird. Er wird auf -1 gesetzt, wenn er nicht von der Sprach-Engine festgelegt wird. -
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 ist,end
, wenn das Ende der Äußerung erreicht ist,interrupted
, wenn die Äußerung vor ihrem Ende gestoppt oder unterbrochen wird,cancelled
, wenn sie aus der Warteschlange entfernt wird, bevor sie noch synthetisiert wird, odererror
, wenn ein anderer Fehler auftritt. Beim Pausieren der Sprache wird einpause
-Ereignis ausgelöst, wenn eine bestimmte Äußerung in der Mitte pausiert wird, undresume
, wenn eine Äußerung dadurch fortgesetzt wird. Die Ereignisse „Pausieren“ und „Fortsetzen“ werden möglicherweise nicht ausgelöst, wenn die Sprachausgabe zwischen Äußerungen pausiert wird.
TtsOptions
Die Sprachoptionen für die Sprachausgabe-Engine.
Attribute
-
desiredEventTypes
string[] optional
Die TTS-Ereignistypen, die Sie anhören möchten. Fehlt diese Angabe, werden möglicherweise alle Ereignistypen gesendet.
-
in Warteschlange stellen
Boolescher Wert optional
Bei "true" wird diese Äußerung in die Warteschlange gestellt, wenn TTS bereits ausgeführt wird. Unterbricht bei "false" (Standardeinstellung), wird die aktuelle Sprache unterbrochen und die Sprachwarteschlange wird geleert, bevor diese neue Äußerung ausgegeben wird.
-
extensionId
String optional
Die Erweiterungs-ID der zu verwendenden Sprach-Engine, falls bekannt.
-
gender
VoiceGender optional
Seit Chrome 77 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 einer 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. Werte unter 0,1 oder über 10,0 sind streng verboten, aber viele Stimmen schränken die Mindest- und Höchstwerte weiter ein. Beispielsweise spricht eine bestimmte Stimme möglicherweise nicht schneller als dreimal normal, selbst 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 das Feld leer ist, wird eine beliebige verfügbare Stimme verwendet.
-
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.
-
onEvent
void optional
Diese Funktion wird mit Ereignissen aufgerufen, die beim Vorlesen der Äußerung auftreten.
Die Funktion
onEvent
sieht so aus:(event: TtsEvent) => {...}
-
event
Das Aktualisierungsereignis der Sprachausgabe-Engine, das den Status dieser Äußerung angibt.
-
TtsVoice
Die Beschreibung einer Stimme, die für Sprachsynthese verfügbar ist.
Attribute
-
eventTypes
EventType[] optional
Alle Rückrufereignistypen, die diese Stimme senden kann.
-
extensionId
String optional
Die ID der Erweiterung, die diese Stimme bereitstellt.
-
gender
VoiceGender optional
Seit Chrome 70 eingestelltDas Geschlecht wurde eingestellt und wird ignoriert.
Das Geschlecht dieser Stimme.
-
lang
String optional
Die von dieser Stimme unterstützte Sprache im Format Sprache-Region. Beispiele: „en“, „en-US“, „en-GB“, „zh-CN“.
-
Homeoffice
Boolescher Wert optional
Bei „true“ ist das Synthesemodul eine Remote-Netzwerkressource. Dies kann eine höhere Latenz und Bandbreitenkosten verursachen.
-
voiceName
String optional
Die Bezeichnung der Stimme.
VoiceGender
Die Angabe des Geschlechts wurde eingestellt und wird ignoriert.
Enum
Methoden
getVoices()
chrome.tts.getVoices(
callback?: function,
)
Ruft ein Array aller verfügbaren Stimmen ab.
Parameter
-
callback
Funktion optional
Der Parameter
callback
sieht so aus:(voices: TtsVoice[]) => void
-
Stimmen
TtsVoice[]
Array mit
tts.TtsVoice
-Objekten, die die verfügbaren Stimmen für die Sprachsynthese darstellen.
-
Returns
-
Promise<TtsVoice[]>
Chrome 101 und höherPromise-Objekte werden in Manifest V3 und höher unterstützt, Callbacks werden jedoch aus Gründen der Abwärtskompatibilität bereitgestellt. Sie können nicht beide in einem Funktionsaufruf verwenden. Das Promise wird mit demselben Typ aufgelöst, der an den Callback übergeben wird.
isSpeaking()
chrome.tts.isSpeaking(
callback?: function,
)
Überprüft, ob die Suchmaschine gerade spricht. Unter Mac OS X ist das Ergebnis immer dann „true“, wenn die Sprach-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
Wenn gesprochen wird, ist „True“, andernfalls „false“.
-
Returns
-
Promise<boolean>
Chrome 101 und höherPromise-Objekte werden in Manifest V3 und höher unterstützt, Callbacks werden jedoch aus Gründen der Abwärtskompatibilität bereitgestellt. Sie können nicht beide in einem Funktionsaufruf verwenden. Das Promise wird mit demselben Typ aufgelöst, der an den Callback übergeben wird.
pause()
chrome.tts.pause()
Pausiert die Sprachsynthese, möglicherweise mitten in einer Äußerung. Durch einen Anruf zum Fortsetzen oder Anhalten wird die Sprachausgabe fortgesetzt.
resume()
chrome.tts.resume()
Wenn die Sprachausgabe pausiert wurde, wird sie an der Stelle fortgesetzt, an der sie unterbrochen wurde.
speak()
chrome.tts.speak(
utterance: string,
options?: TtsOptions,
callback?: function,
)
Spricht Text mithilfe einer Sprachausgabe-Funktion an.
Parameter
-
Äußerung
String
Zu sprechender Text, entweder Nur-Text oder ein vollständiges, korrekt formatiertes SSML-Dokument. Sprachmodule, die SSML nicht unterstützen, entfernen die Tags und sprechen den Text. Die maximale Länge des Texts beträgt 32.768 Zeichen.
-
Optionen
TtsOptions optional
Sprachoptionen
-
callback
Funktion optional
Der Parameter
callback
sieht so aus:() => void
Returns
-
Promise<void>
Chrome 101 und höherPromise-Objekte werden in Manifest V3 und höher unterstützt, Callbacks werden jedoch aus Gründen der Abwärtskompatibilität bereitgestellt. Sie können nicht beide in einem Funktionsaufruf verwenden. Das Promise wird mit demselben Typ aufgelöst, der an den Callback übergeben wird.
stop()
chrome.tts.stop()
Beendet alle aktuellen Äußerungen und leert die Warteschlange aller ausstehenden Äußerungen. Wenn die Sprachausgabe pausiert wurde, wird sie jetzt für den nächsten Anruf wieder aktiviert.
Veranstaltungen
onVoicesChanged
chrome.tts.onVoicesChanged.addListener(
callback: function,
)
Wird aufgerufen, wenn sich die Liste der tts.TtsVoice
, die von getVoices zurückgegeben wird, geändert hat.
Parameter
-
callback
Funktion
Der Parameter
callback
sieht so aus:() => void