browser.ttsEngine

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 odtwarzania mowy oraz wysyłania zdarzeń z powrotem do funkcji wywołującej, aby zgłosić stan.

Uprawnienia

ttsEngine

Pojęcia i zastosowanie

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()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 i 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.

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, 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ć 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 może prawie zawsze 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 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ł planować wypowiedzi w kolejce.

Po załadowaniu rozszerzenie może zastąpić listę zadeklarowanych głosów, wywołując metodę browser.ttsEngine.updateVoices. (Pamiętaj, że parametry używane 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ął odczytywać wypowiedź.
  • 'word': osiągnięto granicę słowa. Użyj event.charIndex, aby określić bieżącą pozycję mowy.
  • 'sentence': osiągnięto koniec zdania. Użyj event.charIndex, aby określić bieżącą pozycję mowy.
  • 'marker': osiągnięto znacznik SSML. Użyj event.charIndex, aby określić bieżącą pozycję mowy.
  • 'end': silnik zakończył odczytywanie wypowiedzi.
  • 'error': wystąpił błąd specyficzny dla wyszukiwarki i nie można wypowiedzieć tego wyrażenia. Przekaż więcej informacji w sekcji event.errorMessage.

Zdarzenia 'interrupted''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 funkcję tts.getVoices, pod warunkiem że zarejestrujesz odbiorniki zdarzeń mowy zgodnie z opisem poniżej.

Obsługa zdarzeń mowy

Aby generować mowę na żądanie klientów, rozszerzenie musi zarejestrować odbiorniki dla obu tych zdarzeń:onSpeakonStop, jak w tym przykładzie:

const speakListener = (utterance, options, sendTtsEvent) => {
  sendTtsEvent({type: 'start', charIndex: 0})

  // (start speaking)

  sendTtsEvent({type: 'end', charIndex: utterance.length})
};

const stopListener = () => {
  // (stop all speech)
};

browser.ttsEngine.onSpeak.addListener(speakListener);
browser.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 onSpeakonStop. Innymi słowy, rozszerzenie nie może otrzymać prośby o przetworzenie mowy i dynamicznie zdecydować, czy ją obsłużyć.

Typy

AudioBuffer

Chrome 92 lub nowsza

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-bitowy podpisany zmiennoprzecinkowy, 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

Chrome 92 lub nowsza

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

Chrome 132 lub nowsza

Stan instalacji głosu.

Typ wyliczeniowy

„notInstalled”

„instalacja”

„installed”

„failed”

LanguageStatus

Chrome 132 lub nowsza

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 tekstowy w formacie kod języka-kod regionu, przy czym kod regionu może zostać pominięty. Przykłady to en, en-AU, zh-CH.

LanguageUninstallOptions

Chrome 132 lub nowsza

Opcje odinstalowania danego języka.

Właściwości

  • uninstallImmediately

    wartość logiczna

    Wartość „true”, jeśli 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, może używać innych kryteriów, np. ostatniego użycia, aby określić, kiedy odinstalować aplikację.

SpeakOptions

Chrome 92 lub nowsza

Opcje określone w metodzie tts.speak().

Właściwości

  • płeć

    VoiceGender opcjonalny

    Wycofane w Chrome 92

    Płeć została wycofana i będzie ignorowana.

    Płeć głosu syntezatora 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, gdzie 0 oznacza najniższą, a 2 – najwyższą wysokość. Wartość 1,0 odpowiada domyślnej wysokości głosu.

  • szybkość reakcji

    number opcjonalny

    Tempo mówienia w stosunku do 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 to dwa razy szybciej, a 0,5 to dwa razy wolniej. 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 szybkość 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 opcjonalny

    Głośność mówienia w zakresie od 0 do 1 włącznie, gdzie 0 to najniższa głośność, a 1 to najwyższa głośność.Wartość domyślna to 1,0.

TtsClient

Chrome 131 lub nowsza

Identyfikator klienta, który wysyła prośbę o stan.

Właściwości

  • id

    tekst

    Klient wysyła żą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 wnioskodawcy.

TtsClientSource

Chrome 131 lub nowsza

Typ wnioskodawcy.

Typ wyliczeniowy

"chromefeature"

„rozszerzenie”

VoiceGender

Chrome 54 i nowsze wersje Wycofane w Chrome 70

Płeć została wycofana i będzie ignorowana.

Typ wyliczeniowy

„male”

„female”

Metody

updateLanguage()

Chrome 132 lub nowsza
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 też wywołać metodę ttsEngine.updateVoices, aby zarejestrować głos.

Parametry

updateVoices()

Chrome 66 lub nowsza
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

    Tablica obiektów tts.TtsVoice reprezentujących dostępne głosy do syntezy mowy.

Wydarzenia

onInstallLanguageRequest

Chrome 131 lub nowsza
chrome.ttsEngine.onInstallLanguageRequest.addListener(
  callback: function,
)

Wywoływane, gdy klient TTS prosi o zainstalowanie nowego języka. Mechanizm powinien spróbować pobrać i zainstalować język oraz 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 callback wygląda tak:

    (requestor: TtsClient, lang: string) => void

    • użytkownik wysyłający prośbę
    • lang

      tekst

onLanguageStatusRequest

Chrome 132 lub nowsza
chrome.ttsEngine.onLanguageStatusRequest.addListener(
  callback: function,
)

Wywoływane, gdy klient TTS zażąda stanu instalacji języka.

Parametry

  • callback

    funkcja

    Parametr callback wygląda tak:

    (requestor: TtsClient, lang: string) => void

    • użytkownik wysyłający prośbę
    • lang

      tekst

onPause

chrome.ttsEngine.onPause.addListener(
  callback: function,
)

Opcjonalnie: jeśli wyszukiwarka obsługuje zdarzenie wstrzymania, powinna wstrzymać bieżącą wypowiedź, jeśli taka istnieje, do momentu otrzymania zdarzenia wznowienia lub zdarzenia zatrzymania. Pamiętaj, że zdarzenie zatrzymania powinno też wyczyścić stan wstrzymania.

Parametry

  • callback

    funkcja

    Parametr callback wygląda tak:

    () => void

onResume

chrome.ttsEngine.onResume.addListener(
  callback: function,
)

Opcjonalnie: jeśli wyszukiwarka obsługuje zdarzenie wstrzymania, powinna 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 callback wyglą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 callback wygląda tak:

    (utterance: string, options: SpeakOptions, sendTtsEvent: function) => void

    • wypowiedź

      tekst

    • Opcje
    • sendTtsEvent

      funkcja

      Parametr sendTtsEvent wygląda tak:

      (event: tts.TtsEvent) => void

      • zdarzenie

        Zdarzenie z mechanizmu zamiany tekstu na mowę wskazujące stan tej wypowiedzi.

onSpeakWithAudioStream

Chrome 92 lub nowsza
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 callback wygląda tak:

    (utterance: string, options: SpeakOptions, audioStreamOptions: AudioStreamOptions, sendTtsAudio: function, sendError: function) => void

    • wypowiedź

      tekst

    • Opcje
    • audioStreamOptions
    • sendTtsAudio

      funkcja

      Parametr sendTtsAudio wygląda tak:

      (audioBufferParams: AudioBuffer) => void

      • audioBufferParams

        Parametry zawierające bufor audio i powiązane dane.

    • sendError

      funkcja

      Chrome 94 lub nowsza

      Parametr sendError wygląda tak:

      (errorMessage?: string) => void

      • Komunikat o błędzie

        ciąg znaków opcjonalny

        Ciąg znaków opisujący błąd.

onStop

chrome.ttsEngine.onStop.addListener(
  callback: function,
)

Wywoływane, gdy wywoływana jest funkcja tts.stop, a to rozszerzenie może być w trakcie odczytywania tekstu. 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 callback wygląda tak:

    () => void

onUninstallLanguageRequest

Chrome 132 lub nowsza
chrome.ttsEngine.onUninstallLanguageRequest.addListener(
  callback: function,
)

Wywoływane, gdy klient TTS wskazuje, że język nie jest już potrzebny.

Parametry