chrome.tts

Opis

Używaj interfejsu API chrome.tts do odtwarzania zamiany tekstu na mowę z syntezatorem. Zobacz też powiązany interfejs API ttsEngine, który umożliwia rozszerzeniu wdrożenie silnika mowy.

Chrome zapewnia tę funkcję w systemach Windows (z interfejsem SAPI 5), Mac OS X i ChromeOS, przy użyciu funkcje syntezy mowy dostępne w systemie operacyjnym. Na wszystkich platformach użytkownik może instalować rozszerzenia, które rejestrują się jako alternatywne silniki mowy.

Uprawnienia

tts

Pojęcia i wykorzystanie

Wygeneruj mowę

Aby mówić, zadzwoń pod numer speak() z rozszerzenia. Na przykład:

chrome.tts.speak('Hello, world.');

Aby od razu przestać mówić, zadzwoń do stop():

chrome.tts.stop();

Możesz udostępnić opcje sterujące różnymi właściwościami mowy, takimi jak szybkość, ton i innych. Na przykład:

chrome.tts.speak('Hello, world.', {'rate': 2.0});

Dobrze jest też określić język, by syntezator obsługujący ten język (oraz dialekt regionalny, jeśli dotyczy).

chrome.tts.speak('Hello, world.', {'lang': 'en-US', 'rate': 2.0});

Domyślnie każde połączenie z speak() powoduje przerwanie trwającej mowy i dyktowanie natychmiast. Do Aby sprawdzić, czy połączenie może w czymś przeszkadzać, możesz zadzwonić pod numer isSpeaking(). Dodatkowo może użyć opcji enqueue, aby dodać tę wypowiedź do kolejki wypowiedzi, które zostaną zostanie odczytana po zakończeniu bieżącej wypowiedzi.

chrome.tts.speak('Speak this first.');
chrome.tts.speak(
    'Speak this next, when the first sentence is done.', {'enqueue': true});

Pełny opis wszystkich opcji znajdziesz na stronie tts.speak(). Nie cała mowa wyszukiwarki obsługują wszystkie opcje.

Aby wychwytywać błędy i upewnić się, że prawidłowo wywołujesz funkcję speak(), przekaż funkcję wywołania zwrotnego, która: nie przyjmuje żadnych argumentów. W trakcie wywołania zwrotnego sprawdź runtime.lastError, aby zobaczyć, czy nie .

chrome.tts.speak(
  utterance,
  options,
  function() {
    if (chrome.runtime.lastError) {
      console.log('Error: ' + chrome.runtime.lastError.message);
    }
  }
);

Wywołanie zwrotne jest zwracane od razu, zanim wyszukiwarka zacznie generować mowę. Cel wywołanie zwrotne ostrzega o błędach składni występujących podczas korzystania z interfejsu API zamiany tekstu na mowę. Uniemożliwia wychwytywanie wszystkich możliwych błędów, które mogą wystąpić w procesie syntetyzowania i generowania mowy. Do wychwytywania tych błędów musisz też użyć odbiornika, jak opisano w następnej sekcji.

Wykrywaj zdarzenia

Aby uzyskać w czasie rzeczywistym więcej informacji o stanie syntezatora mowy, przekaż detektor zdarzeń w opcje speak(), takie jak:

chrome.tts.speak(
  utterance,
  {
    onEvent: function(event) {
      console.log('Event ' + event.type + ' at position ' + event.charIndex);
      if (event.type == 'error') {
        console.log('Error: ' + event.errorMessage);
      }
    }
  },
  callback
);

Każde zdarzenie zawiera typ zdarzenia, indeks znaków bieżącego mowy względem argumentu oraz w przypadku zdarzeń błędu – opcjonalny komunikat o błędzie. Typy zdarzeń:

  • '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ź.
  • 'interrupted': ta wypowiedź została przerwana przez inne połączenie z numerem speak() lub stop() i nie jeszcze nie skończą.
  • 'cancelled': ta wypowiedź została dodana do kolejki, ale została anulowana przez inne połączenie z użytkownikiem speak() lub stop() i w ogóle nie zacząć mówić.
  • 'error': wystąpił błąd związany z wyszukiwarką i nie można odczytać tej wypowiedzi. Sprawdź event.errorMessage, aby wyświetlić szczegóły.

