简介:本文介绍如何在不依赖任何外部库或插件的情况下,利用现代浏览器的Web Speech API实现文字转语音功能,让你的网页应用能够朗读文本内容,提升用户体验。
在开发网页应用时,文字转语音(Text-to-Speech, TTS)功能可以极大地提升无障碍访问性,同时也为用户带来新颖的交互体验。虽然市面上有许多第三方库和插件可以实现这一功能,但JavaScript原生就支持了通过Web Speech API来实现文字转语音,这使得开发者可以无需安装任何外部依赖就能实现该功能。
Web Speech API 是Web技术的一部分,允许网页访问语音识别和语音合成服务。虽然API分为两部分(语音识别和语音合成),但本文将重点介绍语音合成部分,即如何将文本转换成语音。
在编写本文时,大多数现代浏览器(如Chrome, Firefox, Safari等)都支持Web Speech API的语音合成功能,但请注意检查你的目标浏览器是否支持。
首先,我们需要检查用户的浏览器是否支持SpeechSynthesis接口。
if ('speechSynthesis' in window) {// 浏览器支持语音合成} else {console.error('Speech Synthesis API is not supported by this browser.');}
接下来,我们可以创建一个SpeechSynthesisUtterance对象,这是实际执行语音合成的对象。
let utterance = new SpeechSynthesisUtterance('Hello, this is a text-to-speech demo.');// 可选配置utterance.lang = 'zh-CN'; // 设置语言utterance.rate = 1.0; // 语速,1为正常语速utterance.pitch = 1.0; // 音调,1为正常音调utterance.volume = 1; // 音量,0到1之间utterance.voiceURI = 'native'; // 特定语音URI,但大多数浏览器不支持直接设置
虽然直接设置voiceURI通常不工作,但我们可以列出浏览器支持的语音,让用户选择。
function getVoices() {window.speechSynthesis.getVoices().forEach(function(voice) {console.log(voice.name + ' (' + voice.lang + ')');});}speechSynthesis.onvoiceschanged = getVoices;getVoices();
最后,我们将SpeechSynthesisUtterance对象传递给speechSynthesis.speak方法,浏览器就会开始朗读文本。
speechSynthesis.speak(utterance);
如果需要停止或暂停正在播放的语音,可以使用speechSynthesis.stop()或speechSynthesis.pause()方法。
// 停止语音speechSynthesis.stop();// 暂停语音(注意:不是所有浏览器都支持暂停功能)// speechSynthesis.pause();
voiceURI可能不生效,可以通过列出所有可用的语音让用户选择。通过Web Speech API,我们可以轻松地在网页中实现文字转语音功能,提升用户体验,同时保持对无障碍访问的支持。无需任何外部依赖,只需简单的JavaScript代码,即可让你的网页“开口说话”。希望本文能帮助你掌握这一实用的技术,并在你的项目中加以应用。