chrome.ttsEngine

Descrizione

Usa l'API chrome.ttsEngine per implementare un motore di sintesi vocale(TTS) utilizzando un'estensione. Se l'estensione si registra utilizzando questa API, riceverà eventi contenenti un'espressione da pronunciare e altri parametri quando qualsiasi estensione o app di Chrome utilizza l'API tts per generare la sintesi vocale. L'estensione può quindi utilizzare qualsiasi tecnologia web disponibile per sintetizzare e riprodurre il parlato, nonché per inviare gli eventi alla funzione di chiamata per segnalare lo stato.

Autorizzazioni

ttsEngine

Concetti e utilizzo

Un'estensione può registrarsi come motore vocale. In questo modo, può intercettare alcune o tutte le chiamate a funzioni come tts.speak() e tts.stop() e forniscono un'implementazione alternativa. Le estensioni possono usare senza costi qualsiasi tecnologia web disponibile per la sintesi vocale, incluso l'audio in streaming da un server, audio HTML5. Un'estensione potrebbe persino fare qualcosa di diverso con le frasi, ad esempio per visualizzare i sottotitoli codificati in una finestra popup o inviarli come messaggi di log un server remoto.

Per implementare un motore di sintesi vocale, un'estensione deve dichiarare il parametro "ttsEngine" autorizzazione e poi dichiarare tutti voci fornite nel file manifest dell'estensione, come segue:

{
  "name": "My TTS Engine",
  "version": "1.0",
  "permissions": ["ttsEngine"],
  "tts_engine": {
    "voices": [
      {
        "voice_name": "Alice",
        "lang": "en-US",
        "event_types": ["start", "marker", "end"]
      },
      {
        "voice_name": "Pat",
        "lang": "en-US",
        "event_types": ["end"]
      }
    ]
  },
  "background": {
    "page": "background.html",
    "persistent": false
  }
}

Un'estensione può specificare un numero qualsiasi di voci.

Il parametro voice_name è obbligatorio. Il nome deve essere sufficientemente descrittivo da identificare il nome della voce e il motore utilizzato. Nell'improbabile eventualità che due estensioni registrino voci con lo stesso nome, un client può specificare l'ID dell'estensione che deve eseguire la sintesi.

Il parametro lang è facoltativo, ma vivamente consigliato. Quasi sempre, una voce può sintetizzare parlate in una sola lingua. Quando un motore supporta più di una lingua, può facilmente registrare una voce separata per ogni lingua. In rare circostanze in cui una sola voce può gestire più di una lingua, è più facile elencare due voci distinte e gestirle utilizzando internamente la stessa logica. Tuttavia, se vuoi creare una voce che gestisca le enunciate in qualsiasi , escludi il parametro lang dal file manifest dell'estensione.

Infine, il parametro event_types è obbligatorio se il motore può inviare eventi per aggiornare il client sull'avanzamento della sintesi vocale. Sono supportati almeno il tipo di evento 'end' per indicare è vivamente consigliato quando si termina la conversazione, altrimenti Chrome non può pianificare le frasi in coda.

