vlambda博客
学习文章列表

不满意各大音乐 App 的推荐算法,我打造了一套听歌流程

一直希望找到一种方法,可以随时听到自己想听的歌。以专辑、歌单为单位来听歌都无法满足:一个艺人有那么几首歌喜欢,一张专辑往往也只有几首比较喜欢。后来发现,其实听歌可以分成听新歌、听老歌两个部分。听新歌的目的就是为了发现那些可以重复听的老歌。于是我试图建立一个下文所述的流程。有时听听新歌选出喜欢的歌,有时听听符合心情、场景的老歌。

另外需要注意的是,在不同的场景下,所需要的歌也不同。比如在运动的时候,只是需要一些动感的音乐,这时就打开一些音乐软件的运动频道就好;比如在通勤时,可以听一些新的专辑,可以操作手机的话,就可以把喜欢的歌添加到某个播放列表;又比如在心情低落时,可能只想听非常喜欢的歌,我会把之前标记了喜欢的歌重新拿来听听,往往效果很好。

在实体专辑时代,想听的歌很难随手听到。现在几乎所有歌都能点击几下获取到,但好像听歌的体验并没有提升多少。为什么听歌不能更智能、更符合个人习惯?我想一部分的原因是音乐版权的问题,没有一个平台能有所有歌曲的版权。另一个原因也许是,我们需要建立一个听歌的流程,一个适合自己的流程。

下面就谈谈流程建立的思路和方法,在 Mac 上可以通过「智能列表」来实现,iOS 上可以通过捷径实现,两种方法各有优劣。

听歌这件事

在前网络时代,听不同艺人不同风格的音乐是件成本高昂的事。而现在,这不再是一件难事。过去二十年间,唱片被 iTunes 替代,音乐平台又替代了 iTunes。

因为无数唱片的随手可得,我们再也不用费力就可以找到想听的那一张。然而,获取变得方便似乎带来了音乐的速食速朽。想听歌时却不知听什么,有时翻遍别人分享的歌单,也常常找不到自己喜欢的歌。有什么好听的歌吗?我有很多标记了「喜欢」的歌,怎么方便地把它们找出来听?这样的问题经常困扰着我。

算法是否比我更懂我

随着以豆瓣 FM 为代表的电台的出现,算法赋予它们识别我们喜好的能力,于是听什么歌这个问题的解决交给了远端的代码。但新的问题又出现了:

1. 算法不完美,有时推荐的歌不喜欢

2. 算法可以识别喜好,于是只推荐一些风格类似的歌

3. 算法无法识别当时的场景和心情

虽然音乐电台的出现创新了我们听歌的方式,但并没有解决所有问题。听歌是一个跟场景、心情有关的事,工作、学习、运动时要听相应的歌,高兴、悲伤时同理。我们不仅要方便地找到好听的歌,遇到喜欢的也要方便地留存下来,留存下来的也要能方便地重新拿出来听。

意识到问题所在后,下一步就是想办法拒绝算法的控制,试着制造适合自己的「算法」。技术赋予我们自由,应该利用它而不是被技术奴役。

建立自己的听歌流程

工具和内容是两个不同的部分,工具再好也需要探索适合自己的使用方式。内容是我们真正接触到的实体。其实,听歌的过程也可以建立工作流,我用工具来梳理内容,让那些通过了自己标准的歌留下来。更进一步,可以将它们分门别类放在一处,待之后随取随用。

和 GTD 的一些概念相类比,它也有 添加 - 处理 - 回顾 的不同阶段。当然,仅仅是为了说明的方便这样联系。听歌是一个快乐的事,没必要把它当成一件任务来完成。

不满意各大音乐 App 的推荐算法,我打造了一套听歌流程

歌曲输入(添加到 Inbox)

首先,这里说的输入是我们接触歌曲的途径。如果听歌只是一个很随意的过程,不需要整理,那么也就不用这样的流程。如果需要整理记录,并且之后会重新听曾经喜欢的歌曲,这样的流程或许是必要的。将歌曲添加到某一个音乐平台的收藏夹中更加方便,因此需要参考曲库的大小来选择平台。我根据自己的需求,选择的是国区的 Apple Music。

