今天跟大家唠唠嗑,说说我最近在项目里捣鼓的——用代码搞点林俊杰歌曲的事情。
事情是这样的,最近有个小项目,需要用到一些背景音乐,甲方爸爸那边说能不能整个性化一点的,别老是那些烂大街的口水歌。我寻思着,这还不简单,直接上我JJ的歌!
说干就干,我得把歌搞到手。这年头,版权意识强,直接爬肯定是不行的。还我平时喜欢用某音乐APP,开了会员,就把我喜欢的几首,像是《江南》、《小酒窝》、《不为谁而作的歌》啥的,都下载下来了。
下了歌,下一步就是怎么让代码“听懂”歌。一开始我傻乎乎的,想直接分析音频文件,看看能不能提取出啥特征来。结果折腾半天,发现音频处理这玩意儿,水太深了,我把握不住。
后来我灵机一动,换了个思路。既然音频搞不定,那歌词总行了?我从网上找了个歌词API,把歌词都扒了下来。然后,就开始琢磨怎么分析歌词了。
我想用一些自然语言处理(NLP)的技术,比如啥情感分析、关键词提取之类的。但是,我水平有限,搞出来的效果不太理想。后来我干脆就用最简单粗暴的方法:统计词频!
我写了个小脚本,把歌词里的每个词都统计了一遍,然后按照词频排序。你猜怎么着?出现频率最高的词,除了“你”、“我”、“的”这些废话,就是“爱”、“情”、“心”这些跟爱情有关的词。看来,JJ的情歌真是名不虚传!
有了词频统计,我就可以根据用户的喜推荐歌曲了。比如说,用户喜欢听甜甜的歌,我就推荐《小酒窝》;用户喜欢听伤感的歌,我就推荐《她说》。虽然简单,但是效果还不错。
这只是个简单的尝试,还有很多可以改进的地方。比如,可以加入更多的歌曲特征,像是歌曲的节奏、旋律等等。还可以用更高级的NLP技术,分析歌词的情感色彩和主题。路漫漫其修远兮,吾将上下而求索!
再跟大家分享一个小技巧。如果你想快速找到某个歌手的歌曲,可以在音乐APP里搜索“歌手名 + 歌曲合集”,通常都能找到你想要的。比如,搜索“林俊杰 歌曲合集”,就能找到很多他的经典歌曲。
- 下载歌曲
- 提取歌词
- 统计词频
- 根据词频推荐歌曲