怎么使用JavaScript让你的浏览器说话

  

这篇文章主要介绍怎么使用JavaScript让你的浏览器说话,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

JavaScript是一种什么语言

JavaScript是一种动态类型,弱类型的语言,基于对象和事件驱动并具有相对安全性并广泛用于客户端网页开发的脚本语言,同时也是一种广泛用于客户端网络开发的脚本语言。它主要用来给HTML网页添加动态功能,现在JavaScript也可被用于网络服务器,如node . js .

1。最简单的例子

让我们来创建一个基础函数,这个函数的参数为我们想说的话或者词,最后让我们的浏览器说出来。我们将利用在大多数现代浏览器上都可以使用的原生APIspeechSyntehsis。

function 说话(句子),{   ,,,const  utterance =, new  SpeechSynthesisUtterance(句子)   ,,,window.speechSynthesis.speak(话语)   }//测试   说话(& # 39;hello  & # 39;);

信不信由你,以上的代码就是让大部分浏览器说出一句话所需要的一切!让我们来看看这里具体发生了什么。

我们创建的说()函数,该函数以词句为参数。我们创建了一个发声对象,他实际上是一个语言请求对象,其中包含了有关说什么和如何说相关的所有数据。

2。自定义语速和音调

让我们做一个稍微复杂一点的示例,尝试修改说出来的单词的速度和音调。

/* *   ,* @param 句子:要说的句子   ,* @param 沥青:,音调,取值范围(0,安康;2),默认值:1   ,* @param 率:,语速,取值范围(0.1,安康;10),默认值:1   ,*/function 说话(句子,,,,),{   ,,,const  utterance =, new  SpeechSynthesisUtterance(句子)      ,,,utterance.rate =,   ,,,utterance.pitch =,      ,,,window.speechSynthesis.speak(话语)   }

在上面的示例中,我们基于原来函数增加了音调和语速2个参数。在我们创建了发声对象之后,我们可以直接在发声对象上直接修改某些属性。但是,目前还不能通过构造函数或者setter方法来修改。

沥青(音调)是一个浮点数,取值范围是0到2,默认值是1。这个值的效果可能受到引擎或者声音的限制。

率(语速)是一个浮点数,取值范围是0.1到10,默认值是1 .

现在,如果我们使用简单的句子调用上面的代码,我们的浏览器就会以正常的语速和音调说出下面的话:

说话(& # 39;Hello  & # 39;,, 1, 1)

3。怎么调整音量

我们也可以像调整音调和速度一样调整音量,让我们来快速了解一下如何实现

/* *   ,* @param 句子:要说的句子   ,* @param 体积:,音量,取值范围(0,安康;1),默认值:0.5   ,*/function 说话(句子,,卷),{   ,,,const  utterance =, new  SpeechSynthesisUtterance(句子)      ,,,utterance.volume =,体积      ,,,window.speechSynthesis.speak(话语)   }

修改之前的代码,我们现在传入音量参数。音量也是一个浮点数,取值范围0到1,默认值是0.5 .

同样,目前没有办法通过构造函数或者setter方法来设置音量。现在,我们给这个函数传入自己想要的句子和音量就能听到想要的结果了。

4。常用的函数

speechSynthesis对象有一些可以派得上用场的函数。我们可以暂停,恢复,甚至取消语言的进度。让我们快速浏览一下:

const  utterance =, new  SpeechSynthesisUtterance (& # 39; Hello  & # 39;);   window.speechSynthesis.speak(话语);//,暂停,   window.speechSynthesis.pause ();//,恢复   window.speechSynthesis.resume ();//,取消   window.speechSynthesis.cancel ();

上面的代码将会说出我们想要的句子,并且这段语音会暂停,恢复,最终取消。你也可以在你的浏览器里面试一试上面的代码。

我们也可以通过speechSynthesis对象上的暂停属性来直接判断该段音频是否被暂停,它将会返回一个布尔值来表示该段音频是否被暂停了。

window.speechSynthesis.paused //,布尔

如果还有一些积压的等待读出来的句子怎么办?嗯,还有一个属性悬而未决,用来检查是否有任何等待说出来的语音。它返回一个布尔值,指示是否有待处理的语音。

const  utterThis =, new  SpeechSynthesisUtterance (& # 39; Hello  & # 39;);   const  utterThat =, new  SpeechSynthesisUtterance (& # 39; Hello  javascript # 39;);      window.speechSynthesis.speak (utterThis);   window.speechSynthesis.speak (utterThat);   window.speechSynthesis.pending;

怎么使用JavaScript让你的浏览器说话