下一代听歌识曲技术——从信号处理到深度学习

news2024/11/25 4:56:08

音乐丰富我们的生活;音乐传达人类的情感;音乐表达人类的艺术。人类文明的进程中离不开音乐这个载体,音乐也离不开人类的真情创作。在听到好听却没听过的歌曲时,如何快速准确得到该歌曲的歌名成为当务之急。LiveVideoStackCon 2022 北京站邀请到了腾讯音乐的孔令城老师,为我们介绍QQ音乐在听歌识曲方面的成熟方案。

文/孔令城

编辑/LiveVideoStack

a8a3267651eeb7909e559859fd5099f1.png

下午好,我是来自腾讯音乐的孔令城 ,很荣幸能够借助LiveVideoStack平台、代表天琴实验室,与在座的各位专家、大佬分享我们天琴实验室在多媒体、AI 领域所做的工作。

aced844032f287973cc529814e69afb6.png

我会通过以下四个方面来介绍我们天琴实验室在听歌识曲方面所做的工作。

-01-

经典听歌识曲系统

80403fd810413b6342c114a531e8197a.png

当特别想听某一首歌的时候我们会采取什么措施?熟悉的歌曲可以直接在音乐APP上搜索歌名。如果忘记歌名,搜索歌词也是可以的。如果在外面偶然听到一首歌,完全不知道歌名以及歌词,手速快的可以瞬间拿出手机使用听歌识曲,如果慢一点记住了旋律也可以用哼唱识别。歌名搜索、歌词搜索是基于文本搜索,而哼唱识别和听歌识曲是基于音频内容检索。基于音频内容检索,需要对音频内容进行分析。

959d5085544aaab3a558bfcaa3535aa6.png

怎么衡量一款听歌识曲效果的好坏?什么样的听歌识曲才是好的系统?QQ音乐的听歌识曲到底效果怎样呢?来看看用户的反馈。

467fde1983a2748fcdd8ddc5d3839ff6.png

用户的期望可以总结为曲库全、识别准、速度快、灵敏度高以及旋律识别的模糊性

79b53e05399de0af17e2ac71386c99d8.png

经典听歌识曲系统,主要技术是音频指纹技术。图片横轴可以看作精准性,纵轴看作时间颗粒度。音频指纹技术就是要在很短的时间内确定一首歌在音频层面是否一致。音频指纹非常适合听歌识曲。可以在一个很小的片段内精确地匹配到对应的歌曲。

4197adaf0cf08afdb486037073ac37d8.png

最基本的音频指纹提取流程如图所示。一段音频先进行预处理,然后进行分帧信号转变,随后提取特征,例如最经典的peak特征。随后将其Hash化再通过Hash表查询。

323a679cfc3628bb757c604772093a42.png

以上图为例:(a)是Document的频谱图与peak点,(b)是Query的频谱图与peak点,(c)中仅保留(a)中的peak点,(d)中仅保留(b)中的peak点,(e)是使用(d)中Query的peak点逐帧滑动匹配(c)中Document的peak点,滑动到10s的位置刚好重叠的点数最多并且超过某个阈值,那么我们认为Query的音频片段来自于Document的第10s。峰值点特征的优点很明显,对于普通的平稳噪声、突发的短时噪声、以及失真等都有较强的鲁棒性,同时极具辨识性,另外特征稀疏数据量少,便于后续检索。然而,对于庞大的曲库,采用目前(e)图表示的匹配策略是行不通的,因为Query要暴力与每一首歌曲进行滑动匹配。

e654f48d964440d768909b76597642d5.png

可不可以基于peak点直接建立hash表呢?实际上,每个peak点是有时间和频率两个维度构成的;但是因为同样的音频片段,在Query和Document上时间的绝对值是不一致的;如上页例子,Query的时间为0s的peak,在document中是10s,因此时间维度不能直接使用。而单独使用频率信息也不足以表达点的特征。

f8f98dd373c06b36c987777128a0c2f7.png

前人想到了一个非常巧妙的方法——不存时间的绝对值,只存时间的相对值。这样就可以得到Hash值。该值可以作为Key储存。有了Hash表检索效率就会加大加快。检索库并行扩展也得以实现。

93cf8474142a52d3044709f190c7e35d.png

当歌曲入库时就对歌曲进行热度分级,非常热门的歌曲会立刻加入到服务当中。相对冷门的歌曲依然会加入服务当中,但优先级不会那么高。背靠TME海量曲库,QQ音乐可以做到最快一秒识别,新歌入库识别零延迟。

6c6cde563122c97f9dbf23c0665b0c5f.png

以 3 6 9 12 15秒,不同时长为片段进行测试。音频维度,其精确率均为100%。音频维度是指Query和命中的歌曲,音频是一模一样的。但是现实中存在盗歌的现象,虽然音频维度一样,但是版本维度不同。