我们有很多听歌的场景,不同听歌场景也有不同的听歌需求,既会接触到新的歌也会听以前的老歌。有时听到一首喜欢的歌,找到它的乐队或歌手的作品,然后都添加到曲库里面。这下就有一些新鲜的歌了,然后就是慢慢听慢慢筛选的过程。我把不同的场景总结如下:

  • 特定场景泛泛地听歌:工作、学习、运动的背景音乐

  • 特定情绪类型:高兴、平和、悲伤时需要音乐助兴或陪伴

  • 特定歌手或风格:发现新的歌手、乐队,专门去听他们的歌

第一个场景接触到的大部分都是新歌,而且也没有时间把喜欢的歌添加到收藏。 第三个场景接触到的也都是新歌,但我们可以把听到的喜欢的添加到收藏,进一步处理。 第二个场景接触到的有新歌有老歌,有时候会听我们之前已经保存的播放列表。

再以我们通常听歌的平台为例,通常都是 曲库 / 我的收藏 / 我喜欢的歌 这样的层级结构(单纯的音乐电台没有「我的收藏」这一层级)。不管是歌单还是单曲,我们都可以从曲库添加到自己的收藏。

我们可以用添加专辑的方式、添加单曲的方式当作丰富「我的收藏」的入口。有时可能也会想听听某个乐手、乐队的歌,大多平台也有按此分类的添加方式。根据日常接触新歌、新专辑的不同途径,我把他们总结如下:

  • 电台:网易云音乐的心动模式 / 豆瓣 FM

  • 智能算法:Apple Music / Spotify 的智能推荐

  • 媒体:少数派的专辑推荐 / 其他音乐媒体推荐 / 各大歌曲排行榜 / 音乐类综艺

当我们把自己的收藏归于一处,就可以用一套标准来筛选、分类,加上一些自动化的手段就可以方便地想听什么就听什么。

找到喜欢的歌(处理任务)

寻找自己喜欢的歌的过程就像是捕鱼,遇到一首顺耳的歌就添加进自己的收藏。基本上所有平台都有「喜欢」的按钮,歌曲从自己的收藏到我喜欢的歌可以看作一个处理的过程,是一个给一首歌添加「喜欢」标签的动作。Apple Music、Spotify、网易云音乐都会根据你所标记喜欢的歌给我们推荐更多的歌曲。但是,如果想多维度地筛选,除「喜欢」标签外,可能还需要更多标签来丰富后续的筛选条件。

通常,听一首歌至多几十秒就能判断是否喜欢它。如果不喜欢,通常的动作是「跳过」。一首歌听过很多遍,而跳过次数很少,说明很喜欢这首歌。所以,我们也可以把「跳过次数」当作一个歌曲的属性标签。

Apple Music 有一个其他平台没有的功能:给每一首歌评分。这也可以作为一个重要的标签来使用。当然还有其他的标签,比如「播放次数」、「添加日期」、「上次播放日期」等等。

到这里也许就能回答「如何根据自己的习惯定制适合自己的算法」这个问题,我们的使用习惯可以有几个维度:评分、跳过次数、播放次数、添加时间、上次播放时间、喜欢与否。将它们组合就可以筛选出我们喜欢的歌。

两种歌曲整理方式:文件夹、标签

在做文件管理的时候,我们会把文件按文件夹分类,也会添加标签建立标签系统。对于每首歌来说,也可以借用类似的分类方式,可以把评分的星级、乐手、专辑等看成标签,把播放列表看作文件夹:

  • 文件夹 = 播放列表

  • 标签 = [星级、乐手、专辑、播放次数、跳过次数 ...]

评分是对于相对方便的设置标签的方式。我把常用的标签分别分配给 1-5 星。评分越高越喜欢一首歌,这是对评分的直观理解,所以我也保留了这种属性。

  • 5 星:特别喜欢的歌

  • 4 星:很喜欢、能激发某种情绪的歌

  • 3 星:有特点的、可能会喜欢的歌

  • 2 星:轻音乐,背景音乐

  • 1 星:非常熟悉的老歌,从 4/5 星退下来的歌

  • 0 星:新添加的歌,不喜欢的歌

由于现在没有哪个音乐平台的软件支持打标签,所以将星级当作标签仅仅是一个权宜之计。在一些不方便拿出手机操作的场合,遇到喜欢的歌可以之后再做处理,比如从历史记录里面翻出来评分。

