refresh date: 2026-09-25 robots: noindex
Описание
Используйте chrome.tts API для воспроизведения синтезированного преобразования текста в речь (TTS). Также ознакомьтесь с API ttsEngine, который позволяет расширению использовать речевой движок.
Разрешения
ttsОбзор
Chrome поддерживает озвучивание текста в Windows (с помощью SAPI 5), macOS и ChromeOS, используя возможности синтеза речи, предоставляемые операционной системой. На всех платформах пользователь может устанавливать расширения, которые регистрируются как альтернативные речевые движки.
Генерируем речь
Чтобы поговорить с speak(), позвоните по добавочному номеру. Пример:
chrome.tts.speak('Hello, world.');
Чтобы остановить меня, просто скажите "stop()".
chrome.tts.stop();
Вы можете задать параметры, управляющие различными свойствами речи, такими как ее скорость, высота тона и т. д. Пример:
chrome.tts.speak('Hello, world.', {'rate': 2.0});
Также рекомендуется указать язык, чтобы был выбран синтезатор, поддерживающий этот язык (и региональный диалект, если применимо).
chrome.tts.speak('Hello, world.', {'lang': 'en-US', 'rate': 2.0});
По умолчанию каждый вызов speak() прерывает текущую речь и сразу же начинает говорить. Чтобы определить, не прервет ли звонок что-либо, вызовите isSpeaking(). Кроме того, вы можете использовать параметр enqueue, чтобы добавить высказывание в очередь. Оно будет озвучено, когда закончится текущее высказывание.
chrome.tts.speak('Speak this first.');
chrome.tts.speak(
'Speak this next, when the first sentence is done.', {'enqueue': true});
Полное описание всех вариантов приведено в tts.speak ниже. Не все речевые движки поддерживают все параметры.
Чтобы выявлять ошибки и убедиться, что вы правильно вызываете speak(), передайте функцию обратного вызова, которая не принимает аргументы. Внутри обратного вызова проверьте runtime.lastError на наличие ошибок.
chrome.tts.speak(
utterance,
options,
function() {
if (chrome.runtime.lastError) {
console.log('Error: ' + chrome.runtime.lastError.message);
}
}
);
Обратный вызов возвращается сразу, до того как движок начнет генерировать речь. Цель обратного вызова – предупредить вас о синтаксических ошибках при использовании TTS API, а не выявить все возможные ошибки, которые могут возникнуть в процессе синтеза и вывода речи. Чтобы отслеживать и эти ошибки, используйте прослушиватель событий, описанный ниже.
Прослушивание событий
Чтобы получать больше информации о статусе синтезированной речи в реальном времени, передайте прослушиватель событий в параметрах speak(), как показано ниже.
chrome.tts.speak(
utterance,
{
onEvent: function(event) {
console.log('Event ' + event.type + ' at position ' + event.charIndex);
if (event.type == 'error') {
console.log('Error: ' + event.errorMessage);
}
}
},
callback
);
Каждое событие включает тип события, индекс символа текущей речи относительно высказывания и, для событий ошибок, необязательное сообщение об ошибке. Типы событий:
'start': движок начал озвучивать высказывание.'word'– достигнута граница слова. Используйтеevent.charIndex, чтобы определить текущую позицию речи.'sentence': достигнута граница предложения. аevent.charIndex– чтобы определить текущую позицию речи.'marker'– достигнут маркер SSML. Используйтеevent.charIndex, чтобы определить текущую позицию речи.'end': движок закончил озвучивать высказывание.'interrupted': высказывание было прервано другим вызовомspeak()илиstop()и не было завершено.'cancelled': высказывание было поставлено в очередь, но затем отменено другим вызовомspeak()илиstop()и не было произнесено.'error'– произошла ошибка, связанная с движком, и высказывание не может быть озвучено. Подробности:event.errorMessage.
Четыре типа событий ('end', 'interrupted', 'cancelled' и 'error') являются окончательными. После получения одного из этих событий высказывание больше не будет озвучиваться и новые события от него не будут поступать.
Некоторые голоса могут не поддерживать все типы событий, а некоторые могут вообще не отправлять события. Если вы не хотите использовать голос, пока он не отправит определенные события, передайте нужные события в элементе requiredEventTypes объекта options или используйте getVoices(), чтобы выбрать голос, соответствующий вашим требованиям. Оба варианта описаны ниже.
Разметка SSML
Высказывания, используемые в этом API, могут включать разметку с использованием языка разметки синтеза речи (SSML). Если вы используете SSML, первым аргументом для speak() должен быть полный документ SSML с заголовком XML и тегом верхнего уровня <speak>, а не фрагмент документа.
Пример:
chrome.tts.speak(
'<?xml version="1.0"?>' +
'<speak>' +
' The <emphasis>second</emphasis> ' +
' word of this sentence was emphasized.' +
'</speak>'
);
Не все речевые движки поддерживают все теги SSML, а некоторые могут вообще не поддерживать SSML. Однако все движки должны игнорировать неподдерживаемые теги SSML и озвучивать текст.
Выбор голоса
По умолчанию Chrome выбирает наиболее подходящий голос для каждого высказывания, которое вы хотите произнести, в зависимости от языка. На большинстве систем Windows, Mac OS X и ChromeOS синтез речи, предоставляемый операционной системой, должен быть способен озвучивать любой текст по крайней мере на одном языке. Однако у некоторых пользователей может быть доступно множество голосов из их операционной системы и из речевых движков, реализованных другими расширениями Chrome. В таких случаях вы можете реализовать специальный код, чтобы выбрать подходящий голос или предоставить пользователю список вариантов.
Чтобы получить список всех голосов, вызовите getVoices() и передайте функцию, которая получает массив объектов TtsVoice в качестве аргумента:
chrome.tts.getVoices(
function(voices) {
for (var i = 0; i < voices.length; i++) {
console.log('Voice ' + i + ':');
console.log(' name: ' + voices[i].voiceName);
console.log(' lang: ' + voices[i].lang);
console.log(' extension id: ' + voices[i].extensionId);
console.log(' event types: ' + voices[i].eventTypes);
}
}
);
Типы
EventType
Перечисление
"start"
"end"
"word"
"sentence"
"marker"
"interrupted"
"cancelled"
"error"
"pause"
"resume"
TtsEvent
Событие от механизма TTS для сообщения о статусе высказывания.
Свойства
-
charIndex
number (необязательно)
Индекс текущего символа в высказывании. События, связанные со словами, активируются в конце одного слова и перед началом следующего.
charIndex– это точка в тексте в начале следующего слова, которое будет произнесено. -
errorMessage
Строка (необязательно)
Описание ошибки, если тип события –
error. -
длина
number (необязательно)
Chrome 74 и более поздних версий.Длина следующей части высказывания. Например, в событии
wordэто длина слова, которое будет произнесено следующим. Если значение не задано системой синтеза речи, оно будет равно -1. -
тип
Тип может быть следующим:
start– как только речь началась;word– когда достигнута граница слова;sentence– когда достигнута граница предложения;marker– когда достигнут элемент разметки SSML;end– когда достигнут конец высказывания;interrupted– когда высказывание остановлено или прервано до достижения конца;cancelled– когда оно удалено из очереди до синтеза;error– когда возникает любая другая ошибка. При приостановке речи событиеpauseзапускается, если определенное высказывание приостановлено в середине, аresume– если высказывание возобновляет речь. Обратите внимание, что события паузы и возобновления могут не срабатывать, если речь приостановлена между высказываниями.
TtsOptions
Настройки речи для синтезатора.
Свойства
-
desiredEventTypes
string[] необязательно
Типы событий TTS, которые вы хотите отслеживать. Если он отсутствует, могут отправляться все типы событий.
-
enqueue
Логическое значение (необязательно)
Если задано значение true, высказывание ставится в очередь, если озвучивание уже выполняется. Если установлено значение false (по умолчанию), прерывает текущую речь и очищает очередь перед воспроизведением нового высказывания.
-
extensionId
Строка (необязательно)
Идентификатор расширения для используемого речевого движка (если известен).
-
gender
VoiceGender необязательный
Устарело начиная с Chrome 77Пол больше не поддерживается и будет игнорироваться.
Пол голоса для синтезированной речи.
-
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 не допускаются. Для многих голосов минимальная и максимальная скорость речи ограничены дополнительно. Например, определенный голос может не говорить быстрее, чем в три раза быстрее обычного, даже если вы укажете значение выше 3,0.
-
requiredEventTypes
string[] необязательно
Типы событий TTS, которые должен поддерживать голос.
-
voiceName
Строка (необязательно)
Название голоса, который будет использоваться для синтеза. Если оставить поле пустым, будет использоваться любой доступный голос.
-
громкость
number (необязательно)
Громкость речи от 0 до 1 включительно, где 0 – самая низкая, а 1 – самая высокая.По умолчанию используется значение 1,0.
-
onEvent
void optional
Эта функция вызывается с событиями, которые происходят в процессе произнесения высказывания.
Функция
onEventвыглядит следующим образом:(event: TtsEvent) => {...}
-
event
Событие обновления от системы синтеза речи, указывающее на статус этого высказывания.
-
TtsVoice
Описание голоса, доступного для синтеза речи.
Свойства
-
eventTypes
EventType[] необязательный
Все типы событий обратного вызова, которые может отправлять этот голос.
-
extensionId
Строка (необязательно)
Идентификатор расширения, предоставляющего этот голос.
-
gender
VoiceGender необязательный
Не поддерживается начиная с Chrome 70Пол больше не поддерживается и будет игнорироваться.
Пол голоса.
-
lang
Строка (необязательно)
Язык, который поддерживает этот голос, в формате язык-регион. Примеры: "en", "en-US", "en-GB", "zh-CN".
-
Пульт
Логическое значение (необязательно)
Если задано значение true, то движок синтеза речи является удаленным сетевым ресурсом. Это может привести к увеличению задержки и расходов на пропускную способность.
-
voiceName
Строка (необязательно)
Название голоса.
VoiceGender
Пол больше не поддерживается и игнорируется.
Перечисление
"male"
"female"
Методы
getVoices()
chrome.tts.getVoices(
callback?: function,
): Promise<TtsVoice[]>
Возвращает массив всех доступных голосов.
Параметры
-
обратный вызов
function необязательно
Параметр
callbackвыглядит следующим образом:(voices: TtsVoice[]) => void
-
Голоса
TtsVoice[]
Массив объектов
tts.TtsVoice, представляющих доступные голоса для синтеза речи.
-
Возвраты
-
Promise<TtsVoice[]>
Chrome 101 и более поздних версий.Объекты Promise поддерживаются только в Manifest V3 и более поздних версиях. На других платформах нужно использовать обратные вызовы.
isSpeaking()
chrome.tts.isSpeaking(
callback?: function,
): Promise<boolean>
Проверяет, говорит ли система в данный момент. В Mac OS X возвращается значение true, если системный синтезатор речи работает, даже если речь была инициирована не Chrome.
Параметры
-
обратный вызов
function необязательно
Параметр
callbackвыглядит следующим образом:(speaking: boolean) => void
-
говорящий
Логическое значение
True, если говорит, false – если нет.
-
Возвраты
-
Promise<boolean>
Chrome 101 и более поздних версий.Объекты Promise поддерживаются только в Manifest V3 и более поздних версиях. На других платформах нужно использовать обратные вызовы.
pause()
chrome.tts.pause(): void
Приостанавливает синтез речи, возможно, в середине высказывания. Чтобы возобновить или остановить речь, вызовите соответствующую команду.
resume()
chrome.tts.resume(): void
Если речь была приостановлена, возобновляет ее с того места, где она была прервана.
speak()
chrome.tts.speak(
utterance: string,
options?: TtsOptions,
callback?: function,
): Promise<void>
Озвучивает текст с помощью синтезатора речи.
Параметры
-
высказывание
string
Текст, который нужно озвучить. Это может быть обычный текст или полный, правильно оформленный документ SSML. Речевые движки, которые не поддерживают SSML, удалят теги и озвучат текст. Максимальная длина текста – 32 768 символов.
-
Параметры
TtsOptions необязательный
Параметры речи.
-
обратный вызов
function необязательно
Параметр
callbackвыглядит следующим образом:() => void
Возвраты
-
Promise<void>
Chrome 101 и более поздних версий.Разрешается сразу, до окончания речи. Если произойдет ошибка, объект Promise будет отклонен. Чтобы получить более подробную информацию, используйте options.onEvent.
Объекты Promise поддерживаются только в Manifest V3 и более поздних версиях. На других платформах нужно использовать обратные вызовы.
stop()
chrome.tts.stop(): void
Останавливает текущую речь и очищает очередь ожидающих высказываний. Кроме того, если озвучивание было приостановлено, оно будет возобновлено при следующем вызове функции speak.
События
onVoicesChanged
chrome.tts.onVoicesChanged.addListener(
callback: function,
)
Вызывается, когда список tts.TtsVoice, возвращаемый методом getVoices, изменился.
Параметры
-
обратный вызов
function
Параметр
callbackвыглядит следующим образом:() => void