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 receberá eventos com um enunciado a ser falado e outros parâmetros quando qualquer extensão ou app do Chrome usar a API tts para gerar voz. A extensão poderá usar qualquer tecnologia da Web disponível para sintetizar e gerar a fala e enviar eventos de volta à função de chamada para 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 a funções como tts.speak() e tts.stop(), além de fornecer uma implementação alternativa. As extensões podem usar qualquer tecnologia da Web disponível para fornecer voz, incluindo streaming de áudio a partir de um servidor, áudio HTML5. Uma extensão pode até fazer algo diferente com os enunciados, como exibir legendas em pop-up ou enviá-los como mensagens de registro um servidor remoto.

Para implementar um mecanismo TTS, uma extensão deve declarar o mecanismo "ttsEngine" a permissão e, em seguida, declarar todas que são fornecidas no manifesto da extensão, da seguinte 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
  }
}

Uma extensão pode especificar qualquer número de vozes.

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

O parâmetro lang é opcional, mas altamente recomendado. Quase sempre, uma voz pode sintetizar fala em um único idioma. Quando um mecanismo aceita mais de um idioma, ele pode facilmente registrar uma voz separada para cada idioma. Em raras circunstâncias em que uma única voz pode lidar com mais de um idioma, é mais fácil listar duas vozes separadas e lidar com elas usando a mesma lógica internamente. No entanto, se você quiser criar uma voz para lidar com enunciados de qualquer desconsidere o parâmetro lang do manifesto da sua extensão.

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

Depois de carregada, uma extensão pode substituir a lista de vozes declaradas chamando chrome.ttsEngine.updateVoices: Os parâmetros usados na chamada programática para updateVoices estão em letras concatenadas: por exemplo, voiceName, ao contrário do arquivo de manifesto, que usa voice_name.

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

  • 'start': o mecanismo começou a falar o enunciado.
  • 'word': um limite de palavras foi atingido. Usar event.charIndex para determinar a fala atual posição
  • 'sentence': um limite de frases foi atingido. Use event.charIndex para determinar o na posição da fala.
  • 'marker': um marcador SSML foi atingido. Usar event.charIndex para determinar a fala atual posição
  • 'end': o mecanismo terminou de falar o enunciado.
  • 'error': ocorreu um erro específico do mecanismo, e este enunciado não pode ser falado. Passar 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 sua 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 a pedido dos clientes, sua extensão precisa registrar listeners para ambos onSpeak e onStop, assim:

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 a uma extensão é baseada apenas no se a extensão é compatível com os parâmetros de voz fornecidos em seu manifesto e se registrou listeners para onSpeak e onStop. Em outras palavras, uma extensão não pode receber uma solicitação de fala e decide dinamicamente se vai processá-la.

Tipos

AudioBuffer

Chrome 92 ou versões mais recentes

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 precisa ter o comprimento audioStreamOptions.bufferSize e codificado como mono, em audioStreamOptions.sampleRate, e como um ponto flutuante com sinal linear em pcm e 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 esse buffer de áudio for o último texto falado.

AudioStreamOptions

Chrome 92 ou versões mais recentes

Contém o formato de stream de áudio que deve ser 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 versões mais recentes

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

Propriedades

  • gênero

    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 idioma-região. Exemplos: "en", "en-US", "en-GB", "zh-CN".

  • pitch

    número opcional

    Tom de fala entre 0 e 2, sendo 0 o menor e 2 o mais alto. 1,0 corresponde ao tom padrão dessa voz.

  • taxa

    número opcional

    Velocidade da fala em relação à taxa padrão para esta 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 essa faixa completa de taxas, não retorne um erro. Em vez disso, corte a taxa de acordo com o intervalo compatível com a voz.

  • voiceName

    string opcional

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

  • volume

    número opcional

    Volume de fala entre 0 e 1, sendo 0 o menor e 1 o mais alto, com um padrão de 1,0.

VoiceGender

Chrome 54 ou superior Descontinuado desde o Chrome 70

O gênero foi descontinuado e será ignorado.

Enumeração

"masculino"

"feminino"

Métodos

updateVoices()

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

Chamado por um mecanismo para atualizar a lista de vozes. Esta lista substitui todas as vozes declaradas no manifesto desta 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 oferecer suporte ao evento de pausa, ele deverá pausar o enunciado atual, se houver, até receber um evento de retomada ou de interrupção. Um evento de parada também deve limpar o estado de pausa.

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 oferecer suporte ao evento de pausa, ele também vai oferecer suporte ao evento de retomada para continuar falando o enunciado atual, se houver. Um evento de parada também deve limpar o estado de pausa.

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

      • evento

        O evento do mecanismo de conversão de texto em voz que indica o status dessa fala.

onSpeakWithAudioStream

Chrome 92 ou versões mais recentes
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. Difere de ttsEngine.onSpeak porque o Google Chrome fornece serviços de reprodução de áudio e manipula 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 versão 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 durante uma 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 gerar um erro). Se a fala estiver no estado pausado, isso cancelará o estado pausado.

Parâmetros

  • callback

    função

    O parâmetro callback tem esta aparência:

    () => void