Descrizione
Usa l'API chrome.tts
per riprodurre la sintesi vocale (TTS). Vedi anche l'API ttsEngine
correlata, che consente a un'estensione di implementare un motore vocale.
Chrome offre questa funzionalità su Windows (utilizzando SAPI 5), Mac OS X e ChromeOS, utilizzando funzionalità di sintesi vocale fornite dal sistema operativo. Su tutte le piattaforme, l'utente può installare estensioni che si registrano come motori vocali alternativi.
Autorizzazioni
tts
Concetti e utilizzo
Genera parlato
Chiama speak()
dall'estensione per parlare. Ad esempio:
chrome.tts.speak('Hello, world.');
Per interrompere immediatamente il parlato, chiama stop()
:
chrome.tts.stop();
Puoi offrire opzioni che controllano varie proprietà della voce, come velocità, tono e altro ancora. Ad esempio:
chrome.tts.speak('Hello, world.', {'rate': 2.0});
È inoltre opportuno specificare la lingua in modo che un sintetizzatore la supporti (e viene scelto il dialetto regionale, se applicabile).
chrome.tts.speak('Hello, world.', {'lang': 'en-US', 'rate': 2.0});
Per impostazione predefinita, ogni chiamata al numero speak()
interrompe tutti i discorsi in corso e parla immediatamente. A
per determinare se una chiamata interrompe qualcosa, puoi chiamare isSpeaking()
. Inoltre,
puoi utilizzare l'opzione enqueue
per aggiungere questa frase a una coda di frasi che
verrà pronunciato al termine dell'espressione corrente.
chrome.tts.speak('Speak this first.');
chrome.tts.speak(
'Speak this next, when the first sentence is done.', {'enqueue': true});
Una descrizione completa di tutte le opzioni è disponibile in tts.speak()
. Non tutti i discorsi
supporteranno tutte le opzioni.
Per individuare gli errori e assicurarti di chiamare correttamente speak()
, passa una funzione di callback che
non accetta argomenti. Durante la chiamata, controlla runtime.lastError
per vedere se ce ne sono
errori.
chrome.tts.speak(
utterance,
options,
function() {
if (chrome.runtime.lastError) {
console.log('Error: ' + chrome.runtime.lastError.message);
}
}
);
Il callback torna immediatamente, prima che il motore inizi a generare voce. Lo scopo del il callback è quello di avvisarti degli errori di sintassi nell'utilizzo dell'API TTS, non di individuare tutti i possibili errori che potrebbero verificarsi nel processo di sintesi e output vocale. Per individuare questi errori devi utilizzare anche un listener di eventi, descritto nella prossima sezione.
Ascoltare gli eventi
Per avere maggiori informazioni in tempo reale sullo stato della sintesi vocale, passa un listener di eventi a
le opzioni per speak()
, come questa:
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
);
Ogni evento include un tipo di evento, l'indice dei caratteri del parlato corrente rispetto al e, per gli eventi di errore, un messaggio di errore facoltativo. I tipi di evento sono:
'start'
: il motore ha iniziato a pronunciare l'espressione.'word'
: è stato raggiunto il limite di una parola. Usaevent.charIndex
per determinare la voce corrente posizione.'sentence'
: è stato raggiunto il limite di una frase. Usaevent.charIndex
per determinare lo stato attuale posizione del parlato.'marker'
: è stato raggiunto un indicatore SSML. Usaevent.charIndex
per determinare la voce corrente posizione.'end'
: il motore ha terminato di pronunciare l'espressione.'interrupted'
: questa frase è stata interrotta da un'altra chiamata al numerospeak()
ostop()
ed è stata non finire.'cancelled'
: questa frase è stata accodata, ma poi annullata da un'altra chiamata al numerospeak()
ostop()
e non ha mai iniziato a parlare.'error'
: si è verificato un errore specifico del motore e questa frase non può essere pronunciata. Controlloevent.errorMessage
per i dettagli.
Quattro dei tipi di evento ('end'
, 'interrupted'
, 'cancelled'
e 'error'
) sono definitivi. Dopo il giorno
viene ricevuto uno di questi eventi, questa frase non verrà più pronunciata e non ci saranno nuovi eventi da questo
le parole pronunciate.
Alcune voci potrebbero non supportare tutti i tipi di evento, mentre altre potrebbero non inviare alcun evento. Se
non vuoi utilizzare una voce a meno che non invii determinati eventi, passa gli eventi richiesti nella
requiredEventTypes
membro dell'oggetto opzioni oppure usa getVoices()
per scegliere una voce che soddisfi le esigenze
i tuoi requisiti. Entrambi sono descritti di seguito.
Markup SSML
Le espressioni utilizzate in questa API potrebbero includere il markup utilizzando lo Speech Synthesis Markup Language
(SSML). Se utilizzi SSML, il primo argomento per speak()
deve essere un documento SSML completo con
un'intestazione XML e un tag <speak>
di primo livello, non un frammento di documento.
Ad esempio:
chrome.tts.speak(
'<?xml version="1.0"?>' +
'<speak>' +
' The <emphasis>second</emphasis> ' +
' word of this sentence was emphasized.' +
'</speak>'
);
Non tutti i motori vocali supporteranno tutti i tag SSML e alcuni potrebbero non supportare SSML, ma tutti I motori sono tenuti a ignorare gli eventuali SSML che non supportano e a pronunciare comunque il testo sottostante.
Scegli una voce
Per impostazione predefinita, Chrome sceglie la voce più appropriata per ogni frase che vuoi pronunciare, in base alle la lingua. Sulla maggior parte dei sistemi Windows, Mac OS X e ChromeOS, la sintesi vocale fornita dal sistema operativo deve essere in grado di parlare qualsiasi testo in almeno una lingua. Alcuni utenti potrebbero avere è stata implementata una varietà di voci disponibili dal loro sistema operativo e dai motori vocali da altre estensioni di Chrome. In questi casi, è possibile implementare il codice personalizzato per scegliere il o per presentare all'utente un elenco di opzioni.
Per ottenere un elenco di tutte le voci, chiama getVoices()
e passagli una funzione che riceve un array di
TtsVoice
oggetti come argomento:
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);
}
}
);
Tipi
EventType
Enum
"start"
"end"
"parola"
"frase"
"indicatore"
"interrotto"
"annullato"
"errore"
"in pausa"
"riprendi"
TtsEvent
Un evento dal motore della sintesi vocale per comunicare lo stato di un'espressione.
Proprietà
-
charIndex
numero facoltativo
L'indice del carattere corrente nell'espressione. Per gli eventi parola, l'evento viene attivato alla fine di una parola e prima dell'inizio di quella successiva.
charIndex
rappresenta un punto nel testo all'inizio della parola successiva da pronunciare. -
errorMessage
stringa facoltativo
La descrizione dell'errore, se il tipo di evento è
error
. -
lunghezza
numero facoltativo
Chrome 74 e versioni successive .La lunghezza della parte successiva della frase. Ad esempio, in un evento
word
, questa è la lunghezza della parola che verrà pronunciata successivamente. Verrà impostato su -1 se non è impostato dal motore vocale. -
tipo
Il tipo può essere
start
subito dopo l'inizio della conversazione,word
quando viene raggiunto il limite di una parola,sentence
quando viene raggiunto il limite di una frase,marker
quando viene raggiunto un elemento contrassegno SSML,end
quando viene raggiunta la fine della frase,interrupted
quando l'espressione viene interrotta o interrotta prima di raggiungere la fine,cancelled
quando viene rimossa dalla coda prima di essere sintetizzata oerror
quando si verifica un altro errore. Quando metti in pausa la voce, viene attivato un eventopause
se una determinata frase viene messa in pausa nella parte centrale eresume
se una frase riprende. Tieni presente che gli eventi di messa in pausa e ripresa potrebbero non attivarsi se la voce viene messa in pausa tra una frase e l'altra.
TtsOptions
Le opzioni vocali per il motore di sintesi vocale.
Proprietà
-
desiredEventTypes
string[] facoltativo
I tipi di eventi della sintesi vocale che ti interessa ascoltare. Se non è presente, potrebbero essere inviati tutti i tipi di evento.
-
coda
booleano facoltativo
Se true, mette in coda questa frase se la sintesi vocale è già in corso. Se false (impostazione predefinita), interrompe qualsiasi voce corrente e fa svuotare la coda vocale prima di pronunciare questa nuova frase.
-
extensionId
stringa facoltativo
L'ID estensione del motore vocale da utilizzare, se noto.
-
genere
VoiceGender facoltativo
Ritirato da Chrome 77Il genere è deprecato e verrà ignorato.
Genere della voce per la sintesi vocale.
-
lang
stringa facoltativo
La lingua da utilizzare per la sintesi, nel formato language-region. Esempi: "en", "en-US", "en-GB", "zh-CN".
-
diamante
numero facoltativo
Presentazione del campo tra 0 e 2 inclusi, dove 0 corrisponde al valore più basso e 2 al valore più alto. 1,0 corrisponde al tono predefinito di una voce.
-
velocità di reazione
numero facoltativo
Velocità del parlato rispetto a quella predefinita per questa voce. 1,0 è la velocità predefinita, solitamente intorno alle 180-220 parole al minuto. 2,0 è il doppio più veloce e 0,5 è la metà più veloce. I valori inferiori a 0,1 o superiori a 10,0 sono severamente non consentiti, ma molte voci limiteranno ulteriormente la velocità minima e massima, ad esempio una voce particolare potrebbe non parlare più di 3 volte il normale anche se specifichi un valore superiore a 3,0.
-
requiredEventTypes
string[] facoltativo
I tipi di evento della sintesi vocale che la voce deve supportare.
-
voiceName
stringa facoltativo
Il nome della voce da utilizzare per la sintesi. Se vuoto, viene utilizzata qualsiasi voce disponibile.
-
volume
numero facoltativo
Volume del parlato compreso tra 0 e 1 inclusi, dove 0 corrisponde al minimo e 1 al massimo e il valore predefinito è 1, 0.
-
onEvent
void facoltativo
Questa funzione viene chiamata con gli eventi che si verificano nel processo di enunciato.
La funzione
onEvent
ha questo aspetto:(event: TtsEvent) => {...}
-
evento
L'evento di aggiornamento del motore di sintesi vocale che indica lo stato di questa frase.
-
TtsVoice
Una descrizione di una voce disponibile per la sintesi vocale.
Proprietà
-
eventTypes
EventType[] facoltativo
Tutti i tipi di eventi di callback che questa voce è in grado di inviare.
-
extensionId
stringa facoltativo
L'ID dell'estensione che fornisce questa voce.
-
genere
VoiceGender facoltativo
Ritirato da Chrome 70Il genere è deprecato e verrà ignorato.
Il genere di questa voce.
-
lang
stringa facoltativo
La lingua supportata da questa voce, nel formato language-region. Esempi: "en", "en-US", "en-GB", "zh-CN".
-
telecomando
booleano facoltativo
Se true, il motore di sintesi è una risorsa di rete remota. Potrebbe trattarsi di una latenza più elevata e dei costi della larghezza di banda.
-
voiceName
stringa facoltativo
Il nome della voce.
VoiceGender
Il genere è obsoleto e viene ignorato.
Enum
"maschio"
"femminile"
Metodi
getVoices()
chrome.tts.getVoices(
callback?: function,
)
Ottiene un array di tutte le voci disponibili.
Parametri
-
callback
funzione facoltativa
Il parametro
callback
ha il seguente aspetto:(voices: TtsVoice[]) => void
-
voci
TtsVoice[]
Array di
tts.TtsVoice
oggetti che rappresentano le voci disponibili per la sintesi vocale.
-
Resi
-
Promise<TtsVoice[]>
Chrome 101 e versioni successive .Le promesse sono supportate in Manifest V3 e versioni successive, ma sono disponibili callback per la compatibilità con le versioni precedenti. Non puoi utilizzare entrambi nella stessa chiamata di funzione. La si risolve con lo stesso tipo passato al callback.
isSpeaking()
chrome.tts.isSpeaking(
callback?: function,
)
Controlla se il motore sta parlando. Su Mac OS X, il risultato è vero ogni volta che il motore vocale del sistema parla, anche se la voce non è stata avviata da Chrome.
Parametri
-
callback
funzione facoltativa
Il parametro
callback
ha il seguente aspetto:(speaking: boolean) => void
-
parlare
booleano
Vero se parli, falso negli altri casi.
-
Resi
-
Promise<boolean>
Chrome 101 e versioni successive .Le promesse sono supportate in Manifest V3 e versioni successive, ma sono disponibili callback per la compatibilità con le versioni precedenti. Non puoi utilizzare entrambi nella stessa chiamata di funzione. La si risolve con lo stesso tipo passato al callback.
pause()
chrome.tts.pause()
Mette in pausa la sintesi vocale, potenzialmente durante un enunciato. Se chiami per riprendere o interrompere la conversazione, la voce verrà riattivata.
resume()
chrome.tts.resume()
Se la voce è stata messa in pausa, riprende a parlare dal punto in cui era stata interrotta.
speak()
chrome.tts.speak(
utterance: string,
options?: TtsOptions,
callback?: function,
)
Pronuncia il testo utilizzando un motore di sintesi vocale.
Parametri
-
frase
stringa
Il testo da pronunciare, come testo normale o un documento SSML completo e ben formato. I motori vocali che non supportano SSML rimuovono i tag e pronunceranno il testo. La lunghezza massima del testo è di 32.768 caratteri.
-
opzioni
TtsOptions facoltativo
Le opzioni vocali.
-
callback
funzione facoltativa
Il parametro
callback
ha il seguente aspetto:() => void
Resi
-
Promesso<void>
Chrome 101 e versioni successive .Le promesse sono supportate in Manifest V3 e versioni successive, ma sono disponibili callback per la compatibilità con le versioni precedenti. Non puoi utilizzare entrambi nella stessa chiamata di funzione. La si risolve con lo stesso tipo passato al callback.
stop()
chrome.tts.stop()
Arresta tutti i comandi vocali e scarica la coda di tutte le frasi in sospeso. Inoltre, se la voce è stata messa in pausa, verrà riattivata alla chiamata successiva.
Eventi
onVoicesChanged
chrome.tts.onVoicesChanged.addListener(
callback: function,
)
Richiamato se l'elenco di tts.TtsVoice
che verrebbe restituito da getVoices è cambiato.
Parametri
-
callback
funzione
Il parametro
callback
ha il seguente aspetto:() => void