Cztery typy zdarzeń – 'end', 'interrupted', 'cancelled' i 'error' – są finalizowane. Po zostało odebrane jedno z tych wydarzeń, ta wypowiedź nie będzie już wypowiadana i nie będzie żadnych nowych wydarzeń z tego wydarzenia otrzymana wypowiedź.

Niektóre głosy mogą nie obsługiwać wszystkich typów zdarzeń, a inne mogą w ogóle nie wysyłać żadnych zdarzeń. Jeśli Nie chcą używać głosu, dopóki nie wysyła pewnych zdarzeń, niepowoduje requiredEventTypes należy do obiektu opcji lub użyj polecenia getVoices(), aby wybrać głos, który spełnia swoje wymagania. Poniżej opisujemy oba z nich.

Znaczniki SSML

Wyrażenia używane w tym interfejsie API mogą zawierać znaczniki wykorzystujące język znaczników syntezy mowy (SSML). Jeśli używasz SSML, pierwszym argumentem funkcji speak() powinien być kompletny dokument SSML z nagłówek XML i tag <speak> najwyższego poziomu, a nie fragment dokumentu.

Na przykład:

chrome.tts.speak(
  '<?xml version="1.0"?>' +
  '<speak>' +
  '  The <emphasis>second</emphasis> ' +
  '  word of this sentence was emphasized.' +
  '</speak>'
);

Nie wszystkie silniki mowy obsługują wszystkie tagi SSML, a niektóre mogą w ogóle nie obsługiwać SSML, ale wszystkie wyszukiwarki muszą ignorować SSML, których nie obsługują, i nadal odczytywać znajdujący się tekst.

Wybierz głos

Chrome domyślnie wybiera najbardziej odpowiedni głos do każdej wypowiedzi, którą chcesz wypowiadać, na podstawie i zmienić język. W większości systemów Windows, Mac OS X i ChromeOS synteza mowy zapewnia system operacyjny powinien być w stanie odczytać dowolny tekst w co najmniej jednym języku. Niektórzy użytkownicy mogą mieć różnych głosów dostępnych w systemie operacyjnym i zaimplementowanych silnikach przez inne rozszerzenia do Chrome. Możesz wtedy zaimplementować niestandardowy kod, by dobrać odpowiednie głos lub wyświetlić użytkownikowi listę opcji.

Aby uzyskać listę wszystkich głosów, wywołaj getVoices() i przekaż do niej funkcję odbierającą tablicę Obiekty (TtsVoice) jako argument:

chrome.tts.getVoices(
  function(voices) {
    for (var i = 0; i < voices.length; i++) {
      console.log('Voice ' + i + ':');
      console.log('  name: ' + voices[i].voiceName);
      console.log('  lang: ' + voices[i].lang);
      console.log('  extension id: ' + voices[i].extensionId);
      console.log('  event types: ' + voices[i].eventTypes);
    }
  }
);

Typy

EventType

Chrome w wersji 54 lub nowszej .

Typ wyliczeniowy

"start"

"end"

"word"

"zdanie"

"marker"

"przerwane"

"cancelled"

"error"

"pause"

"Wznów"

TtsEvent

Zdarzenie z mechanizmu zamiany tekstu na mowę do informowania o stanie wypowiedzi.

