chrome.ttsEngine

Descrição

Use a API chrome.ttsEngine para implementar um mecanismo de conversão de texto em voz(TTS) usando uma extensão. Se a extensão for registrada usando essa API, ela vai receber eventos contendo uma fala a ser falada e outros parâmetros quando qualquer extensão ou app do Chrome usar a API tts para gerar fala. Sua extensão pode usar qualquer tecnologia da Web disponível para sintetizar e gerar a fala e enviar eventos de volta para a função de chamada a fim de informar o status.

Permissões

ttsEngine

Conceitos e uso

Uma extensão pode se registrar como um mecanismo de fala. Ao fazer isso, ele pode interceptar algumas ou todas as chamadas para funções como tts.speak() e tts.stop() e fornecer uma implementação alternativa. As extensões podem usar qualquer tecnologia da Web disponível para fornecer fala, incluindo streaming de áudio de um servidor ou áudio HTML5. Uma extensão pode até fazer algo diferente com os enunciados, como exibir legendas em um pop-up ou enviá-las como mensagens de registro para um servidor remoto.

Para implementar um mecanismo TTS, uma extensão precisa declarar a permissão "ttsEngine" e, em seguida, declarar todas as vozes fornecidas no manifesto da extensão, desta forma:

{
  "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
  }
}

Um ramal pode especificar qualquer número de vozes.

O parâmetro voice_name é obrigatório. O nome precisa ser descritivo o suficiente para identificar o nome da voz e o mecanismo usado. No caso improvável de duas extensões registrarem vozes com o mesmo nome, um cliente poderá especificar o ID da extensão que fará a síntese.

O parâmetro lang é opcional, mas altamente recomendado. Quase sempre, uma voz consegue sintetizar a fala em apenas um idioma. Quando um mecanismo oferece suporte a mais de um idioma, ele pode registrar facilmente uma voz separada para cada idioma. Em raras circunstâncias em que uma única voz pode processar mais de um idioma, é mais fácil simplesmente listar duas vozes separadas e processá-las usando a mesma lógica internamente. No entanto, se você quiser criar uma voz que processe falas em qualquer idioma, remova o parâmetro lang do manifesto da extensão.

Por fim, o parâmetro event_types será necessário se o mecanismo puder enviar eventos para atualizar o cliente sobre o andamento da síntese de fala. No mínimo, é altamente recomendado oferecer suporte ao tipo de evento 'end' para indicar quando a fala será concluída. Caso contrário, o Chrome não poderá programar enunciados na fila.

Depois de carregada, uma extensão pode substituir a lista de vozes declaradas chamando chrome.ttsEngine.updateVoices. Observe que os parâmetros usados na chamada de programação para updateVoices estão em camelCase, por exemplo, voiceName, ao contrário do arquivo de manifesto que usa voice_name.

Os possíveis tipos de evento que você pode enviar correspondem aos tipos de evento que o método speak() recebe:

  • 'start': o mecanismo começou a gerar a fala.
  • 'word': um limite de palavras foi atingido. Use event.charIndex para determinar a posição da fala atual.
  • 'sentence': o limite de uma frase foi atingido. Use event.charIndex para determinar a posição da fala atual.
  • 'marker': um marcador SSML foi atingido. Use event.charIndex para determinar a posição da fala atual.
  • 'end': o mecanismo terminou de falar a fala.
  • 'error': ocorreu um erro específico do mecanismo, e essa expressão não pode ser falada. Transmita mais informações em event.errorMessage.

Os eventos 'interrupted' e 'cancelled' não são enviados pelo mecanismo de fala. Eles são gerados automaticamente pelo Chrome.

Os clientes de conversão de texto em voz podem receber as informações de voz do manifesto da extensão chamando tts.getVoices, supondo que você tenha registrado listeners de eventos de fala conforme descrito abaixo.

Processar eventos de fala

Para gerar fala quando solicitado pelos clientes, sua extensão precisa registrar listeners para onSpeak e onStop da seguinte forma:

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

A decisão de enviar ou não uma determinada solicitação de fala para uma extensão é baseada apenas no suporte aos parâmetros de voz especificados no manifesto e em listeners registrados para onSpeak e onStop. Em outras palavras, não há como uma extensão receber uma solicitação de fala e decidir dinamicamente se ela será processada.

Tipos

AudioBuffer

Chrome 92 ou mais recente

Parâmetros que contêm um buffer de áudio e dados associados.

Propriedades

  • audioBuffer

    ArrayBuffer

    O buffer de áudio do mecanismo de conversão de texto em voz. Ele deve ter o comprimento exatamente audioStreamOptions.bufferSize e codificado como mono, em audioStreamOptions.sampleRate e como pcm linear, ponto flutuante assinado de 32 bits, ou seja, o tipo Float32Array em JavaScript.

  • charIndex

    número opcional

    O índice de caracteres associado a este buffer de áudio.

  • isLastBuffer

    booleano opcional

    Verdadeiro se o buffer de áudio for o último do texto falado.

