speechSynthesis没有声音

本片文章首先针对的问题是[前端使用speechSynthesis合成声音,但是无法播放出声音的问题解决方案],目前所知道的出现问题的前提条件如下:
1、电脑系统为win7
2、浏览器不限制(google浏览器版本89前可以,89后需要使用其它解决方案)

1. 首先从代码中寻找答案,常用的speechSynthesis合成代码如下

var utterThis = new window.SpeechSynthesisUtterance('你好,世界!');
window.speechSynthesis.speak(utterThis);

SpeechSynthesisUtterance对象有以下属性可以设置:

  • text – 要合成的文字内容,字符串。
  • lang – 使用的语言,字符串, 例如:”zh-cn”
  • voiceURI – 指定希望使用的声音和服务,字符串。
  • volume – 声音的音量,区间范围是0到1,默认是1。
  • rate – 语速,数值,默认值是1,范围是0.1到10,表示语速的倍数,例如2表示正常语速的两倍。
  • pitch – 表示说话的音高,数值,范围从0(最小)到2(最大)。默认值为1。

因此上面也可以写成如下代码:

var utterThis = new window.SpeechSynthesisUtterance('你好,世界!');
utterThis.text = "a";
utterThis.pitch = 2;

除了属性,当然还有一些方法可以进行调用:

  • speak() – 只能接收SpeechSynthesisUtterance作为唯一的参数,作用是读合成的话语。
  • stop() – 立即终止合成过程。
  • pause() – 暂停合成过程。
  • resume() – 重新开始合成过程。
  • getVoices – 此方法不接受任何参数,用来返回浏览器支持的语音包列表,是个数组。

2. 分析

所有的属性和方法都分析过后,最终确定在了getVoices()这个方法上面,因为在可以播放声音的电脑上调用时返回了数据,然而在不能播放声音的电脑上调用时返回的是个空数组,那么我们大致可以确定问题关键了,就是没有语音包,按照正常流程,那就是下载系统语音包,然后安装重启即可,可是在实际操作中,并没有那么简单,因此按照此流程操作并不能解决问题。但是经过我多方资料查找,终于发现了一个可用的方案。

3.解决

Original: https://blog.csdn.net/qq_45558339/article/details/117220125
Author: 一只会飞的小菲菲
Title: speechSynthesis没有声音

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/515880/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球