chrome.tts

Descrizione

Utilizza l'API chrome.tts per riprodurre la sintesi vocale (TTS) del testo. Vedi anche l'API ttsEngine correlata, che consente a un'estensione di implementare un motore di sintesi vocale.

Chrome fornisce questa funzionalità su Windows (utilizzando SAPI 5), Mac OS X e ChromeOS, utilizzando le funzionalità di sintesi vocale fornite dal sistema operativo. Su tutte le piattaforme, l'utente può installare estensioni che si registrano come motori di sintesi vocale alternativi.

Autorizzazioni

tts

Concetti e utilizzo

Genera voce

Chiama speak() dalla tua estensione per parlare. Ad esempio:

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

Per interrompere immediatamente la lettura vocale, chiama il numero stop():

chrome.tts.stop(); 

Puoi fornire opzioni che controllano varie proprietà del discorso, come la velocità, il tono e altro ancora. Ad esempio:

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

È anche consigliabile specificare la lingua in modo che venga scelto un sintetizzatore che la supporti (e il dialetto regionale, se applicabile).

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

Per impostazione predefinita, ogni chiamata a speak() interrompe qualsiasi discorso in corso e parla immediatamente. Per determinare se una chiamata potrebbe interrompere qualcosa, puoi chiamare il numero isSpeaking(). Inoltre, puoi utilizzare l'opzione enqueue per aggiungere questa frase a una coda di frasi che verranno pronunciate al termine della frase attuale.

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 motori di sintesi vocale supportano tutte le opzioni.

Per rilevare gli errori e assicurarti di chiamare speak() correttamente, passa una funzione di callback che non accetta argomenti. All'interno del callback, controlla runtime.lastError per vedere se si sono verificati errori.

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

La richiamata viene restituita immediatamente, prima che il motore abbia iniziato a generare la sintesi vocale. Lo scopo del callback è avvisarti degli errori di sintassi nell'utilizzo dell'API TTS, non di rilevare tutti i possibili errori che potrebbero verificarsi durante il processo di sintesi e output del parlato. Per rilevare anche questi errori, devi utilizzare un listener di eventi, descritto nella sezione successiva.

Ascolta gli eventi

Per ottenere informazioni in tempo reale sullo stato della sintesi vocale, passa un listener di eventi nelle opzioni di speak(), come segue:

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 del carattere del discorso corrente rispetto all'enunciato e, per gli eventi di errore, un messaggio di errore facoltativo. I tipi di eventi sono:

  • 'start': Il motore ha iniziato a pronunciare l'espressione.
  • 'word': è stato raggiunto un limite di parole. Utilizza event.charIndex per determinare la posizione attuale del discorso.
  • 'sentence': è stato raggiunto il limite di una frase. Utilizza event.charIndex per determinare la posizione attuale del discorso.
  • 'marker': è stato raggiunto un marcatore SSML. Utilizza event.charIndex per determinare la posizione attuale del discorso.
  • 'end': Il motore ha terminato di pronunciare l'espressione.
  • 'interrupted': Questa frase è stata interrotta da un'altra chiamata a speak() o stop() e non è stata completata.
  • 'cancelled': questa espressione è stata messa in coda, ma poi annullata da un'altra chiamata a speak() o stop() e non è mai stata pronunciata.
  • 'error': si è verificato un errore specifico del motore e questa frase non può essere pronunciata. Per maggiori dettagli, consulta event.errorMessage.

Quattro dei tipi di eventi, 'end', 'interrupted', 'cancelled' e 'error', sono finali. Dopo la ricezione di uno di questi eventi, questa frase non verrà più pronunciata e non verranno ricevuti nuovi eventi da questa frase.

Alcune voci potrebbero non supportare tutti i tipi di eventi e alcune potrebbero non inviare alcun evento. Se non vuoi utilizzare una voce a meno che non invii determinati eventi, passa gli eventi che ti servono nel membro requiredEventTypes dell'oggetto delle opzioni o utilizza getVoices() per scegliere una voce che soddisfi i tuoi requisiti. Entrambi sono descritti di seguito.

Markup SSML

