4

Spotify如何使用抖动算法随机播放歌曲?

 1 year ago
source link: https://www.jdon.com/63317
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Spotify如何使用抖动算法随机播放歌曲?


自 Spotify 服务推出以来,我们使用 Fisher-Yates shuffle 来生成播放列表的 完全随机随机 播放。
Fisher-Yates shuffle 是最漂亮的随机算法之一,令人惊讶的是,如此复杂的问题可以解决在某些编程语言中用 3 行代码解决。这是通过使用最佳操作次数和最佳随机数来实现的。

收听音乐的用户并不喜欢完美的随机性。

算法
这似乎是一个以前必须由其他人解决的问题。事实上,我们发现了一篇博客文章 The art of shuffling music  by Martin Fiedler,它解决了同样的问题。但是,他的算法很复杂,在某些情况下可能会非常慢,因此我们对其进行了修改以更好地满足我们的需求。
主要思想与抖动中使用的方法非常相似。假设我们有一张黑白图片,使用了几百个灰色阴影。

michelangelodavid.png?w=180
我们想通过仅使用黑色和白色两种颜色的像素来进一步简化图片。我们可以使用 随机采样:假设一个像素有 80% 的灰色阴影,那么它将有 80% 的机会变成黑色,20% 的机会变成白色。我们一个一个地处理像素,并根据原始灰度为每个像素随机决定其新颜色。然而,结果远不能令人满意。

michelangelodavid-try1.png?w=180
如您所见,黑色像素形成簇,并且还有大白点。如果黑点和白点分布得更均匀一些就更好了。Floyd–Steinberg 抖动等其他算法  避免了聚类并产生了更好的结果。

michelangelodavid-floydsteinberg.png?w=180
在上一张图片中看到的集群几乎完全消失了。

我们可以从抖动算法中获得灵感来解决同一艺术家的歌曲集群问题;我们将尝试将它们分布在整个播放列表中。

详细点击标题

用户反馈:
1、我不得不说,他们为洗牌所做的事情真的很糟糕。我有一个很大的健身房播放列表,经常听到相同的曲目,通常顺序相同,现在需要向下滚动并在随机曲目上按播放才能获得“新”顺序。
我理解他们所做的事情的动机,一个加权洗牌,只是在那个洗牌中使用我最听/最受欢迎的是愚蠢的。

2、这是我对 Spotify 的不满。我有一个播放列表,其中包含大约 800 首我喜欢的歌曲。它总是从大约 100 首最近添加的歌曲中播放。给我完全随机的。

3、我相信 Spotify 积极建议用户缓存歌曲作为带宽/成本节省措施。
我切换到 Apple Music 并用我最少播放的歌曲创建了一个智能播放列表,我对它的多样性感到非常满意。

4、多年前我放弃 Spotify 的原因之一是他们的 shuffle 非常糟糕。


Recommend

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK