chrome.tts

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. Usa event.charIndex per determinare la voce corrente posizione.
  • 'sentence': è stato raggiunto il limite di una frase. Usa event.charIndex per determinare lo stato attuale posizione del parlato.
  • 'marker': è stato raggiunto un indicatore SSML. Usa event.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 numero speak() o stop() ed è stata non finire.
  • 'cancelled': questa frase è stata accodata, ma poi annullata da un'altra chiamata al numero speak() o stop() e non ha mai iniziato a parlare.
  • 'error': si è verificato un errore specifico del motore e questa frase non può essere pronunciata. Controllo event.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

Chrome 54 e versioni successive .

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 o error quando si verifica un altro errore. Quando metti in pausa la voce, viene attivato un evento pause se una determinata frase viene messa in pausa nella parte centrale e resume 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

Chrome 77 e versioni successive .

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 77

    Il 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 70

    Il 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

Chrome 54 e versioni successive Ritirato da Chrome 70

Il genere è obsoleto e viene ignorato.

Enum

"maschio"

"femminile"

Metodi

getVoices()

Promesso .
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

      Array di tts.TtsVoice oggetti che rappresentano le voci disponibili per la sintesi vocale.

Resi

  • Promise&lt;TtsVoice[]&gt;

    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()

Promesso .
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&lt;boolean&gt;

    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()

Promesso .
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 124 e versioni successive .
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