Le espressioni utilizzate in questa API possono includere markup che utilizza il linguaggio SSML (Speech Synthesis Markup Language). Se utilizzi SSML, il primo argomento di 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 di sintesi vocale supportano tutti i tag SSML e alcuni potrebbero non supportare affatto SSML, ma tutti i motori sono tenuti a ignorare qualsiasi 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 espressione che vuoi pronunciare, in base alla lingua. Nella maggior parte dei sistemi Windows, Mac OS X e ChromeOS, la sintesi vocale fornita dal sistema operativo dovrebbe essere in grado di leggere qualsiasi testo in almeno una lingua. Alcuni utenti potrebbero avere a disposizione una varietà di voci, dal sistema operativo e dai motori di sintesi vocale implementati da altre estensioni di Chrome. In questi casi, puoi implementare un codice personalizzato per scegliere la voce appropriata o per presentare all'utente un elenco di scelte.

Per ottenere un elenco di tutte le voci, chiama getVoices() e passa una funzione che riceve un array di oggetti TtsVoice 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

Chrome 54 o versioni successive

Enum

"start"

"end"

"parola"

"sentence"

"marker"

"interrupted"

"annullato"

"error"

"pause"

"resume"

TtsEvent

Un evento del motore TTS per comunicare lo stato di un'espressione.

Proprietà

  • charIndex

    number (facoltativo)

    L'indice del carattere corrente nell'enunciato. Per gli eventi di parole, l'evento viene attivato alla fine di una parola e prima dell'inizio della successiva. Il carattere charIndex rappresenta un punto nel testo all'inizio della parola successiva da pronunciare.

  • errorMessage

    stringa facoltativa

    La descrizione dell'errore, se il tipo di evento è error.

  • lunghezza

    number (facoltativo)

    Chrome 74+

    La lunghezza della parte successiva dell'espressione. Ad esempio, in un evento word, questa è la lunghezza della parola che verrà pronunciata successivamente. Se non viene impostato dal motore di sintesi vocale, il valore sarà -1.

  • tipo

    Il tipo può essere start non appena inizia la sintesi vocale, word quando viene raggiunto il limite di una parola, sentence quando viene raggiunto il limite di una frase, marker quando viene raggiunto un elemento di marcatura SSML, end quando viene raggiunta la fine dell'enunciato, interrupted quando l'enunciato viene interrotto prima di raggiungere la fine, cancelled quando viene rimosso dalla coda prima di essere sintetizzato o error quando si verifica un altro errore. Quando la sintesi vocale viene messa in pausa, viene attivato un evento pause se una determinata espressione viene messa in pausa a metà e resume se la sintesi vocale viene ripresa. Tieni presente che gli eventi di pausa e ripresa potrebbero non essere attivati se il parlato viene messo in pausa tra un'espressione e l'altra.

TtsOptions

Chrome 77+

Le opzioni vocali per il motore di sintesi vocale.

