Opis
Aby zaimplementować mechanizm zamiany tekstu na mowę(TTS) za pomocą rozszerzenia, użyj interfejsu API chrome.ttsEngine. Jeśli Twoje rozszerzenie zarejestruje się za pomocą tego interfejsu API, będzie otrzymywać zdarzenia zawierające wypowiedź do wymówienia i inne parametry, gdy dowolne rozszerzenie lub aplikacja w Chrome będzie używać interfejsu API tts do generowania mowy. Rozszerzenie może następnie użyć dowolnej dostępnej technologii internetowej do syntezy i wyprowadzenia mowy, a także wysłać zdarzenia z powrotem do funkcji wywołania, aby przekazać stan.
Uprawnienia
ttsEnginePojęcia i zastosowanie
Rozszerzenie może zarejestrować się jako mechanizm przetwarzania mowy. Dzięki temu może przechwytywać niektóre lub wszystkie wywołania funkcji takich jak tts.speak() i tts.stop() oraz zapewniać alternatywne ich wykonanie.
Rozszerzenia mogą swobodnie korzystać z dowolnej dostępnej technologii internetowej do odtwarzania mowy, w tym strumieniowego dźwięku z serwera i dźwięku w formacie 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.
Aby zaimplementować silnik TTS, rozszerzenie musi zadeklarować uprawnienie „ttsEngine”, a następnie zadeklarować wszystkie głosy, które udostępnia w pliku manifestu rozszerzenia. Przykład:
{
  "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 zawierać dowolną liczbę głosów.
Parametr voice_name jest wymagany. Nazwa powinna być na tyle opisowa, aby można było z niej określić nazwę głosu i używanego silnika. W bardzo rzadkich przypadkach, gdy 2 rozszerzenia zarejestrują głosy o tej samej nazwie, klient może podać identyfikator rozszerzenia, które ma przeprowadzić syntezę.
Parametr lang jest opcjonalny, ale zdecydowanie zalecany. Prawie zawsze głos może syntetyzować mowę tylko w jednym języku. Gdy 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 podać 2 osobne głosy i obsługiwać je za pomocą tej samej logiki wewnętrznej. 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.
Na koniec parametr event_types jest wymagany, jeśli silnik może wysyłać zdarzenia, aby aktualizować klienta na temat postępów syntezy mowy. Zdecydowanie zalecamy obsługę co najmniej typu zdarzenia 'end', aby wskazywać, kiedy kończy się mowa. W przeciwnym razie Chrome nie będzie mógł zaplanować wypowiedzi w kolejce.
Po załadowaniu rozszerzenie może zastąpić listę zadeklarowanych głosów, wywołując funkcję chrome.ttsEngine.updateVoices. (Pamiętaj, że parametry używane w automatycznym wywołaniu funkcji updateVoices są w alfabecie łacińskim z dużą literą: voiceName, w przeciwieństwie do pliku manifestu, który używa voice_name.)
Możliwe typy zdarzeń, które możesz wysyłać, odpowiadają typom zdarzeń, które otrzymuje metoda speak():
- 'start': silnik zaczął wypowiadać wypowiedź.
- 'word': osiągnięto granicę słowa. Użyj właściwości- event.charIndex, aby określić bieżącą pozycję w mowie.
- 'sentence': osiągnięto granicę zdania. Użyj- event.charIndex, aby określić bieżącą pozycję mowy.
- 'marker': osiągnięto znacznik SSML. Użyj właściwości- event.charIndex, aby określić bieżącą pozycję w mowie.
- 'end': silnik zakończył wypowiadanie wypowiedzi.
- 'error': wystąpił błąd związany z wyszukiwarką i nie można wymówić tego wyrażenia. Przekaż więcej informacji w sekcji- event.errorMessage.
Zdarzenia 'interrupted' i 'cancelled' nie są wysyłane przez mechanizm rozpoznawania mowy, lecz generowane automatycznie przez Chrome.
Klienci usług konwersji tekstu na mowę mogą uzyskać informacje głosowe z pliku manifestu rozszerzenia, wywołując funkcję tts.getVoices, o ile masz zarejestrowanych słuchaczy zdarzeń związanych z mową zgodnie z opisem poniżej.
Obsługa zdarzeń związanych z mową
Aby generować mowę na żądanie klientów, Twoje rozszerzenie musi zarejestrować słuchaczy 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ć określone żądanie dotyczące mowy do rozszerzenia, zależy wyłącznie od tego, czy rozszerzenie obsługuje określone parametry głosu w swoim pliku manifestu i czy ma zarejestrowanych słuchaczy dla onSpeak i onStop. Innymi słowy, rozszerzenie nie może otrzymać prośby o wypowiedź i dynamicznie zdecydować, czy ma ją obsłużyć.
Typy
AudioBuffer
Parametry zawierające bufor audio i powiązane dane.
Właściwości
- 
    audioBufferArrayBuffer Bufor audio z mechanizmu zamiany tekstu na mowę. Jego długość powinna być równa parametrowi audioStreamOptions.bufferSize i zakodowana jako mono z parametrem audioStreamOptions.sampleRate oraz jako linearny pcm, 32-bitowy podpisany typ float, czyli typ Float32Array w JavaScript. 
- 
    charIndexnumer opcjonalny Indeks znaków powiązany z tym buforem audio. 
- 
    isLastBufferlogiczna opcjonalna Prawda, jeśli ten bufor audio jest ostatnim dla wypowiadanego tekstu. 
AudioStreamOptions
Zawiera format strumienia audio, który powinien być wygenerowany przez silnik.
Właściwości
- 
    bufferSizeliczba Liczba próbek w buforze audio. 
- 
    sampleRateliczba Częstotliwość próbkowania oczekiwana w buforze audio. 
LanguageInstallStatus
Stan instalacji głosu.
Typ wyliczeniowy
„notInstalled” 
 
„installing” 
 
„zainstalowany” 
 
„failed” 
 
LanguageStatus
Stan instalacji języka.
Właściwości
- 
    błądstring opcjonalny Szczegółowe informacje o błędach instalacji. Opcjonalnie wypełniane, jeśli nie udało się zainstalować języka. 
- 
    installStatusStan instalacji. 
- 
    langciąg znaków Ciąg tekstowy w formie kodu języka i kodu regionu, gdzie region może zostać pominięty. Przykłady: en, en-AU, zh-CH. 
LanguageUninstallOptions
Opcje odinstalowania danego języka.
Właściwości
- 
    uninstallImmediatelywartość logiczna Wartość prawda, jeśli klient TTS chce natychmiast odinstalować język. Na podstawie tego parametru i informacji o występującym żądaniu silnik może zdecydować, czy i kiedy odinstalować język. Jeśli wartość jest równa fałsz, do określenia momentu odinstalowania może zostać użyte inne kryterium, np. ostatnio używana aplikacja. 
SpeakOptions
Opcje określone w metodzie 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 syntetycznego. 
- 
    langstring opcjonalny Język, który ma być użyty do syntezy, w formie language-region. Przykłady: „pl”, „pl-PL”, „en-US”, „en-GB”, „zh-CN”. 
- 
    rzutnumer opcjonalny Wysokość głosu w zakresie od 0 do 2, gdzie 0 to najniższa, a 2 to najwyższa wartość. Wartość 1,0 odpowiada domyślnej wysokości tego głosu. 
- 
    szybkość reakcjinumer opcjonalny Szybkość mówienia w porównaniu z domyślną szybkością tego głosu. 1,0 to domyślna szybkość, która wynosi zwykle od 180 do 220 słów na minutę. 2,0 to dwa razy szybciej, a 0,5 to połowa szybkości. Ta wartość musi się zawierać w przedziale od 0,1 do 10,0 (włącznie). Jeśli głos nie obsługuje pełnego zakresu częstotliwości, nie zwracaj błędu. Zamiast tego ograniczaj częstotliwość do zakresu obsługiwanego przez głos. 
- 
    voiceNamestring opcjonalny Nazwa głosu używanego na potrzeby syntezy. 
- 
    głośnośćnumer opcjonalny Głośność mowy w zakresie od 0 do 1, gdzie 0 to najniższa, a 1 to najwyższa wartość, domyślnie 1,0. 
TtsClient
Identyfikator klienta, który prosi o stan.
Właściwości
- 
    idciąg znaków Klient wysyła prośbę o zarządzanie językiem. W przypadku rozszerzenia jest to unikalny identyfikator rozszerzenia. W przypadku funkcji Chrome jest to czytelna nazwa funkcji. 
- 
    źródłoTyp osoby przesyłającej prośbę. 
TtsClientSource
Typ osoby przesyłają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
Jest wywoływany przez silnik, gdy próbuje się zainstalować język lub go odinstalować. Jest też używany w odpowiedzi na prośbę o stan klienta. Gdy głos zostanie zainstalowany lub odinstalowany, silnik powinien też wywołać metodę ttsEngine.updateVoices, aby zarejestrować głos.
Parametry
- 
    statusStan instalacji języka. 
updateVoices()
chrome.ttsEngine.updateVoices(
voices: TtsVoice[],
): void
Wywoływany przez silnik w celu zaktualizowania listy głosów. Ta lista zastępuje wszystkie głosy zadeklarowane w pliku manifestu rozszerzenia.
Parametry
- 
    GłosyTtsVoice[] Tablica obiektów tts.TtsVoicereprezentujących dostępne głosy do syntezy mowy.
Wydarzenia
onInstallLanguageRequest
chrome.ttsEngine.onInstallLanguageRequest.addListener(
callback: function,
)
Wywoływane, gdy klient TTS poprosi o zainstalowanie nowego języka. Mechanizm powinien spróbować pobrać i zainstalować język, a potem wywołać metodę ttsEngine.updateLanguage z otrzymanym wynikiem. W przypadku powodzenia silnik powinien też wywołać ttsEngine.updateVoices, aby zarejestrować nowo dostępne głosy.
Parametry
- 
    wywołanie zwrotnefunkcja Parametr callbackma postać:(requestor: TtsClient, lang: string) => void - 
    zgłaszający
- 
    langciąg znaków 
 
- 
    
onLanguageStatusRequest
chrome.ttsEngine.onLanguageStatusRequest.addListener(
callback: function,
)
Wywoływane, gdy klient TTS prosi o stan instalacji języka.
Parametry
- 
    wywołanie zwrotnefunkcja Parametr callbackma postać:(requestor: TtsClient, lang: string) => void - 
    zgłaszający
- 
    langciąg znaków 
 
- 
    
onPause
chrome.ttsEngine.onPause.addListener(
callback: function,
)
Opcjonalnie: jeśli silnik obsługuje zdarzenie wstrzymania, powinien wstrzymać aktualnie wypowiadane zdanie (jeśli takie występuje), dopóki nie otrzyma zdarzenia wznowienia lub zatrzymania. Pamiętaj, że zdarzenie stop powinno też anulować stan wstrzymania.
Parametry
- 
    wywołanie zwrotnefunkcja Parametr callbackma postać:() => void 
onResume
chrome.ttsEngine.onResume.addListener(
callback: function,
)
Opcjonalnie: jeśli silnik obsługuje zdarzenie wstrzymania, powinien też obsługiwać zdarzenie wznowienia, aby kontynuować wypowiadanie bieżącego wyrażenia (jeśli takie istnieje). Pamiętaj, że zdarzenie stop powinno też anulować stan wstrzymania.
Parametry
- 
    wywołanie zwrotnefunkcja Parametr callbackma postać:() => void 
onSpeak
chrome.ttsEngine.onSpeak.addListener(
callback: function,
)
Wywoływany, gdy użytkownik wywoła tts.speak() i jeden z głosów z pliku manifestu tego rozszerzenia jako pierwszy pasuje do obiektu options.
Parametry
- 
    wywołanie zwrotnefunkcja Parametr callbackma postać:(utterance: string, options: SpeakOptions, sendTtsEvent: function) => void - 
    wypowiedźciąg znaków 
- 
    Opcje
- 
    sendTtsEventfunkcja Parametr sendTtsEventma postać:(event: tts.TtsEvent) => void - 
    eventZdarzenie z mechanizmu zamiany tekstu na mowę wskazujące stan tego wypowiedzenia. 
 
- 
    
 
- 
    
onSpeakWithAudioStream
chrome.ttsEngine.onSpeakWithAudioStream.addListener(
callback: function,
)
Wywoływany, gdy użytkownik wywoła tts.speak() i jeden z głosów z pliku manifestu tego rozszerzenia jako pierwszy pasuje do obiektu options. Różnica między ttsEngine.onSpeak polega na tym, że Chrome zapewnia usługi odtwarzania dźwięku i obsługuje wysyłanie zdarzeń TTS.
Parametry
- 
    wywołanie zwrotnefunkcja Parametr callbackma postać:(utterance: string, options: SpeakOptions, audioStreamOptions: AudioStreamOptions, sendTtsAudio: function, sendError: function) => void - 
    wypowiedźciąg znaków 
- 
    Opcje
- 
    audioStreamOptions
- 
    sendTtsAudiofunkcja Parametr sendTtsAudioma postać:(audioBufferParams: AudioBuffer) => void - 
    audioBufferParamsParametry zawierające bufor audio i powiązane dane. 
 
- 
    
- 
    sendErrorfunkcja Chrome 94 lub nowszyParametr sendErrorma postać:(errorMessage?: string) => void - 
    errorMessagestring opcjonalny Ciąg tekstowy opisujący błąd. 
 
- 
    
 
- 
    
onStop
chrome.ttsEngine.onStop.addListener(
callback: function,
)
Wywoływany, gdy wywołana zostaje funkcja tts.stop, a rozszerzenie może być w trakcie mówienia. Jeśli rozszerzenie otrzyma wywołanie onStop, a mowa jest już zatrzymana, nie powinno nic robić (nie powinno wywoływać błędu). Jeśli mowa jest wstrzymana, powinno to anulować stan wstrzymania.
Parametry
- 
    wywołanie zwrotnefunkcja Parametr callbackma postać:() => void 
onUninstallLanguageRequest
chrome.ttsEngine.onUninstallLanguageRequest.addListener(
callback: function,
)
Wywoływany, gdy klient TTS wskazuje, że dany język nie jest już potrzebny.
Parametry
- 
    wywołanie zwrotnefunkcja Parametr callbackma postać:(requestor: TtsClient, lang: string, uninstallOptions: LanguageUninstallOptions) => void - 
    zgłaszający
- 
    langciąg znaków 
- 
    uninstallOptions
 
-