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 Chrome utilizza l'API tts per generare voce. L'estensione può quindi utilizzare qualsiasi tecnologia web disponibile per sintetizzare e riprodurre il parlato e inviare nuovamente 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 fornire un'implementazione alternativa. Le estensioni sono libere di utilizzare qualsiasi tecnologia web disponibile per fornire la voce, incluso l'audio in streaming da un server e l'audio HTML5. Un'estensione potrebbe anche fare qualcosa di diverso con le espressioni, ad esempio visualizzare i sottotitoli in un popup o inviarle come messaggi di log a un server remoto.

Per implementare un motore TTS, un'estensione deve dichiarare l'autorizzazione "ttsEngine" e poi dichiarare tutte le voci che fornisce nel file manifest dell'estensione, ad esempio:

{
  "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 caso 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 il parlato in una sola lingua. Quando un motore supporta più di una lingua, può facilmente registrare una voce separata per ogni lingua. In rari casi in cui una singola voce è in grado di gestire più di una lingua, è più facile elencare due voci separate e gestirle internamente utilizzando la stessa logica. Tuttavia, se vuoi creare una voce che gestisca le espressioni enunciate in qualsiasi lingua, escludi il parametro lang dal file manifest dell'estensione.

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

Una volta caricata, un'estensione può sostituire l'elenco di voci dichiarate chiamando il numero chrome.ttsEngine.updateVoices. Tieni presente che i parametri utilizzati nella chiamata programmatica a updateVoices sono in lettere maiuscole iniziali: ad es. voiceName, a differenza del file manifest che utilizzavoice_name.

I possibili tipi di eventi che puoi inviare corrispondono ai tipi di eventi ricevuti dal metodo speak():

  • 'start': il motore ha iniziato a pronunciare l'espressione.
  • 'word': è stato raggiunto il confine di una parola. Usa event.charIndex per stabilire la posizione attuale della voce.
  • 'sentence': è stato raggiunto il limite di una frase. Utilizza event.charIndex per determinare la posizione corrente del parlato.
  • 'marker': è stato raggiunto un indicatore SSML. Utilizza event.charIndex per determinare la posizione corrente del parlato.
  • 'end': il motore ha terminato di pronunciare l'espressione.
  • 'error': si è verificato un errore specifico del motore e questa frase non può essere pronunciata. Trasmetti maggiori informazioni in event.errorMessage.

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

I client di sintesi vocale possono ottenere le informazioni vocali dal manifest dell'estensione chiamando tts.getVoices, a condizione che tu abbia registrato gli ascoltatori di eventi vocali come descritto di seguito.

Gestire gli eventi vocali

Per generare voce su richiesta dei client, l'estensione deve registrare gli ascoltatori sia per onSpeak sia per onStop, come segue:

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 vocale a un'estensione si basa esclusivamente sul fatto che l'estensione supporti i parametri vocali specificati nel suo manifest e abbia registrato ascoltatori per onSpeak e onStop. In altre parole, non è possibile per un'estensione ricevere una richiesta di comandi vocali e decidere dinamicamente se gestirla.

Tipi

AudioBuffer

Chrome 92 o versioni successive

Parametri contenenti un buffer audio e dati associati.

Proprietà

  • audioBuffer

    ArrayBuffer

    Il buffer audio del motore di sintesi vocale. Deve avere una lunghezza esattamente audioStreamOptions.bufferSize e essere codificato come mono, a audioStreamOptions.sampleRate e come pcm lineare, numero in virgola mobile a 32 bit con segno, ovvero il tipo Float32Array in JavaScript.

  • charIndex

    number facoltativo

    L'indice di carattere associato a questo buffer audio.

  • isLastBuffer

    booleano facoltativo

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

AudioStreamOptions

Chrome 92 o 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.

LanguageInstallStatus

In attesa

Lo stato di installazione di una voce.

Enum

"notInstalled"

"installazione"

"installed"

"failed"

LanguageStatus

In attesa

Stato di installazione di una lingua.

Proprietà

  • errore

    stringa facoltativo

    Dettagli sugli errori di installazione. Da compilare facoltativamente se l'installazione della lingua non è riuscita.

  • installStatus

    Stato di installazione.

  • lang

    stringa

    Stringa della lingua sotto forma di codice lingua-codice regione, dove la regione può essere omessa. Alcuni esempi sono en, en-AU e zh-CH.

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 lingua-regione. Esempi: "it", "it-IT", "it-GB", "zh-CN".

  • diamante

    numero facoltativo

    Tonalità vocale compresa tra 0 e 2, inclusi, dove 0 è il valore più basso e 2 il più alto. 1,0 corrisponde al tono predefinito di questa voce.

  • velocità di reazione

    number facoltativo

    Velocità di lettura rispetto alla velocità predefinita per questa voce. 1,0 è la velocità predefinita, in genere compresa tra 180 e 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 tassi, non restituire un errore. Adatta invece la frequenza all'intervallo supportato dalla voce.

  • voiceName

    stringa facoltativa

    Il nome della voce da usare per la sintesi.

  • volume

    number facoltativo

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

TtsClient

In attesa

Identificatore dello stato della richiesta del cliente.

Proprietà

  • id

    stringa

    Il cliente invia una richiesta di gestione della lingua. Per un'estensione, si tratta dell'ID univoco dell'estensione. Per le funzionalità di Chrome, si tratta del nome leggibile della funzionalità.

  • origine

    Tipo di richiedente.

TtsClientSource

In attesa

Tipo di richiedente.

Enum

"chromefeature"

"extension"

VoiceGender

Chrome 54 e versioni successive Ritirato da Chrome 70

Il genere è deprecato e verrà ignorato.

Enum

"male"

"femminile"

Metodi

updateLanguage()

In attesa
chrome.ttsEngine.updateLanguage(
  status: LanguageStatus,
)

Viene chiamato da un motore quando viene tentata l'installazione di una lingua e quando una lingua viene disinstallata. Chiamato anche in risposta a una richiesta di stato da parte di un cliente. Quando una voce viene installata o disinstallata, il motore deve chiamare anche ttsEngine.updateVoices per registrarla.

Parametri

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 oggetti tts.TtsVoice che rappresentano le voci disponibili per la sintesi vocale.

Eventi

onInstallLanguageRequest

In attesa
chrome.ttsEngine.onInstallLanguageRequest.addListener(
  callback: function,
)

Viene attivato quando un client TTS richiede l'installazione di una nuova lingua. Il motore deve tentare di scaricare e installare la lingua e chiamare ttsEngine.updateLanguage con il risultato. In caso di esito positivo, il motore deve chiamare anche ttsEngine.updateVoices per registrare le voci appena disponibili.

Parametri

  • callback

    funzione

    Il parametro callback ha il seguente aspetto:

    (requestor: TtsClient, lang: string) => void

onLanguageStatusRequest

In attesa
chrome.ttsEngine.onLanguageStatusRequest.addListener(
  callback: function,
)

Viene attivato quando un client TTS richiede lo stato di installazione di una lingua.

Parametri

  • callback

    funzione

    Il parametro callback ha il seguente aspetto:

    (requestor: TtsClient, lang: string) => void

onPause

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

(Facoltativo) Se un motore supporta l'evento di pausa, deve mettere in pausa l'eventuale enunciato corrente in fase di pronuncia finché non riceve un evento di ripresa o di interruzione. Tieni presente che un evento di interruzione dovrebbe anche cancellare lo stato in 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 di pausa, deve supportare anche l'evento di ripresa per continuare a pronunciare l'eventuale enunciato 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,
)

Viene chiamato quando l'utente effettua una chiamata a tts.speak() e una delle voci del manifest di questa estensione è la prima a corrispondere all'oggetto options.

Parametri

  • callback

    funzione

    Il parametro callback ha il seguente aspetto:

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

    • proposizione

      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 o 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

    • proposizione

      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 facoltativa

        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 deve fare nulla (non deve 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