chrome.ttsEngine

дата обновления: 2026-09-25 robots: noindex

Описание

Use the chrome.ttsEngine API to implement a text-to-speech(TTS) engine using an extension. If your extension registers using this API, it will receive events containing an utterance to be spoken and other parameters when any extension or Chrome App uses the tts API to generate speech. Your extension can then use any available web technology to synthesize and output the speech, and send events back to the calling function to report the status.

Разрешения

ttsEngine

Обзор

An extension can register itself as a speech engine. By doing so, it can intercept some or all calls to functions such as tts.speak and tts.stop and provide an alternate implementation. Extensions are free to use any available web technology to provide speech, including streaming audio from a server, HTML5 audio. An extension could even do something different with the utterances, like display closed captions in a pop-up window or send them as log messages to a remote server.

Манифест

Для реализации механизма преобразования текста в речь (TTS) расширение должно объявить о наличии разрешения "ttsEngine", а затем указать все предоставляемые им голоса в манифесте расширения следующим образом:

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

В качестве расширения можно указать любое количество голосов.

Параметр voice_name является обязательным. Имя должно быть достаточно описательным, чтобы идентифицировать имя голоса и используемый движок. В маловероятном случае, если два расширения зарегистрируют голоса с одинаковым именем, клиент может указать идентификатор расширения, которое должно выполнить синтез.

The lang parameter is optional, but highly recommended. Almost always, a voice can synthesize speech in just a single language. When an engine supports more than one language, it can easily register a separate voice for each language. Under rare circumstances where a single voice can handle more than one language, it's easiest to just list two separate voices and handle them using the same logic internally. However, if you want to create a voice that will handle utterances in any language, leave out the lang parameter from your extension's manifest.

Наконец, параметр event_types необходим, если движок может отправлять события для информирования клиента о ходе синтеза речи. Как минимум, настоятельно рекомендуется поддерживать тип события 'end' , указывающий на завершение речи, иначе Chrome не сможет планировать реплики, поставленные в очередь.

После загрузки расширение может заменить список объявленных голосов, вызвав метод chrome.ttsEngine.updateVoices . (Обратите внимание, что параметры, используемые в программном вызове updateVoices , задаются в формате camel case: например, voiceName , в отличие от файла манифеста, где используется voice_name .)

Возможные типы событий, которые вы можете отправлять, соответствуют типам событий, которые получает метод speak() :

  • 'start' : Двигатель начал произносить фразу.
  • 'word' : Достигнута граница слова. Используйте event.charIndex , чтобы определить текущую позицию в речи.
  • 'sentence' : Достигнута граница предложения. Используйте event.charIndex , чтобы определить текущую позицию в тексте.
  • 'marker' : Достигнут маркер SSML. Используйте event.charIndex , чтобы определить текущую позицию в тексте.
  • 'end' : Двигатель завершил произнесение фразы.
  • 'error' : Произошла ошибка, специфичная для движка, и это высказывание не может быть произнесено. Передайте дополнительную информацию в event.errorMessage .

События 'interrupted' и 'cancelled' не отправляются речевым движком; они генерируются автоматически браузером Chrome.

Клиенты преобразования текста в речь могут получить информацию о голосе из манифеста вашего расширения, вызвав метод tts.getVoices , при условии, что вы зарегистрировали обработчики событий речи, как описано ниже.

Обработка речевых событий

Для генерации речи по запросу клиентов ваше расширение должно зарегистрировать обработчики событий для функций onSpeak и onStop следующим образом:

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

Решение о том, отправлять ли тот или иной голосовой запрос расширению, принимается исключительно на основе того, поддерживает ли расширение указанные параметры голоса в своем манифесте и зарегистрировало ли слушатели для onSpeak и onStop . Другими словами, расширение не может получить голосовой запрос и динамически решить, обрабатывать его или нет.

Типы

AudioBuffer

Chrome 92+

Параметры, содержащие аудиобуфер и связанные с ним данные.

