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.
Uprawnienia
tts
Omówienie
Chrome zapewnia natywną obsługę mowy w systemach Windows (z użyciem interfejsu 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.
Generuję 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 w tts.speak
poniżej. 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ć detektora zdarzeń opisanego poniżej.
Nasłuchiwanie zdarzeń
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żyjevent.charIndex
pozycji.'sentence'
: osiągnięto granicę zdań. Użyj funkcjievent.charIndex
, aby określić bieżącą pozycji mowy.'marker'
: osiągnięto znacznik SSML. Aby określić bieżącą mowę, użyjevent.charIndex
pozycji.'end'
: wyszukiwarka zakończyła wypowiedź.'interrupted'
: ta wypowiedź została przerwana przez inne połączenie z numeremspeak()
lubstop()
i nie jeszcze nie skończą.'cancelled'
: ta wypowiedź została dodana do kolejki, ale została anulowana przez inne połączenie z użytkownikiemspeak()
lubstop()
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, chyba że wysyła określone zdarzenia, nie chce używać
requiredEventTypes
należy do obiektu opcji lub użyj polecenia getVoices()
, aby wybrać głos, który spełnia
swoje wymagania. Poniżej znajdziesz informacje o obu przypadkach.
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.
Wybór głosu
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
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ą, luberror
, gdy wystąpi inny błąd. Gdy wstrzymasz mowę, zdarzeniepause
jest wywoływane, jeśli konkretna wypowiedź zostanie wstrzymana w środku, orazresume
, 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
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 77Pł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 70Pł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
Płeć została wycofana i jest ignorowana.
Typ wyliczeniowy
"male"
"female"
Metody
getVoices()
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
TtsVoice[]
Tablica obiektów
tts.TtsVoice
reprezentujących dostępne głosy do syntezy mowy.
-
Zwroty
-
Promise<TtsVoice[]>
Chrome 101 lub nowszy .Obietnice są obsługiwane tylko na platformie Manifest V3 i nowszych, inne platformy muszą używać wywołań zwrotnych.
isSpeaking()
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<boolean>
Chrome 101 i nowsze wersje .Obietnice są obsługiwane tylko na platformie Manifest V3 i nowszych, inne platformy muszą używać wywołań zwrotnych.
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()
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 tylko na platformie Manifest V3 i nowszych, inne platformy muszą używać wywołań zwrotnych.
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.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