< output.length; ++i) {output[i].set(input[i]);//实现自定义的音频处理方法,这里只是为了演示把数据取出来又重新放进去~~}return true;//返回true表示当前处理节点仍旧处于活跃状态,用户可以根据自己的业务逻辑确定是否关闭该节点 。}}registerProcessor('distortion-processor', DistorationProcessor);//全局注册一下,保证可以创建AudioWorkletNode3.5 WebShare
通过WebShare API可以唤起系统原生的共享功能,在macOS和iOS系统上支持的渠道包括邮件、备忘录、短信、AirDrop等,但是在此之前由于只支持URL的共享,所以实用性并不是很强,也很少有Web页面会特地去使用这个功能 。但是在最新版的Safari中增加了对文件共享的支持,包括图片、视频、音频在内多种形式的内容都可以被分享出去,关于分享渠道,除了前面提及的邮件等,还可以分享到微信、QQ等三方App,甚至可以通过Extension的形式为自己的App在系统的共享功能中增加入口,这样就可以实现Web页面内容的快速社交化分享了~,调用也很简单,通过navigator.canShare()判断是否支持共享,通过navigator.share唤起共享,具体如下:
function share() {let file = new File([blob], 'memo.mp3');//这是使用前文Media Recorder API生成的音频文件let filesArray = [file];//注意这里需要array类型的入参,意味着一次可以共享多个文件if (navigator.canShare && navigator.canShare({files: filesArray})) {navigator.share({files: filesArray,title: 'memo.mp3',text:'I just created a really interesting recording!',})}}
3.6 Speech Recognition
这是一项很酷的功能,简单来说就是在Web应用中实现语音到文本的实时转换,至于转换的准确率可以不用担心,因为这套API在macOS上采用的就是Siri引擎,同时支持多种语言,只需要在api中明确需要转换的语言类型即可 。使用下面的方法就可以初始化并启动强大的识别功能了:
//start and stop speech recognitionvar recognition;function startRecognition(){if (webkitSpeechRecognition) {recognition = new webkitSpeechRecognition();recognition.continuous = true;//要求识别持续进行,直到停止 。recognition.interimResults = true;//设置是否允许临时结果,临时结果是识别的中间过程,这时候返回结果的isFinal = false 。recognition.lang = 'cmn-Hans-CN'; //普通话 (中国大陆)recognition.onresult = onRecognitionResult;//收到结果回调时执行的方法recognition.onend = onRecognitionEnd;//识别结束时调用的方法recognition.start();}}function stopRecognition(){if(recognition){recognition.stop();}}
在demo中笔者尝试用Media Recorder录了一段语音,然后使用Speech Recognition进行转换,测试下来整体感觉翻译的很流畅,速度很快,准确率基本上没有问题,需要注意的是由于需要使用Siri引擎,所以要在系统偏好或设置中打开Siri或听写功能 。具体的使用效果你们可以感受一下 。
文章插图
文章插图
文章插图
这部分功能看起来是比较值得期待的,语音输入作为一个交互入口,应该会有比较强的可用场景,比如语音搜索、在线笔记等 。
3.7 MediaSession
当用户在Safari中播放音视频时,macOS的状态栏和iOS的负一屏就会出现一个Now Playing widget,但是点击这个widget后会发现其实它只是展示了一个网页标题,并没有其他的任何信息,不过现在通过media session API就可以在widget中增加更丰富的内容,比如播放进度、快进、快退、暂停操作等,总之media session API在Web应用和系统的其他组件之间实现了媒体状态的共享,这也是WWDC21 很重要的一部分内容,更详细的内容可以参考另外一个session: Coordinate media playback in Safari with Group Activities [5].
4 关于Demo和调试为了便于大家调试本文提及的部分功能,我把demo的代码放在了这里[6] 。
可以使用Mac自带的Apache进行调试,调试的步骤如下:
- 运行 Apache $ sudo apachectl start
- 退出 Apache $ sudo apachectl stop
- 把工程文件夹放到以下位置中 /Library/WebServer/Documents
- 在浏览器中访问:在地址栏中输入地址 http://localhost/工程文件夹名称/,回车 。
5 总结为了增强用户体验和提高开发效率,Web开发近些年增加的亮点还是不少的,总体可以总结如下:
推荐阅读
- office怎么激活学生版 office怎么激活
- 混搭|和平精英:鹤鸣混搭抢先看!免费皮肤也能穿出高级感!
- AMD|华擎首次杀入显示器:支持AMD高级绝技
- 零基础能不能学Web前端开发? web是什么意思
- 生科医学|超1.6万例!世卫针对猴痘发布最高级别警报
- 斗篷|郑欣宜为爱瘦身有效果,黑色斗篷裙霸气高级,恋爱中的状态果然好
- 这些礼物小众又高级,建议收藏。 朋友过生日送什么礼物好
- 微软|苹果Safari被拒之门外:微软禁止WebKit内核浏览器上架商店
- 穿衣搭配|40岁后如何打造上班穿搭?分享4个实用技巧,轻松打造优雅高级感
- 有哪些高级的、含蓄的骂人的话?