chrome.ttsEngine

Opis

Aby zaimplementować mechanizm zamiany tekstu na mowę, użyj rozszerzenia API chrome.ttsEngine. Jeśli rozszerzenie zarejestruje się za pomocą tego interfejsu API, otrzyma zdarzenia zawierające wypowiedź do odczytania oraz inne parametry, gdy dowolne rozszerzenie lub aplikacja Chrome użyje interfejsu API tts do generowania mowy. Rozszerzenie może następnie wykorzystać dowolną dostępną technologię internetową do syntetyzowania i generowania mowy, a następnie wysyłania zdarzeń z powrotem do funkcji wywołującej, by poinformować o stanie.

Uprawnienia

ttsEngine

Pojęcia i wykorzystanie

Rozszerzenie może zarejestrować się jako mechanizm mowy. Dzięki temu może on przechwytywać niektóre lub wszystkie połączenia do funkcji takich jak tts.speak() i tts.stop(), oraz zapewnić alternatywną implementację. Rozszerzenia mogą wykorzystywać dowolną dostępną technologię internetową do mowy, w tym do strumieniowego przesyłania dźwięku. z serwera – audio HTML5. Rozszerzenie może nawet zrobić coś innego za pomocą wypowiedzi, np. wyświetlania napisów w wyskakującym okienku lub wysyłania ich jako wiadomości dziennika i serwera zdalnego.

Aby można było zaimplementować mechanizm zamiany tekstu na mowę, rozszerzenie musi zadeklarować parametr „ttsEngine” uprawnienia, a następnie zadeklaruj wszystko głosy udostępniane przez rozszerzenie w pliku manifestu, na 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ć wystarczająco opisowa, aby identyfikować nazwy głosu i używanego silnika. w mało prawdopodobnym przypadku, gdy 2 rozszerzenia rejestrują głosy. o tej samej nazwie klient może określić identyfikator rozszerzenia, które powinno wykonać syntezę.

Parametr lang jest opcjonalny, ale zdecydowanie zalecany. Niemal zawsze, syntezator mowy może mówić tylko w jednym języku. Jeśli wyszukiwarka obsługuje więcej niż 1 język, może łatwo zarejestrować osobny głos dla każdego języka. W rzadkich przypadkach, gdy pojedynczy głos może obsługuje więcej niż 1 język, najłatwiej jest podać 2 osobne głosy i obsługiwać je za pomocą i używają tej samej logiki. Jeśli jednak chcesz utworzyć głos, który będzie obsługiwać wypowiedzi w dowolnym język, usuń parametr lang z pliku manifestu rozszerzenia.

Parametr event_types jest też wymagany, jeśli wyszukiwarka może wysyłać zdarzenia w celu zaktualizowania klienta. na postęp syntezy mowy. Wymagane minimum to obsługa typu zdarzenia 'end' wskazująca, po zakończeniu mówienia jest zdecydowanie zalecane. W przeciwnym razie Chrome nie może zaplanować wypowiedzi umieszczonych w kolejce.

