当你用网页在视频网站刷视频的时候,有没有碰到过一个 BGM 激起你内心的波澜,而你却不知道它的名字。此时只能打开手机进行听歌识曲,而通过一个浏览器的插件却更容易解决这个问题。不需要繁琐的掏出手机,也不会因为需要外放而干扰他人,更不会因为环境噪音而识别困难。
如果你恰好也有这个需要,不妨试一下云音乐出品的 Chrome 浏览器插件「云音乐听歌」,还可以直接进行红心收藏哦。也可以到插件官网预览实际运行的效果。
背景
目前 Chrome 商店上存在的听歌识曲插件,大都是国外出品,国内产品寥寥,对于国内音乐支持较差。既然云音乐有这个能力,我们希望将这样的功能覆盖每一个角落,传递音乐美好力量。与此同时市面上的插件大多还是基于 manifest v2 实现(相对于 manifest v3,安全性、性能、隐私性均较差),普遍的做法是将音频录制之后直接交给服务端,通过服务端进行指纹提取,徒增服务端计算压力,增加网络传输。 那么有没有办法既能使用 manifest v3 协议进行功能实现,同时将音频指纹提取这一计算放在前端呢?
Chrome浏览器插件新协议
本文的重心不在如何实现一个浏览器插件本身,如果你不了解插件本身的开发,可查阅 Google 官方的开发文档。
特别说明的是,manifest v2(MV2) 即将被废弃,在 2022 年逐步不接受更新,2023 年将会逐步不能运行,本文所有的内容都是基于更安全、性能更好、隐私更强的 manifest v3(MV3)进行实现。

协议升级对功能的实现方式也会带来一些变化,因为 MV3 更安全的限制,一些基于 MV2 灵活的实现方式(例如:执行远程代码、可以使用 eval、new Function(…) 等不安全方法)将不能使用。而这会对听歌识曲插件带来一些实现上的难题。
MV3 协议对插件实现核心影响点:
- 原有的 Background Page 使用 Service Worker 进行替代,这意味着在 Background Page 不再能进行 Web API 等操作。
- 远程代码托管不再支持,无法进行动态加载代码,意味着可执行的代码都需要直接打包到插件中。
- 内容安全策略调整,不再支持不安全代码的直接执行。WASM 初始化相关函数无法直接运行。
听歌识曲的实现
听歌识

本文介绍了如何在Chrome浏览器的manifest v3协议下开发一款听歌识曲插件,详细阐述了音频提取、指纹提取和特征匹配的实现过程,包括使用AudioWorkletNode进行音频采样、WASM进行指纹计算以及应对MV3的安全限制。
最低0.47元/天 解锁文章
428

被折叠的 条评论
为什么被折叠?



