speechSynthesis没有声音

编程知识 更新时间:2023-05-02 01:03:01

目录

  • 前言
  • 问题解决思路
    • 1. 首先从代码中寻找答案,常用的speechSynthesis合成代码如下
    • 2. 分析
    • 3.解决
      • 下载需要的文件

前言

本片文章首先针对的问题是[前端使用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. 重启电脑

更多推荐

speechSynthesis没有声音

本文发布于:2023-04-24 22:48:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/dfa21908c6c6343c66682839618d3c21.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:声音   speechSynthesis

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 101506文章数
  • 26122阅读数
  • 0评论数