SpeechSynthesisUtterance是HTML5中新增的API,用于将指定文字合成为对应的语音.也包含一些配置项,指定如何去阅读(语言,音量,音调)等,不支持IE浏览器。

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Document</title>
  7. </head>
  8. <body>
  9. <input type="text" id="textMsg" value="有新的订单,请及时处理">
  10. <button onclick="speak()">播放</button>
  11. <button onclick="pause()">暂停</button>
  12. <button onclick="resume()">继续播放</button>
  13. <button onclick="cancel()">取消播放</button>
  14. <script>
  15. var synth = window.speechSynthesis //来创建语音,
  16. var speech = new SpeechSynthesisUtterance();//来创建文本实例
  17. // 播放
  18. function speak() {
  19. //speech.pitch = 1 // 获取并设置话语的音调(值越大越尖锐,越低越低沉)
  20. // speech.rate = 5 // 获取并设置说话的速度(值越大语速越快,越小语速越慢 0.1-10)
  21. // speech.volume = 100 // 获取并设置说话的音量
  22. // speech.lang = 'zh-CN' //语言
  23. //返回当前设备所有可用声音的 SpeechSynthesisVoice (en-US)列表。
  24. //var voices = synth.getVoices();
  25. //console.log(voices);
  26. //speech.voice = voices[0];
  27. speech.text = textMsg.value; // 获取并设置说话时的文本
  28. synth.cancel();//先关闭所有队列在播放 防止点击几次播放几次语音
  29. synth.speak(speech);//将对应的实例添加到语音队列中
  30. }
  31. // 暂停
  32. function pause() {
  33. synth.pause()
  34. }
  35. // 继续播放
  36. function resume() {
  37. synth.resume()
  38. }
  39. // 取消播放
  40. function cancel() {
  41. synth.cancel()
  42. }
  43. //当口语到达单词或句子边界时触发boundary 也可通过onboundary获得
  44. //当话语说完时触发end ,也可通过onend获得
  45. speech.addEventListener('end',function(){
  46. console.log('语音播报结束')
  47. });
  48. speech.onend = function(){
  49. console.log('语音播报结束')
  50. }
  51. </script>
  52. </body>
  53. </html>