当前位置: 首页 > 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://www.lryc.cn/news/589267.html

相关文章:

  • 【C++】神奇的AVL树
  • Java项目:基于SSM框架实现的学生档案管理系统【ssm+B/S架构+源码+数据库+毕业论文+开题报告】
  • k8s之Attach 和 Mount
  • Oracle日期时间函数说明及与MySql区别说明
  • 设计模式一: 模板方法模式 (Template Method Pattern)
  • GeoTools 工厂设计模式
  • MySQL高级篇(二):深入理解数据库事务与MySQL锁机制
  • 智驾芯片软件分层测试
  • Spring 中 @Component和@Bean注解的区别
  • 背包问题(包括路径统计)
  • zynq分频的例子
  • HTML的重要知识
  • 自己训练大模型?MiniMind 全流程解析 (一) 预训练
  • Vue框架之模板语法(插值表达式、指令系统、事件处理和表单绑定)全面解析
  • 代码随想录Day21:二叉树(修剪二叉搜索树、将有序数组转换为二叉搜索树、把二叉搜索树转换为累加树——全递归版本以及总结)
  • JavaDemo——使用CGLIB动态代理
  • 46. 携带研究材料(01背包二维数组)
  • (李宏毅)deep learning(五)--learning rate
  • Spring应用抛出NoHandlerFoundException、全局异常处理、日志级别
  • 游戏加速器核心技术:动态超发
  • Postman + Newman + Jenkins 接口自动化测试
  • 【PTA数据结构 | C语言版】二叉树层序序列化
  • MYSQL练习2
  • UVM(1)—配置环境
  • 3分钟搞定!用ChatGPT+工具生成流程图超简单(附提示词)
  • 基于 AI 的大前端安全态势感知与应急响应体系建设
  • 证明在赋范线性空间中,如果一个闭子空间内的点列弱收敛于空间中的一个点,那么这个点也必然属于该闭子空间
  • 稳定细胞系构建|蛋白表达细胞株|高表达细胞株
  • 备忘录设计模式
  • Python+Selenium自动化爬取携程动态加载游记