chrome.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łaszać stan.

Uprawnienia

ttsEngine

Pojęcia i zastosowanie

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()tts.stop(), i zapewniać alternatywną implementację. Rozszerzenia mogą bezpłatnie korzystać z dowolnej dostępnej technologii internetowej do odtwarzania mowy, w tym z 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, 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 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ł zaplanować wypowiedzi w kolejce.

Po wczytaniu rozszerzenie może zastąpić listę zadeklarowanych głosów, wywołując metodę chrome.ttsEngine.updateVoices. (Pamiętaj, że parametry używane w wywołaniu programowym do updateVoices są zapisywane w formacie camelCase, np. voiceName, w przeciwieństwie do pliku manifestu, w którym używany jest format 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ż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 odczytać 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 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 pokazano poniżej:

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 onSpeakonStop. Innymi słowy, rozszerzenie nie może otrzymać żądania mowy i dynamicznie zdecydować, czy je 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 ze znakiem zmiennoprzecinkowym, czyli jako typ Float32Array w JavaScript.

  • charIndex

    number opcjonalny

    Indeks znaku powiązany z tym buforem audio.

  • isLastBuffer

    wartość logiczna opcjonalna

    Wartość „true” (prawda), jeśli ten bufor audio jest ostatnim buforem dla wypowiadanego tekstu.

AudioStreamOptions

Chrome 92 lub nowsza

Zawiera format strumienia audio, który ma 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”

„instalowanie”

„installed”

„failed”

LanguageStatus

Chrome 132 lub nowsza

Stan instalacji języka.

Właściwości

  • błąd

    ciąg znaków opcjonalny

    Szczegółowe informacje o nieudanych instalacjach. Opcjonalnie wypełniane, jeśli nie udało się zainstalować języka.

  • installStatus

    Stan instalacji.

  • lang

    ciąg znaków

    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

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żyć 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 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

    Tempo mówienia w porównaniu z domyślnym tempem 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 przytnij 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ść mowy w zakresie od 0 do 1 włącznie, gdzie 0 to najniższa, 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

    ciąg znaków

    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”

„extension”

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. 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 callback wygląda tak:

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

    • osoba wysyłająca prośbę
    • lang

      ciąg znaków

onLanguageStatusRequest

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

Uruchamiane, gdy klient TTS wysyła żądanie dotyczące stanu instalacji języka.

Parametry

  • callback

    funkcja

    Parametr callback wygląda tak:

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

    • osoba wysyłająca prośbę
    • lang

      ciąg znaków

onPause

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

Opcjonalnie: jeśli wyszukiwarka obsługuje zdarzenie wstrzymania, powinna wstrzymać aktualnie odczytywaną wypowiedź (jeśli taka jest) do momentu otrzymania zdarzenia wznowienia lub zdarzenia zatrzymania. Pamiętaj, że zdarzenie zatrzymania powinno również 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ź

      ciąg znaków

    • 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ź

      ciąg znaków

    • 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 tekstowy 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 wskaże, że język nie jest już potrzebny.

Parametry