Właściwości

  • charIndex

    liczba opcjonalnie

    Indeks bieżącego znaku w wypowiedzi. W przypadku wydarzeń słownych wydarzenie uruchamia się na końcu jednego słowa i przed początkiem następnego. Symbol charIndex oznacza punkt w tekście na początku następnego słowa, które ma zostać wypowiedziane.

  • errorMessage

    ciąg znaków opcjonalny

    Opis błędu, jeśli typ zdarzenia to error.

  • długość

    liczba opcjonalnie

    Chrome w wersji 74 lub nowszej .

    Długość następnej części wypowiedzi. Na przykład w wydarzeniu word jest to długość słowa, które zostanie wypowiedziane jako następne. Jeśli nie zostanie ustawiony przez mechanizm mowy, zostanie ustawiony na -1.

  • typ

    Typ to start od razu po rozpoczęciu mowy, word – gdy granica słowa zostaje osiągnięta, sentence – gdy granica zdania zostaje osiągnięta, marker – gdy występuje znak SSML, end – gdy dochodzi do końca wypowiedzi; interrupted – gdy wypowiedź zostanie zatrzymana lub przerwana przed dotarciem do końca, cancelled, gdy zostanie usunięta z kolejki przed jej syntezą, lub error, gdy wystąpi inny błąd. Gdy wstrzymasz mowę, zdarzenie pause jest wywoływane, jeśli konkretna wypowiedź zostanie wstrzymana w środku, oraz resume, jeśli wypowiedź wznowi mówienie. Pamiętaj, że zdarzenia wstrzymywania i wznawiania mogą nie zostać wywołane, jeśli między wypowiedzeniami wymowa jest wstrzymana.

TtsOptions

Chrome w wersji 77 lub nowszej .

Opcje mowy dla mechanizmu zamiany tekstu na mowę.

Właściwości

  • desiredEventTypes

    string[] opcjonalnie

    Typy zdarzeń zamiany tekstu na mowę, które Cię interesują. Jeśli go nie znajdziesz, mogą zostać wysłane wszystkie typy zdarzeń.

  • dodać do kolejki

    Wartość logiczna opcjonalna

    Jeśli wybrano opcję prawda, ta wypowiedź zostanie dodana do kolejki, jeśli trwa już zamiana tekstu na mowę. Jeśli zasada ma wartość false (fałsz), przerywa bieżącą wypowiedź i opróżnia kolejkę mowy przed wypowiedzeniem nowej wypowiedzi.

  • extensionId

    ciąg znaków opcjonalny

    Identyfikator rozszerzenia mechanizmu rozpoznawania mowy, który ma być używany, o ile jest znany.

  • płeć

    VoiceGender opcjonalnie

    Wycofane od Chrome 77

    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 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. Wartości poniżej 0,1 lub powyżej 10,0 są surowo zabronione, ale w wielu głosach obowiązują jeszcze ograniczenia dotyczące minimalnej i maksymalnej wartości. Na przykład określony głos może nie mówić szybciej niż trzy razy, nawet jeśli podasz wartość większą niż 3,0.

  • requiredEventTypes

    string[] opcjonalnie

    Typy zdarzeń zamiany tekstu na mowę, które musi obsługiwać głos.

  • voiceName

    ciąg znaków opcjonalny

    Nazwa głosu, który ma być używany w syntezie. Jeśli pole jest puste, używany jest dowolny dostępny głos.

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

  • onEvent

    void opcjonalnie

    Ta funkcja jest wywoływana ze zdarzeniami podczas mówienia.

    Funkcja onEvent wygląda tak:

    (event: TtsEvent) => {...}

    • event

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

TtsVoice

Opis głosu dostępnego na potrzeby syntezy mowy.

Właściwości

  • eventTypes

    EventType[] opcjonalny

    Wszystkie typy zdarzeń wywołania zwrotnego, które może wysyłać ten głos.

  • extensionId

    ciąg znaków opcjonalny

    Identyfikator rozszerzenia udostępniającego ten głos.

  • płeć

    VoiceGender opcjonalnie

    Wycofane od Chrome 70

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

    Płeć tego głosu.

  • lang

    ciąg znaków opcjonalny

    Język obsługiwany przez dany głos, zapisany w formacie język-region. Przykłady: „en”, „en-US”, „en-GB”, „zh-CN”.

  • pilot

    Wartość logiczna opcjonalna

    Jeśli ma wartość prawda, silnik syntezy jest zasobem sieci zdalnej. Może to powodować większe opóźnienie i wiązać się z opłatami za przepustowość.

  • voiceName

    ciąg znaków opcjonalny

    Nazwa głosu.

VoiceGender

