chrome.tts

Opis

Do odtwarzania syntetycznego tekstu na mowę (TTS) używaj interfejsu API chrome.tts. Zapoznaj się też z powiązanym interfejsem API ttsEngine, który umożliwia rozszerzeniu wdrożenie mechanizmu rozpoznawania mowy.

Chrome udostępnia te funkcje w systemach Windows (za pomocą SAPI 5), Mac OS X i ChromeOS przy użyciu funkcji syntezy mowy oferowanych przez system operacyjny. Na wszystkich platformach użytkownik może instalować rozszerzenia, które rejestrują się jako alternatywne wyszukiwarki mowy.

Uprawnienia

tts

Pojęcia i zastosowanie

Wygeneruj mowę

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

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

Aby natychmiast przestać mówić, zadzwoń pod numer stop():

chrome.tts.stop();

Możesz udostępniać opcje, które kontrolują różne właściwości mowy, takie jak szybkość czy ton. Na przykład:

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

Warto też określić język, by wybrać syntezator obsługujący ten język (i jego dialekt regionalny, jeśli dotyczy).

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

Domyślnie każde wywołanie z adresem speak() przerywa wszystkie trwające wypowiedzi i od razu je wypowiada. Aby sprawdzić, czy połączenie może cokolwiek zakłócać, możesz wywołać isSpeaking(). Możesz też użyć opcji enqueue, aby dodać tę wypowiedź do kolejki wypowiedzi, które zostaną wypowiedziane 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 w sekcji tts.speak(). Nie wszystkie mechanizmy mowy obsługują wszystkie opcje.

Aby wykryć błędy i mieć pewność, że wywołujesz funkcję speak() prawidłowo, przekaż funkcję wywołania zwrotnego, która nie przyjmuje żadnych argumentów. W wywołaniu zwrotnym sprawdź, czy w polu runtime.lastError nie ma błędów.

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

Wywołanie zwrotne jest realizowane natychmiast, zanim wyszukiwarka zacznie generować mowę. Wywołanie zwrotne ma na celu ostrzeżenie o błędach składni podczas korzystania z interfejsu TTS API i nie wychwycenie wszystkich możliwych błędów, które mogą wystąpić podczas syntetyzowania i generowania mowy. Aby wykryć te błędy również, musisz użyć detektora zdarzeń, który został opisany w następnej sekcji.

Odsłuchiwanie zdarzeń

Aby otrzymywać więcej informacji w czasie rzeczywistym o stanie syntezowanej mowy, przekaż odbiornik zdarzenia w opcjach do funkcji speak() w ten sposób:

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 obejmuje typ zdarzenia, indeks znaków bieżącej mowy w odniesieniu do wypowiedzi oraz opcjonalny komunikat o błędzie (w przypadku zdarzeń błędów). Typy zdarzeń:

  • 'start': silnik rozpoczął wypowiadanie wypowiedzi.
  • 'word': osiągnięto granicę słowa. Użyj event.charIndex, aby określić bieżącą pozycję mowy.
  • '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 event.charIndex, aby określić bieżącą pozycję mowy.
  • 'end': silnik zakończył wypowiadanie wypowiedzi.
  • 'interrupted': ta wypowiedź została przerwana przez inne połączenie z numerem speak() lub stop() i nie została zakończona.
  • 'cancelled': ta wypowiedź została dodana do kolejki, ale została anulowana przez inne połączenie z numerem speak() lub stop() i nigdy nie zaczęła się mówić.
  • 'error': wystąpił błąd specyficzny dla wyszukiwarki i nie można odczytać tej wypowiedzi. Szczegóły znajdziesz tutaj: event.errorMessage.

Cztery typy zdarzeń – 'end', 'interrupted', 'cancelled' i 'error' – są nieostateczne. Po odebraniu jednego z tych zdarzeń ta wypowiedź nie będzie już mówić ani nie będą odbierane żadne nowe zdarzenia.

Niektóre głosy mogą nie obsługiwać wszystkich typów wydarzeń, a niektóre głosy mogą w ogóle nie wysyłać żadnych wydarzeń. Jeśli nie chcesz używać głosu, o ile nie wysyła określonych zdarzeń, przekaż wymagane zdarzenia w elemencie requiredEventTypes obiektu options lub użyj funkcji getVoices(), aby wybrać głos zgodny z Twoimi wymaganiami. Poniżej opisujemy oba te typy.

Znaczniki SSML

Wyrażenia wykorzystywane w tym interfejsie API mogą zawierać znaczniki wykorzystujące język znaczników syntezy mowy (SSML). Jeśli używasz SSML, pierwszy argument funkcji speak() powinien być pełnym dokumentem SSML z nagłówkiem XML i tagiem <speak> najwyższego poziomu, a nie fragmentem 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 wyszukiwarki mowy obsługują wszystkie tagi SSML, a niektóre w ogóle nie obsługują SSML. Jednak wszystkie wyszukiwarki muszą ignorować SSML, których nie obsługują, i nadal odczytywać tekst.

