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+