作为一名对音乐产品尚不熟悉的新手,我对网易云音乐随机播放机制有着自己独特的观察和思考。这些见解主要源于我对相关资料的个人研读和分析,若存在疏漏之处,恳请各位不吝赐教。
不知道各位用户在运用音乐软件进行随机播放时,是否有过这样的体验:总是难以听到心仪的歌曲,同时发现许多曲目反复出现。这种使用过程中的困惑,促使我深入探究随机播放背后的算法机制及其引发的问题。
为了解这一现象,我在百度搜索引擎中输入了“音乐随机播放机制”作为关键词,随后在知乎、百度知道以及豆瓣等社区查阅了大量用户反馈。其中不乏这样的声音:“某些歌曲长时间未被播放,而另一些歌曲却反复出现”、“随机播放似乎是在已加载的歌曲库中随机选取”、“实际效果给人的感觉并非真正的随机,某些歌曲出现的概率远高于其他歌曲”、“系统优先播放用户最常听的几首歌曲,导致这些歌曲出现的频率越来越高”等。
用户选择使用随机播放功能,通常出于以下两个方面的考虑:一方面是希望听到歌单中较少被播放的曲目;另一方面则是在面临选择困难时,依赖随机播放功能来做出决定(这背后也反映了用户的一种从众心理或避免决策疲劳的心理需求)。
然而,根据网络上的用户反馈以及我个人的使用体验,可以发现随机播放功能主要满足了第二种用户的需求,而对于第一种用户的需求则关注不足,这也就导致了前面提到的用户抱怨。
通过观察可以发现,QQ音乐、虾米音乐以及其他音乐播放软件的随机播放功能都存在类似的问题,而且这类问题的反馈从2015年到2019年持续不断,这表明相关软件并未有效解决此类问题。
一般来说,音乐播放器的随机播放模式主要有两种:
1)当前歌曲播放结束后才随机生成下一首歌曲,即完全随机模式(Random算法):为了防止某些歌曲频繁重复或长期未被播放,这种模式并非简单的完全随机选择,而是需要结合用户的播放历史进行智能分析,需要较为复杂的算法支持,最终的结果是在随机的基础上进行优化。
2)将当前歌单中的歌曲顺序打乱,然后依次播放,也就是大家常说的伪随机模式(Shuffle算法):这种模式是目前较为流行的随机播放方式,它可以有效避免某些歌曲长期未被播放的情况,但同时也存在以下缺点:在该模式下,上下曲的顺序是固定的;当一个随机播放的歌单播放完毕后,系统会重新生成一个新的歌单进行播放,但相邻的两个歌单之间可能会出现用户感知到的“重复”播放现象。
根据相关问答资料的整理,大部分音乐播放软件采用的随机算法是“洗牌算法(shuffle)”。
简单来说,洗牌算法就是将一个从1到n的序列随机打乱,确保每个数出现在任意一个位置的概率相同。
将洗牌算法应用于音乐软件,就是系统在歌单内的歌曲中随机选取并进行排列,形成一个全新的歌单后再进行顺序播放,这就是我们所说的随机播放。
那么,在洗牌算法中,进行排列的总体是什么呢?
在此,我想提出一个初步的猜想:根据用户反馈和我个人的使用体验,我认为随机播放的总体包含四个方面,分别是全部歌曲(a)、最近播放的歌曲(b)、按播放量排列的歌曲(c)和用户喜欢的歌曲(d),在随机播放时,这四个总体被选取的比例分别为n1%、n2%、n3%、n4%(n1%+n2%+n3%+n4%=1),那么随机歌单中的歌曲总数S=a*n1%+b*n2%+c*n3%+d*n4%。
在深入了解了随机播放的原理之后,我们可以尝试分析一下随机播放过程中遇到的问题以及可能的解决方法。
首先,我将这个问题分为两个场景:
第一个场景是用户希望听到自己喜欢的歌单中的歌曲,这反映了用户的真实听歌喜好或习惯。在这种情况下,随机播放功能应该优先选择并排列用户喜爱的歌曲。第二个场景是用户当前没有特定的听歌偏好,希望听到一些与平时不同的歌曲,希望系统能够为他们推荐。这时,随机播放功能应该从用户歌单中的全部歌曲中进行随机筛选并排序。然而,这里又会出现一个新的问题。根据上文提到的随机播放算法的假设,最近播放的歌曲、按播放量排序的歌单和用户喜欢的歌曲都可以归为用户常听的歌曲类别,如果系统仍然使用传统的随机算法来生成随机歌单,那么就会出现随机播放的歌曲仍然是用户最常听的歌曲的情况,这显然不符合用户的期望。
针对这两个场景,我们可以分别探讨解决方案:
对于第一个场景,可以参考网易云音乐中的“心动模式”,从用户喜欢的歌曲中选取歌曲,并随机匹配与用户歌曲风格相似的歌曲进行播放。但是,“心动模式”目前只能在用户喜欢的歌曲中触发,在普通歌单的播放模式中并没有提供这一选项。因此,可以考虑将“心动模式”的功能扩展到普通播放模式中,作为一种随机播放模式供用户选择。对于第二个场景,则可以在现有的随机播放模式的基础上进行优化,例如适当降低播放量排序歌单和最近播放歌曲的选取比例,增加新增歌曲和不常听歌曲的选取几率;对于用户听歌时长小于30秒的歌曲进行筛选,在下次随机播放排序时不再将其纳入考虑范围。为什么有些歌曲会反复出现呢?
这是因为洗牌算法生成的序列是随机的,当用户一个随机播放的歌单播放完毕后,系统会再次对所有歌曲进行随机排序,重新生成一个新的随机播放歌单,那么这两个歌单之间必然会有歌曲重复出现。
为了减少这种情况的发生,可以通过降低已播放过的歌曲被再次选取的概率,或者在选取同一首歌曲时重新进行洗牌排序,从而降低此类问题出现的频率。
而有些歌曲几乎不会被播放,这与前面讨论的问题相关。随机播放的歌曲选取的总体是固定的,而且偏向于用户常听的歌曲,因此新增歌曲和不常听歌曲被选取的概率就非常小了。
由于洗牌算法下的随机播放列表是一种随机排列后顺序播放的列表,所以列表中的顺序是固定的。关于这个问题,用户并没有太大的意见,甚至有些用户赞同这种模式:“在随机播放模式中,可以通过上下曲切换来找到自己喜欢的歌曲”。
这可以说是洗牌算法的一个优势,但是目前音乐播放软件并没有充分利用这一优势。
在网易云音乐中,使用随机播放模式时,用户无法查看当前的随机播放歌单。用户只能在播放页面进行上下曲切换,而不能主动选择歌曲,有时需要切换多次才能听到想要的歌曲。
如果在不改变和优化算法的前提下,将随机播放歌单可视化,也是一个可行的解决思路。用户可以在列表中查看歌曲并自由选择,还可以对列表进行自定义,例如删除或调整随机播放列表中的歌曲顺序等,从而使随机播放的歌曲更符合用户的实际需求。
分析到这里,我产生了一个疑问:为什么用户反馈较多,而且许多程序员也提出了自己的见解和解决方案,但是市面上的音乐软件却迟迟没有进行改进呢。
各音乐软件在产品设计和开发过程中,必然进行了大量的市场调研和用户需求分析,而且在每个功能的设计过程中都会考虑到用户的多层次心理需求,设计的解决方案也是为了满足最大范围的用户需求。从该问题的反馈数量来看,相较于网易云音乐庞大的用户群体(据网易官方数据显示,2019年第二季度网易云音乐用户数突破8亿),这类问题的反馈确实只占很小的一部分。
而且,对于那些希望听到平时不常听到的歌曲的用户,网易云音乐也有“每日推荐”这类功能的解决方案。因此,不需要通过优化随机播放模式的算法来满足这部分用户的需求。
根据KANO用户需求理论,用户需求可以分为:基本型需求、期望型需求、兴奋型需求、无差异型需求和反向型需求。对于随机播放功能而言,属于音乐播放软件的基本型需求。如果缺少这一功能,用户的满意度会大幅下降,但如果优化了这一功能,用户的满意度也不会有显著的提升。
基于这一点,音乐播放软件也无需投入大量的人力和时间来优化此类功能。
随机播放功能本质上是一种机器计算的结果,随着人工智能技术的广泛应用和推广,结合人工智能的自我学习和快速计算能力,我相信在未来的计算和推荐功能中,会出现更符合用户需求的设计,随机播放功能也会变得更加“懂”我们。
题图来自Unsplash,基于CC0协议授权