Характеристики

  • аудиобуфер

    ArrayBuffer

    Аудиобуфер из механизма преобразования текста в речь. Он должен иметь длину, точную равные audioStreamOptions.bufferSize, и быть закодирован как моно, с частотой дискретизации audioStreamOptions.sampleRate, а также как линейный PCM, 32-битное знаковое число с плавающей запятой, т.е. тип Float32Array в JavaScript.

  • charIndex

    число необязательно

    Индекс символов, связанный с этим аудиобуфером.

  • isLastBuffer

    логический необязательный

    Возвращает true, если этот аудиобуфер является последним для воспроизводимого текста.

AudioStreamOptions

Chrome 92+

Содержит формат аудиопотока, который, как ожидается, будет создан движком.

Характеристики

  • размер буфера

    число

    Количество сэмплов в аудиобуфере.

  • частота дискретизации

    число

    Ожидаемая частота дискретизации в аудиобуфере.

LanguageInstallStatus

Chrome 132+

Статус установки голосового модуля.

Перечисление

"неУстановлено"

"установка"

"установлено"

"неуспешный"

LanguageStatus

Chrome 132+

Статус установки языка.

Характеристики

  • ошибка

    строка необязательный

    Подробная информация о сбоях установки. Заполняется необязательно, если не удалось установить язык.

  • installStatus

    Статус установки.

  • язык

    нить

    Языковая строка в формате код языка - код региона, где регион может быть опущен. Примеры: en, en-AU, zh-CH.

LanguageUninstallOptions

Chrome 132+

Варианты удаления выбранного языка.

Характеристики

  • Немедленно удалить

    логический

    Значение true, если клиент TTS хочет, чтобы язык был немедленно удален. Движок может выбирать, удалять ли язык и когда это делать, на основе этого параметра и информации от запрашивающей стороны. Если значение false, он может использовать другие критерии, такие как недавнее использование, чтобы определить, когда следует удалить язык.

SpeakOptions

Chrome 92+

Параметры, указанные для метода tts.speak().

Характеристики

  • пол

    Голосовой пол ( необязательно)

    Устарело с версии Chrome 92.

    Упоминание пола не приветствуется и будет игнорироваться.

    Гендер голоса в синтезированной речи.

  • язык

    строка необязательный

    Язык, используемый для синтеза, в формате язык - регион . Примеры: 'en', 'en-US', 'en-GB', 'zh-CN'.

  • подача

    число необязательно

    Высота тона голоса от 0 до 2 включительно, где 0 — самая низкая, а 2 — самая высокая. 1,0 соответствует высоте тона голоса по умолчанию.

  • ставка

    число необязательно

    Скорость речи относительно стандартной скорости для данного голоса. 1,0 — это стандартная скорость, обычно от 180 до 220 слов в минуту. 2,0 — в два раза быстрее, а 0,5 — в два раза медленнее. Гарантируется, что это значение будет находиться в диапазоне от 0,1 до 10,0 включительно. Если голос не поддерживает весь этот диапазон скоростей, не следует возвращать ошибку. Вместо этого скорость ограничивается диапазоном, поддерживаемым голосом.

  • voiceName

    строка необязательный

    Название голоса, используемого для синтеза.

  • объем

    число необязательно

    Громкость речи от 0 до 1 включительно, где 0 — минимальное значение, а 1 — максимальное, значение по умолчанию — 1,0.

TtsClient

Chrome 131+

Идентификатор статуса запроса клиента.

Характеристики

  • идентификатор

    нить

    Клиент отправляет запрос на управление языком. Для расширения это уникальный идентификатор расширения. Для функций Chrome это удобочитаемое название функции.

  • источник

    Тип заявителя.

TtsClientSource

Chrome 131+

Тип заявителя.

Перечисление

"chromefeature"

"расширение"

VoiceGender

Chrome 54+ Устарело с Chrome 70

Упоминание пола не приветствуется и будет игнорироваться.

Перечисление

"мужской"

"женский"

Методы

updateLanguage()

Chrome 132+
chrome.ttsEngine.updateLanguage(
  status: LanguageStatus,
)
: void

Вызывается движком при попытке установки языка и при его удалении. Также вызывается в ответ на запрос состояния от клиента. При установке или удалении голоса движок также должен вызывать ttsEngine.updateVoices для регистрации голоса.

Параметры

updateVoices()

Chrome 66+
chrome.ttsEngine.updateVoices(
  voices: TtsVoice[],
)
: void