不满意各大音乐 App 的推荐算法,我打造了一套听歌流程

通过评分和播放列表的交叉筛选,创建不同的歌曲组合加入待播清单。不同的条件组合筛选出来的歌可以是非常多样的,也可以满足不同的听歌需求。比如,在「运动」播放列表中的新歌,在「情绪角落」播放列表中的 5 星歌曲等等。

不满意各大音乐 App 的推荐算法,我打造了一套听歌流程

建立流程的最终的目的,就是找到自己喜欢的歌,然后在想听一些歌时能听到。有两个方向的筛选:那些喜欢的歌要标星,那些已经标星的歌不喜欢了要降级。这样一个动态的曲库就慢慢建立起来了。这个过程中需要我们花时间给喜欢的歌进行标星的梳理过程。是否值得花费这样的精力,见仁见智。

漏标是必要的

如果你想把所有喜欢的歌都标记,那么工作量就会很大。佛系一点可以更轻松。我想,如果你想体验「一个歌单里所有歌自己都非常非常喜欢」的感觉,可以尝试一下播放自己所有的 5 星歌曲,相信我,那感觉会值得这样的付出。找到自己的平衡点,让付出和回报保持在能让自己坚持下去的程度就好了。

用捷径统计听歌数据(回顾)

隔一段时间,我们也可以用捷径来记录一下这段时间喜欢谁的音乐,听了多少次之类的。可以统计一下播放次数最多的歌,播放最多的艺人,最喜欢的专辑等等。可以算是另外一种形式的生活记录。

不满意各大音乐 App 的推荐算法,我打造了一套听歌流程

具体实践的的一些细节

Mac 和 iPhone / iPad 不同实现方式

Mac 上的实现可以通过智能列表,重要的一点是可以动态更新和同步到 iOS 设备上。但如果你没有 Mac,在 iOS 上可以使用捷径实现相同的功能。另外,在 iOS 上使用捷径可以通过「添加日期」和「上次播放日期」进行过滤,而 Mac 上的智能不能方便地实现涉及日期计算的过滤条件。

捷径实现的方便性优于 Mac 的智能列表,我们可以随手修改不合适的条件组合。使用捷径进行回顾和统计也同样更加方便。其实这两个方法有各自的优势,可以灵活搭配来满足自己的需求。

把捷径添加到辅助触控或 Launch Center Pro

目前对捷径支持好、支持对歌曲评分的平台只有 Apple Music,而我听中文歌比较多所以开了国区订阅。另外,还有一个杀手锏功能:把捷径放在辅助触控里面。点开辅助触控 - 运行相应捷径 - 确认运行,这样可以非常方便地听歌。如果你不喜欢使用辅助触控,也可以用 Launch Center Pro 来运行捷径。

不满意各大音乐 App 的推荐算法,我打造了一套听歌流程

跳过

对于一首没有评分的歌,跳过次数 > 0 = 不喜欢的歌。举例来说,对一张新添加的专辑,一首歌播放几十秒如果不喜欢,直接跳过就好。不用担心之后再会听到。

添加时间

如果一张专辑添加太久而你还未做处理,就把它忘了吧。这个时间我设置的是一年,也可以是更短的时间。

播放次数

有时泛泛地听来不及处理一首新歌,播放次数 <= 3 & 跳过次数 < 1 = 待处理。

上次播放时间

如果不想听到最近播放过的歌,需要对上次播放时间的限制,以防止一首歌的反复出现。

把这些条件组合到一起,想听歌却不知听什么时就会运行一下这两个捷径,取决于是想听听新歌还是听听之前标记喜欢的歌。

因为之前添加的专辑都是可能感兴趣的,所以新歌的质量也不会太差。经过 0 星筛选会把它们变成 3 星;经过 3 星筛选的会变成 4 星或 5 星。

不满意各大音乐 App 的推荐算法,我打造了一套听歌流程

总结

用这套流程听歌已经将近一年,几乎每次听大于 4 星的歌曲,都能给我非常多的治愈能量。星级作为标签这一点也有一些弊端,捷径并没有修改一首歌评分的捷径(Toolbox Pro 中也只有将一首歌标记为喜欢)因此无法批量修改。所以,一旦确定了评分所对应的属性,之后想改变还是很难的。我相信会有不同的分类方式,也可以根据自己的需求进行调整。