JavaScript纯前端实现语音播报和朗读功能

 更新时间:2024年04月16日 14:43:37   作者:宝,卡粉了  
这篇文章主要为大家详细介绍了JavaScript纯前端实现语音播报和朗读功能的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

实现语音播报要有两个原生API

分别是【window.speechSynthesis】【SpeechSynthesisUtterance】

项目代码

// 执行函数
initVoice({
  text: '项目介绍',
  vol: 1,
  rate: 1
})
 
// 函数
export function initVoice(config) {
  window.speechSynthesis.cancel();//播报前建议调用取消的函数,如有正在播报的话音,播报会任务被塞进入队列,只有等上一个语音结束才会执行下一个语音
  //获取语音包
  let listArr = window.speechSynthesis.getVoices();
  listArr = listArr.filter(item => item.lang.indexOf('zh-') > -1);
  if (listArr.length == 0) {
    console.error('没有可用的中文语音!');
  }
  //实例化播报内容
  let instance = new SpeechSynthesisUtterance();
  instance.text = config.text || '轻轻敲醒沉睡的心灵,慢慢张开你的眼睛,看看忙碌的世界,是否依然孤独的转个不停!'; // 文字内容
  instance.lang = config.lang || "zh-CN"; // 使用的语言:中文
  instance.volume = config.vol || 1; // 声音音量:1
  instance.rate = config.rate || 1; // 语速:1
  instance.pitch = 1; // 音高:1
  window.speechSynthesis.speak(instance); // 播放
  instance.addEventListener("end", () => {});// 监听播报完成状态,播完可以做些其它处理    
}

将函数拷贝到项目中,执行函数即可实现。

下面列出一些常用的执行方法

//获取可用的语音包,如果返回数组是空,则没有可用的语音包。不同浏览器的语音包数量是不一样的。
window.speechSynthesis.getVoices();
 
//instance是SpeechSynthesisUtterance的实例,绑定了语音包。将话语添加到话语队列中;当任何其他话语在它被说出之前排队时,它将被说出。
window.speechSynthesis.speak(instance); 
 
// 取消语音
window.speechSynthesis.cancel();
 
//暂停语音
// window.speechSynthesis.pause();
 
//恢复语音
 window.SpeechSynthesis.resume();

注意:在某些浏览器,必须先提前调用【window.speechSynthesis.getVoices();】方法,再异步执行上面【完整语音播报】再能播报语音。

原因是第一次【window.speechSynthesis.getVoices();】获取的数据是空数组。

第二次异步调用【window.speechSynthesis.getVoices();】才返回非空数组。

到此这篇关于JavaScript纯前端实现语音播报和朗读功能的文章就介绍到这了,更多相关JavaScript语音播报朗读内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  •  typeScript入门基础介绍

     typeScript入门基础介绍

    这篇文章主要介绍了 typeScript入门基础,TypeScript 是由微软开发的开源、跨平台的编程语言,是 javaScript 的超集,最终被编译为 javaScript代码。常常被简称为TS支持JS、ES语法,下文将继续其他基础介绍,需要的朋友可以参考一下
    2022-02-02
  • Jquery把获取到的input值转换成json

    Jquery把获取到的input值转换成json

    本篇文章主要介绍了Jquery把获取到的input值转换成json的相关知识,具有很好的参考价值。下面跟着小编一起来看下吧
    2017-05-05
  • javascript实现表格排序 编辑 拖拽 缩放

    javascript实现表格排序 编辑 拖拽 缩放

    这篇文章主要介绍了javascript实现表格排序 编辑 拖拽 缩放的方法,效果非常不错,只是兼容性还有些问题,有待优化。
    2015-01-01
  • JavaScript 进阶问题列表(各种js代码段108-155)

    JavaScript 进阶问题列表(各种js代码段108-155)

    从基础到进阶,测试你有多了解 JavaScript,刷新你的知识,或者帮助你的 coding 面试! :muscle: :rocket: 我每周都会在这个仓库下更新新的问题
    2024-11-11
  • JS+Canvas实现自定义头像功能

    JS+Canvas实现自定义头像功能

    本文主要为大家详细介绍了如何利用JS+Canvas实现自定义头像功能,文中的示例代码讲解详细,对我们学习有一定的帮助,感兴趣的小伙伴可以了解一下
    2022-06-06
  • js实现左侧网页tab滑动门效果代码

    js实现左侧网页tab滑动门效果代码

    这篇文章主要介绍了js实现左侧网页tab滑动门效果代码,涉及JavaScript页面元素的遍历及元素属性动态切换的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-09-09
  • JavaScript 变量、作用域及内存

    JavaScript 变量、作用域及内存

    这篇文章主要介绍了JavaScript 变量、作用域及内存,需要的朋友可以参考下
    2015-04-04
  • JavaScript从数组(数组对象)中删除特定数据的方法

    JavaScript从数组(数组对象)中删除特定数据的方法

    这篇文章主要给大家介绍了关于JavaScript从数组(数组对象)中删除特定数据的相关资料,js在前台界面中举足轻重,在使用js删除数组时遇到一些问题,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-09-09
  • JavaScript中对象属性的添加和删除示例

    JavaScript中对象属性的添加和删除示例

    用.为对象添加属性,用关键字delete删除属性,下面为大家介绍下对象属性的添加和删除,需要的朋友可以参考下
    2014-05-05
  • 使用js判断TextBox控件值改变然后出发事件

    使用js判断TextBox控件值改变然后出发事件

    这篇文章主要介绍了使用js判断TextBox控件值改变然后出发事件。需要的朋友可以过来参考下,希望对大家有所帮助
    2014-03-03

最新评论