Синтез речи в JS — API синтеза речи
Введение
На самом деле существует два типа API, связанных с веб-речью в HTML5. Один из них — «Распознавание речи», а другой — «Синтез речи». Эти два термина на самом деле относятся к «Распознаванию речи». Преобразование текста и «Текст в речь». .
В этой статье представлен синтез речи (Speech Synthesis), перейдите к распознаванию речи (Speech Recognition)еще один.
Чтобы браузер заговорил, все, что вам нужно сделать, это:
let speechInstance = new SpeechSynthesisUtterance('大家好,我是渣渣辉。');
speechSynthesis.speak(speechInstance);
Это так просто, почему бы вам не скопировать это в браузер и не попробовать?
SpeechSynthesisUtterance в основном используется для создания экземпляров синтеза речи. SpeechSynthesis, вероятно, используется для запуска речевого модуля браузера, чтобы позволить браузеру прочитать содержимое.
Экземпляр SpeechSynthesisUtterance имеет следующие свойства. Вы можете настроить произношение, установив свойства.
- text – текстовое содержимое для синтеза, строка.
- lang - используемый язык, строка, например: "zh-cn"
- voiceURI — указывает желаемый голос и услугу, строку.
- volume – громкость звука, диапазон от 0 до 1, по умолчанию 1.
- rate – скорость речи, значение, значение по умолчанию 1, диапазон значений от 0,1 до 10, что указывает на кратность скорости речи, например, 2 означает двойную нормальную скорость речи.
- высота тона — указывает высоту тона речи, значение от 0 (минимум) до 2 (максимум). Значение по умолчанию — 1.
Есть еще один метод:
- onstart — Обратный вызов при запуске синтеза речи.
- onpause - Обратный вызов, когда синтез речи приостановлен.
- onresume — Обратный вызов при возобновлении синтеза речи.
- onend - Обратный вызов, когда синтез речи заканчивается.
Объект speechSynthesis имеет следующие методы:
- говорить() – может принимать только SpeechSynthesisUtterance как единственный параметр, который используется для чтения синтезированного высказывания.
- stop() — немедленно прекратить процесс синтеза.
- pause() - Приостановить процесс композиции.
- возобновить () — возобновляет процесс композиции.
- getVoices() — этот метод не принимает никаких параметров и используется для возврата списка голосовых пакетов, поддерживаемых браузером, который представляет собой массив.
Возвращаемое значение speechSynthesis.getVoices() различается из-за разных браузеров и версий, примерно так:
Уведомление
Сбор языкового пакета нестабилен, иногда возвращаются пустые.Вы можете использовать таймер, чтобы попробовать несколько раз.
основной код
//vue 部分代码
methods: {
onChange (e) {
let chosenItem = this.voiceData.filter(item => {
return e == item.lang;
});
this.queryParams.voiceURI = chosenItem[0].voiceURI;
},
onSpeak () {
this.speechInstance = new SpeechSynthesisUtterance();
Object.keys(this.queryParams).forEach(key => {
this.speechInstance[key] = this.queryParams[key];
})
console.log(this.speechInstance);
speechSynthesis.speak(this.speechInstance);
}
},
mounted () {
let timer = setInterval(() => {
if(!this.voiceData.length) {
//获取语言包
this.voiceData = speechSynthesis.getVoices();
} else {
clearInterval(timer);
}
}, 500);
}
попытайся
Ting-TingГрубый тест показывает, что Chrome под Mac поддерживает два параметра громкости и высоты тона, но не скорость речи; Firefox и Safari не поддерживают три параметра громкости, скорости и высоты тона.
Я пробовал Chrome, UC и Safari под IOS на мобильном телефоне и Chrome на Android, и все они отлично его поддерживают😄!
Но, возможно, из-за блокировки Google голосовая функция Chrome очень нестабильна, а Firefox и Safari относительно стабильны.
Было бы интересно попробовать несколько других языков, таких как японский (ja-JP), кантонский (zh-HK), тайваньский (zh-TW) и т. д. 😂 . Предполагается, что в вашем браузере установлен этот языковой пакет.
Странно то, что когда китайский язык выбирает чтение вслух на английском (en-US), он возвращает набор мужских голосов, которые я не очень хорошо понимаю.
сможет сделать
В будущем проблема поддержки была улучшена, и есть еще много вариантов использования, которые можно придумать.
- слепое чтение
- переводить? Возможно с распознаванием голоса
- В сочетании с распознаванием текста из предыдущей статьи распознанный текст преобразуется в голос, и это идеально.
- так далее