语音 Speech Synthesis API非常容易实现。事实上,只需两行代码即可让您的网络应用与用户交流。

<script type="text/javascript">
    AudioPlayBystr('php是最美的语言');
    function AudioPlayBystr(str_tip){
        var msg =new SpeechSynthesisUtterance();
        msg.rate = 0.5; //播放语速
        msg.pitch = 1; //音调高低
        msg.text = str_tip;
        msg.volume = 10 ;//播放音量
        msg.lang="zh-CN";//语言类型
        speechSynthesis.speak(msg);//播放
        console.log(msg)
        msg.onstart=function(){console.log("开始播放会调用我")};
        msg.onend=function(){console.log("播放完成才会调用我")};
        msg.onpause=function(){console.log("播放暂停才会调用我")};
        msg.onresume=function(){console.log("播放重新开始才会调用我")};
        msg.onerror=function(error){console.log("播放出现错误才会调用我"+error)};
    }
</script>

https://unnue.com/article/30

Speech Synthesis API非常容易实现。事实上,只需两行代码即可让您的网络应用与用户交流。

var utterance = new SpeechSynthesisUtterance('Hello Treehouse');
window.speechSynthesis.speak(utterance);

speechSynthesis 接口

  • speak(SpeechSynthesisUtterance)- 这个方法应该传递一个实例SpeechSynthesisUtterance。然后它会将此添加到需要说出的话语队列中。
  • cancel() - 此方法将从队列中删除所有话语。如果当前正在说话,那么它将被停止。
  • pause() - 此方法将立即暂停正在讲话的任何话语。
  • resume() - 此方法将使浏览器恢复说出先前暂停的话语。
  • getVoices() - 此方法返回浏览器支持的所有语音的列

speechSynthesis属性 默认是false

  • pending-true 如果队列中有尚未开始说话的话语。
  • speaking- true 如果当前正在说话。
  • paused- true 如果当前暂停了话语。

SpeechSynthesisVoice 属性

  • name - 描述语音的人类可读名称。
  • voiceURI - 指定该语音的语音合成服务的位置的URI。
  • lang - 此语音的语言代码。
  • default- true如果这是浏览器使用的默认语音,则设置为。
  • localService - API可以使用本地和远程服务来处理语音合成。如果此属性设置为true语音合成,则此语音由本地服务处理。如果false是正在使用的远程服务。
该text属性允许您设置您希望说出的文本。这将覆盖先前传递给SpeechSynthesisUtterance构造函数的任何文本。
utterance.text = 'Hello Treehouse';
该lang属性使您能够指定文本的语言。这将默认为HTML文档的语言。
utterance.lang = 'en-US';
该volume属性允许您调整语音的音量。应在此处指定介于0和1之间的浮点值。默认值为1。
utterance.volume = 1;
该rate属性定义了应该说出文本的速度。这应该是介于0和10之间的浮点值,默认值为1。
`utterance.rate` = 1;
该pitch属性控制文本的高低。这应该是介于0和2之间的浮点值,值为1是默认值。
utterance.pitch = 1;

注:本volume,rate和pitch属性不被所有的声音支持

监听SpeechSynthesisUtterance事件

  • onstart- start当话语开始被说出时,事件被触发。
  • onend- end一旦说出话语,就会触发事件。
  • onerror- error如果发生阻止说出话语的错误,则触发该事件。
  • onpause- pause如果话语在说话时暂停,则会触发事件。
  • onresume- resume如果暂停说话暂停,则会触发该事件。
  • onboundary- boundary只要在说出话语时达到单词或句子边界,就会触发事件。
  • onmark- mark语音合成标记语言(SSML)文件中到达“标记”标记时触发事件。我们在这篇文章中没有涉及SSML。只要知道可以使用基于XML的SSML文档将语音数据传递给话语。这样做的主要优点是,在构建具有大量需要合成的文本的应用程序时,可以更轻松地管理语音内容。
var utterance = new SpeechSynthesisUtterance('Hello Treehouse');

utterance.onstart = function(event) {
    console.log('The utterance started to be spoken.')
};

window.speechSynthesis(utterance);

#检查浏览器支持
if ('speechSynthesis' in window) {
    // You're good to go!
} else {
    // Ah man, speech synthesis isn't supported.
}

4人点赞

CSS/JS



作者:LeftJoin
链接:https://www.jianshu.com/p/0fe532e959f9
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值