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

pc浏览器页面语音播报功能

pc浏览器页面语音播报功能
分两种做法:
1:定时器轮询接口查询是否有新消息,如果有调用浏览器自带的语音播报功能
2:websocket推送消息,前端监听即可,如果有也是调用浏览器自带的语音播报功能

下面先说下第一种做法:
做的时候首先第一个坑就是:
浏览器为了用户体验默认是禁止语音功能的,除非用户手动设置了白名单
第二个坑就是:
如果长时间打开页面,且页面可能会后台运行的话,可能会导致浏览器为了节约内存自动修改定时器的间隔时间,比如我之前就是设置的10秒查一次,结果他自动改为了一分钟查询一次!!!坑的不要不要的!
解决方法:
1: 先打开这个设置页(chrome,其他浏览器可以设置里搜下): chrome://settings/content/sound
然后按照截图里的设置(1,选择网站可以播放声音,然后点击下面的添加按钮,把你的前端页面域名加进去)在这里插入图片描述
2.使用**new Worker()**来重写定时器,后期再补

下面说第二种方法:
这个也需要做浏览器配置,需要用户配合,下面是代码

utterance: any = null;ws: any = null;initWebSokect() {this.utterance = new SpeechSynthesisUtterance("您有新消息");const voices = window.speechSynthesis.getVoices();this.utterance.voice = voices.filter(function (voice) {return voice.localService == true && voice.lang == "zh-CN";})[0];console.log("---initWebSokect");const AuthToken = localStorage.getItem("AUTH-TOKEN");let url: any = API_URL.replace("https", "wss");this.ws = new WebSocket(url + "/ws/xxxx", [AuthToken]);this.ws.onopen = () => {console.log("WebSocket已打开");};this.ws.onmessage = a => {console.log(a, "--onmessage");if (window.speechSynthesis.paused) {window.speechSynthesis.resume();}// 播放文本语音window.speechSynthesis.speak(this.utterance);this.getMessageCount();};this.ws.onerror = a => {console.log(a, "--onerror");};this.ws.onclose = a => {console.log(a, "--onclose");};}

文章转载自:
http://christocentrism.kjawz.cn
http://amiable.kjawz.cn
http://acidaemia.kjawz.cn
http://balsamic.kjawz.cn
http://akene.kjawz.cn
http://aureus.kjawz.cn
http://aortography.kjawz.cn
http://aimless.kjawz.cn
http://androphile.kjawz.cn
http://antipatriotic.kjawz.cn
http://affluence.kjawz.cn
http://anthropometric.kjawz.cn
http://antideuteron.kjawz.cn
http://chappal.kjawz.cn
http://bucovina.kjawz.cn
http://cay.kjawz.cn
http://cheekiness.kjawz.cn
http://batangas.kjawz.cn
http://aaal.kjawz.cn
http://aircondition.kjawz.cn
http://bilious.kjawz.cn
http://algidity.kjawz.cn
http://adiabatic.kjawz.cn
http://booklet.kjawz.cn
http://attar.kjawz.cn
http://adamite.kjawz.cn
http://accrescence.kjawz.cn
http://algetic.kjawz.cn
http://chimpanzee.kjawz.cn
http://chromeplate.kjawz.cn
http://www.dtcms.com/a/281116.html

相关文章:

  • 多路文件IO的几个模型
  • K-means 聚类在肺炎患者分型中的应用(简单示例)
  • 轻轻松松带你进行-负载均衡LVS实战
  • 随机奖励能提升Qwen数学表现?本质是数据污染
  • brupsuite使用中遇到的一些问题(bp启动后浏览器无法连接)/如何导入证书
  • YCQ340汽油机气缸体总成设计cad【8张】设计说明书
  • 模拟C++简易配置系统(模板类 + 全局管理)
  • 一区 Top (HPJ) | WGAS+WGCNA分析文章套路
  • 零基础学软件测试:超详细软件测试基础理论知识讲解
  • 【实时Linux实战系列】使用系统调用实现实时同步
  • Java项目:基于SSM框架实现的学生档案管理系统【ssm+B/S架构+源码+数据库+毕业论文+开题报告】
  • 智能体技术深度解析:从概念到企业级搭建指南
  • 自学java,什么书比较好?
  • MaxKB使用笔记【持续ing】
  • LeetCode 1888. 使二进制字符串字符交替的最少反转次数
  • 维基框架发布 1.0.11 至中央仓,深化国产化 DevOps 生态整合
  • 3-Nodejs-使用fs文件系统模块
  • kotlin的自学笔记1
  • 文心一言开源版部署及多维度测评实例
  • Listener(监听器)
  • 拓扑排序一>可达性统计
  • [WUSTCTF2020]朴实无华
  • Vue 3的核心机制-解析事件流、DOM更新、数据请求、DOM操作规范及组件库DOM操作的解决方案
  • 日记_7.14_实际开发的进步
  • 使用Spring Cloud LoadBalancer报错java.lang.IllegalStateException
  • Wordpress登录数据库连接失败的问题
  • Web攻防-PHP反序列化字符逃逸增多减少成员变量属性解析不敏感Wakeup绕过
  • 网络:TCP序列号和滑动窗口,顺序保证
  • 【R语言】警告conversion failure on ‘中文字符‘ in ‘mbcsToSbcs‘: for 注 (U+6CE8)
  • 枪机、支持POE、4G连接交换机实现多屏幕显示