2.将选定长度的部分与其他部分比较并计算相似度,以查看是否重复。
3.寻找重复次数较大、且间隔长的片段。
![在这里插入图片描述](https://img-blog.csdnimg.cn/48b4f470dc2948d3bf26aee790e261d7.png)
### 2.代码实现
为了避免造轮子,我找到了别人已经做过的类似的项目:https://github.com/vivjay30/pychorus
我们只需要分析这个源代码中最核心的部分,即求相似区段的源代码,就能知道它是不是符合我们的项目需求了:
![在这里插入图片描述](https://img-blog.csdnimg.cn/81cf3fe148f54457a759bfa083851468.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6JqC6JqB54ixUHl0aG9u,size_20,color_FFFFFF,t_70,g_se,x_16)
可以看到,这部分代码就是做了我们算法的第二步,进行了片段与片段之间的相似度计算。检测时用到的相似函数是这样的:
![在这里插入图片描述](https://img-blog.csdnimg.cn/78ddc0dd34aa4bdf94c5736abfc780f5.png)
这主要是因为歌曲由12个基本音符的帧的集合而组成,v1和v2是任意两段音乐的音符矢量,如果说两段音乐非常相似,那么右边的式子将接近于0. 如果说 1-右边的式子 得分非常高,则说明两段音乐非常相似。
![在这里插入图片描述](https://img-blog.csdnimg.cn/413fa0af6416438592ae8ef3ba9ad106.png)
下面我们看看怎么使用这个项目求音乐高潮部分,其实非常简单。
### 2.1 安装所需要的项目
你可以通过pip安装该项目,如果你还没有安装好Python相关环境,建议阅读这篇文章:Python超详细安装指南,PIP安装指令如下:
pip install pychorus
![在这里插入图片描述](https://img-blog.csdnimg.cn/38413db692db41209500e79060bb6c2f.png)
### 2.2 编写代码
实际上,这个包用起来可是相当简单,如果我们只是想单纯提取歌曲高潮部分:
from pychorus import find_and_output_chorus
chorus_start_sec = find_and_output_chorus(“你的音乐文件”, “提取结果的目标路径”, 要多少秒的高潮部分)
没错,两行代码就解决了。如果你想知道一些详细的细节,比如说输出相似矩阵或者结果可视化,建议阅读github中该项目的操作指令。
![在这里插入图片描述](https://img-blog.csdnimg.cn/b7594afc833b4d1fa708972829782811.png)
### 3.效果展示
以《孤芳自赏》 为例,让我们试试这个提取器的功力。
孤芳自赏 原曲
#提取音乐高潮部分
from pychorus import find_and_output_chorus
chorus_start_sec = find_and_output_chorus(“孤芳自赏.mp3”, “孤芳自赏_high.wav”, 40)
大家也可以根据我今天的教程,试着提取一下自己喜欢的音乐的高潮部分哦!
### 4.批量提取
刚刚,只是完成了单首歌曲的高潮提取,如果你想提取整个文件夹下的音乐的高潮部分,可以这样做:
![在这里插入图片描述](https://img-blog.csdnimg.cn/8774338513964c37889d04652c399f4b.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6JqC6JqB54ixUHl0aG9u,size_20,color_FFFFFF,t_70,g_se,x_16)
现在能在网上找到很多很多的学习资源,有免费的也有收费的,当我拿到1套比较全的学习资源之前,我并没着急去看第1节,我而是去审视这套资源是否值得学习,有时候也会去问一些学长的意见,如果可以之后,我会对这套学习资源做1个学习计划,我的学习计划主要包括规划图和学习进度表。
分享给大家这份我薅到的免费视频资料,质量还不错,大家可以跟着学习
![](https://img-blog.csdnimg.cn/img_convert/21b2604bd33c4b6713f686ddd3fe5aff.png)
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化学习资料的朋友,可以戳这里无偿获取](https://bbs.csdn.net/topics/618317507)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**