怎么样,是不是迫不及待想往下读了?不要急,让我们从原理开始慢慢讲起。

1.原理简介

不知道大家有没有这样的体会,大部分时候,歌曲的高潮部分通常是重复次数最多的部分。因此我们可以根据这一个特征,提出我们的算法:

1.遍历整首歌曲。

2.将选定长度的部分与其他部分比较并计算相似度,以查看是否重复。

3.寻找重复次数较大、且间隔长的片段。

2.代码编写

为了避免造轮子,我们找到了别人已经做过的类似的项目:https://github.com/vivjay30/pychorus

我们只需要分析这个源代码中最核心的部分,即求相似区段的源代码,就能知道它是不是符合我们的项目需求了:

可以看到,这部分代码就是做了我们算法的第二步,进行了片段与片段之间的相似度计算。检测时用到的相似函数是这样的:

这主要是因为歌曲由12个基本音符的帧的集合而组成,v1和v2是任意两段音乐的音符矢量,如果说两段音乐非常相似,那么右边的式子将接近于0. 如果说 1-右边的式子 得分非常高,则说明两段音乐非常相似

下面我们看看怎么使用这个项目求音乐高潮部分,其实非常简单。

2.1 安装所需要的项目

你可以通过pip安装该项目,如果你还没有安装好Python相关环境,建议阅读这篇文章:Python超详细安装指南,PIP安装指令如下:

pip install pychorus

2.2 编写代码

实际上,这个包用起来可是相当简单,如果我们只是想单纯提取歌曲高潮部分:

 
  1. from pychorus import find_and_output_chorus

  2. chorus_start_sec = find_and_output_chorus("你的音乐文件", "输出高潮部分文件", 要多少秒的高潮部分)

没错,两行代码就解决了。如果你想知道一些详细的细节,比如说输出相似矩阵或者结果可视化,建议阅读github中该项目的操作指令。下面让我们检验一下效果。

3.效果检验

以《孤芳自赏》 为例,让我们试试这个提取器的功力。

原曲:

孤芳自赏 原曲来自Python实用宝典00:0004:28

编写代码:

 
  1. # 提取音乐高潮部分

  2. from pychorus import find_and_output_chorus

  3. chorus_start_sec = find_and_output_chorus("孤芳自赏.mp3", "孤芳自赏_high.wav", 40)

效果如下:

孤芳自赏 高潮部分来自Python实用宝典00:0000:40

非常优秀!提取了我心目中想要的部分。大家也可以根据我们今天的教程,试着提取一下自己喜欢的音乐的高潮部分哦!

4.批量提取

刚刚,只是完成了单首歌曲的高潮提取,如果你想提取整个文件夹下的音乐的高潮部分,可以这样做:

图片版代码

文字版代码:

# Python 实用宝典# 提取音乐高潮部分# 2020/06/11import osimport sysfrom pychorus import find_and_output_chorusdef extract_all_file(files_path):    """    批量提取音乐高潮    Args:        files_path (str): 文件夹路径    """    # 文件夹路径    modpath = os.path.dirname(os.path.abspath(sys.argv[0]))    for filepath in os.listdir(files_path):        # 路径处理        datapath = os.path.join(modpath, files_path + filepath)        # output文件夹是否存在        targets = f"{modpath}\\output\\"        if not os.path.exists(targets):            os.makedirs(targets)        # 提取音乐高潮至当前output文件夹下        find_and_output_chorus(            datapath, f"{targets}{filepath.split('.')[0]}_high.wav", 40        )extract_all_file("F:\\push\\20200611\\music\\")

如果你喜欢今天的Python 教程,请持续关注Python实用宝典,如果对你有帮助,麻烦在下面点一个赞/在看,有任何问题都可以在下方留言,我们会耐心解答的!

