对于我这样一个音乐控来说,学习工作时没有音乐是万万不行的。在网易云音乐云音乐面世之前,我总是在QQ音乐,百度音乐等播放器之间徘徊,当时也不够文艺,不知道豆瓣FM的存在。

第一次接触云音乐被其吸引的原因有二,第一是开门见山先答十道题,根据答案生成个性化推荐,给人耳目一新的感觉。第二是每首歌下面的评论区,许多内容能和自己产生共鸣。这两点让我对这款软件颇有好感。

如今在云音乐听歌一万有余,之所以让我坚持下来的原因也有二,首先是对私人FM产生依赖,能通过私人FM发现新的精彩,其次是云音乐对评论区的维护,保持了云音乐评论文化的纯净,不像网易新闻那样烂俗,也没有QQ音乐弹幕那么幼稚。

其实云音乐的社区也是一个留住人的重要因素,在这里不表。

近日在美帝,发现QQ音乐、网易云音乐等客户端大部分音乐因为版权问题无法播放(这个时候开始念着墙内的好了)。我便探索了一下老美都在用什么播放器。

我发现了两款软件,一款叫Pandora,另一款叫Spotify。Pandora其实是一个网站,只提供在线的流媒体服务。

使用Pandora已经有几天,它就像云音乐的私人FM一样,只有电台功能。令我兴奋的是,这几日使用体验非常棒,超越了我对云音乐私人FM的体验。具体表现在他推荐的歌曲有90%我都听过,而这一切仅仅基于我对AC/DC一首《High To Hell》的点赞。

Pandora出色的体验激发了我对其音乐推荐机制的好奇心,今天就用这篇文章来给大家介绍一下目前主流在线音乐播放器的音乐推荐机制,以网易云音乐和Pandora为例。

1.亚马逊,推荐系统的鼻祖

推荐系统从字面理解就是给人们推荐东西的一个系统,关于推荐系统的研究可追溯到上世纪九十年代。互联网的出现,是推荐系统应用有了更广泛的空间和可能。真正把推荐系统应用到实际生活的是美国电子商务网站亚马逊,亚马逊于二十一世纪初率先在其商品详情网页推荐和这个商品类似的商品。

现在推荐系统一般是指“个性化推荐系统”。举个例子,我听周杰伦的《范特西》,你给我推荐《依然范特西》,这种推荐是无意义的,因为是人都知道同一歌手不同作品之间具有关联性,推荐系统显得多余。那么所谓个性化推荐系统就是指根据你个人的特点,给你提供针对你个人兴趣的个性化推荐内容。

从亚马逊开始,随着互联网的发展,电子商务网站例如淘宝等,也有了自己的推荐系统,到后来社交网络兴起,基于社交网络网络的社会化推荐开始成为热门话题,因为一个社交网站对你的第一印象很大程度上决定了你的去留,这就是为什么微博、Facebook等网站刚开始就要给你做推荐,让你填资料,让你做选择,都是为了能提供精准的好友、大V和兴趣推荐。

到如今,推荐系统的应用有多方面,例如以“今日头条”为代表的个性化新闻推荐客户端,以“豆瓣”为代表的个性化兴趣社区,以Foursquare为代表的基于地理位置的推荐系统,以Google Adsense为代表个性化广告服务提供商。当然,还有我们今天的主角,基于个性化推荐的音乐播放器。

2.云音乐如何推荐?

先介绍网易云音乐的推荐方法吧,这也是大多数播放器通用的推荐模式。目前互联网上还没有云音乐官方介绍其推荐机制的文章,不过根据云音乐这个软件的输入(用户行为、用户资料、社交关系、曲库、歌单等)以及输出(推荐歌单、私人FM、每日歌曲推荐、相似歌曲、喜欢这首歌的人等)可以大致判断它使用了什么推荐算法。

根据知乎上一个热门话题“网易云音乐的歌单推荐算法是怎样的?”(点击文末阅读原文查看)和我本人的粗浅理解,我认为目前网易云音乐主要运用了以下几种推荐方法:

1.基于item的协同过滤

2.基于user的协同过滤

3.基于tags的推荐

4.混合(Hybrid)推荐

前两种推荐方法都可以归结为协同过滤(Collaborative Filtering)。此算法乃是亚马逊发家之本,也是推荐系统领域最经典的算法。如何理解Collaborative这个词,可以理解为协作,即通过不同对象之间相互影响,共同作用,来从普通对象中过滤出合适的推荐对象。

那么算法1和算法2的区别是什么呢?我们先建立一个播放器使用场景:你已经在网易云音乐听过100首歌,现在正在听一首班得瑞的《SnowDream》并且对这首歌“红心”,现在在播放器要给你推荐歌曲。