Po załadowaniu rozszerzenie może zastąpić listę zadeklarowanych głosów, wywołując chrome.ttsEngine.updateVoices (Zwróć uwagę, że parametry używane w programowym wywołaniu funkcji updateVoices są zapisane w etui w kształcie wielbłąda: np. 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ń używanym przez metodę speak() otrzymuje:

  • 'start': mechanizm zaczął wymawiać słowa.
  • 'word': osiągnięto granicę słowa. Aby określić bieżącą mowę, użyj event.charIndex pozycji.
  • 'sentence': osiągnięto granicę zdań. Użyj funkcji event.charIndex, aby określić bieżącą pozycji mowy.
  • 'marker': osiągnięto znacznik SSML. Aby określić bieżącą mowę, użyj event.charIndex pozycji.
  • 'end': wyszukiwarka zakończyła wypowiedź.
  • 'error': wystąpił błąd związany z wyszukiwarką i nie można odczytać tej wypowiedzi. Podaj więcej informacje w event.errorMessage.

Zdarzenia 'interrupted' i 'cancelled' nie są wysyłane przez mechanizm mowy. są generowane automatycznie przez Chrome.

Klienty zamiany tekstu na mowę mogą uzyskiwać informacje głosowe z pliku manifestu rozszerzenia, wywołując tts.getVoices, zakładając, że zostały zarejestrowane detektory zdarzeń mowy w sposób opisany poniżej.

Obsługa zdarzeń związanych z mową

Aby można było generować mowę na prośbę klientów, rozszerzenie musi zarejestrować detektory w obu onSpeak i onStop lubią to:

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 głosowe do rozszerzenia, zależy wyłącznie od czy rozszerzenie obsługuje w pliku manifestu podane parametry głosu i zarejestrowało detektory utworów onSpeak i onStop. Innymi słowy, nie ma możliwości, aby rozszerzenie otrzymało żądania mowy i dynamicznie zdecydować, czy obsłużyć.

Typy

AudioBuffer

Chrome w wersji 92 lub nowszej .

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

Właściwości

  • audioBuffer

    SlateBuffer

    Bufor dźwięku z mechanizmu zamiany tekstu na mowę. Powinien mieć dokładnie taką samą długość, audioStreamOptions.bufferSize i zakodowany jako mono, w polu audioStreamOptions.sampleRate, a jako liniowy pcm – 32-bitowy znak zmiennoprzecinkowy, tj. typ Float32Slate w języku JavaScript.

  • charIndex

    liczba opcjonalnie

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

  • isLastBuffer

    Wartość logiczna opcjonalna

    Prawda, jeśli ten bufor audio jest ostatnim odczytywanym tekstem.

AudioStreamOptions

Chrome w wersji 92 lub nowszej .

Zawiera format strumienia audio, który ma być wygenerowany przez wyszukiwarkę.

Właściwości

  • bufferSize

    liczba

    Liczba sampli w buforze audio.

  • sampleRate

    liczba

    Oczekiwana częstotliwość próbkowania w buforze audio.

SpeakOptions

Chrome w wersji 92 lub nowszej .

Opcje określone dla metody tts.speak().

Właściwości

  • płeć

    VoiceGender opcjonalnie

    Wycofane od Chrome 92

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

    Płeć głosu syntetycznego.

  • lang

    ciąg znaków opcjonalny

    Język używany w syntezie w formacie język-region. Przykłady: „en”, „en-US”, „en-GB”, „zh-CN”.

  • rzut

    liczba opcjonalnie

    Wypowiadanie tonacji mieści się w zakresie od 0 do 2 włącznie, przy czym 0 to najniższa ocena, a 2 – najwyższa. 1,0 odpowiada domyślnej tonacji tego głosu.

  • szybkość reakcji

    liczba opcjonalnie

    Szybkość mowy w stosunku do domyślnej szybkości tego głosu. Domyślna wartość to 1,0, zwykle od 180 do 220 słów na minutę. 2,0 to dwa razy szybciej, a 0,5 – mniej. Ta wartość musi mieścić się w przedziale od 0,1 do 10,0 włącznie. Jeśli dany głos nie obsługuje pełnego zakresu częstotliwości, nie zwracaj komunikatu o błędzie. Zamiast tego dopasuj szybkość do zakresu obsługiwanego przez głos.

  • voiceName

    ciąg znaków opcjonalny

    Nazwa głosu, który ma być używany w syntezie.

  • głośność

    liczba opcjonalnie

    Wypowiadana głośność mieści się w zakresie od 0 do 1 włącznie, przy czym 0 oznacza najniższą, a 1 – najwyższą, przy czym domyślna to 1,0.

VoiceGender

Chrome w wersji 54 lub nowszej Wycofane od Chrome 70

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

Typ wyliczeniowy

"male"

"female"

Metody

updateVoices()

Chrome w wersji 66 lub nowszej, .
chrome.ttsEngine.updateVoices(
  voices: TtsVoice[],
)

Wywoływane przez wyszukiwarkę 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

onPause

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

Opcjonalnie: jeśli wyszukiwarka obsługuje zdarzenie wstrzymania, powinna wstrzymać wypowiadaną aktualnie wypowiedź do momentu, gdy otrzyma zdarzenie wznowienia lub zakończenia. Pamiętaj, że zatrzymanie zdarzeń powinno też spowodować usunięcie stanu wstrzymania.

Parametry

  • wywołanie zwrotne

    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 możliwe było kontynuowanie wypowiadania bieżącej wypowiedzi. Pamiętaj, że zatrzymanie zdarzeń powinno też spowodować usunięcie stanu wstrzymania.

Parametry

  • wywołanie zwrotne

    funkcja

    Parametr callback wygląda tak:

    () => void

onSpeak

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

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

Parametry

  • wywołanie zwrotne

    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

      • event

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

onSpeakWithAudioStream

Chrome w wersji 92 lub nowszej .
chrome.ttsEngine.onSpeakWithAudioStream.addListener(
  callback: function,
)

Wywoływana, gdy użytkownik wywołuje funkcję tts.speak(), a jeden z głosów z pliku manifestu rozszerzenia jako pierwszy pasuje do obiektu options. Różni się od ttsEngine.onSpeak tym, że Chrome oferuje usługi odtwarzania dźwięku i obsługuje wysyłanie zdarzeń czatu.

Parametry

  • wywołanie zwrotne

    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 z nim dane.

    • sendError

      funkcja

      Chrome w wersji 94 lub nowszej .

      Parametr sendError wygląda tak:

      (errorMessage?: string) => void

      • errorMessage

        ciąg znaków opcjonalny

        Ciąg tekstowy opisujący błąd.

onStop

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

Uruchamiane po nawiązaniu połączenia z tts.stop i to rozszerzenie może być w trakcie mówienia. Jeśli rozszerzenie otrzyma wywołanie onStop, a mowa zostanie już zatrzymana, nie powinno nic robić (nie może powodować wyświetlania błędu). Jeśli odtwarzanie mowy jest wstrzymane, powinno zostać anulowane.

Parametry

  • wywołanie zwrotne

    funkcja

    Parametr callback wygląda tak:

    () => void