chrome.ttsEngine

Opis

Aby zaimplementować mechanizm konwersji tekstu na mowę(TTS) za pomocą rozszerzenia, użyj interfejsu API chrome.ttsEngine. Jeśli 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 oraz wysłać zdarzenia z powrotem do funkcji wywołania, aby przekazać stan.

Uprawnienia

ttsEngine

Omówienie

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.speaktts.stop oraz zapewniać alternatywne implementacje. 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 wykonywać inne czynności z wypowiedziami, np. wyświetlać napisy w wyskakującym oknie lub wysyłać je jako komunikaty logowania na serwer zdalny.

Plik manifestu

Aby zaimplementować silnik TTS, rozszerzenie musi zadeklarować uprawnienie „ttsEngine”, a następnie zadeklarować wszystkie głosy, które udostępnia w pliku manifestu rozszerzenia, na przykład 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 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''cancelled' nie są wysyłane przez mechanizm rozpoznawania mowy, lecz generowane automatycznie przez Chrome.

Klienci usług konwertujących tekst na mowę mogą uzyskać informacje o głosie 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 onSpeakonStop. Innymi słowy, rozszerzenie nie może otrzymać prośby o wypowiedź i dynamicznie zdecydować, czy ma ją obsłużyć.

Typy

AudioBuffer

Chrome 92 lub nowszy

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

Właściwości

  • audioBuffer

    ArrayBuffer

    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.

  • charIndex

    number opcjonalny

    Indeks znaków powiązany z tym buforem audio.

  • isLastBuffer

    logiczna opcjonalna

    Prawda, jeśli ten bufor audio jest ostatnim dla wypowiadanego tekstu.

AudioStreamOptions

Chrome 92 lub nowszy

Zawiera format strumienia audio, który powinien być 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

Oczekuje

Stan instalacji głosu.

Typ wyliczeniowy

"notInstalled"

„installing”

„zainstalowany”

„failed”

LanguageStatus

Oczekuje

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

    cią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

Oczekuje

Opcje odinstalowania danego języka.

Właściwości

  • uninstallImmediately

    wartość 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ść to Fałsz, do określenia momentu odinstalowania może zostać użyte inne kryterium, np. ostatnio używana aplikacja.

SpeakOptions

Chrome 92 lub nowszy

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

Właściwości

  • płeć

    VoiceGender opcjonalny

    Wycofane w wersji Chrome 92

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

    Płeć głosu syntetycznego.

  • lang

    ciąg znaków 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”.

  • rzut

    number 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ść reakcji

    number 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 180–220 słów na minutę. 2,0 to dwa razy szybciej, a 0,5 to połowa szybkości. Wartość ta 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.

  • 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, gdzie 0 to najniższa, a 1 to najwyższa wartość.Wartość domyślna to 1,0.

TtsClient

Chrome 131 lub nowszy

Identyfikator klienta, który prosi o stan.

Właściwości

  • id

    cią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ło

    Typ osoby przesyłającej prośbę.

TtsClientSource

Chrome 131 lub nowszy

Typ osoby przesyłającej prośbę.

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

Oczekuje
chrome.ttsEngine.updateLanguage(
  status: LanguageStatus,
)

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

updateVoices()

Chrome 66 lub nowszy
chrome.ttsEngine.updateVoices(
  voices: TtsVoice[],
)

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łosy

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

Wydarzenia

onInstallLanguageRequest

Chrome 131 lub nowszy
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 zwrotne

    funkcja

    Parametr callback ma postać:

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

onLanguageStatusRequest

Oczekuje
chrome.ttsEngine.onLanguageStatusRequest.addListener(
  callback: function,
)

Wywoływane, gdy klient TTS prosi o stan instalacji języka.

Parametry

  • wywołanie zwrotne

    funkcja

    Parametr callback ma postać:

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

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 zwrotne

    funkcja

    Parametr callback ma 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 zwrotne

    funkcja

    Parametr callback ma postać:

    () => void

onSpeak

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

Wywoływany, gdy użytkownik wywoła funkcję tts.speak() i jeden z głosów z pliku manifestu tego rozszerzenia jako pierwszy pasuje do obiektu options.

Parametry

  • wywołanie zwrotne

    funkcja

    Parametr callback ma postać:

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

    • wypowiedź

      ciąg znaków

    • Opcje
    • sendTtsEvent

      funkcja

      Parametr sendTtsEvent ma postać:

      (event: tts.TtsEvent) => void

      • event

        Zdarzenie z mechanizmu zamiany tekstu na mowę wskazujące stan tego wypowiedzenia.

onSpeakWithAudioStream

Chrome 92 lub nowszy
chrome.ttsEngine.onSpeakWithAudioStream.addListener(
  callback: function,
)

Wywoływany, gdy użytkownik wywoła funkcję 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 zwrotne

    funkcja

    Parametr callback ma postać:

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

    • wypowiedź

      ciąg znaków

    • Opcje
    • audioStreamOptions
    • sendTtsAudio

      funkcja

      Parametr sendTtsAudio ma postać:

      (audioBufferParams: AudioBuffer) => void

      • audioBufferParams

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

    • sendError

      funkcja

      Chrome 94 lub nowszy

      Parametr sendError ma postać:

      (errorMessage?: string) => void

      • errorMessage

        ciąg znaków 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 zwrotne

    funkcja

    Parametr callback ma postać:

    () => void

onUninstallLanguageRequest

Oczekuje
chrome.ttsEngine.onUninstallLanguageRequest.addListener(
  callback: function,
)

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

Parametry