refresh date: 2026-09-25 robots: noindex
Opis
Użyj interfejsu chrome.ttsEngine API, aby wdrożyć 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 tts API do generowania mowy. Rozszerzenie może następnie użyć dowolnej dostępnej technologii internetowej do syntezy i wygenerowania mowy oraz wysłać zdarzenia z powrotem do funkcji wywołującej, aby zgłosić stan.
Uprawnienia
ttsEnginePrzegląd
Rozszerzenie może zarejestrować się jako silnik mowy. W ten sposób może przechwytywać niektóre lub wszystkie wywołania funkcji, takich jak tts.speak i tts.stop, i zapewniać alternatywną implementację.
Rozszerzenia mogą bezpłatnie korzystać z dowolnej dostępnej technologii internetowej do odtwarzania mowy, w tym przesyłania strumieniowego dźwięku z serwera czy dźwięku HTML5. Rozszerzenie może nawet robić z wypowiedziami coś innego, np. wyświetlać napisy w wyskakującym okienku lub wysyłać je jako wiadomości dziennika na serwer zdalny.
Plik manifestu
Aby wdrożyć silnik TTS, rozszerzenie musi zadeklarować uprawnienie „ttsEngine”, a następnie zadeklarować wszystkie głosy, które udostępnia, w pliku manifestu rozszerzenia, np. tak:
{
"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ć wystarczająco opisowa, aby identyfikować nazwę głosu i używany silnik. W rzadkich przypadkach, gdy 2 rozszerzenia zarejestrują głosy o tej samej nazwie, klient może określić identyfikator rozszerzenia, które ma przeprowadzić syntezę.
Parametr lang jest opcjonalny, ale zdecydowanie zalecany. Głos syntetyzuje mowę niemal zawsze 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 z nich. W rzadkich przypadkach, gdy jeden głos może obsługiwać więcej niż 1 język, najłatwiej jest po prostu wymienić 2 osobne głosy i obsługiwać je wewnętrznie za pomocą 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 w syntezie mowy. Zalecamy obsługę co najmniej typu zdarzenia 'end', aby wskazywać, 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żyte w wywołaniu programowym do
updateVoices są zapisywane w formacie camel case, np. voiceName, w przeciwieństwie do pliku manifestu, w którym używa się formatu
voice_name).
Możliwe typy zdarzeń, które możesz wysyłać, odpowiadają typom zdarzeń, które otrzymuje metoda speak():
'start': silnik zaczął odtwarzać wypowiedź.'word': osiągnięto granicę słowa. Użyjevent.charIndex, aby określić bieżącą pozycję mowy.'sentence': osiągnięto koniec 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ł wypowiadanie komunikatu.'error': wystąpił błąd specyficzny dla silnika i nie można wypowiedzieć tego wyrażenia. Przekazywanie większej ilości informacji wevent.errorMessage.
Zdarzenia 'interrupted' i 'cancelled' nie są wysyłane przez silnik mowy, ale generowane automatycznie przez Chrome.
Klienci korzystający z funkcji zamiany tekstu na mowę mogą uzyskać informacje o głosie z pliku manifestu rozszerzenia, wywołując tts.getVoices, pod warunkiem że zarejestrujesz odbiorniki zdarzeń mowy w sposób opisany poniżej.
Obsługa zdarzeń mowy
Aby generować mowę na żądanie klientów, rozszerzenie musi zarejestrować odbiorców zarówno dla onSpeak, jak i onStop, 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 zarejestrowało odbiorniki dla onSpeak i onStop. Innymi słowy, rozszerzenie nie może otrzymać żądania mowy i dynamicznie decydować, 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, z częstotliwością próbkowania audioStreamOptions.sampleRate oraz jako liniowy PCM, 32-bitowa liczba zmiennoprzecinkowa ze znakiem, czyli typ Float32Array w JavaScript.
-
charIndex
number opcjonalny
Indeks znaku powiązany z tym buforem audio.
-
isLastBuffer
wartość logiczna opcjonalna
Wartość „true”, jeśli ten bufor audio jest ostatnim buforem dla wypowiadanego tekstu.
AudioStreamOptions
Zawiera format strumienia audio, który powinien być generowany 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”
„instalowanie”
„installed”
„failed”
LanguageStatus
Stan instalacji języka.
Właściwości
-
błąd
ciąg znaków opcjonalny
Szczegóły błędów 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 formacie kod języka-kod regionu, przy czym kod regionu może zostać pominięty. Przykłady: en, en-AU, zh-CH.
LanguageUninstallOptions
Opcje odinstalowania danego języka.
Właściwości
-
uninstallImmediately
wartość logiczna
Wartość logiczna określająca, czy klient TTS chce natychmiast odinstalować język. Na podstawie tego parametru i informacji o osobie wysyłającej żądanie silnik może zdecydować, czy i kiedy odinstalować język. Jeśli wartość jest fałszywa, do określenia, kiedy odinstalować aplikację, mogą być używane inne kryteria, np. ostatnie użycie.
SpeakOptions
Opcje określone w metodzie tts.speak().
Właściwości
-
płeć
VoiceGender opcjonalny
Wycofane w Chrome 92Pole Gender zostało wycofane i będzie ignorowane.
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 opcjonalny
Wysokość głosu w zakresie od 0 do 2 włącznie, gdzie 0 to najniższa, a 2 to najwyższa wysokość głosu. Wartość 1,0 odpowiada domyślnej wysokości głosu.
-
szybkość reakcji
number opcjonalny
Szybkość mówienia w stosunku do domyślnej szybkości dla tego głosu. Domyślna szybkość to 1,0, czyli zwykle około 180–220 słów na minutę. 2,0 oznacza dwukrotnie większą szybkość, a 0,5 – dwukrotnie mniejszą. Wartość ta na pewno będzie mieścić 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 zakres do wartości obsługiwanych przez głos.
-
voiceName
ciąg znaków opcjonalny
Nazwa głosu używanego na potrzeby syntezy.
-
głośność
number opcjonalny
Głośność mowy w zakresie od 0 do 1 włącznie, gdzie 0 oznacza najniższą głośność, a 1 – najwyższą.Wartość domyślna to 1,0.
TtsClient
Identyfikator klienta, który wysyła prośbę 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 nazwa funkcji czytelna dla człowieka.
-
źródło
Typ wnioskodawcy.
TtsClientSource
Typ wnioskodawcy.
Typ wyliczeniowy
"chromefeature"
„extension”
VoiceGender
Pole Gender zostało wycofane i będzie ignorowane.
Typ wyliczeniowy
„male”
"female"
Metody
updateLanguage()
chrome.ttsEngine.updateLanguage(
status: LanguageStatus,
): void
Wywoływana przez silnik, gdy próbuje się zainstalować język i gdy język jest odinstalowywany. Wywoływana również w odpowiedzi na żądanie stanu od klienta. Gdy głos jest instalowany lub odinstalowywany, silnik powinien również wywołać ttsEngine.updateVoices, aby zarejestrować głos.
Parametry
-
status
Stan instalacji języka.
updateVoices()
chrome.ttsEngine.updateVoices(
voices: TtsVoice[],
): void
Wywoływana 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 dostępne głosy do syntezy mowy.
Wydarzenia
onInstallLanguageRequest
chrome.ttsEngine.onInstallLanguageRequest.addListener(
callback: function,
)
Wyzwalane, gdy klient TTS prosi o zainstalowanie nowego języka. Silnik powinien spróbować pobrać i zainstalować język oraz wywołać funkcję ttsEngine.updateLanguage z wynikiem. Po pomyślnym zakończeniu działania 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
-
osoba wysyłająca prośbę
-
lang
tekst
-
onLanguageStatusRequest
chrome.ttsEngine.onLanguageStatusRequest.addListener(
callback: function,
)
Wywoływane, gdy klient TTS wysyła żądanie dotyczące stanu instalacji języka.
Parametry
-
callback
funkcja
Parametr
callbackwygląda tak:(requestor: TtsClient, lang: string) => void
-
osoba wysyłająca 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, do momentu otrzymania zdarzenia wznowienia lub zdarzenia zatrzymania. Pamiętaj, że zdarzenie zatrzymania powinno również 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 również 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ła funkcję tts.speak(), a jeden z głosów z pliku manifestu tego rozszerzenia jako pierwszy 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ła funkcję tts.speak(), a jeden z głosów z pliku manifestu tego rozszerzenia jako pierwszy 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 nowszaParametr
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,
)
Wywoływane, gdy wywoływana jest funkcja tts.stop, a rozszerzenie może być w trakcie odtwarzania mowy. 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, ta czynność powinna anulować ten stan.
Parametry
-
callback
funkcja
Parametr
callbackwygląda tak:() => void
onUninstallLanguageRequest
chrome.ttsEngine.onUninstallLanguageRequest.addListener(
callback: function,
)
Wywoływane, 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
-
osoba wysyłająca prośbę
-
lang
tekst
-
uninstallOptions
-