为什么80%的码农都做不了架构师?>>>   

在vue项目中引入语音播报,使用的科大讯飞语音接入,

具体思路为每次接收到语音信息后存入一个数组,然后监听这个数组,开始冲第一个索引播放,并且同时根据vuex getter 来动态删减数量

给audio绑定ended事件来执行播放完成后播放下一个

播放结束后,根据ended事件来确认如果数组内数量为0,则移除该事件并置状态为无播放状态,当数组开始变化时,重新开始执行此播放行为

这里遇到个小问题,当要播放的信息异常时,比如数组内移除了该索引的数据,但是仍然播放到这个时,就会报错

Uncaught (in promise) DOMException: Failed to load because no supported source was found.

解决办法:

判断视频的networkState,如果值等于3,则不播放,跳过

- Media.networkState; //0.此元素未初始化 1.正常但没有使用网络 2.正在下载数据 3.没有找到资源

相关代码如下

  watch: {audio_list: {handler: function(val, old) {if (val.length !== 0 && !this.is_calling) {var self = thisthis.is_calling = truevar myAudio = this.$refs.audiomyAudio.preload = true// myAudio.controls = truemyAudio.src = val[0] //每次读数组第一个setTimeout(() => self.setAudio(), 100)myAudio.addEventListener('ended', playEndedHandler, false)myAudio.play()myAudio.loop = false //禁止循环,否则无法触发ended事件function playEndedHandler() {myAudio.src = val[0] //每次读数组第一个setTimeout(() => self.setAudio(), 100)myAudio.networkState !== 3 && myAudio.play()if (val.length === 0) {console.log('读完了')myAudio.removeEventListener('ended', playEndedHandler, false)self.is_calling = false}}}},deep: true}},

这个使用的时base64编码后的信息,

还试过百度的语音,由前端直接请求,返回的是blob对象数据。在demo测试时可以正常使用,但是引入项目中后,会一直报错

Uncaught TypeError: Failed to execute 'createObjectURL' on 'URL': No function was found that matched the signature provided.

百度没有找到解决方案,并且感觉百度的语音没有讯飞的听着舒服,就没有用这个,

我后来试了下,好像是由于在demo中返回的数据是blob对象,但是引入vue里后就变成了string类型的了,URL.createObjectURL 无法作用,如果再转为blob对象,赋值给audio也没反应了,没有查到原因,记录下

转载于:https://my.oschina.net/mdu/blog/1927919

vue内引入语音播报功能相关推荐

  1. vue实现自动语音播报功能,未解决。(已用js解决20220210)

    这个放不出来 <template><div><i @click="reader" class="el-icon-microphone&quo ...

  2. 实现百度地图导航Demo的语音播报功能

    上文中实现了在本地导入百度地图导航Demo,那么在此基础上如何实现导航的语音播报呢? 一.为该应用申请语音播报(也叫注册) http://developer.baidu.com/map/index.p ...

  3. 【App开发】有语音播报功能的摇号软件:演示视频、开发历程

    文章目录 1 故事背景 2 开发历程 2.1 技术选用 2.2 语音播报功能 2.3 生成随机数 2.4 前端页面编写 3 演示效果 1 故事背景 昨晚网上有人找我制作一个自动随机数摇号并语音播报出来 ...

  4. iOS 后台语音播报功能开发过程中的那些坑

      上个版本的开发计划中产品同学建议在我们的商家版App中做后台语音播报功能,在评审的时候我就在想,完全可以通过Push静默推送来实现后台播放音频来实现(后续事实证明,这是个大坑).   关于静默推送 ...

  5. php加入语音播报功能_PHP实现语音播报功能

    大家估计都知道现在很多AI音响能够给你播报天气,叫你起床...甚至能够接受语音指令!所谓的人工智能音响,听起来很高大上,都说PHP是最好的编程语言,今天我就带大家来实现一个语音播报功能!先大体说一个思 ...

  6. 前端实现语音播报功能

    近期接到需求,内容页中的文字要实现语音播报功能,语音生成已经存入数据库 var myAudio = new Audio(); //arr 中存放的是音频数据,数组的大小是不确定的 var arr = ...

  7. html5实现百度语音播报功能

    html5实现百度语音播报功能 总结 记录一下,html5调用百度语音接口实现语音播报功能,简单的完整案例 <!DOCTYPE html> <html> <head> ...

  8. APP收款语音播报功能讲解

    一.背景 比起主动扫码能确定收款多少与是否到账,扫二维码支付场景不能直接确认,需要核对客户付款截屏,目前微信.支付宝在扫二维码支付后,均支持收款方自动播报收款到账信息,为了秦丝APP有更好体验,也需要 ...

  9. MediaPlayer实现金额的语音播报功能

    推荐阅读: SurfaceView+MediaPlayer封装之路 Android学习资源分享合集(1) 最近写了一个金额的语音播报功能,已封装成依赖库到Github,希望对大家有所帮助. Githu ...

最新文章

  1. 让Python不在mac的dock上显示火箭图标
  2. 太原益学领军2021年高考成绩查询,益学领军 | 2020寒假高三拼命班火爆进行中
  3. 056_Object对象方法
  4. 服务器死机是怎么造成的?
  5. EelemntUI中e-form表单校验的使用以及表单校验的规则
  6. Json序列化提示缺少编译器要求的成员“ystem.Runtime.CompilerServices.ExtensionAttribute..ctor”...
  7. 自动利用webshell执行系统命令py脚本
  8. Dojo QuickStart 快速入门教程 (2) 基本框架
  9. xml学习总结(三)
  10. CreateProcess error = 2,系统找不到指定的文件
  11. 力扣141.环形链表
  12. VS2010团队开发调试器无法继续运行该进程,项目文件“”已被重命名或已不再解决方案中
  13. POJ 3984 迷宫问题 (Dijkstra)
  14. Codeforces-691C-Exponential notation(模拟)Java 以及输入的处理
  15. 处理数据spss乱码
  16. excel几个数相加等于某个数_EXCEL如何求出哪几个单元格里的数字之和等于某个特定值...
  17. php 公众号指定人发消息,微信公众号发送模板消息,发送消息到某个用户
  18. sai钢笔图层怎么移动某条线?
  19. csapp2e 家庭作业 4.52 4.53
  20. python 循环写入excel sheet_python 使用xlsxwriter循环向excel中插入数据和图片的操作...

热门文章

  1. Python 线程优先队列 PriorityQueue - Python零基础入门教程
  2. BugkuCTF-Crypto题rsa
  3. java txt 按行读取_java读取按行txt文件
  4. 骁龙660是32位还是64位_微软公布v2004最低处理器要求,放弃32位系统,你的CPU还能支持吗?...
  5. mysql查询按值多的排序_MySQL查询结果按某值排序
  6. android 弹窗ui,Android 弹出窗口与对话框 UI设计
  7. java for新循环_Java 8 新语法习惯 (for 循环的函数替代方案)
  8. ubuntu19 安装git_在Ubuntu 18.04上安装Git
  9. mysql增量脚本_mysql全量和增量备份脚本
  10. edges2shoes数据集下载_edges2cats