Proprietà

  • desiredEventTypes

    string[] facoltativo

    I tipi di eventi TTS che ti interessano. Se manca, potrebbero essere inviati tutti i tipi di eventi.

  • enqueue

    booleano facoltativo

    Se è true, mette in coda questa espressione se la sintesi vocale è già in corso. Se è false (impostazione predefinita), interrompe qualsiasi discorso in corso e svuota la coda di sintesi vocale prima di pronunciare questa nuova frase.

  • extensionId

    stringa facoltativa

    L'ID estensione del motore di sintesi vocale da utilizzare, se noto.

  • genere

    VoiceGender facoltativo

    Ritirato a partire da Chrome 77

    Il genere è deprecato e verrà ignorato.

    Genere della voce per la sintesi vocale.

  • lang

    stringa facoltativa

    La lingua da utilizzare per la sintesi, nel formato lingua-regione. Esempi: "en", "en-US", "en-GB", "zh-CN".

  • diamante

    number (facoltativo)

    Tono della voce tra 0 e 2 inclusi, dove 0 è il più basso e 2 il più alto. 1.0 corrisponde all'intonazione predefinita di una voce.

  • velocità di reazione

    number (facoltativo)

    Velocità del parlato rispetto a quella predefinita per questa voce. 1.0 è la velocità predefinita, normalmente compresa tra 180 e 220 parole al minuto. 2.0 è due volte più veloce, mentre 0.5 è la metà della velocità. I valori inferiori a 0,1 o superiori a 10,0 non sono consentiti, ma molte voci limitano ulteriormente le velocità minima e massima. Ad esempio, una voce particolare potrebbe non parlare più velocemente di tre volte la velocità normale anche se specifichi un valore superiore a 3,0.

  • requiredEventTypes

    string[] facoltativo

    I tipi di eventi TTS che la voce deve supportare.

  • voiceName

    stringa facoltativa

    Il nome della voce da utilizzare per la sintesi. Se il campo è vuoto, viene utilizzata una voce disponibile.

  • volume

    number (facoltativo)

    Volume della voce compreso tra 0 e 1 inclusi, dove 0 è il valore più basso e 1 il valore più alto, con un valore predefinito di 1.0.

  • onEvent

    void optional

    Questa funzione viene chiamata con gli eventi che si verificano durante il processo di pronuncia dell'espressione.

    La funzione onEvent ha questo aspetto:

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

    • evento

      L'evento di aggiornamento del motore di sintesi vocale che indica lo stato di questa espressione.

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 facoltativa

    L'ID dell'estensione che fornisce questa voce.

  • genere

    VoiceGender facoltativo

    Ritirato a partire da Chrome 70

    Il genere è deprecato e verrà ignorato.

    Il genere di questa voce.

  • lang

    stringa facoltativa

    La lingua supportata da questa voce, nel formato lingua-regione. Esempi: "en", "en-US", "en-GB", "zh-CN".

  • telecomando

    booleano facoltativo

    Se il valore è true, il motore di sintesi è una risorsa di rete remota. Potrebbe esserci una latenza maggiore e potrebbero essere addebitati costi per la larghezza di banda.

  • voiceName

    stringa facoltativa

    Il nome della voce.

VoiceGender

Chrome 54+ Ritirato a partire da Chrome 70

Il genere è deprecato e viene ignorato.

Enum

"male"

"female"

Metodi

getVoices()

chrome.tts.getVoices(): Promise<TtsVoice[]>

Restituisce un array di tutte le voci disponibili.

Resi

isSpeaking()

chrome.tts.isSpeaking(): Promise<boolean>

Controlla se il motore sta parlando. Su Mac OS X, il risultato è true ogni volta che il motore di sintesi vocale del sistema è attivo, anche se la sintesi vocale non è stata avviata da Chrome.

Resi

  • Promise<boolean>

    Chrome 101+

pause()

chrome.tts.pause(): void

Mette in pausa la sintesi vocale, potenzialmente a metà di un'espressione. Un comando per riprendere o interrompere la funzione di lettura vocale la riattiverà.

resume()

chrome.tts.resume(): void

Se la sintesi vocale è stata messa in pausa, riprende a parlare da dove era stata interrotta.

speak()

chrome.tts.speak(
  utterance: string,
  options?: TtsOptions,
)
: Promise<void>

Legge il testo utilizzando un motore di sintesi vocale.

Parametri

  • utterance

    stringa

    Il testo da pronunciare, in formato normale o come documento SSML completo e ben formato. I motori di sintesi vocale che non supportano SSML rimuoveranno i tag e leggeranno il testo. La lunghezza massima del testo è di 32.768 caratteri.

  • opzioni

    TtsOptions facoltativo

    Le opzioni di sintesi vocale.

Resi

  • Promise<void>

    Chrome 101+

stop()

chrome.tts.stop(): void

Interrompe qualsiasi lettura corrente e svuota la coda di eventuali espressioni in attesa. Inoltre, se la sintesi vocale era in pausa, verrà riattivata per la successiva chiamata.

Eventi

onVoicesChanged

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

Chiamato quando l'elenco di tts.TtsVoice che verrebbero restituite da getVoices è cambiato.

Parametri

  • callback

    funzione

    Il parametro callback ha il seguente aspetto:

    () => void