ListenBrainz的同理心音乐推荐/播放列表引擎
项目描述
简介
Troi播放列表引擎将ListenBrainz的所有播放列表功能整合到一个方便的软件包中。此软件包与ListenBrainz集成,并提供了一个简单的接口来与其API交互。该引擎使用机器学习根据用户偏好生成音乐推荐。Troi播放列表引擎是一个托管在GitHub上的开源项目。
-
播放列表生成:通过管道架构实现的音乐推荐和算法播放列表生成,允许轻松构建自定义管道,输出播放列表。您可以在ListenBrainz的“为您创建”页面上看到这一功能,在那里我们展示了每周的混音和每周发现播放列表。播放列表生成工具采用API优先的方法,用户不需要下载大量数据,而是按需通过API获取数据。
-
本地内容数据库:使用这些工具,用户可以扫描磁盘上的音乐库或通过Subsonic API(例如Navidrome、Funkwhale、Gonic)下载元数据,然后解析全局播放列表(仅包含MBID的播放列表)到本地集合中的文件。我们还支持重复文件检测、集合中的热门标签和其他洞察。
-
播放列表交换:我们正在构建这个工具包以支持保存/加载多种格式的播放列表,希望打破音乐孤岛(Spotify、Apple等)的束缚。
该项目以Deanna Troi命名。
功能
播放列表生成
Troi可用于生成播放列表
- 用于从任何数量的来源创建播放列表的管道架构。
- 从API获取数据并馈送到Troi管道的数据源。
- 连接在一起的是称为补丁的管道元素。Troi包括许多内置补丁。
- 最大的补丁实现了ListenBrainz广播,可以根据一个或多个艺术家、标签、用户统计信息、用户推荐、LB播放列表和MB集合生成“广播风格”的播放列表。
- 生成的播放列表以JSPF格式输出,是XPSF播放列表的JSON版本。
Troi正在被用于在ListenBrainz上生成每周推荐(每周混音、每周探索)以及LB Radio。
数据集
为了实现这一目标,我们MetaBrainz基金会创建并托管了多个数据集,这些数据集可以作为此项目的一部分访问。例如,更稳定的API托管在我们的实验室API页面上。
ListenBrainz提供多个数据集
- 协作过滤录音,根据用户的先前收听习惯推荐用户应该收听哪些录音。
- 从用户最近的收听习惯中得出的用户统计信息。
- 可以用作流行度衡量指标的收听统计信息。
- 艺术家和录音的相似性数据
随着时间的推移,我们将继续构建和托管更多的数据集。如果API端点对更多的人有用,我们将将其提升为官方支持的端点,并确保它们始终在线更新。
数据库/内容解析
ListenBrainz内容解析器使用内容解析器将全局JSPF播放列表解析为本地音乐集合。
功能包括
-
ListenBrainz本地广播:允许您生成仅使用本地集合中的文件创建的广播风格播放列表;如果不可能,全局播放列表(通常带有MusicBrainz ID的JSPF文件)将尽可能解析为本地文件集合。
-
周期性混音:ListenBrainz周期性混音,但完全针对您自己的本地集合进行解析。这针对本地集合进行了优化,比同名的全局Troi补丁提供了更好的结果。
-
解析全局播放列表(通常是带有MusicBrainz ID的JSPF文件)到本地音乐集合。解析通过:MusicBrainz ID、元数据匹配或模糊元数据匹配进行。
-
元数据获取:这里的一些功能需要从ListenBrainz下载元数据来支持LB本地广播。
-
扫描本地文件集合。支持MP3、Ogg Vorbis、Ogg Opus、WMA、M4A和FLAC文件。
-
扫描远程Subsonic API集合。我们已测试Navidrome、Funkwhale和Gonic。
-
打印集合中重复文件的报告
-
打印集合中最常用的标签列表
-
打印无法解析的曲目列表以及它们所属的专辑列表。这使用户能够了解哪些曲目可以添加到集合中以改善本地匹配。
文档
有关Troi的完整文档可在troi.readthedocs.org找到。
终端用户安装
Troi可通过PyPi下载。
virtualenv -p python3 .ve
pip3 install troi[nmslib]
troi --help
Troi还依赖于nmslib-metabrainz以启用曲目与本地集合的模糊匹配。nmslib-metabrainz不是运行Troi的必需品,它仅用于模糊匹配,因此如果您在安装nmslib时遇到困难,可以省略它,如下所示
virtualenv -p python3 .ve
pip3 install troi
troi --help
开发版安装
注意:如果您在安装nmslib时遇到困难,它是可选的。从以下安装命令中删除nsmlib
Linux和Mac
virtualenv -p python3 .ve
source .ve/bin/activate
pip3 install -e .[nmslib,tests]
troi --help
Windows
virtualenv -p python .ve
.ve\Scripts\activate.bat
pip install -e .[nmslib,tests]
troi --help
用户指南
有关运行Troi的详细信息,请参阅我们的用户指南。
运行测试
troi test
troi test -v
troi test -v <file to test>
构建文档
要本地构建文档
pip install .[docs]
cd docs
make clean html
项目详情
下载文件
下载您平台上的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。