Wybierz głos

Domyślnie Chrome wybiera głos, który jest najbardziej odpowiedni dla każdej wypowiedzi, którą chcesz wypowiedzieć, na podstawie języka. W większości systemów Windows, Mac OS X i ChromeOS synteza mowy dostępna przez system operacyjny powinna być w stanie odczytać dowolny tekst w co najmniej jednym języku. Niektórzy użytkownicy mogą jednak korzystać z różnych głosów z systemu operacyjnego i z mechanizmów rozpoznawania mowy zaimplementowanych przez inne rozszerzenia do Chrome. W takich przypadkach możesz zaimplementować kod niestandardowy, aby wybrać właściwy głos lub przedstawić użytkownikowi listę dostępnych opcji.

Aby uzyskać listę wszystkich głosów, wywołaj funkcję getVoices() i przekaż do niej funkcję, która otrzymuje jako argument tablicę obiektów TtsVoice:

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 i nowszych

Typ wyliczeniowy

"start"

"end"

"sentence"

"marker"

TtsEvent

Zdarzenie mechanizmu zamiany tekstu na mowę służący do przekazywania informacji o stanie wypowiedzi.

Właściwości

  • charIndex

    Liczba opcjonalnie

    Indeks bieżącego znaku w wypowiedzi. W przypadku wydarzeń tekstowych zdarzenie jest uruchamiane na końcu jednego słowa i przed początkiem następnego. charIndex oznacza punkt w tekście na początku następnego słowa, które zostanie wypowiedziane.

  • errorMessage

    ciąg znaków opcjonalny

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

  • length

    Liczba opcjonalnie

    Chrome 74 i nowszy

    Długość następnej części wypowiedzi. Na przykład w przypadku zdarzenia word jest to długość słowa, które zostanie wypowiedziane jako następne. Jeśli mechanizm rozpoznawania mowy nie ustawi tego ustawienia, otrzyma on wartość -1.

  • Niestandardowy typ treści

    Typ może mieć postać start od razu po rozpoczęciu mowy, word po osiągnięciu granicy słowa, sentence po osiągnięciu granicy zdania, marker po osiągnięciu elementu znaku SSML, end po osiągnięciu końca wypowiedzi, interrupted, gdy wypowiedź zostanie zatrzymana lub przerwana przed jej zakończeniem, cancelled – gdy zostanie usunięta z kolejki przed jej syntezą, lub error, gdy wystąpi jakikolwiek inny błąd. Gdy wstrzymasz mowę, zdarzenie pause jest wywoływane, jeśli konkretna wypowiedź zostanie wstrzymana w środku, oraz resume, jeśli wznowiona jest wypowiedź. Pamiętaj, że wstrzymywanie i wznawianie zdarzeń może nie być wywołane, jeśli między wypowiedziami wstrzymana jest mowa.

TtsOptions

Chrome 77 i nowsze wersje

Opcje mowy dla mechanizmu zamiany tekstu na mowę.

Właściwości

  • desiredEventTypes

    string[] opcjonalny

    Rodzaje zdarzeń TTS, których chcesz posłuchać. Jeśli go brak, będą wysyłane wszystkie typy zdarzeń.

  • umieścić w kolejce

    wartość logiczna opcjonalna

    Jeśli ma wartość true (prawda), dodaje tę wypowiedź do kolejki, jeśli trwa już przekształcanie tekstu na mowę. Jeśli ma wartość fałsz (domyślna), przerywa bieżącą wypowiedź i opróżnia kolejkę mowy przed wypowiedzeniem nowej wypowiedzi.

  • extensionId

    ciąg znaków opcjonalny

    Identyfikator rozszerzenia mechanizmu rozpoznawania mowy (jeśli jest znany).

  • gender

    VoiceGender opcjonalnie

    Wycofane od Chrome 77

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

    Płeć głosu na potrzeby syntezy mowy.

  • lang

    ciąg znaków opcjonalny

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

  • rzut

    Liczba opcjonalnie

    Tony wypowiedzi w przedziale od 0 do 2 włącznie, gdzie 0 to najniższa ocena, a 2 to najwyższa. 1,0 odpowiada domyślnemu tonu głosu.

  • szybkość reakcji

    Liczba opcjonalnie

    Szybkość mowy w odniesieniu do domyślnej szybkości wypowiedzi dla tego głosu. Domyślna wartość to 1, 0 – zwykle od 180 do 220 słów na minutę. 2,0 – 2 razy szybciej, a 0,5 – o połowę szybciej. Wartości poniżej 0,1 lub powyżej 10,0 są surowo zabronione, ale wiele głosów jeszcze bardziej ogranicza minimalne i maksymalne szybkości. Na przykład określony głos może nie mówić szybciej niż 3 razy normalnie, nawet jeśli podasz wartość większą niż 3,0.

  • requiredEventTypes

    string[] opcjonalny

    Rodzaje zdarzeń TTS, które musi obsługiwać głos.

  • voiceName

    ciąg znaków opcjonalny

    Nazwa głosu, który ma zostać użyty do syntezy. Jeśli to pole jest puste, używany jest dowolny dostępny głos.

  • wolumin

    Liczba opcjonalnie

    Głośność mowy z zakresu od 0 do 1 włącznie, gdzie 0 to najniższa wartość, a 1 – najwyższa, a domyślnie 1,0.

  • onEvent

    void opcjonalny

    Funkcja jest wywoływana ze zdarzeniami, które wystąpią w procesie wypowiadania wypowiedzi.

    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 do syntezy mowy.

