chrome.ttsEngine

refresh date: 2026-09-25 robots: noindex

Описание

Используйте chrome.ttsEngine API, чтобы реализовать систему синтеза речи с помощью расширения. Если расширение зарегистрировано с помощью этого API, оно будет получать события, содержащие фразу для озвучивания и другие параметры, когда любое расширение или приложение Chrome использует API tts для генерации речи. Затем расширение может использовать любую доступную веб-технологию для синтеза и вывода речи, а также отправлять события обратно в вызывающую функцию, чтобы сообщить о статусе.

Разрешения

ttsEngine

Обзор

Расширение может зарегистрироваться как речевой движок. Это позволяет перехватывать некоторые или все вызовы таких функций, как tts.speak и tts.stop, и предоставлять альтернативную реализацию. Расширения могут использовать любые доступные веб-технологии для воспроизведения речи, включая потоковое аудио с сервера и аудио HTML5. Расширение может даже выполнять другие действия с высказываниями, например отображать субтитры во всплывающем окне или отправлять их в виде сообщений журнала на удаленный сервер.

Манифест

Чтобы реализовать синтезатор речи, расширение должно объявить разрешение 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 обязателен. Название должно быть достаточно описательным, чтобы идентифицировать название голоса и используемый движок. В редких случаях, когда два расширения регистрируют голоса с одинаковыми названиями, клиент может указать идентификатор расширения, которое должно выполнить синтез.

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

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

После загрузки расширение может заменить список объявленных голосов, вызвав chrome.ttsEngine.updateVoices. Обратите внимание, что параметры, используемые в программном вызове updateVoices, указаны в верблюжьем регистре (например, 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 и более поздних версий;

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

Свойства

  • audioBuffer

    ArrayBuffer

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

  • charIndex

    number (необязательно)

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

  • isLastBuffer

    Логическое значение (необязательно)

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

AudioStreamOptions

Chrome 92 и более поздних версий;

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

Свойства

  • bufferSize

    число

    Количество выборок в аудио буфере.

  • sampleRate

    число

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

LanguageInstallStatus

Chrome 132 и более поздних версий.

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

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

"notInstalled"

"installing"

"installed"

"failed"

LanguageStatus

Chrome 132 и более поздних версий.

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

Свойства

  • ошибка

    Строка (необязательно)

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

  • installStatus

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

  • lang

    string

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

LanguageUninstallOptions

Chrome 132 и более поздних версий.

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

Свойства

  • uninstallImmediately

    Логическое значение

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

SpeakOptions

Chrome 92 и более поздних версий;

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

Свойства

  • gender

    VoiceGender необязательный

    Устарело начиная с Chrome 92

    Пол больше не поддерживается и будет игнорироваться.

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

  • lang

    Строка (необязательно)

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

  • питч

    number (необязательно)

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

  • скорость реакции

    number (необязательно)

    Скорость речи относительно скорости по умолчанию для этого голоса. По умолчанию установлена скорость 1,0, что соответствует примерно 180–220 словам в минуту. 2.0 – в два раза быстрее, а 0.5 – в два раза медленнее. Значение должно быть в диапазоне от 0,1 до 10,0 включительно. Если голос не поддерживает весь диапазон скоростей, не возвращайте ошибку. Вместо этого ограничьте скорость диапазоном, который поддерживает голос.

  • voiceName

    Строка (необязательно)

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

  • громкость

    number (необязательно)

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

TtsClient

Chrome 131 и более поздних версий

Идентификатор клиента, запрашивающего статус.

Свойства

  • id

    string

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

  • Тип отправителя запроса.

TtsClientSource

Chrome 131 и более поздних версий

Тип отправителя запроса.

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

"chromefeature"

"extension"

VoiceGender

Chrome 54 и более поздние версии Поддержка прекращена в Chrome 70

Пол больше не поддерживается и будет игнорироваться.

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

"male"

"female"

Методы

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, чтобы зарегистрировать новые доступные голоса.

Параметры

  • обратный вызов

    function

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

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

    • Отправитель запроса
    • lang

      string

onLanguageStatusRequest

Chrome 132 и более поздних версий.
chrome.ttsEngine.onLanguageStatusRequest.addListener(
  callback: function,
)

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

Параметры

  • обратный вызов

    function

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

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

    • Отправитель запроса
    • lang

      string

onPause

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

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

Параметры

  • обратный вызов

    function

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

    () => void

onResume

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

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

Параметры

  • обратный вызов

    function

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

    () => void

onSpeak

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

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

Параметры

  • обратный вызов

    function

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

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

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

      string

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

      function

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

      (event: tts.TtsEvent) => void

      • event

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

onSpeakWithAudioStream

Chrome 92 и более поздних версий;
chrome.ttsEngine.onSpeakWithAudioStream.addListener(
  callback: function,
)

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

Параметры

  • обратный вызов

    function

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

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

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

      string

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

      function

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

      (audioBufferParams: AudioBuffer) => void

      • audioBufferParams

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

    • sendError

      function

      Chrome 94 и более поздних версий;

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

      (errorMessage?: string) => void

      • errorMessage

        Строка (необязательно)

        Строка с описанием ошибки.

onStop

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

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

Параметры

  • обратный вызов

    function

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

    () => void

onUninstallLanguageRequest

Chrome 132 и более поздних версий.
chrome.ttsEngine.onUninstallLanguageRequest.addListener(
  callback: function,
)

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

Параметры