我正计划开发一款音乐应用程序,其中包括一个查找类似歌曲的功能,就像KKBOX和Shazam正在做的一样,但我在这方面并不熟悉。我发现他们应用FFT对歌曲进行比较,这样用户就可以搜索到类似的歌曲。
然而,我在想,如果我生成歌曲的波形,然后直接比较歌曲的波形会怎么样。我想问一下,我的想法可能吗?
因为您的目标是找到"类似的";歌曲,比较2d波形是极不可能奏效的。然而,在立即拒绝之前,最好先探索一下你的方法的可行性。
我建议挑选一套5首歌曲
- 一首歌和一首你认为非常相似的歌
- 一首与第一首不同的歌曲,以及同一乐队在同一张专辑(或同一时间段(中的歌曲
- 1个完全不同的音频文件(例如,与有声读物或播客(
浏览librosa教程(https://librosa.org/doc/main/tutorial.html)和/或Medium上的一些演练(例如。https://towardsdatascience.com/extract-features-of-music-75a3f9bc265d),但在到达使用MFCC的零件之前停止。只需关注波形图像。
看看你歌曲的可视化效果,思考这个问题,原因是a(为什么波形比较应该起作用,以及b(为什么波形对比不起作用。
因此,考虑一下节奏、音色和时机等因素——用不同的乐器、不同的效果处理、不同的节奏或不同的顺序(同一首歌,但诗歌和合唱的顺序不同(演奏同一首歌曲会对波形产生什么影响。
抛开你将使用哪个波形(振幅?什么频率/频率?(这一不平凡的问题不谈,在这一点上,你应该看看只看波形有多少问题,以及为什么MFCC(或类似的(更好。此外,你会更好地考虑如何选择MFCC参数——你需要采样多少歌曲,什么时候开始采样。
你的想法可能吗?可能不是按照你的想法-也许你可以尝试一些方法,比如以某种方式转换歌曲的数据,然后比较这种表示(例如,观察振幅或节奏的变化(音频的问题是它在信号中封装了很多特征:
- 键
- 节奏
- 效果处理(例如混响(
- 仪器
- 音调
- 动力学
- 等等
观看音频混合教程,您将看到/听到在不实际更改播放歌曲的情况下,同一首歌曲的输出信号可以更改多少。
当好奇的人尝试"可能不起作用"的东西时,创新有时会出现,所以任何事情都值得一试,但一旦你自己弄清楚了为什么有些东西不起作用,接受常用的技术并以其他方式寻找创新的机会是有用的。