Python 超简单3行代码提取音乐高潮(附批量提取)!相关推荐

  1. python怎么实现音乐快进_Python 超简单3行代码提取音乐高潮(附批量提取)

    有些时候,为了设定手机铃声或者发抖音视频,我们会耗费大量时间在剪辑音乐高潮部分上.那么这个音乐高潮的提取能不能自动化呢?当然可以. 先来听听效果,孤芳自赏提取高潮后的部分: 怎么样,是不是迫不及待想往 ...

  2. lisp 批量文字求差值_Python 超简单 提取音乐高潮(附批量提取)

    希望点击上方 编程学习者社区,选择 创建星标 回复关键字 资源  获取编程资源 很多时候我们想提取某首歌的副歌部分(俗称 高潮部分),只能手动直接卡点剪切,但是对于大批量的获取就很头疼,如何解决?怎么 ...

  3. Python 超简单3行代码提取音乐高潮部分

    有些时候,为了设定手机铃声或者发抖音视频,我们会耗费大量时间在剪辑音乐高潮部分上.那么这个音乐高潮的提取能不能自动化呢?当然可以. 先来看看,怎么样来提取孤芳自赏提取高潮后的部分: 怎么样,是不是迫不 ...

  4. 国外stripe支付,超简单几行代码搞定

    国外stripe支付,超简单几行代码搞定 海外的项目 需要stripe支付 很简单 几行代码 先加入依赖: compile 'com.stripe:stripe-android:6.1.2' 总共两种 ...

  5. python背景怎么自定义铃声_Python 制作音乐高潮副歌提取器

    有些时候,我们为了设定手机铃声或者发抖音视频时,会耗费大量时间在音乐剪辑上.尤其是想发布大量抖音视频的时候,我们得收集大量的短音乐,这是一个相当耗费时间的工作.那么,这个音乐高潮的提取能不能自动化呢? ...

  6. python超简单小游戏代码-Python实现简单的猜单词小游戏

    本文实例为大家分享了Python实现猜单词小游戏的具体代码,供大家参考,具体内容如下 思路 1.一个words列表里存放若干的单词,例如:["extends", "pri ...

  7. 年赚百万游戏主播,玩转Python后:几行代码轻松“吃鸡” 附源码

    大吉大利,准备吃鸡! 你是否玩儿了好几个月的吃鸡,依旧是落地成盒? 是否常常不得知自己如何被打.莫名其妙的挂了? 还没有吃过鸡/(ㄒoㄒ)/~~总是不明不白的就被别的玩家杀了 !!!∑(゚Д゚ノ)ノ能 ...

  8. 年赚百万游戏主播!玩转Python后:几行代码轻松“吃鸡” 附源码

    大吉大利,准备吃鸡! 你是否玩儿了好几个月的吃鸡,依旧是落地成盒? 是否常常不得知自己如何被打.莫名其妙的挂了? 还没有吃过鸡/(ㄒoㄒ)/~~总是不明不白的就被别的玩家杀了 !!!∑(゚Д゚ノ)ノ能 ...

  9. Python简单几行代码实现黑客电影镜头屏幕画面

    Python简单几行代码实现黑客电影镜头屏幕画面 通过几行简单的Python代码实现炫酷的数据流动效果 一.Python版本:Python3 二.操作示范 为了显得更加牛逼 逼真,通常不会直接运行源代 ...

最新文章

  1. 单链表逆序生成及逆置的完整实现
  2. java 内存详解_Java内存详解
  3. python网络爬虫的基本步骤-python爬虫入门需要哪些基础/python 网络爬虫教程
  4. 一个简单的语言的语法(二):ANTLR的重写规则
  5. Python 实现类似sed命令的字符串替换小程序
  6. Why Opportunity uses US as local instead of ZH - language determination in
  7. Windows10安装TeXlive和TeXstudio
  8. MySQL utf8mb4字符集配置,支持emoji表情存储
  9. 学技术不可盲目崇洋媚外,时刻记得要自主创新,勿忘国耻
  10. 信息林-青岛分类信息网.net源码
  11. Day-22 基础模块3 正则表达式_re模块
  12. 计算机网络第七版笔记--第二章
  13. docker安装gamit_Ubuntu下安装gamit
  14. 堆栈的存取原则是什么?
  15. oak深度相机入门教程-Full FOV NN
  16. 分别兼容IE7,IE8,IE9,IE10,超简单一看就会
  17. PE文件结构与程序装载
  18. 07年个人站长闯关,三条道路通罗马
  19. 计算机高级职称有哪些专业,计算机专业的高级职称有什么呀?
  20. Linux chown -R 指令介绍与使用

热门文章

  1. 简单的springboot+activiti工作流搭建与实现
  2. Node学习七 —— 创建和控制外部进程
  3. 无人驾驶中的CAN总线
  4. 鸿蒙幼儿园胡艳玲,幼儿园招教中班主题《小鸟,你好!》教案
  5. eXtremeDb集成开发篇(Java)
  6. C语言 Openssl的md5使用方式
  7. Linux下截图工具
  8. 高考座位计算机随机排,座位安排方案确定,2020年高考这样排座位!
  9. 如何写出让用户秒懂的UI文案?
  10. 利用Python自动发送邮件