refresh date: 2026-09-25 robots: noindex
Opis
Użyj interfejsu API chrome.ttsEngine, aby zaimplementować silnik zamiany tekstu na mowę(TTS) za pomocą rozszerzenia. Jeśli rozszerzenie zarejestruje się za pomocą tego interfejsu API, będzie otrzymywać zdarzenia zawierające wypowiedź do odczytania i inne parametry, gdy dowolne rozszerzenie lub aplikacja Chrome użyje interfejsu API tts do generowania mowy. Rozszerzenie może następnie użyć dowolnej dostępnej technologii internetowej do syntezy i wygenerowania mowy oraz wysłania zdarzeń z powrotem do funkcji wywołującej w celu zgłoszenia stanu.
Uprawnienia
ttsEnginePrzegląd
Rozszerzenie może zarejestrować się jako silnik mowy. Dzięki temu może przechwytywać niektóre lub wszystkie wywołania funkcji takich jak tts.speak i tts.stop oraz udostępniać alternatywną implementację.
Rozszerzenia mogą korzystać z dowolnej dostępnej technologii internetowej do odtwarzania mowy, w tym ze strumieniowego przesyłania dźwięku z serwera i dźwięku HTML5. Rozszerzenie może nawet wykonywać inne czynności związane z wypowiedziami, np. wyświetlać napisy w wyskakującym okienku lub wysyłać je jako komunikaty logu na serwer zdalny.
Plik manifestu
Aby wdrożyć mechanizm TTS, rozszerzenie musi zadeklarować uprawnienie „ttsEngine”, a następnie wszystkie głosy, które udostępnia w pliku manifestu rozszerzenia, w ten sposób:
{
"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
}
}
Rozszerzenie może określać dowolną liczbę głosów.
Parametr voice_name jest wymagany. Nazwa powinna być na tyle opisowa, aby można było zidentyfikować nazwę głosu i używanego silnika. W bardzo rzadkich przypadkach, gdy 2 rozszerzenia zarejestrują głosy o tej samej nazwie, klient może określić identyfikator rozszerzenia, które powinno wykonać syntezę.
Parametr lang jest opcjonalny, ale zdecydowanie zalecany. Prawie zawsze głos może syntetyzować mowę tylko w jednym języku. Jeśli silnik obsługuje więcej niż 1 język, może łatwo zarejestrować osobny głos dla każdego języka. W rzadkich przypadkach, gdy jeden głos może obsługiwać więcej niż jeden język, najłatwiej jest po prostu wymienić 2 osobne głosy i obsługiwać je wewnętrznie przy użyciu tej samej logiki. Jeśli jednak chcesz utworzyć głos, który będzie obsługiwał wypowiedzi w dowolnym języku, pomiń parametr lang w pliku manifestu rozszerzenia.
Parametr event_types jest wymagany, jeśli silnik może wysyłać zdarzenia, aby informować klienta o postępach syntezy mowy. Zdecydowanie zalecamy obsługę co najmniej typu zdarzenia 'end', aby wskazać, kiedy mowa się kończy. W przeciwnym razie Chrome nie będzie mógł zaplanować wypowiedzi w kolejce.
Po wczytaniu rozszerzenie może zastąpić listę zadeklarowanych głosów, wywołując funkcję chrome.ttsEngine.updateVoices. (Pamiętaj, że parametry używane w wywołaniu automatycznym do updateVoices są zapisywane w formacie camelCase, np. voiceName, w odróżnieniu od pliku manifestu, w którym używany jest format voice_name).
Typy zdarzeń, które możesz wysyłać, odpowiadają typom zdarzeń, które odbiera metoda speak():
'start': silnik zaczął odczytywać wypowiedź.'word': osiągnięto granicę słowa. Użyjevent.charIndex, aby określić bieżącą pozycję mowy.'sentence': osiągnięto granicę zdania. Użyjevent.charIndex, aby określić bieżącą pozycję mowy.'marker': osiągnięto znacznik SSML. Użyjevent.charIndex, aby określić bieżącą pozycję mowy.'end': silnik zakończył odczytywanie wypowiedzi.'error': wystąpił błąd związany z silnikiem i nie można odczytać tej wypowiedzi. Przekaż więcej informacji w parametrzeevent.errorMessage.
Zdarzenia 'interrupted' i 'cancelled' nie są wysyłane przez mechanizm mowy, ale są generowane automatycznie przez Chrome.
Klienty zamiany tekstu na mowę mogą uzyskać informacje o głosie z pliku manifestu rozszerzenia, wywołując funkcję tts.getVoices, pod warunkiem że zarejestrowano detektory zdarzeń mowy w sposób opisany poniżej.
Obsługa zdarzeń mowy
Aby generować mowę na żądanie klientów, rozszerzenie musi zarejestrować detektory dla onSpeak i onStop, na przykład w ten sposób:
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);
Decyzja o tym, czy wysłać dane żądanie mowy do rozszerzenia, zależy wyłącznie od tego, czy rozszerzenie obsługuje dane parametry głosu w swoim pliku manifestu i czy ma zarejestrowane detektory dla onSpeak i onStop. Innymi słowy, rozszerzenie nie może otrzymać żądania mowy i dynamicznie zdecydować, czy je obsłużyć.
Typy
AudioBuffer
Parametry zawierające bufor audio i powiązane dane.
Właściwości
-
audioBuffer
ArrayBuffer
Bufor audio z mechanizmu zamiany tekstu na mowę. Powinien mieć długość dokładnie audioStreamOptions.bufferSize i być zakodowany jako mono, przy audioStreamOptions.sampleRate, oraz jako liniowy pcm, 32-bitowy podpisany float, czyli typ Float32Array w javascript.
-
charIndex
number optional
Indeks znaków powiązany z tym buforem audio.
-
isLastBuffer
boolean opcjonalne
Prawda, jeśli ten bufor audio jest ostatnim dla wypowiadanego tekstu.
AudioStreamOptions
Zawiera format strumienia audio, który powinien zostać wygenerowany przez silnik.
Właściwości
-
bufferSize
liczba
Liczba próbek w buforze audio.
-
sampleRate
liczba
Częstotliwość próbkowania oczekiwana w buforze audio.
LanguageInstallStatus
Stan instalacji głosu.
Typ wyliczeniowy
"notInstalled"
"installing"
"installed"
"failed"
LanguageStatus
Stan instalacji języka.
Właściwości
-
błąd
ciąg znaków opcjonalny
Szczegółowe informacje o błędach instalacji. Opcjonalnie wypełniane, jeśli nie udało się zainstalować języka.
-
installStatus
Stan instalacji.
-
lang
tekst
Ciąg znaków języka w formie kod języka-kod regionu, przy czym region można pominąć. Przykłady: en, en-AU, zh-CH.
LanguageUninstallOptions
Opcje odinstalowywania danego języka.
Właściwości
-
uninstallImmediately
wartość logiczna
Prawda, jeśli klient TTS chce natychmiast odinstalować język. Silnik może zdecydować, czy i kiedy odinstalować język, na podstawie tego parametru i informacji o żądającym. Jeśli ma wartość Fałsz, może używać innych kryteriów, takich jak ostatnie użycie, aby określić, kiedy odinstalować aplikację.
SpeakOptions
Opcje określone dla metody tts.speak().
Właściwości
-
płeć
VoiceGender opcjonalny
Wycofane w Chrome 92Płeć została wycofana i będzie ignorowana.
Płeć głosu używanego do syntezy mowy.
-
lang
ciąg znaków opcjonalny
Język, który ma być używany do syntezy, w formacie język-region. Przykłady: „en”, „en-US”, „en-GB”, „zh-CN”.
-
rzut
number optional
Wysokość głosu od 0 do 2, gdzie 0 to najniższa, a 2 – najwyższa. Wartość 1,0 odpowiada domyślnej wysokości głosu.
-
szybkość reakcji
number optional
Tempo mówienia względem domyślnego tempa dla tego głosu. Domyślna szybkość to 1,0, czyli zwykle około 180–220 słów na minutę. 2,0 oznacza 2 razy szybciej, a 0,5 – 2 razy wolniej. Ta wartość musi zawierać się w przedziale od 0,1 do 10,0 (włącznie). Jeśli głos nie obsługuje pełnego zakresu szybkości, nie zwracaj błędu. Zamiast tego ogranicz tempo do zakresu obsługiwanego przez głos.
-
voiceName
ciąg znaków opcjonalny
Nazwa głosu używanego na potrzeby syntezy.
-
głośność
number optional
Głośność mowy od 0 do 1 włącznie, gdzie 0 oznacza najniższą, a 1 najwyższą głośność.Wartość domyślna to 1,0.
TtsClient
Identyfikator klienta, który prosi o stan.
Właściwości
-
id
tekst
Klient wysyłający żądanie zarządzania językiem. W przypadku rozszerzenia jest to unikalny identyfikator rozszerzenia. W przypadku funkcji Chrome jest to zrozumiała dla człowieka nazwa funkcji.
-
źródło
Typ osoby zgłaszającej prośbę.
TtsClientSource
Typ osoby zgłaszającej prośbę.
Typ wyliczeniowy
"chromefeature"
"extension"
VoiceGender
Płeć została wycofana i będzie ignorowana.
Typ wyliczeniowy
"male"
"female"
Metody
updateLanguage()
chrome.ttsEngine.updateLanguage(
status: LanguageStatus,
): void
Wywoływane przez silnik, gdy następuje próba zainstalowania języka i gdy język jest odinstalowywany. Jest też wywoływana w odpowiedzi na żądanie stanu od klienta. Gdy głos jest instalowany lub odinstalowywany, silnik powinien też wywołać funkcję ttsEngine.updateVoices, aby zarejestrować głos.
Parametry
-
status
Stan instalacji języka.
updateVoices()
chrome.ttsEngine.updateVoices(
voices: TtsVoice[],
): void
Wywoływane przez silnik w celu zaktualizowania listy głosów. Ta lista zastępuje wszystkie głosy zadeklarowane w pliku manifestu tego rozszerzenia.
Parametry
-
Głosy
TtsVoice[]
Tablica obiektów
tts.TtsVoicereprezentujących głosy dostępne do syntezy mowy.
Wydarzenia
onInstallLanguageRequest
chrome.ttsEngine.onInstallLanguageRequest.addListener(
callback: function,
)
Uruchamiane, gdy klient TTS prosi o zainstalowanie nowego języka. Silnik powinien spróbować pobrać i zainstalować język, a następnie wywołać funkcję ttsEngine.updateLanguage z wynikiem. W przypadku powodzenia silnik powinien też wywołać funkcję ttsEngine.updateVoices, aby zarejestrować nowo dostępne głosy.
Parametry
-
callback
funkcja
Parametr
callbackwygląda tak:(requestor: TtsClient, lang: string) => void
-
użytkownik zgłaszający prośbę
-
lang
tekst
-
onLanguageStatusRequest
chrome.ttsEngine.onLanguageStatusRequest.addListener(
callback: function,
)
Uruchamiane, gdy klient TTS żąda stanu instalacji języka.
Parametry
-
callback
funkcja
Parametr
callbackwygląda tak:(requestor: TtsClient, lang: string) => void
-
użytkownik zgłaszający prośbę
-
lang
tekst
-
onPause
chrome.ttsEngine.onPause.addListener(
callback: function,
)
Opcjonalnie: jeśli silnik obsługuje zdarzenie wstrzymania, powinien wstrzymać bieżącą wypowiedź, jeśli taka istnieje, dopóki nie otrzyma zdarzenia wznowienia lub zatrzymania. Pamiętaj, że zdarzenie zatrzymania powinno też wyczyścić stan wstrzymania.
Parametry
-
callback
funkcja
Parametr
callbackwygląda tak:() => void
onResume
chrome.ttsEngine.onResume.addListener(
callback: function,
)
Opcjonalnie: jeśli silnik obsługuje zdarzenie wstrzymania, powinien też obsługiwać zdarzenie wznowienia, aby kontynuować odczytywanie bieżącej wypowiedzi (jeśli taka istnieje). Pamiętaj, że zdarzenie zatrzymania powinno też wyczyścić stan wstrzymania.
Parametry
-
callback
funkcja
Parametr
callbackwygląda tak:() => void
onSpeak
chrome.ttsEngine.onSpeak.addListener(
callback: function,
)
Wywoływana, gdy użytkownik wywołuje funkcję tts.speak(), a jeden z głosów z manifestu tego rozszerzenia jest pierwszym, który pasuje do obiektu opcji.
Parametry
-
callback
funkcja
Parametr
callbackwygląda tak:(utterance: string, options: SpeakOptions, sendTtsEvent: function) => void
-
wypowiedź
tekst
-
Opcje
-
sendTtsEvent
funkcja
Parametr
sendTtsEventwygląda tak:(event: tts.TtsEvent) => void
-
zdarzenie
Zdarzenie z mechanizmu zamiany tekstu na mowę wskazujące stan tej wypowiedzi.
-
-
onSpeakWithAudioStream
chrome.ttsEngine.onSpeakWithAudioStream.addListener(
callback: function,
)
Wywoływana, gdy użytkownik wywołuje funkcję tts.speak(), a jeden z głosów z manifestu tego rozszerzenia jest pierwszym, który pasuje do obiektu opcji. Różni się od ttsEngine.onSpeak tym, że Chrome udostępnia usługi odtwarzania dźwięku i obsługuje wysyłanie zdarzeń TTS.
Parametry
-
callback
funkcja
Parametr
callbackwygląda tak:(utterance: string, options: SpeakOptions, audioStreamOptions: AudioStreamOptions, sendTtsAudio: function, sendError: function) => void
-
wypowiedź
tekst
-
Opcje
-
audioStreamOptions
-
sendTtsAudio
funkcja
Parametr
sendTtsAudiowygląda tak:(audioBufferParams: AudioBuffer) => void
-
audioBufferParams
Parametry zawierające bufor audio i powiązane dane.
-
-
sendError
funkcja
Chrome 94 lub nowsza wersjaParametr
sendErrorwygląda tak:(errorMessage?: string) => void
-
Komunikat o błędzie
ciąg znaków opcjonalny
Ciąg tekstowy opisujący błąd.
-
-
onStop
chrome.ttsEngine.onStop.addListener(
callback: function,
)
Uruchamiane, gdy wywoływana jest funkcja tts.stop, a rozszerzenie może być w trakcie odczytywania. Jeśli rozszerzenie otrzyma wywołanie onStop, a mowa została już zatrzymana, nie powinno nic robić (nie powinno zgłaszać błędu). Jeśli mowa jest w stanie wstrzymania, powinno to anulować ten stan.
Parametry
-
callback
funkcja
Parametr
callbackwygląda tak:() => void
onUninstallLanguageRequest
chrome.ttsEngine.onUninstallLanguageRequest.addListener(
callback: function,
)
Uruchamiane, gdy klient TTS wskazuje, że język nie jest już potrzebny.
Parametry
-
callback
funkcja
Parametr
callbackwygląda tak:(requestor: TtsClient, lang: string, uninstallOptions: LanguageUninstallOptions) => void
-
użytkownik zgłaszający prośbę
-
lang
tekst
-
uninstallOptions
-