312f58cb2ba50854ed193810e0579623.png

即便是更短的片段时长,QQ音乐识别的精准率仍然保持在100%,尽管在更短的情况召回率降低,但在一定程度上也能提升用户体验。

ea2090690e2e387541e9f74d55d84a3f.png

使用经典听歌识曲系统,无结果中的样本中,翻唱歌曲占60%甚至更多。可以看到对一些检索库中不存在的翻奏例子或者翻唱的例子,经典听歌识曲系统无法识别。

9cd3f1f19f478305828976aee1a31675.png

从19年开始翻唱、改编歌曲呈爆发性增长。其中的原因我们也不言而喻。因此我们迫切需要进行技术更新。

-02-

下一代听歌识曲系统

想要解决上述的问题,就需要下一代听歌识曲系统。

f73522fe1fcfcda3ee71c4ab15ef8dcc.png

什么是翻唱?以画作为例,同样是蒙娜丽莎,不同艺术家可以创作出不同的版本。版本不同,但看起来都会令人想到是蒙娜丽莎。

507a9fbf1b08a5652a0595547706f9c7.png

图片可以直观感受,歌曲维度也有相应的定义。只要主旋律不改变,其他音乐要素(比如音色、速度,节奏等)任一改变就可以视为翻唱。

4fb4b3944b79f771cf64a5be9061992b.png

对于翻唱识别,业内同行已经有了很多较为成熟的方案,即全曲翻唱识别。但之前提到过,QQ音乐听歌识曲场景的识别是短片段,同行的解决办法不太适用于这样的场景。所以QQ音乐创新的提出了片段翻唱识别。

156a6a0ee51e2c64b4c49e9842fcde3f.png

QQ音乐采用度量学习提取Embedding。为了应对短片段的识别,输入进行了切片。HPCP特征也是传统翻唱识别中的经典特征。有了Embedding之后,就可以按上述提到的音频指纹检索系统进行检索。

05113af2e1c8a77f1e8ed2e4bdd351d1.png

输入Query之后,提取出其Embedding序列进行检索。检索结果中的SongID和Offset信息进行时间差值,针对每一个歌曲构建一个直方图。在同一个时间差之内,直方图出现峰值则认为匹配成功。

5b3a71542aabce0982def190bc3d0169.png

翻唱识别检索系统精确率高,Embedding序列之间可以交叉验证。召回率也高,Query抗干扰高。但缺点也很明显,序列的严格对齐,变速后无法满足时序要求,所以不支持变速;单个Query和Doc都要提取数百Embedding,索引检索开销大。

07bea8b711300ebac66929781878bfb3.png

目前QQ音乐增加了歌声ASR检索模块。在直播场景或者LIVE环境下,人耳可以将歌词听的很准,可以直接搜索歌词。这个时候使用歌声ASR检索更为方便。随着深度神经网络的发展,ASR发展也十分迅速。天琴实验室训练了一个针对歌声的语音识别系统,使用数万小时的歌声数据进行训练,实时率在0.3以内,字错误率15%左右。与业内通用ASR相比在歌词识别方面提升近40%。

8de7d84525da7991177311aa92c9fe55.png

将ASR嵌入到Embedding检索,结果融合后精确率将近90%,是一个不错的成绩。

eabd522027f9913d11dca9200a255128.png

当听歌识曲没有结果时,该系统就会启用。

9bd8b19b178de73fb7e08c0c40aeaa07.png

图中的是一些听歌识曲的入口,有Android桌面控件、鸿蒙hap、长按快捷方式和跨应用识别等。相信很多大家已经非常熟悉了。

-03-

听歌识曲技术应用举例

除了线上的场景可以使用到听歌识曲,还有哪些场景也可以使用到该技术呢?

41bfcc1d8fc8e65dbdf53f8ab7b914a6.png

在庞大曲库管理中,该技术也得以大展身手。曲库大有大的好处,也有大的难处。《孤勇者》非常非常火,有很多歌手想蹭热度,例如长音频、串烧、DJ版等。《孤勇者》类似的歌曲在曲库中多达上千首。

95040b851140d165d9f96930f4696e8e.png

对于最不能容忍的盗歌,QQ音乐做了三大类六小类的分类。一级盗歌分为直接盗用、截取盗用;二级盗歌分为拼接盗用、改编盗用和节目素材;三级盗歌则为词曲盗用。无论哪一种,都不利于音乐行业的正向长久发展。

94875c6218fb6f4dfe37f15b30a2ba81.png

QQ音乐首先会经过音频指纹技术进行曲库范围内的聚类,根据歌曲信息做盗歌的自动化打标。根据打标结果,对可以歌手进行重点挖掘,进行盗版歌手打击。并且打击结果及时反馈给业务端,针对作弊多的歌手,再次进行打击。这样的惩罚措施实施下来,盗歌曝光量下降了近80%。

