Beschreibung
Verwenden Sie die chrome.tts
API, um die synthetische Sprachausgabe abzuspielen. Weitere Informationen finden Sie in der zugehörigen ttsEngine
API, die es einer Erweiterung ermöglicht, eine Sprach-Engine zu implementieren.
Chrome bietet diese Möglichkeit unter Windows (mit SAPI 5), Mac OS X und ChromeOS mit Sprachsynthesefunktionen des Betriebssystems. Auf allen Plattformen können Nutzer:innen Erweiterungen installieren, die sich als alternative Sprachmodule registrieren
Berechtigungen
tts
Konzepte und Verwendung
Sprachausgabe generieren
Wenn du etwas sagen möchtest, ruf über deine Erweiterung speak()
an. Beispiel:
chrome.tts.speak('Hello, world.');
Wenn du nicht mehr sprechen möchtest, ruf einfach stop()
an:
chrome.tts.stop();
Sie können Optionen bereitstellen, mit denen verschiedene Eigenschaften der Sprache gesteuert werden, z. B. Sprechgeschwindigkeit, Tonhöhe und mehr. Beispiel:
chrome.tts.speak('Hello, world.', {'rate': 2.0});
Es ist außerdem ratsam, die Sprache anzugeben, damit ein Synthesizer diese Sprache unterstützt (und regionalen Dialekt (falls zutreffend) ausgewählt.
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. Bis
feststellen, ob ein Anruf irgendetwas unterbrechen würde, kannst du isSpeaking()
aufrufen. Darüber hinaus können Sie
Mit der Option enqueue
kann diese Äußerung einer Warteschlange mit Äußerungen hinzugefügt werden, für die
wird gesprochen, 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 Spracheingaben
unterstützen alle Optionen.
Um Fehler abzufangen und sicherzustellen, dass Sie speak()
korrekt aufrufen, übergeben Sie eine Callback-Funktion, die
nimmt keine Argumente an. Im Callback siehst du, ob in runtime.lastError
Fehler.
chrome.tts.speak(
utterance,
options,
function() {
if (chrome.runtime.lastError) {
console.log('Error: ' + chrome.runtime.lastError.message);
}
}
);
Der Callback wird sofort zurückgegeben, noch bevor die Suchmaschine mit dem Generieren der Sprache begonnen hat. Der Zweck der Callback ist es, Sie auf Syntaxfehler bei der Verwendung der TTS API hinzuweisen, nicht alle möglichen Fehler, die beim Synthetisieren und Ausgeben von Sprache auftreten können. Um diese Fehler zu erkennen müssen Sie einen Event-Listener verwenden, der im nächsten Abschnitt beschrieben wird.
Auf Ereignisse warten
Um mehr Echtzeitinformationen zum Status der synthetisierten Sprache zu erhalten, übergeben Sie einen Ereignis-Listener in
die Optionen für speak()
so:
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 zum Äußerungen und bei Fehlerereignissen eine optionale Fehlermeldung. Es gibt folgende Ereignistypen:
'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.'interrupted'
: Diese Äußerung wurde durch einen anderen Aufruf vonspeak()
oderstop()
unterbrochen und hat noch nicht fertig sind.'cancelled'
: Diese Äußerung wurde in die Warteschlange gestellt, dann aber durch einen anderen Aufruf vonspeak()
abgebrochen oderstop()
und fing nie an zu sprechen.'error'
: Es ist ein suchmaschinenspezifischer Fehler aufgetreten und diese Äußerung kann nicht gesprochen werden. Prüfenevent.errorMessage
.
Vier der Ereignistypen – 'end'
, 'interrupted'
, 'cancelled'
und 'error'
– sind endgültig. Nachher
eines dieser Ereignisse eingeht, spricht diese Äußerung nicht mehr und es werden keine neuen Ereignisse von diesem
Äußerung empfangen.
Einige Stimmen unterstützen möglicherweise nicht alle Ereignistypen und manche Stimmen senden überhaupt keine Ereignisse. Wenn Sie
eine Stimme nur dann verwenden möchten, wenn sie bestimmte Ereignisse sendet, übergeben Sie die erforderlichen Ereignisse in der
requiredEventTypes
-Mitglied des Optionsobjekts an oder verwenden Sie getVoices()
, um eine Stimme auszuwählen, die
Ihren Anforderungen entsprechen. Beide werden im Folgenden beschrieben.
SSML-Markup
Die in dieser API verwendeten Äußerungen können Markups mit der Speech Synthesis Markup Language enthalten.
(SSML). Wenn Sie SSML verwenden, sollte das erste Argument von speak()
ein vollständiges SSML-Dokument mit
ein XML-Header und ein <speak>
-Tag auf oberster Ebene, kein Dokumentfragment.
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 manche unterstützen SSML eventuell auch gar nicht, aber alle Suchmaschinen müssen nicht unterstützte SSML ignorieren und den zugrunde liegenden Text trotzdem vorlesen.
Stimme auswählen
Standardmäßig wählt Chrome die am besten geeignete Stimme für jede Äußerung aus, die Sie sprechen möchten. die Sprache. Bei den meisten Windows-, Mac OS X- und ChromeOS-Systemen ist die Sprachsynthese durch den muss das Betriebssystem jeden Text in mindestens einer Sprache sprechen können. Einige Nutzer haben möglicherweise eine allerdings mit einer Vielzahl von Stimmen, die über das Betriebssystem und die implementierten Sprach-Engines verfügbar sind. durch andere Chrome-Erweiterungen. In diesen Fällen können Sie benutzerdefinierten Code implementieren, um den geeigneten oder dem Nutzer eine Liste mit Auswahlmöglichkeiten vorlegen.
Um eine Liste aller Stimmen zu erhalten, rufen Sie getVoices()
auf und übergeben Sie eine Funktion, die ein Array von
TtsVoice
-Objekte als Argument:
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"
„Ende“
"Wort"
"Satz"
„Markierung“
"unterbrochen"
"storniert"
"Fehler"
"Pause"
"Resume"
TtsEvent
Ein Ereignis von der Text-in-Sprache-Engine, um den Status einer Äußerung zu senden.
Attribute
-
charIndex
Zahl optional
Der Index des aktuellen Zeichens in der Äußerung. Bei Wortereignissen wird das Ereignis am Ende eines Wortes und vor dem Beginn des nächsten ausgelöst.
charIndex
steht für einen Textpunkt am Anfang des nächsten gesprochenen Worts. -
errorMessage
String optional
Die Fehlerbeschreibung, wenn der Ereignistyp
error
ist. -
Länge
Zahl optional
Chrome 74 und höherDie Länge des nächsten Teils der Äußerung. In 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 eingestellt wird. -
Typ
Folgende Typen sind möglich:
start
, 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 ist,interrupted
, wenn die Äußerung vor dem Ende angehalten oder unterbrochen wird,cancelled
, wenn sie vor der Synthese aus der Warteschlange entfernt wird, odererror
, wenn ein anderer Fehler auftritt. Wird die Sprachausgabe angehalten, wird einpause
-Ereignis ausgelöst, wenn eine bestimmte Äußerung in der Mitte pausiert wird, undresume
, wenn die Sprachausgabe wieder fortgesetzt wird. Ereignisse zum Anhalten und Fortsetzen werden möglicherweise nicht ausgelöst, wenn die Sprachausgabe zwischen Äußerungen pausiert wird.
TtsOptions
Die Sprachoptionen für die Text-in-Sprache-Engine.
Attribute
-
desiredEventTypes
string[] optional
Die TTS-Ereignistypen, die Sie anhören möchten. Fehlt diese Angabe, werden möglicherweise alle Ereignistypen gesendet.
-
in die Warteschlange stellen
Boolescher Wert optional
Falls wahr, wird diese Äußerung in die Warteschlange gestellt, wenn die Sprachausgabe bereits läuft. Bei „false“ (Standardeinstellung) wird die aktuelle Sprachausgabe unterbrochen und die Sprachwarteschlange wird geleert, bevor die neue Äußerung gesprochen wird.
-
extensionId
String optional
Die Erweiterungs-ID der zu verwendenden Sprach-Engine, falls bekannt.
-
gender
VoiceGender optional
<ph type="x-smartling-placeholder"></ph> Seit Chrome 77 verworfenDas 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 einer 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. Werte unter 0,1 oder über 10,0 sind grundsätzlich nicht zulässig, aber viele Stimmen schränken die Mindest- und Höchstraten weiter ein. So kann es beispielsweise vorkommen, dass eine bestimmte Stimme nicht schneller als dreimal spricht, 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
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.
-
onEvent
void optional
Diese Funktion wird mit Ereignissen aufgerufen, die beim Aussprechen der Äußerung auftreten.
Die Funktion
onEvent
sieht so aus:(event: TtsEvent) => {...}
-
event
Das Update-Ereignis der Text-in-Sprache-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 Arten von Rückrufereignissen, die mit dieser Stimme gesendet werden können.
-
extensionId
String optional
Die ID der Erweiterung, die diese Stimme bereitstellt.
-
gender
VoiceGender optional
<ph type="x-smartling-placeholder"></ph> Seit Chrome 70 verworfenDas 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“.
-
Standortunabhängig
Boolescher Wert optional
Falls wahr, ist die Synthese-Engine eine Remote-Netzwerkressource. Dies kann eine höhere Latenz und Bandbreitenkosten verursachen.
-
voiceName
String optional
Die Bezeichnung der Stimme.
VoiceGender
Das Geschlecht wurde eingestellt und wird ignoriert.
Enum
"männlich"
"weiblich"
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 von
tts.TtsVoice
-Objekten, die die verfügbaren Stimmen für die Sprachsynthese darstellen.
-
Returns
-
Promise<TtsVoice[]>
Chrome 101 oder höherPromise-Objekte werden in Manifest V3 und höher unterstützt, Callbacks sind jedoch für Abwärtskompatibilität. Sie können nicht beide in demselben Funktionsaufruf verwenden. Die Promise wird mit demselben Typ aufgelöst, der an das Callback übergeben wird.
isSpeaking()
chrome.tts.isSpeaking(
callback?: function,
)
Prüft, ob die Suchmaschine derzeit spricht. Unter Mac OS X lautet das Ergebnis immer dann, wenn die Sprach-Engine des Systems spricht, auch wenn die Sprachausgabe 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“.
-
Returns
-
Promise<boolean>
Chrome 101 oder höherPromise-Objekte werden in Manifest V3 und höher unterstützt, Callbacks sind jedoch für Abwärtskompatibilität. Sie können nicht beide in demselben Funktionsaufruf verwenden. Die Promise wird mit demselben Typ aufgelöst, der an das Callback übergeben wird.
pause()
chrome.tts.pause()
Unterbricht die Sprachsynthese, möglicherweise mitten in einer Äußerung. Bei einem Anruf zum Fortsetzen oder Anhalten wird die Sprachpause fortgesetzt.
resume()
chrome.tts.resume()
Wenn die Sprachausgabe angehalten wurde, wird sie an der Stelle fortgesetzt, an der sie unterbrochen wurde.
speak()
chrome.tts.speak(
utterance: string,
options?: TtsOptions,
callback?: function,
)
Sprachausgabe von Text mithilfe einer Text-in-Sprache-Engine.
Parameter
-
Äußerung
String
Der zu sprechende Text, entweder Nur-Text oder ein vollständiges, wohlgeformtes SSML-Dokument. Sprach-Engines, die SSML nicht unterstützen, entfernen die Tags und sprechen den Text vor. Die maximale Länge des Textes beträgt 32.768 Zeichen.
-
Optionen
TtsOptions optional
Die Sprachoptionen.
-
callback
Funktion optional
Der Parameter
callback
sieht so aus:() => void
Returns
-
Versprechen<void>
Chrome 101 oder höherPromise-Objekte werden in Manifest V3 und höher unterstützt, Callbacks sind jedoch für Abwärtskompatibilität. Sie können nicht beide in demselben Funktionsaufruf verwenden. Die Promise wird mit demselben Typ aufgelöst, der an das Callback übergeben wird.
stop()
chrome.tts.stop()
Beendet die aktuelle Sprachausgabe und leert die Warteschlange aller ausstehenden Äußerungen. Wenn die Sprachausgabe pausiert war, wird sie jetzt für den nächsten Anruf wieder aktiviert.
Ereignisse
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