chrome.ttsEngine

Описание

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

Разрешения

ttsEngine

Понятия и применение

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

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

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

Наконец, параметр 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+

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

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

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

    число

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

  • sampleRate

    число

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

LanguageInstallStatus

Chrome 132+

The install status of a voice.

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

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

"установка"

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

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

LanguageStatus

Chrome 132+

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

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

  • ошибка

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

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

  • installStatus

    Installation status.

  • язык

    нить

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

LanguageUninstallOptions

Chrome 132+

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

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

  • uninstallImmediately

    логический

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

SpeakOptions

Chrome 92+

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

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

  • пол

    VoiceGender optional

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

    Gender is deprecated and will be ignored.

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

  • язык

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

    Язык, используемый для синтеза, в формате язык - регион . Примеры: '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+

Type of requestor.

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

"chromefeature"

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

VoiceGender

Chrome 54+ Deprecated since Chrome 70

Gender is deprecated and will be ignored.

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

"мужской"

"женский"

Методы

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

      функция

      The sendTtsEvent parameter looks like:

      (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

      функция

      The sendTtsAudio parameter looks like:

      (audioBufferParams: AudioBuffer) => void

      • audioBufferParams

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

    • sendError

      функция

      Chrome 94+

      The sendError parameter looks like:

      (errorMessage?: string) => void

      • errorMessage

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

        A string describing the error.

onStop

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

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

Параметры

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

    функция

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

    () => void

onUninstallLanguageRequest

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

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

Параметры