76c05520160a1a9f451490d490a42f5b.png

翻唱和盗歌存在些许区别。我们对翻唱进行了五档同歌组体系划分,意在更好的在平台分发。不同档之间有着严格的从属关系。最严格的为绝对同歌组,具有相同的音轨。其次为严格同歌组,具有相同的录音。之后为同演唱同歌组,有相同的表演者。再往后为同词曲同歌组,其作品相同。最后为同曲同歌组,只有作曲相同。

b27db97f6faa834278aa295507212189.png

目前QQ音乐对其所有曲库都进行了这样的分组。使用的技术也是之前上文提到的那些。输出不同同歌组以更好的服务不同业务。

52a31f02f90ce53a089378180a20b812.png

该技术不仅仅可以应用在音乐行业,在直播中对于真假唱辨别也十分高效。

71b9b99dc756f275f6d78a4868f9bdf2.png

还有很多其他的应用,这里不一一介绍。

-04-

听歌识曲技术展望 

e68f46bfea39504b78f0a7338d737192.png

QQ音乐希望未来的听歌识曲可以有更多的个性化。用户维度,不同人喜好不同,有人喜欢原唱,有人喜欢翻唱;歌曲维度,同一个人对不同歌曲的版本有偏爱;场景维度,同一个人在不同场景下可能也有不同的选择。

38aad2fbf34aded9471d369253b4a795.png

我们也希望能和行业内的同行共享我们的技术,做大规模。QQ音乐进行了开源数据集发布,大家可以加入我们,一起将识别技术做大做强,在多媒体领域同频共振。谢谢大家。

参考文献:

[1] M. Muller, “Music synchronization,” in ¨ Fundamentals of Music Processing: Audio, Analysis, Algorithms, Applications, pp.355–385. Springer, Berlin, Heidelberg, 2015.


ed915f2531a2be243bbf81eab819c15a.jpeg

LiveVideoStackCon 2023上海讲师招募中

LiveVideoStackCon是每个人的舞台,如果你在团队、公司中独当一面,在某一领域或技术拥有多年实践,并热衷于技术交流,欢迎申请成为LiveVideoStackCon的讲师。请提交演讲内容至邮箱:speaker@livevideostack.com。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/447993.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网页学习-小试牛刀

