当前位置: 首页 > news >正文

js纯前端实现语音播报,朗读功能(2024-04-15)

实现语音播报要有两个原生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; // 声音音量:1instance.rate = config.rate || 1; // 语速:1instance.pitch = 1; // 音高:1window.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();】才返回非空数组。

http://www.lryc.cn/news/339772.html

相关文章:

  • PostgreSQL数据库基础--简易版
  • 前端解析URL的两种方式
  • Linux的学习之路:6、Linux编译器-gcc/g++使用
  • 分享2024 golang学习路线
  • 【Linux】进程间通信——system V版本 共享内存
  • 【TEE论文】IceClave: A Trusted Execution Environment for In-Storage Computing
  • 【攻防世界】bug
  • 详解UART通信协议以及FPGA实现
  • 【算法】删除链表中重复元素
  • mysql防坑指南
  • 偏微分方程算法之混合边界差分
  • 中国八大古都,分别是哪8个?
  • 财务信息化与财务软件有何区别与联系?
  • ssm052游戏攻略网站的设计与实现+vue
  • SAP Credit Memo 到期日设置技巧
  • 软件开发安全设计方案
  • 【Zabbix】zabbix 软件监控
  • Vue Router 路由动态缓存组件
  • 数据结构:线性表————单链表专题
  • 多线程(54)JMM中的内存屏障
  • 什么是流量清洗?
  • 淘宝API(通过商品详情接口采集商品页面数据)请求说明文档|可接入测试key
  • 示例说明闭包函数
  • 【自媒体创作利器】AI白日梦+ChatGPT 三分钟生成爆款短视频
  • 把握零碎时间,开启长期副业兼职之旅!在家也能轻松赚钱!
  • HarmonyOS开发实例:【数字管家app】
  • 人工智能_大模型033_LangChain003_记忆封装Memory上下文控制机制_LCEL表达式语言---人工智能工作笔记0168
  • 持安科技与顺丰正式签约!共建零信任应用安全最佳实践
  • Elasticsearch分布式搜索
  • 【Unity 实用工具篇】 | UIEffect 实现一系列UGUI特效,灰度、负片、像素化特效