AudioStreamOptions

Chrome 92 ou mais recente

Contém o formato de stream de áudio que se espera que seja produzido por um mecanismo.

Propriedades

  • bufferSize

    number

    O número de amostras em um buffer de áudio.

  • sampleRate

    number

    A taxa de amostragem esperada em um buffer de áudio.

SpeakOptions

Chrome 92 ou mais recente

Opções especificadas para o método tts.speak().

Propriedades

  • gender

    VoiceGender opcional

    Descontinuado desde o Chrome 92

    O gênero foi descontinuado e será ignorado.

    Gênero de voz para fala sintetizada.

  • lang

    string opcional

    O idioma a ser usado para síntese, no formato language-region. Exemplos: "en", "en-US", "en-GB", "zh-CN".

  • pitch

    número opcional

    Abordagem falado entre 0 e 2, incluindo 0, o mais baixo e 2, o mais alto. 1,0 corresponde ao tom padrão desta voz.

  • taxa

    número opcional

    Taxa de fala em relação à taxa padrão desta voz. 1,0 é a taxa padrão, normalmente em torno de 180 a 220 palavras por minuto. 2,0 é duas vezes mais rápido e 0,5 é metade da velocidade nativa. Esse valor está entre 0,1 e 10,0. Quando uma voz não for compatível com esse intervalo completo de tarifas, não retorne um erro. Em vez disso, corte a taxa de acordo com o intervalo aceito por voz.

  • voiceName

    string opcional

    O nome da voz a ser usada para síntese.

  • volume

    número opcional

    O volume da fala varia entre 0 e 1, sendo 0 o mais baixo e 1 o mais alto, com um padrão de 1,0.

VoiceGender

Chrome 54 ou mais recente Descontinuado desde o Chrome 70

O gênero foi descontinuado e será ignorado.

Tipo enumerado

Métodos

updateVoices()

Chrome 66 ou mais recente
chrome.ttsEngine.updateVoices(
  voices: TtsVoice[],
)

Chamado por um mecanismo para atualizar a lista de vozes. A lista substitui todas as vozes declaradas no manifesto da extensão.

Parâmetros

  • vozes

    Matriz de objetos tts.TtsVoice que representam as vozes disponíveis para síntese de fala.

Eventos

onPause

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

Opcional: se um mecanismo for compatível com o evento de pausa, ele deverá pausar a fala atual que está sendo falada, se houver, até receber um evento de retomada ou interrupção. Um evento de parada também precisa limpar o estado pausado.

Parâmetros

  • callback

    função

    O parâmetro callback tem esta aparência:

    ()=>void

onResume

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

Opcional: se um mecanismo for compatível com o evento de pausa, ele também precisará aceitar o evento de retomada para continuar a falar a fala atual, se houver. Um evento de parada também precisa limpar o estado pausado.

Parâmetros

  • callback

    função

    O parâmetro callback tem esta aparência:

    ()=>void

onSpeak

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

Chamado quando o usuário faz uma chamada para tts.speak() e uma das vozes do manifesto dessa extensão é a primeira a corresponder ao objeto de opções.

Parâmetros

  • callback

    função

    O parâmetro callback tem esta aparência:

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

    • enunciado

      string

    • opções
    • sendTtsEvent

      função

      O parâmetro sendTtsEvent tem esta aparência:

      (event: tts.TtsEvent)=>void

      • event

        O evento do mecanismo de conversão de texto em voz que indica o status desse enunciado.

onSpeakWithAudioStream

Chrome 92 ou mais recente
chrome.ttsEngine.onSpeakWithAudioStream.addListener(
  callback: function,
)

Chamado quando o usuário faz uma chamada para tts.speak() e uma das vozes do manifesto dessa extensão é a primeira a corresponder ao objeto de opções. É diferente do ttsEngine.onSpeak porque o Chrome fornece serviços de reprodução de áudio e processa o envio de eventos tts.

Parâmetros

  • callback

    função

    O parâmetro callback tem esta aparência:

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

    • enunciado

      string

    • opções
    • audioStreamOptions
    • sendTtsAudio

      função

      O parâmetro sendTtsAudio tem esta aparência:

      (audioBufferParams: AudioBuffer)=>void

      • audioBufferParams

        Parâmetros que contêm um buffer de áudio e dados associados.

    • sendError

      função

      Chrome 94 ou mais recente

      O parâmetro sendError tem esta aparência:

      (errorMessage?: string)=>void

      • errorMessage

        string opcional

        String que descreve o erro.

onStop

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

Disparado quando uma chamada é feita para tts.stop e esta extensão pode estar no meio da fala. Se uma extensão receber uma chamada para onStop e a fala já tiver sido interrompida, ela não deverá fazer nada (não emitir um erro). Se a fala estiver no estado pausado, o estado será cancelado.

Parâmetros

  • callback

    função

    O parâmetro callback tem esta aparência:

    ()=>void