如果使用基于item的协同过滤,即以歌曲为本,寻找和该歌曲相似的歌曲推荐给你。当然,这里的相似不是指歌曲风格、歌手、年代等这些元数据的相似,而是要构建歌曲的评价矩阵,矩阵的每一行是一个用户,每一列是一首歌,这些用户都是对《SnowDream》红心的用户对于《SnowDream》的矩阵,矩阵第一列就是《SnowDream》这首歌,第一行就是你这个用户,矩阵中每个元素代表用户对这首歌的喜爱程度。

对于喜爱程度的定义,是一个加权行为平均值,即通过给用户的不同行为(搜索、试听、下载、单曲循环、分享、评论、点赞评论、播放量,点红心、从不同入口进入)赋予相应权重,最后通过平均值来衡量其对歌曲的喜爱程度。

回到算法本身,建立起来矩阵之后,我们可以知道你对《SnowDream》这首歌的喜爱程度,也通过其余用户的行为得知他们对其余歌曲的平均喜爱程度,计算其余用户对某歌曲和《SnowDream》喜爱程度之差的平均值,越接近0说明这首歌和《SnowDream》越相似,我们便推荐这些均值最接近0的歌曲给你。

那么对于基于user的协同过滤来说,就是寻找和你相似的用户,给你推荐他喜欢的歌曲。怎么判断两个用户是相似的,同样根据之前提到的用户的不同行为和用户资料,构建一个多维特征向量空间模型,用户某种特定行为算是一个特征向量。比如说两个用户都是90后、男、北京人,自我介绍里面都提到New Age,那么的某些特征向量的长度就一样,同理还有长度不一样的向量。

向量空间点之间的距离和夹角

通过构建多维特征向量空间,我们可以把一个用户抽象为多维向量空间中的一个点,如果两个点离得越近,那么两个用户越相似。那么怎么衡量这个“近”呢?我们用到了余弦相似度。这个术语的细节在这里不讲,通俗来说就是计算两个点之间的夹角大小,夹角越小即两个点离得越近。

找到和你相似的用户之后,我们查询其喜欢的歌曲,发现他喜欢听《Cannon in D》,便推荐这首歌给你。我们发现这种推荐形式更有可能推荐给你不同风格的歌曲,因为大部分用户可能喜欢多种风格的音乐。所以,通过这种算法,可以让两个素不相识的用户产生神交的感觉。

相对于前两种推荐方法,第三种基于Tags的推荐就简单易懂了。比如说我们在云音乐歌曲详情页面看到的“相似歌曲”,就是利用标签来推荐与该歌曲相似的歌曲。这里的标签可以分为两种,一种是歌曲自带的标签,例如歌手、曲风、年代、时长、标题、歌词等。第二种播放器根据歌曲的播放情况后续补充的标签,例如播放量,榜单,评论内容等。通过标签之间的匹配,我们可以很容易找到彼此相似的歌曲。

与陈鸿宇《理想三旬》相似的歌曲

最后一种方法其实也不算是方法,无非就是把之前的几种算法融合一下,比如说网易云音乐首页的“每日歌曲推荐”便是以上几种推荐算法综合的结果。

除了上文提到的推荐算法,对于一个完整的推荐系统,它还包含着一些主动的推荐,例如OGC,即云音乐官方产生内容的推荐,比如你不定期收到的“云音乐小秘书”私信,还有在主页上展现的一些官方的采访和活动。另一部分便是UGC即用户创造的内容,我在文首也提过,云音乐良好的社区文化也促使大量的用户生产优质的内容,我们会在“朋友”Tab栏看到云音乐推荐的用户动态。在OGC与UGC之间还有一部分内容可以称得上PGC,即专业生产内容,比如一些专业的音乐人和音乐达人。还有一部分传统的推荐内容,即各大榜单以及云音乐自己的榜单。

在朋友动态界面推荐其他人的动态

纵观网易云音乐,我们可以看到,推荐的内容无孔不入。这类推荐系统有一个共同的特征,那就是越用越好使,因为随着你使用的深入,软件会积累你大量的用户行为,另一方面,随着数据量的累积,对于云音乐本身,它也在不断改进自己的推荐算法和推荐模型,两方面综合给你带来了“上瘾”的感觉。这也是为什么许多人第一次接触云音乐根本停不下来的原因,因为它总是对症下药。

3.Pandora如何推荐?

文首提到的Spotify和网易云音乐的推荐机制类似,但是Pandora就大不同。在这里要给大家介绍Pandora独有的Music Genome Project计划,可以称作音乐基因组计划。

