是否有任何算法可以创建不需要大量数据库(或与可公开访问的数据库一起使用)的播放列表?



有没有任何算法可以自动创建一个相互配合良好的歌曲播放列表 - 类似于iTunes Genius等服务 - 单个开发人员可以实际实现?它应该a)不需要任何类型的远程收听习惯数据库等,或者b)需要这样的数据库,但使用免费提供的数据库。

我这样做了,我使用了Tomasz描述的 last.fm 数据库。 我没有直接使用"相关艺术家",而是通过比较与不同艺术家相关的标签来构建我自己的关系图(这不是LCFSETH建议的方法 - 我有相当多的音乐,我想探索"自然"连接,这些联系可能不是"正常"播放列表中的常见合作伙伴;我也不确定相关艺术家的一致性如何)。

我还使用本地数据库来缓存来自 last.fm 的数据,因为对 API 的调用是速率限制的,我尝试使用 API 的其他部分来改进/规范化我从 MP3 标签读取的信息。

生成一个有用的相关艺术家的图表实际上非常困难;主要是因为图表中的某些节点自然比其他节点更重要。 如果您不"均匀"图表,那么您的播放列表将继续返回到"重要"艺术家。

最终的结果确实效果很好,因为音乐的选择在"中心主题"和变化之间取得了很好的平衡。 但是实现一点也不完善,图形的计算可能需要很长时间(几个小时),程序在运行时占用了相当多的内存,而且它似乎仍然比预期的多玩猫王科斯特洛;

如果您有兴趣,代码在 http://code.google.com/p/uykfe/

从我作为用户的角度来看,最好的部分是它可以"实时"更新罗技媒体服务器(挤压服务器)播放列表,并在列表为空时添加新曲目。 这在继续您"手动"选择的任何音乐时效果非常好。 当然,它也可以生成一次性播放列表,最后,通过调整参数,您可以在音乐收藏中获得一种"随机漫游"——它会播放相关的曲调,但慢慢地从一种风格漂移到另一种风格(事实上,这实际上是"默认"模式 - 为了让它保持单一主题,我需要额外的逻辑来偏向它之前播放的任何音乐)。

PS 另外,将最终图表转储到 Gephi 真的很酷 - 我把它打印出来,现在它被钉在墙上......

PPS 我还尝试了MusicBrainz数据库,从理论上讲,这听起来像是一个很棒的资源。 但在实践中,它过于复杂且记录不足。

我不知道iTunes Genius,但我认为 last.fm 数据库和API可能对你有用。每次您看到任何曲目时,它都会根据其他用户的偏好向您显示类似曲目的列表。可以使用track.getSimilar API 方法获取相同的信息。

大多数这些数据库背后的想法是查看其他用户在听给定歌曲后听了什么。这些统计数据的准确性取决于用户数量,因此可能很难在本地使用它。算法本身并不难实现。另一种方法是根据流派、歌手对歌曲进行排序......这些信息通常嵌入在歌曲中,但并非总是如此。Winamp 具有此功能,但它不适用于旧歌曲,除非您手动设置信息或使用在线歌曲数据库。

最新更新