网页学习 一、 网页组成二、HTML认知2.1 结构2.2 常用标签2.3 列表标签2.4 表格标签2.5 表单标签2.6 语义化标签2.7 字符实体 三、CSS认知四、JS认知 一、 网页组成 分为三大部分:HTML、CSS和JavaScript。 HTML(Hyper Text Markup Language&#xff0c…

根据端口号查询进程路径

研究背景: 在工作的时候,有时候我们会在服务器上部署很多API接口程式,每个程式都有不同的端口号,便于提供服务。当时间久了,我们需要对接口操作的时候,我们有可能会忘掉接口程式所在的路径,而只…

一文掌握如何使用Java操作文件与IO流

文章目录 1. 认识文件2. 文件的类型3. 操作文件3.1 属性3.2 构造方法3.3 常用方法 4. IO流4.1 字节流4.1.1 InputStream4.1.2 OutputStream4.1.3 flush刷新4.1.4 关闭文件close4.1.5 字节缓冲流 4.2 字符流4.2.1 Reader4.2.2 Writer4.2.3 Scanner4.2.4 字符缓冲流 5. 复制文件5…

C语言入门篇——语句篇

目录 1、空语句 2、表达式语句 3、复合语句 4、控制语句 4.1、C控制语句:循环 4.1.1、while 4.1.2、while里的break和continue 4.2.1、for 4.2.2、for里的break和continue 4.3.1、do while 4.3.2、do while里的break和continue 5、C控制语句&#xff1a…

Flink 实时数仓 (一) --------- 数据采集层

目录 一、数仓分层介绍二、实时需求概览三、统计架构分析四、日志数据采集1. 模拟日志生成器的使用2. 日志采集模块-本地测试3. 日志采集模块-打包单机部署 五、业务数据库数据采集1. MySQL 的准备2. 环境搭建3. 代码实现 六、Nginx 安装七、Maxwell 安装八、Canal 安装 一、数…

STM32 平衡小车之电机驱动

TB6612FNG简介 单片机引脚的电流一般只有几十个毫安,无法驱动电机,因此一般是通过单片机控制电机驱动芯片进而控制电机。TB6612是比较常用的电机驱动芯片之一。 TB6612FNG可以同时控制两个电机,工作电流1.2A,最大电流3.2A。 VM电…

通信方式基础知识

文章目录 前言一、分类方式1、串行通信和并行通信2、同步通信和异步通信3、单工、半双工、全双工通信 前言 南京的梧桐树可以鲨掉我的程度 一、分类方式 1、串行通信和并行通信 串行通信:按位顺序,占用引脚资源较少,速度较慢 并行通信&…

移除链表元素(链表篇)

给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 示例 1: 思路: ①直接使用原来的链表来进行删除操作。 ②设置一个虚拟头结点在进行删除操作 ①直接使用原来的链表…

【数据结构】- (带头结点)循环双向链表 - 详细实现思路及代码

目录 一、概述 二、循环双向链表 三、循环双向链表实现步骤  📌3.1 C语言定义循环双向链表结点  📌3.2 循环双向链表初始化  📌3.3 循环双向链表插入数据  📌3.4 循环双向链表删除数据  📌3.5 循环双向链表查找数…

【python中的多线程了解一下?】

基本说明 线程(Thread)是操作系统进行调度的最小单位,是进程中的一个独立执行单元。线程与进程相比,具有更轻量级、更高效率、更易调度、共享资源等优点。 在传统的单核CPU中,操作系统通过时间片轮转算法将CPU的时间…

各种通讯总线的学习记要

一、在B站板道题看到一个比较好完视频(爱上半导体) 我觉得将232和485之前先将串口通信,因为它们都是串口通讯的变种。 串口通讯: 串口通讯我们约定好帧格式和波特率,通讯正常起始位为低开始,8位数据位&a…

【ABAQUS文档阅读笔记】关于体单元、壳单元、梁单元 、truss单元的总体认识

我的主页: 技术邻:小铭的ABAQUS学习的技术邻主页博客园 : HF_SO4的主页哔哩哔哩:小铭的ABAQUS学习的个人空间csdn:qgm1702 博客园文章链接: 学习笔记,from abaqus document “getting start with ABAQUS…

【代码随想录】刷题Day4

1.交换链表 24. 两两交换链表中的节点 前后指针实现 1.没有元素或者只有一个元素无意义 2.给出一个前驱prev,以及用来交换的两个节点cur和next 3.我当时是这么想的,如果两个指针一起动,那么就要用cur和next同时判断结束,也许这个…

C#基础学习--异常

目录 什么是异常 try语句 异常类 catch子句 catch子句段 finally块 为异常寻找处理程序 更进一步搜索 一般法则 抛出异常 不带异常对象的抛出 什么是异常 异常是程序运行时错误,它违反了系统约束或应用程序约束,或出现了在正常操作时未预料的情…

Windows环境下JDK内置迭代器的简介

我是荔园微风,作为一名在IT界整整25年的老兵,今天讨论一下Windows环境下JDK内置迭代器。 相信大家已经注意到,为了让广大程序员能够更加方便地操作聚合对象,在Java、C#等编程语言中都提供了内置迭代器。 如果对这种迭代器还不了…

在JetsonNano上安装PREEMPT-RT实时核+IghEtherCAT主站的详细步骤

特别说明:由于本人空闲时间有限,此博客中所有内容均是从本人的个人笔记中摘抄出来,命令行大多以图片形式展示,不能提供复制粘贴功能敬请体谅。此外,第一部分关于在 Jetson Nano 上安装PREEMPT-RT 实时核的步骤比较详细…

企业工商四要素核验 API:有效应对商业欺诈和恶意交易的利器

引言 企业工商四要素核验是一种用于验证企业基本信息的方法,主要包括企业名称、社会统一信用代码、法人名称、法人身份证四个要素。这些要素是企业注册时必须提供的信息,通过对这些信息的验证,可以确定企业的真实性和合法性,通常…

【力扣-21】合并两个有序链表

🖊作者 : Djx_hmbb 📘专栏 : 数据结构 😆今日分享 : 英文文章里 : TL;DR 或者 tl;dr。 网上英文解释有两种,一种是Too long;Don’t read,另一种是Too long;Didn’t read。意思是:“文章太长了,读…

Stable Diffusion MacBookAir 手把手安装教程,以及checkpoint安装、Lora安装、civitai介绍。

目标: 本地部署Stable Diffusion 安装步骤: 安装git Git - Downloadshttps://git-scm.com/downloads安装python 3.10.6 Python Releases for macOS | Python.orgThe official home of the Python Programming Languagehttps://www.python.org/downl…

再捐1亿元种树治沙:蚂蚁集团持续七年支持内蒙古生态治理

今天(4月22日)是“世界地球日”,内蒙古自治区林草局与蚂蚁集团启动战略合作:由蚂蚁集团在三年内再捐资1亿元,通过公益项目“蚂蚁森林”支持浑善达克沙地的生态治理。这1亿元将用于当地林草生态的修复保护、沙化土地的治…