Una volta caricata, un'estensione può sostituire l'elenco di voci dichiarate chiamando chrome.ttsEngine.updateVoices. (Tieni presente che i parametri usati nella chiamata programmatica updateVoices si trovano in una custodia a cammello, ad esempio voiceName, a differenza del file manifest che utilizza voice_name.

I possibili tipi di eventi che puoi inviare corrispondono ai tipi di eventi che il metodo speak() riceve:

  • '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.
  • 'error': si è verificato un errore specifico del motore e questa frase non può essere pronunciata. Passa più informazioni in event.errorMessage.

Gli eventi 'interrupted' e 'cancelled' non vengono inviati dal motore vocale. vengono generate automaticamente da Chrome.

I client di sintesi vocale possono recuperare le informazioni vocali dal file manifest dell'estensione chiamando tts.getVoices, supponendo che tu abbia registrato i listener di eventi vocali come descritto di seguito.

Gestire gli eventi vocali

Per generare un parlato su richiesta dei client, l'estensione deve registrare i listener per entrambi onSpeak e onStop, in questo modo:

const speakListener = (utterance, options, sendTtsEvent) => {
  sendTtsEvent({type: 'start', charIndex: 0})

  // (start speaking)

  sendTtsEvent({type: 'end', charIndex: utterance.length})
};

const stopListener = () => {
  // (stop all speech)
};

chrome.ttsEngine.onSpeak.addListener(speakListener);
chrome.ttsEngine.onStop.addListener(stopListener);

La decisione di inviare o meno una determinata richiesta di discorso a un'estensione si basa esclusivamente su se l'estensione supporta i parametri vocali specificati nel file manifest e se è stata registrata listener per onSpeak e onStop. In altre parole, non c'è modo che un'estensione riceva un richiesta vocale e decide dinamicamente se gestirla.

Tipi

AudioBuffer

Chrome 92 e versioni successive .

Parametri contenenti un buffer audio e dati associati.

Proprietà

  • audioBuffer

    ArrayBuffer

    Il buffer audio del motore di sintesi vocale. Deve avere la lunghezza esatta di audioStreamOptions.bufferSize e codificato come mono, su audioStreamOptions.sampleRate e come pcm lineare, in formato float a 32 bit, ossia il tipo Float32Array in JavaScript.

  • charIndex

    numero facoltativo

    L'indice dei caratteri associato a questo buffer audio.

  • isLastBuffer

    booleano facoltativo

    True se questo buffer audio è l'ultimo per il testo pronunciato.

AudioStreamOptions

Chrome 92 e versioni successive .

Contiene il formato dello stream audio che dovrebbe essere prodotto da un motore.

Proprietà

  • bufferSize

    numero

    Il numero di campioni all'interno di un buffer audio.

  • sampleRate

    numero

    La frequenza di campionamento prevista in un buffer audio.

SpeakOptions

Chrome 92 e versioni successive .

Opzioni specificate per il metodo tts.speak().

Proprietà

  • genere

    VoiceGender facoltativo

    Ritirato da Chrome 92

    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 questa 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. Questo valore garantisce che sia compreso tra 0,1 e 10,0 inclusi. Quando una voce non supporta questa gamma completa di tariffe, non restituire un errore. Adatta invece la frequenza all'intervallo supportato dalla voce.

  • voiceName

    stringa facoltativo

    Il nome della voce da utilizzare per la sintesi.

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

VoiceGender

Chrome 54 e versioni successive Ritirato da Chrome 70

Il genere è deprecato e verrà ignorato.

Enum

"maschio"

"femminile"

Metodi

updateVoices()

Chrome 66 e versioni successive .
chrome.ttsEngine.updateVoices(
  voices: TtsVoice[],
)

Chiamata da un motore per aggiornare l'elenco di voci. Questo elenco sostituisce le voci dichiarate nel file manifest di questa estensione.

Parametri

  • voci

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

Eventi

onPause

chrome.ttsEngine.onPause.addListener(
  callback: function,
)

Facoltativo: se un motore supporta l'evento pausa, deve sospendere l'espressione pronunciata in quel momento, se presente, fino a quando non riceve un evento di ripristino o di interruzione. Tieni presente che un evento di interruzione dovrebbe cancellare anche lo stato di pausa.

Parametri

  • callback

    funzione

    Il parametro callback ha il seguente aspetto:

    () => void

onResume

chrome.ttsEngine.onResume.addListener(
  callback: function,
)

(Facoltativo) Se un motore supporta l'evento pausa, deve supportare anche l'evento di ripristino per continuare a pronunciare l'eventuale frase corrente. Tieni presente che un evento di interruzione dovrebbe cancellare anche lo stato di pausa.

Parametri

  • callback

    funzione

    Il parametro callback ha il seguente aspetto:

    () => void

onSpeak

chrome.ttsEngine.onSpeak.addListener(
  callback: function,
)

Richiamato quando l'utente effettua una chiamata a tts.speak() e una delle voci del file manifest di questa estensione è la prima che corrisponde all'oggetto options.

Parametri

  • callback

    funzione

    Il parametro callback ha il seguente aspetto:

    (utterance: string, options: SpeakOptions, sendTtsEvent: function) => void

    • frase

      stringa

    • opzioni
    • sendTtsEvent

      funzione

      Il parametro sendTtsEvent ha il seguente aspetto:

      (event: tts.TtsEvent) => void

      • evento

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

onSpeakWithAudioStream

Chrome 92 e versioni successive .
chrome.ttsEngine.onSpeakWithAudioStream.addListener(
  callback: function,
)

Richiamato quando l'utente effettua una chiamata a tts.speak() e una delle voci del file manifest di questa estensione è la prima che corrisponde all'oggetto options. Si differenzia da ttsEngine.onSpeak per il fatto che Chrome offre servizi di riproduzione audio e gestisce l'invio di eventi TTS.

Parametri

  • callback

    funzione

    Il parametro callback ha il seguente aspetto:

    (utterance: string, options: SpeakOptions, audioStreamOptions: AudioStreamOptions, sendTtsAudio: function, sendError: function) => void

    • frase

      stringa

    • opzioni
    • audioStreamOptions
    • sendTtsAudio

      funzione

      Il parametro sendTtsAudio ha il seguente aspetto:

      (audioBufferParams: AudioBuffer) => void

      • audioBufferParams

        Parametri contenenti un buffer audio e dati associati.

    • sendError

      funzione

      Chrome 94 e versioni successive .

      Il parametro sendError ha il seguente aspetto:

      (errorMessage?: string) => void

      • errorMessage

        stringa facoltativo

        Una stringa che descrive l'errore.

onStop

chrome.ttsEngine.onStop.addListener(
  callback: function,
)

Attivato quando viene effettuata una chiamata a tts.stop e questa estensione potrebbe essere nel mezzo di una conversazione. Se un'estensione riceve una chiamata a onStop e la voce è già stata interrotta, non dovrebbe fare nulla (non generare un errore). Se la voce è in stato di pausa, questo dovrebbe annullare lo stato di pausa.

Parametri

  • callback

    funzione

    Il parametro callback ha il seguente aspetto:

    () => void