Chrome w wersji 54 lub nowszej Wycofane od Chrome 70

Płeć została wycofana i jest ignorowana.

Typ wyliczeniowy

"male"

"female"

Metody

getVoices()

Obietnica .
chrome.tts.getVoices(
  callback?: function,
)

Pobiera tablicę wszystkich dostępnych głosów.

Parametry

  • wywołanie zwrotne

    funkcja optional

    Parametr callback wygląda tak:

    (voices: TtsVoice[]) => void

    • Głosy

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

Zwroty

  • Promise&lt;TtsVoice[]&gt;

    Chrome 101 i nowsze wersje .

    Obietnice są obsługiwane w Manifest V3 i nowszych, ale wywołania zwrotne są podane w przypadku zgodność wsteczną. Nie można użyć obu w tym samym wywołaniu funkcji. Polecenie promowana jest realizowane z tym samym typem, który jest przekazywany do wywołania zwrotnego.

isSpeaking()

Obietnica .
chrome.tts.isSpeaking(
  callback?: function,
)

Sprawdza, czy silnik aktualnie mówi. W systemie Mac OS X wynik ma wartość „prawda” za każdym razem, gdy systemowy mechanizm rozpoznawania mowy mówi, nawet jeśli mowa nie została zainicjowana przez Chrome.

Parametry

  • wywołanie zwrotne

    funkcja optional

    Parametr callback wygląda tak:

    (speaking: boolean) => void

    • mówiąc

      wartość logiczna

      Wartość „prawda” w przypadku mówienia, „fałsz” w przeciwnym razie.

Zwroty

  • Promise&lt;boolean&gt;

    Chrome 101 i nowsze wersje .

    Obietnice są obsługiwane w Manifest V3 i nowszych, ale wywołania zwrotne są podane w przypadku zgodność wsteczną. Nie można użyć obu w tym samym wywołaniu funkcji. Polecenie promowana jest realizowane z tym samym typem, który jest przekazywany do wywołania zwrotnego.

pause()

chrome.tts.pause()

Wstrzymuje syntezę mowy, prawdopodobnie w trakcie wypowiedzi. Wywołanie wznowienia lub zatrzymania spowoduje wznowienie wypowiedzi.

resume()

chrome.tts.resume()

Jeśli wstrzymano mówienie, zostanie wznowione od miejsca, w którym zostało przerwane.

speak()

Obietnica .
chrome.tts.speak(
  utterance: string,
  options?: TtsOptions,
  callback?: function,
)

Odczytuje tekst przy użyciu mechanizmu zamiany tekstu na mowę.

Parametry

  • wypowiedź

    ciąg znaków

    Tekst do odczytania – zwykły tekst lub pełny i prawidłowo sformatowany dokument SSML. Mechanizmy mowy, które nie obsługują SSML, usuwają tagi i odczytują tekst. Maksymalna długość tekstu to 32 768 znaków.

  • Opcje

    Opcjonalne TtsOptions

    Opcje mowy.

  • wywołanie zwrotne

    funkcja optional

    Parametr callback wygląda tak:

    () => void

Zwroty

  • Obietnica<void>

    Chrome 101 i nowsze wersje .

    Obietnice są obsługiwane w Manifest V3 i nowszych, ale wywołania zwrotne są podane w przypadku zgodność wsteczną. Nie można użyć obu w tym samym wywołaniu funkcji. Polecenie promowana jest realizowane z tym samym typem, który jest przekazywany do wywołania zwrotnego.

stop()

chrome.tts.stop()

Zatrzymuje bieżące wypowiedzi i opróżnia kolejkę oczekujących wypowiedzi. Dodatkowo jeśli wstrzymasz mowę, zostanie wznowione następne połączenie.

Wydarzenia

onVoicesChanged

Chrome 124 lub nowszy .
chrome.tts.onVoicesChanged.addListener(
  callback: function,
)

Wywoływana po zmianie listy wartości tts.TtsVoice, które mają być zwracane przez metodę getVoices.

Parametry

  • wywołanie zwrotne

    funkcja

    Parametr callback wygląda tak:

    () => void