音乐基因组计划是一个开始于1999年的项目(话说真的好早~),这个是Pandora在线音乐网站的前身。类比人类基因组计划,音乐基因组计划是测试音乐的基因,正如人类基因要比人类的表面特征复杂无数倍,音乐的基因也要比音乐表面上的标签复杂好多倍。根据音乐基因组计划官方网站的介绍,他们提供了450多种标签来区别不同音乐。

这些标签可以细化到一首歌是否有吉他的扫弦,是否有架子鼓,主唱的年龄等等。当然,这些标签必须通过人工分类,所以音乐基因组计划有着一群科学家专门在做音乐的分类工作,根据官方介绍,对一名音乐基因组科学家不仅有知识背景的要求,还要经过多轮测试和训练,才能正式参与音乐基因组工作。对每首歌的处理时间长达20-30分钟,而且对于部分歌曲还会引入第二人双重确认。

这种推荐方式也是基于一种经典的推荐系统算法,即基于content的推荐。要注意区分这里的“内容”指的是音乐所表现的内容,而不是表面的曲风、歌手、年代信息。

Pandora播放界面

一个好消息是,这样一个成本巨大的音乐网站,居然是免费的!一个坏消息是,Pandora的音乐服务只能在美国使用。如果你熟练翻墙技术(主要是得找到美国的VPN),喜欢欧美歌曲,习惯以电台方式听歌,那么Pandora似乎是个不错的选择。

大家会好奇这样的网站是如何盈利的,没错,是广告。当你在享受免费的音乐服务时,你会隔三差五地听到广告,就像广播电台那样,如果不想听,可以,付费呗。当然,面对大多数的免费用户,如何提高广告质量也是重中之重,这就涉及到在广告领域的个性化推荐了,此处不再延伸。

Pandora还有一点,这也算是老美的一种共性,就是对隐私的重视,我们可以看到在Pandora网页下端有隐私政策的跳转链接,其对隐私政策的介绍也十分详尽,它会告诉你它们都采用你的什么信息。我们可以看到,你的IP地址会被获取以供其提供更精准的广告服务。

Pandora隐私政策

所有Pandora电台的建立,都是基于一首歌曲或者一个歌手,根据你对后续歌曲的“喜欢”或者“不喜欢”,推荐符合你口味的歌曲。这种基于人工筛选内容的推荐被命中的概率是机器无法比拟的,但是也会有一个缺点,就是你听到的歌曲基本上风格类似。考虑到这一点,Pandora会允许你创建不同的电台,不同电台之间的歌曲也可以混合播放。

4.中国vs.美国

我发现中美音乐在线音乐播放器有以下几个区别:

首先是付费方式,众所周知在美国版权的重要性,这些歌你在线听没问题,但是要下载的话都得花钱,相比国内的少部分音乐付费,大部分音乐免费的模式,我们还是占了不少便宜。但是国内播放器现在的版权之争也日渐白热化,许多歌手的音乐版权被BAT其中一家垄断,导致我们欣赏音乐的连贯性体验很差。

第二是软件构建逻辑,在云音乐发布之前,酷我、酷狗、QQ音乐等播放器基本上大同小异,云音乐发布之后,一定程度上带来了播放器市场的创新浪潮,电台、歌单、社交化、弹幕等新鲜事物开始出现。在欧美,电台音乐依然是主流的形式,Last.fm和Pandora都是老牌的电台网站,当然Spotify这类基于个性化推荐的音乐播放器也逐渐兴起。

Spotify的构建逻辑和云音乐等软件有区别的是,它是基于播放列表的,每个人可以创建自己的播放列表,也可以查看别人的播放列表,甚至是明星大腕的播放列表(云音乐也有类似的功能)。

Spotify播放界面

第三是广告,要知道国外这些播放器如果不付费,会在歌曲中间插入广告的。这一点国内播放器优势明显,虽然也有广告,但至少不影响我们听歌体验。

总体来看,国外的播放软件无论从内容丰富程度还是体验多样性上都稍逊中国一筹。有时候想想,墙内也有墙内的福。

