所以我的大学项目是关于音乐推荐系统的。
我的老师没有说太多。但他只说它将使用基函数和卷积技术。
我想要一些关于如何创建这个项目的想法。
我已经在 MATLAB 中编程,并且了解 DSP 的基础知识,例如 DFT (FFT)、相关性、卷积等。
专家有什么想法吗?
我想通知这个音乐推荐系统将是基于内容的,它将使用相关技术来找到与基础信号的音乐相似性。
所以我的大学项目是关于音乐推荐系统的。
我的老师没有说太多。但他只说它将使用基函数和卷积技术。
我想要一些关于如何创建这个项目的想法。
我已经在 MATLAB 中编程,并且了解 DSP 的基础知识,例如 DFT (FFT)、相关性、卷积等。
专家有什么想法吗?
我想通知这个音乐推荐系统将是基于内容的,它将使用相关技术来找到与基础信号的音乐相似性。
许多推荐系统基于矩阵分解。
有一种称为卷积矩阵分解的技术,这可能是您老师所暗示的。
您可以在这里查看 Tutorial - Large Scale Matrix Factorization (IEEE Big Data 2016 Tutorials) for Convolutional Matrix Factorization。
因此,听起来您的老师正在寻找的是音乐曲目频谱图的卷积(或相关性)。
你开始(大概)有一个你想要类似的音乐曲目和一个可能的曲目数据库来推荐。对于所有歌曲,您首先计算一个频谱图(即对连续音频块的 FFT)。然后计算频谱图中每个 FFT bin 的幅度。这为您提供了每个频率区间中的能量估计值。然后,您可以简单地对您喜欢的曲目的频谱图和数据库中每个曲目的频谱图进行 2D 卷积。这将提供喜欢的曲目与数据库中所有其他曲目之间的相似性度量(为简单起见,您可以只计算相关性输出的总和)。您也可以使用 1D 相关来执行此操作,只需在每个频率上单独执行 1D 相关即可。然后只需将 1D 相关性的输出相加,即可获得所有频率的相似性度量。这种方式的好处是可以让您更加强调更重要的频率(例如低音)。具有最高相似性度量的曲目是推荐曲目。
简单但可能是有效的,并且是您的老师正在寻找的。
看看 Spotify 对卷积神经网络做了什么: 使用深度学习在 Spotify 上推荐音乐
傅里叶变换只不过是使用三角基函数(正弦和余弦)重写信号。卷积/相关可以写成傅里叶域中的乘法。所以你去。你的老师只要求一个基本的蛮力实现,这得益于使用卷积计算相似性。