Właściwości

  • eventTypes

    EventType[] opcjonalny

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

  • extensionId

    ciąg znaków opcjonalny

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

  • gender

    VoiceGender opcjonalnie

    Wycofane od Chrome 70

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

    Płeć osoby, która ma głos.

  • lang

    ciąg znaków opcjonalny

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

  • pilot

    wartość logiczna opcjonalna

    Jeśli ma wartość prawda, mechanizm syntezy jest zasobem sieci zdalnej. Opóźnienie może być większe i wiązać się z kosztami za przepustowość.

  • voiceName

    ciąg znaków opcjonalny

    Nazwa głosu.

VoiceGender

Chrome 54 i nowszy Wycofane od Chrome 70

Płeć została wycofana i ignorowana.

Typ wyliczeniowy

Metody

getVoices()

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

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

Parametry

  • wywołanie zwrotne

    funkcja opcjonalnie

    Parametr callback wygląda tak:

    (voices: TtsVoice[])=>void

    • Głosy

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

Zwroty

  • Promise<TtsVoice[]>

    Chrome 101 i nowsze wersje

    Obietnice są obsługiwane w platformie Manifest V3 i nowszych, ale wywołania zwrotne są dostępne na potrzeby zgodności wstecznej. Nie można użyć obu w tym samym wywołaniu funkcji. Obietnica znika 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 macOS X wynik jest prawdziwy zawsze wtedy, gdy mówi systemowy mechanizm syntezy mowy, nawet jeśli mowa nie została zainicjowana przez Chrome.

Parametry

  • wywołanie zwrotne

    funkcja opcjonalnie

    Parametr callback wygląda tak:

    (speaking: boolean)=>void

    • mówienie

      boolean

      Ma wartość „prawda” w przypadku wypowiedzi, a fałsz w przeciwnym razie.

Zwroty

  • Promise<boolean>

    Chrome 101 i nowsze wersje

    Obietnice są obsługiwane w platformie Manifest V3 i nowszych, ale wywołania zwrotne są dostępne na potrzeby zgodności wstecznej. Nie można użyć obu w tym samym wywołaniu funkcji. Obietnica znika z tym samym typem, który jest przekazywany do wywołania zwrotnego.

pause()

chrome.tts.pause()

Wstrzymywanie syntezy mowy, potencjalnie w trakcie wypowiedzi. Połączenie w celu wznowienia lub zatrzymania spowoduje wznowienie wypowiedzi.

resume()

chrome.tts.resume()

Jeśli mówienie zostało wstrzymane, wznawiane jest 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ź

    string,

    Odczytany tekst, zwykły tekst lub pełny, poprawnie sformułowany dokument SSML. Mechanizmy syntezy mowy, które nie obsługują SSML, usuwają tagi i odczytują tekst. Maksymalna długość tekstu to 32 768 znaków.

  • Opcje

    Opcjonalnie TtsOptions

    Opcje mowy.

  • wywołanie zwrotne

    funkcja opcjonalnie

    Parametr callback wygląda tak:

    ()=>void

Zwroty

  • Promise<void>

    Chrome 101 i nowsze wersje

    Obietnice są obsługiwane w platformie Manifest V3 i nowszych, ale wywołania zwrotne są dostępne na potrzeby zgodności wstecznej. Nie można użyć obu w tym samym wywołaniu funkcji. Obietnica znika z tym samym typem, który jest przekazywany do wywołania zwrotnego.

stop()

chrome.tts.stop()

Zatrzymuje bieżącą mowę i opróżnia kolejkę wszelkich oczekujących wypowiedzi. Ponadto, jeśli mowa była wstrzymana, zostanie ona wznowiona dla następnego połączenia.

Wydarzenia

onVoicesChanged

Chrome 124 i nowsze wersje
chrome.tts.onVoicesChanged.addListener(
  callback: function,
)

Wywoływane, gdy zmieni się lista elementów tts.TtsVoice, które mają być zwracane przez getVoices.

Parametry

  • wywołanie zwrotne

    funkcja

    Parametr callback wygląda tak:

    ()=>void