WebSpeech
(2023年6月20日更新)
WebSpeech是一个面向Web开发人员的JavaScript库,调用该库可以很容易地写出支持语音合成和语音识别的网页。
1. 下面是语音合成功能的演示:
2. 下面是使用该库合成语音的一个简单例子:
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=utf-8" />
<script type='text/javascript'
src='/WebSpeech/WebSpeech.js'></script>
</head>
<body>
<button onclick="WebSpeech.speak('听到声音了吗?');">合成语音</button>
<script type='text/javascript'>
WebSpeech.server = 'http://120.24.87.124/cgi-bin/ekho2.pl';
</script>
</body>
</html>
下面还有一些利用WebSpeech编写的例子:
3. 下面是语音识别功能的演示:
4. 为什么利用WebSpeech可以编写发声的网页呢?
这是因为WebSpeech后面还有一个语音服务器,该服务器向公众提供有限用量的免费语音服务。您也可以自己部署一台语音服务器,具体方法可参考How to setup eSpeak TTS server for WebSpeech。如果您觉得这项服务很有用,很希望您能向我们提供捐款,这对WebSpeech和电子导盲犬项目的持续发展很重要。
我们向商业用途网站(及政府网站)提供不限用量的语音服务支持,费用为每个网站2000元/年。
我们同时提供语音服务器的配置和维护服务。1台语音服务器的配置和1个月的维护,附上所有源代码及部署文档(按照文档可在相同版本Linux服务器上自行再部署),费用为2000元人民币。
该服务需要用户事先准备一台可从互联网访问的Linux服务器。如果使用该语音的网站通过https方式访问,该语音服务器同样需要通过https方式访问,而不能通过IP访问,否则会被浏览器拦截。
Coqui和Ekho语音可在局域网离线使用,而百度和讯飞语音需要联网使用并可能产生额外费用。Coqui是深度学习语音,响应时间会稍长一些,对硬件要求也稍高一些。
需要以上服务的可联系Cameron Wong(hgneng at gmail.com)。
5. 下面是WebSpeech的API:
WebSpeech.server = '您的语音服务接口地址';
WebSpeech.speak('text to speak');
WebSpeech.pause();
WebSpeech.resume();
WebSpeech.stop();
// 朗读当前网页
WebSpeech.speakHtml();
WebSpeech.pauseHtml();
WebSpeech.stopHtml();
// 当WebSpeech初始化完成后运行
WebSpeech.ready(function () { ... });
// 当speak的文本完成后运行
WebSpeech.onfinish = function () { ... };
// 设置语音:BaiduMandarinFemale、EkhoMandarin,EkhoCantonese(粤语)等
WebSpeech.setVoice('BaiduMandarinFemale');
WebSpeech.getSpeedDelta();
WebSpeech.setSpeedDelta(value); // -50 <= value <= 100
WebSpeech.getPitchDelta();
WebSpeech.setPitchDelta(value); // -100 <= value <= 100
WebSpeech.getVolumeDelta();
WebSpeech.setVolumeDelta(value); // -100 <= value <= 100
// 会激活浏览器“另存为”的功能
WebSpeech.saveMp3('text to save to MP3 format file');
WebSpeech.saveOgg('text to save to OGG format file');
// 获取汉字的音标,当数据到达时会调用参数中传入的函数,
// symbols就是我们需要的数据,是以空格为分隔符的字符串
WebSpeech.getPhonSymbols('text', function (success, symbols) { ... });
// 开始识别语音
WebSpeech.srStart();
// 停止识别语音
WebSpeech.srStop();
// 当识别出语音后运行
WebSpeech.srSpeechRecognized = function(result) { ... };
版权许可: GPLv2+