Вызывается движком для обновления списка голосов. Этот список переопределяет любые голоса, указанные в манифесте данного расширения.

Параметры

  • голоса

    Массив объектов tts.TtsVoice , представляющих доступные голоса для синтеза речи.

События

onInstallLanguageRequest

Chrome 131+
chrome.ttsEngine.onInstallLanguageRequest.addListener(
  callback: function,
)

Этот вызов срабатывает, когда клиент TTS запрашивает установку нового языка. Движок должен попытаться загрузить и установить язык, а затем вызвать метод ttsEngine.updateLanguage с результатом. В случае успеха движок также должен вызвать метод ttsEngine.updateVoices для регистрации новых доступных голосов.

Параметры

  • перезвонить

    функция

    Параметр callback выглядит следующим образом:

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

    • запрашивающий
    • язык

      нить

onLanguageStatusRequest

Chrome 132+
chrome.ttsEngine.onLanguageStatusRequest.addListener(
  callback: function,
)

Событие срабатывает, когда клиент TTS запрашивает статус установки языка.

Параметры

  • перезвонить

    функция

    Параметр callback выглядит следующим образом:

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

    • запрашивающий
    • язык

      нить

onPause

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

Необязательно: если движок поддерживает событие паузы, он должен приостановить произнесение текущей фразы (если таковая имеется) до получения события возобновления или события остановки. Обратите внимание, что событие остановки также должно сбрасывать состояние паузы.

Параметры

  • перезвонить

    функция

    Параметр callback выглядит следующим образом:

    () => void

onResume

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

Необязательно: если движок поддерживает событие паузы, он также должен поддерживать событие возобновления, чтобы продолжить произнесение текущей фразы, если таковая имеется. Обратите внимание, что событие остановки также должно сбрасывать состояние паузы.

Параметры

  • перезвонить

    функция

    Параметр callback выглядит следующим образом:

    () => void

onSpeak

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

Вызывается, когда пользователь обращается к tts.speak() и один из голосов из манифеста этого расширения первым соответствует объекту options.

Параметры

  • перезвонить

    функция

    Параметр callback выглядит следующим образом:

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

    • высказывание

      нить

    • параметры
    • sendTtsEvent

      функция

      Параметр sendTtsEvent выглядит следующим образом:

      (event: tts.TtsEvent) => void

      • событие

        Событие от системы преобразования текста в речь, указывающее на статус данного высказывания.

onSpeakWithAudioStream

Chrome 92+
chrome.ttsEngine.onSpeakWithAudioStream.addListener(
  callback: function,
)

Вызывается, когда пользователь обращается к tts.speak(), и один из голосов из манифеста этого расширения первым соответствует объекту options. Отличается от ttsEngine.onSpeak тем, что Chrome предоставляет сервисы воспроизведения звука и обрабатывает отправку событий TTS.

Параметры

  • перезвонить

    функция

    Параметр callback выглядит следующим образом:

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

    • высказывание

      нить

    • параметры
    • audioStreamOptions
    • sendTtsAudio

      функция

      Параметр sendTtsAudio выглядит следующим образом:

      (audioBufferParams: AudioBuffer) => void

      • audioBufferParams

        Параметры, содержащие аудиобуфер и связанные с ним данные.

    • sendError

      функция

      Chrome 94+

      Параметр sendError выглядит следующим образом:

      (errorMessage?: string) => void

      • сообщение об ошибке

        строка необязательный

        Строка, описывающая ошибку.

onStop

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

Событие срабатывает при вызове функции tts.stop, если данный добавочный номер находится в процессе речи. Если добавочный номер получает вызов функции onStop, а речь уже остановлена, ничего не должно происходить (ошибка не должна возникать). Если речь находится в состоянии паузы, это событие должно отменить состояние паузы.

Параметры

  • перезвонить

    функция

    Параметр callback выглядит следующим образом:

    () => void

onUninstallLanguageRequest

Chrome 132+
chrome.ttsEngine.onUninstallLanguageRequest.addListener(
  callback: function,
)

Событие срабатывает, когда клиент синтеза речи указывает, что данный язык больше не требуется.

Параметры