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.解决

下载需要的文件

  1. 下载win7TTS语言包
  2. 按照zip中description.txt文件的安装顺序安装即可
  3. 重启电脑
  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 29
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 29
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值