在线音乐播放器的推荐机制相关推荐

  1. 【简短测评】在线音乐播放器,哪一款适合写代码时候使用

    在线音乐播放器简短测评 如果写代码时总想听听音乐 如果写代码时总想听听音乐 我是个写代码时候不想让耳朵闲下来的人.听英语练听力,占用了脑子,代码也写不好,所以只能听歌,不用往脑子里进的那种. 一直以来 ...

  2. python实现在线音乐播放器(懒皮鼠音乐)

    python实现在线音乐播放器(懒皮鼠音乐) 利用qt设计requests库实现在线音乐播放 文章目录 python实现在线音乐播放器(懒皮鼠音乐) 前言 一.qt设计师设计界面 二.使用步骤 1.引 ...

  3. 【基于Qt的在线音乐播放器】

    基于Qt的在线音乐播放器 项目功能: 本在线音乐播放器的功能在于创建一个音乐播放器页面,可以实现搜索功能通过HTTP协议获取网络中数据并解析出来,播放搜索到的歌曲并展示相关信息.效果如图: 相关类及功 ...

  4. QT小项目-QT在线音乐播放器

    QT在线音乐播放器 先上几张音乐播放器的图片 具体实现及部分代码 后面还有好多就不一一例举了 先上几张音乐播放器的图片 (主页图片来源网络) 具体实现及部分代码 搜索歌曲和获取歌曲具体信息的URL,这 ...

  5. android 带记忆功能的播放器源码,【全开源可二开】带后台管理面板的在线音乐播放器Android应用APP源码...

    这是一款带后台管理面板的在线音乐播放器Android应用APP源码,可让您更快地构建在线和离线android音频播放器,代码全开源适合二次开发.该源码自带2个紫色和橙色主题(允许您添加更多主题),多语 ...

  6. python播放在线音乐_Python实现在线音乐播放器

    最近这几天,学习了一下python,对于爬虫比较感兴趣,就做了一个简单的爬虫项目,使用Python的库Tkinsert做了一个界面,感觉这个库使用起来还是挺方便的,音乐的数据来自网易云音乐的一个接口, ...

  7. python播放网络音乐_python使用Tkinter实现在线音乐播放器

    本文实例使用Tkinter实现在线音乐播放器的具体代码,供大家参考,具体内容如下 1.先使用Tkinter库写界面 2.写点击按钮触发的事件 (1).使用网易音乐的api,返回数据包装成json格式数 ...

  8. 非常简洁的vsPlayAudio在线音乐播放器插件

    非常简洁的vsPlayAudio在线音乐播放器插件. 简介 1.暂时只支持网易云音乐之后添加本地音频 2.暂时不支持手机端(未测试) 3.版本初期可能会有BUG 使用方法 <head> & ...

  9. MKOnlinePlayer在线音乐播放器

    文章目录[隐藏] 简介 界面欣赏 注意事项 常见问题 简介 MKOnlineMusicPlayer 是一款开源的基于 Meting 的在线音乐播放器.具有音乐搜索.播放.下载.歌词同步显示.个人网易云 ...

最新文章

  1. R语言ggplot2可视化分面图(facet_grid)、自定义缩小分面图标签栏的高度、但是不改变标签栏标签文本的大小、通过自定义设置可是胡图像的grobs参数
  2. linux vsftpd用法,Linux_LINUX系统下vsftpd 命令详解,FTP命令是Internet用户使用最频 - phpStudy...
  3. python绘图工具基础-matplotlib学习之基本使用
  4. js 字符串操作函数有哪些
  5. Java代理设计模式(Proxy)的四种具体实现:静态代理和动态代理
  6. JDeps入门–分析项目的依赖关系
  7. 卷积神经网络(CNN:Convolutional Neural Network)
  8. 洛谷P4720 【模板】扩展卢卡斯
  9. 使用CLion配置第一个FLTK界面
  10. 9.26-CSS 背景 字体 文本 边框 以及其他
  11. MATLAB 常用绘图命令
  12. yoga ins android.ios,to Yoga Lin:
  13. 计算机ipv6无法连接,ipv6无网络访问权限实测解决教程
  14. iPad 被锁死后如何恢复出厂设置
  15. ​TCP和UDP的135、137、138、139、445端口的作用?​
  16. Android面试你必须要知道的那些知识,已拿offer附真题解析
  17. Cheat sheet -----几乎所有编程语言的速查表
  18. 查看iOS手机系统日志,在mac/window电脑上查看
  19. NLTK(1.2)NLTK简介
  20. 魅族5.0以上支付宝开发程序崩溃,异常ActivityNotFoundException,其实是flyme6的安全模式搞的鬼

热门文章

  1. HyperSnap修改版欣赏
  2. YAMAHA机器人跟上位机TCP通讯
  3. x98安卓和linux启动,X98 3G安装32位UBUNTU15.10的方法
  4. 到底什么才是真正的双核浏览器
  5. Sentinel-2 (哨兵2号) 数据批量下载教程 [python]
  6. 【LOJ】#2534. 「CQOI2018」异或序列
  7. 骁龙820A:多媒体Display硬件接口介绍
  8. OSN3500设备的FXSO12单板介绍
  9. JavaScript闭包实现计数器
  10. HeidiSQL日常使用