如果您不太记得歌曲的名称,只能哼出旋律,该怎么办?

使用哼哼作响的旋律与其原始的和弦录音室录音相匹配的现有方法面临若干挑战。使用歌词,背景人声和乐器,音乐或录音室录音的音频可能与哼哼作曲的音乐完全不同。无论是出于错误还是出于设计目的,当有人在哼唱歌曲时,其音调,键,速度或节奏通常可能会略有变化,甚至可能有很大差异。这就是为什么这么多进行会将哼唱的曲调与歌曲的仅现有旋律或哼唱版本的数据库进行匹配,而不是直接识别歌曲。但是,这种类型的方法通常依赖于需要手动更新的有限数据库。

于10月推出,是Google Search中一种全新的完全机器学习的系统,该系统允许人们仅使用哼哼声的翻译来查找歌曲。与现有方法相反,此方法从歌曲的频谱图中嵌入旋律,而不会产生中间表示。这使模型可以将哼唱的旋律直接匹配到原始(和弦)录音,而无需每个轨道的哼唱或MIDI版本,也不需要其他复杂的手工工程逻辑来提取旋律。这种方法极大地简化了Hum to Search的数据库,使之可以不断嵌入来自世界各地的原始唱片(甚至是最新发行的唱片)进行刷新。

背景技术许多现有的音乐识别系统在处理音频样本之前将其转换成声谱图,以便找到良好的匹配。然而,在识别哼唱旋律的一个挑战是,哼唱曲调通常包含信息相对较少,通过如示出的的。哼哼声版本与相应录音室录音中相同片段之间的差异可以使用可视化,如下所示:

python深度学习识别音乐为谱子(利用机器学习系统进行哼曲识别)(1)

给定左侧的图像,模型需要从超过5000万个相似外观的图像(对应于其他歌曲的录音棚片段)的集合中定位与右侧图像相对应的音频。为此,该模型必须学习专注于主导的旋律,并忽略背景人声,乐器和声音音色,以及背景噪声或房间混响所引起的差异。为了用肉眼找到可以用来匹配这两个声谱图的主要旋律,一个人可能会在上面图像底部附近的线条中寻找相似之处。

先前使得能够发现音乐的努力,特别是在识别在诸如咖啡馆或俱乐部的环境中正在播放的录制音乐的上下文中,证明了如何将机器学习应用于该问题。于2017年发布到Pixel手机,使用设备上的深度神经网络无需服务器连接即可识别歌曲,进一步开发了这项技术,可提供基于服务器的识别服务,以实现更快,更准确的搜索超过一亿首歌曲 然后,下一个挑战是利用从这些发行版中学到的知识来识别相似的大型歌曲库中的嗡嗡声或演唱音乐。

机器学习设置开发Hum to Search的第一步是修改"即时播放"和"声音搜索"中使用的音乐识别模型,以处理哼哼声的录音。原则上,许多这样的检索系统(例如图像识别)以相似的方式工作。用成对的输入(此处是带有记录的音频的嗡嗡声或唱歌声对)训练神经网络,以为每个输入产生嵌入,随后将其用于与哼曲作响的旋律匹配。

python深度学习识别音乐为谱子(利用机器学习系统进行哼曲识别)(2)

为了实现哼曲声识别,网络应产生嵌入,使包含相同旋律的音频对彼此靠近,即使它们具有不同的乐器伴奏和歌声。包含不同旋律的音频对应该相距较远。在训练中,会为网络提供这种音频对,直到它学会产生具有此属性的嵌入。

然后,受过训练的模型可以生成与歌曲的参考唱片的嵌入类似的音乐的嵌入。因此,找到正确的歌曲仅是从根据流行音乐的音频计算出的参考唱片数据库中搜索相似的嵌入内容。

训练数据因为模型的训练需要歌曲对(已录制和演唱),所以第一个挑战是获取足够的训练数据。我们的初始数据集主要由演唱的音乐片段组成(其中很少包含嗡嗡声)。为了使模型更加健壮,我们在训练过程中增加了音频,例如,通过随机改变演唱输入的音高或速度来增加音频。最终的模型足以使人们唱歌,但对于嗡嗡声或吹口哨的人们而言效果不佳。

为了提高该模型在哼唱旋律上的性能,我们使用从现有音频数据集中生成模拟"哼唱"旋律的其他训练数据,是我们更大的团队作为项目的一部分开发的音高提取模型。SPICE从给定的音频中提取音高值,然后将其用于生成由离散音频音调组成的旋律。该系统的第一个版本将转换为。

python深度学习识别音乐为谱子(利用机器学习系统进行哼曲识别)(3)

后来,我们通过用神经网络代替简单的音频发生器来改进了这种方法,该神经网络生成类似于实际哼曲声或啸叫声的音频。例如,网络从上面的生成此或。

最后,我们通过混合和匹配音频样本来比较训练数据。例如,如果我们有来自两个不同歌手的相似剪辑,则可以将这两个剪辑与我们的初步模型对齐,从而能够向模型显示另一对代表相同旋律的音频剪辑。

机器学习的改进在训练Hum to Search模型时,我们从函数开始。,这种损失在各种分类任务(例如图像和。给定一对与同一旋律相对应的音频(嵌入空间中的R和P点,如下所示),三重音丢失将忽略源自不同旋律的训练数据的某些部分。这可以帮助机器改善学习行为,或者是当它发现另一种太"容易"的旋律,因为它已经离R和P太远时(请参阅E点),或者因为考虑到模型的当前性而太难了。在学习状态下,音频最终与R过于接近-尽管根据我们的数据,它代表了不同的旋律(请参见H点)。

python深度学习识别音乐为谱子(利用机器学习系统进行哼曲识别)(4)

我们发现,我们可以通过采取这些额外的训练数据(点H和E)考虑提高模型的精确度,即通过在一个批次的例子制订的模式的信心一般概念:如何确保是模型,所有它所看到的数据可以正确分类,还是所看到的示例不符合当前的理解?基于这种置信度概念,我们增加了一个损失,使模型的置信度在嵌入空间的所有区域都达到100%,从而提高了模型的。

上述变化,尤其是我们对训练数据的变化,扩充和叠加,使部署在Google搜索中的神经网络模型能够识别出唱歌或哼唱的旋律。当前的系统在歌曲数据库上达到了很高的准确性,该数据库包含我们不断更新的超过一百万首歌曲。这首歌的语料库仍然有成长的空间,可以容纳世界上更多的旋律。

python深度学习识别音乐为谱子(利用机器学习系统进行哼曲识别)(5)

要使用该功能,您可以打开最新版本的Google应用,点击麦克风图标,然后说"这是什么歌?" 或单击"搜索歌曲"按钮,然后可以哼哼声,唱歌或吹口哨!我们希望Hum to Search可以帮助您解决这种困扰,或者只是在您想要查找和播放歌曲而无需键入歌曲名称的情况下为您提供帮助。

python深度学习识别音乐为谱子(利用机器学习系统进行哼曲识别)(6)

,