Opis
Użyj interfejsu chrome.tts
API, aby odtwarzać zsyntetyzowany tekst zamieniony na mowę (TTS). Zobacz też powiązany interfejs ttsEngine
API, który umożliwia rozszerzeniu wdrożenie silnika mowy.
Uprawnienia
tts
Przegląd
Chrome zapewnia natywną obsługę mowy w systemach Windows (za pomocą SAPI 5), macOS i ChromeOS, korzystając z funkcji syntezy mowy udostępnianych przez system operacyjny. Na wszystkich platformach użytkownik może instalować rozszerzenia, które rejestrują się jako alternatywne silniki mowy.
Generowanie mowy
Zadzwoń pod numer speak()
z rozszerzenia, aby porozmawiać. Na przykład:
chrome.tts.speak('Hello, world.');
Aby natychmiast zatrzymać odczytywanie, zadzwoń pod numer stop()
:
chrome.tts.stop();
Możesz podać opcje, które kontrolują różne właściwości mowy, takie jak szybkość, wysokość głosu i inne. Na przykład:
chrome.tts.speak('Hello, world.', {'rate': 2.0});
Warto też określić język, aby wybrać syntezator obsługujący ten język (i dialekt regionalny, jeśli ma to zastosowanie).
chrome.tts.speak('Hello, world.', {'lang': 'en-US', 'rate': 2.0});
Domyślnie każde wywołanie funkcji speak()
przerywa bieżące odczytywanie i natychmiast rozpoczyna odczytywanie. Aby sprawdzić, czy połączenie nie będzie przeszkadzać, możesz zadzwonić pod numer isSpeaking()
. Możesz też użyć opcji enqueue
, aby dodać tę wypowiedź do kolejki wypowiedzi, które zostaną odtworzone 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 tts.speak
poniżej. Nie wszystkie silniki mowy obsługują wszystkie opcje.
Aby wykrywać błędy i mieć pewność, że wywołujesz funkcję speak()
prawidłowo, przekaż funkcję wywołania zwrotnego, która nie przyjmuje argumentów. W funkcji zwrotnej sprawdź, czy nie wystąpiły żadne błędy runtime.lastError
.
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 mechanizm zacznie generować mowę. Funkcja zwrotna ma na celu powiadamianie o błędach składni w użyciu interfejsu TTS API, a nie wykrywanie wszystkich możliwych błędów, które mogą wystąpić w procesie syntezy i generowania mowy. Aby wykrywać również te błędy, musisz użyć detektora zdarzeń opisanego poniżej.
Nasłuchiwanie zdarzeń
Aby uzyskać więcej informacji w czasie rzeczywistym o stanie syntezowanej mowy, przekaż detektor zdarzeń w opcjach do speak()
, tak jak w tym przykładzie:
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 znaku bieżącej mowy względem wypowiedzi oraz w przypadku zdarzeń związanych z błędami opcjonalny komunikat o błędzie. Typy zdarzeń:
'start'
: silnik zaczął wypowiadać zdanie.'word'
: osiągnięto granicę słowa. Użyjevent.charIndex
, aby określić bieżącą pozycję mowy.'sentence'
: osiągnięto koniec zdania. Użyjevent.charIndex
, aby określić bieżącą pozycję mowy.'marker'
: osiągnięto znacznik SSML. Użyjevent.charIndex
, aby określić bieżącą pozycję mowy.'end'
: silnik zakończył odczytywanie wypowiedzi.'interrupted'
: ta wypowiedź została przerwana przez inne wywołaniespeak()
lubstop()
i nie została dokończona.'cancelled'
: wypowiedź została umieszczona w kolejce, ale potem anulowana przez inne wywołaniespeak()
lubstop()
i nigdy nie została odtworzona.'error'
: wystąpił błąd specyficzny dla wyszukiwarki i nie można wypowiedzieć tego wyrażenia. Więcej informacji znajdziesz wevent.errorMessage
.
4 rodzaje zdarzeń – 'end'
, 'interrupted'
, 'cancelled'
i 'error'
– są ostateczne. Po otrzymaniu jednego z tych zdarzeń wypowiedź nie będzie już odtwarzana i nie będą odbierane żadne nowe zdarzenia z tej wypowiedzi.
Niektóre głosy mogą nie obsługiwać wszystkich typów zdarzeń, a niektóre mogą nie wysyłać żadnych zdarzeń. Jeśli nie chcesz używać głosu, chyba że wysyła on określone zdarzenia, przekaż wymagane zdarzenia w elemencie requiredEventTypes
obiektu opcji lub użyj getVoices()
, aby wybrać głos spełniający Twoje wymagania. Oba te przypadki opisano poniżej.
Znaczniki SSML
Wypowiedzi używane w tym interfejsie API mogą zawierać znaczniki w języku znaczników syntezy mowy (SSML). Jeśli używasz SSML, pierwszym argumentem funkcji speak()
powinien być kompletny dokument SSML z nagłówkiem XML i tagiem najwyższego poziomu <speak>
, 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 silniki muszą ignorować nieobsługiwane tagi SSML i nadal odczytywać tekst bazowy.
Wybór głosu
Domyślnie Chrome wybiera najbardziej odpowiedni głos dla każdego wypowiadanego tekstu na podstawie języka. W większości systemów Windows, Mac OS X i ChromeOS synteza mowy zapewniana przez system operacyjny powinna umożliwiać odczytywanie dowolnego tekstu w co najmniej jednym języku. Niektórzy użytkownicy mogą mieć dostęp do różnych głosów z systemu operacyjnego i silników mowy zaimplementowanych przez inne rozszerzenia Chrome. W takich przypadkach możesz wdrożyć kod niestandardowy, aby wybrać odpowiedni głos lub wyświetlić użytkownikowi listę opcji.
Aby uzyskać listę wszystkich głosów, wywołaj funkcję getVoices()
i przekaż jej funkcję, która jako argument otrzymuje 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
Typ wyliczeniowy
„start”
„end”
„word”
„sentence”
„marker”
„interrupted”
„cancelled”
„error”
„pause”
„resume”
TtsEvent
Zdarzenie z silnika TTS, które informuje o stanie wypowiedzi.
Właściwości
-
charIndex
number opcjonalny
Indeks bieżącego znaku w wypowiedzi. W przypadku zdarzeń dotyczących słów zdarzenie jest wywoływane na końcu jednego słowa i przed rozpoczęciem następnego. Znak
charIndex
oznacza punkt w tekście na początku następnego słowa, które ma zostać wypowiedziane. -
errorMessage
string opcjonalny
Opis błędu, jeśli typ zdarzenia to
error
. -
długość
number opcjonalny
Chrome 74 lub nowszaDł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 nie zostanie ustawiony przez silnik mowy, będzie miał wartość -1. -
typ
Typ może być
start
, gdy tylko rozpocznie się mowa,word
, gdy zostanie osiągnięta granica słowa,sentence
, gdy zostanie osiągnięta granica zdania,marker
, gdy zostanie osiągnięty element znacznika SSML,end
, gdy zostanie osiągnięty koniec wypowiedzi,interrupted
, gdy wypowiedź zostanie zatrzymana lub przerwana przed osiągnięciem końca,cancelled
, gdy zostanie usunięta z kolejki przed syntezą, luberror
, gdy wystąpi jakikolwiek inny błąd. Podczas wstrzymywania mowy wywoływane jest zdarzeniepause
, jeśli dana wypowiedź zostanie wstrzymana w połowie, oraz zdarzenieresume
, jeśli wypowiedź zostanie wznowiona. Pamiętaj, że zdarzenia wstrzymania i wznowienia mogą nie być wywoływane, jeśli mowa zostanie wstrzymana między wypowiedziami.
TtsOptions
Opcje mowy dla mechanizmu zamiany tekstu na mowę.
Właściwości
-
desiredEventTypes
string[] opcjonalne
Typy zdarzeń TTS, których chcesz słuchać. Jeśli go brakuje, można wysyłać wszystkie typy zdarzeń.
-
dodawać do kolejki,
wartość logiczna opcjonalna
Jeśli wartość to prawda, wypowiedź zostanie dodana do kolejki, jeśli synteza mowy jest już w toku. Jeśli wartość to „false” (domyślnie), przerywa bieżącą mowę i czyści kolejkę mowy przed wypowiedzeniem nowego zdania.
-
extensionId
string opcjonalny
Identyfikator rozszerzenia silnika mowy, który ma być używany, jeśli jest znany.
-
płeć
VoiceGender opcjonalny
Wycofane w Chrome 77Pole „Płeć” zostało wycofane i będzie ignorowane.
Płeć głosu syntezatora mowy.
-
lang
string 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 włącznie, gdzie 0 to najniższa, a 2 – 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, co zwykle oznacza około 180–220 słów na minutę. 2,0 to dwukrotnie większa szybkość, a 0,5 to dwukrotnie mniejsza szybkość. Wartości poniżej 0,1 lub powyżej 10,0 są niedozwolone, ale wiele głosów będzie dodatkowo ograniczać minimalne i maksymalne tempo. Na przykład dany głos może nie mówić szybciej niż 3 razy szybciej niż normalnie, nawet jeśli podasz wartość większą niż 3,0.
-
requiredEventTypes
string[] opcjonalne
Typy zdarzeń TTS, które musi obsługiwać głos.
-
voiceName
string opcjonalny
Nazwa głosu używanego na potrzeby syntezy. Jeśli to pole jest puste, używany jest dowolny dostępny głos.
-
głośność
number opcjonalny
Głośność mowy w zakresie od 0 do 1 włącznie, gdzie 0 to najniższa głośność, a 1 to najwyższa głośność.Wartość domyślna to 1,0.
-
onEvent
void optional
Ta funkcja jest wywoływana w przypadku zdarzeń, które występują podczas wypowiadania komunikatu.
Funkcja
onEvent
wygląda tak:(event: TtsEvent) => {...}
-
event
Wydarzenie aktualizacji z silnika 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
string opcjonalny
Identyfikator rozszerzenia, które udostępnia ten głos.
-
płeć
VoiceGender opcjonalny
Wycofane w Chrome 70Pole „Płeć” zostało wycofane i będzie ignorowane.
Płeć tego głosu.
-
lang
string opcjonalny
Język obsługiwany przez ten głos 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 zdalnym zasobem sieciowym. Może to powodować większe opóźnienia i generować koszty związane z przepustowością.
-
voiceName
string opcjonalny
Nazwa głosu.
VoiceGender
Atrybut płeć został wycofany i jest ignorowany.
Typ wyliczeniowy
„male”
„female”
Metody
getVoices()
chrome.tts.getVoices(
callback?: function,
): Promise<TtsVoice[]>
Pobiera tablicę wszystkich dostępnych głosów.
Parametry
-
callback
funkcja opcjonalna
Parametr
callback
wygląda tak:(voices: TtsVoice[]) => void
-
Głosy
TtsVoice[]
Tablica obiektów
tts.TtsVoice
reprezentujących dostępne głosy do syntezy mowy.
-
Zwroty
-
Promise<TtsVoice[]>
Chrome 101 lub nowszaObietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Inne platformy muszą używać wywołań zwrotnych.
isSpeaking()
chrome.tts.isSpeaking(
callback?: function,
): Promise<boolean>
Sprawdza, czy silnik aktualnie mówi. W systemie Mac OS X wynik jest prawdziwy, gdy silnik mowy systemu odtwarza mowę, nawet jeśli nie została ona zainicjowana przez Chrome.
Parametry
-
callback
funkcja opcjonalna
Parametr
callback
wygląda tak:(speaking: boolean) => void
-
mówienia,
Wartość logiczna
Wartość „prawda”, jeśli użytkownik mówi. W przeciwnym razie „fałsz”.
-
Zwroty
-
Promise<boolean>
Chrome 101 lub nowszaObietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Inne platformy muszą używać wywołań zwrotnych.
pause()
chrome.tts.pause(): void
Wstrzymuje syntezę mowy, potencjalnie w trakcie wypowiedzi. Połączenie w celu wznowienia lub zatrzymania spowoduje wznowienie wypowiedzi.
resume()
chrome.tts.resume(): void
Jeśli mowa została wstrzymana, wznowi mówienie od miejsca, w którym została przerwana.
speak()
chrome.tts.speak(
utterance: string,
options?: TtsOptions,
callback?: function,
): Promise<void>
odczytuje tekst za pomocą mechanizmu zamiany tekstu na mowę;
Parametry
-
wypowiedź
ciąg znaków
Tekst do odczytania, zwykły tekst lub kompletny, prawidłowo sformułowany dokument SSML. Mechanizmy mowy, które nie obsługują SSML, usuną tagi i odczytają tekst. Maksymalna długość tekstu to 32 768 znaków.
-
Opcje
TtsOptions opcjonalne
Opcje mowy.
-
callback
funkcja opcjonalna
Parametr
callback
wygląda tak:() => void
Zwroty
-
Promise<void>
Chrome 101 lub nowszaObietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Inne platformy muszą używać wywołań zwrotnych.
stop()
chrome.tts.stop(): void
Zatrzymuje odczytywanie i czyści kolejkę oczekujących wypowiedzi. Jeśli mowa została wstrzymana, zostanie wznowiona przy następnym wywołaniu funkcji mówienia.
Wydarzenia
onVoicesChanged
chrome.tts.onVoicesChanged.addListener(
callback: function,
)
Wywoływana, gdy zmieni się lista obiektów tts.TtsVoice
, które zostaną zwrócone przez getVoices.
Parametry
-
callback
funkcja
Parametr
callback
wygląda tak:() => void