用Python如何提前音乐副歌部分,原理及方法是什么
Admin 2022-06-01 群英技术资讯 1065 次浏览
这篇文章主要讲解了“用Python如何提前音乐副歌部分,原理及方法是什么”,文中的讲解内容简单、清晰、详细,对大家学习或是工作可能会有一定的帮助,希望大家阅读完这篇文章能有所收获。下面就请大家跟着小编的思路一起来学习一下吧。有些时候,为了设定手机铃声或者发抖音视频,我们会耗费大量时间在剪辑音乐高潮部分上。那么这个音乐高潮的提取能不能自动化呢?当然可以。
先来看看,怎么样来提取孤芳自赏提取高潮后的部分:
不知道大家有没有这样的体会,大部分时候,歌曲的高潮部分通常是重复次数最多的部分。因此我们可以根据这一个特征,提出我们的算法:
为了避免造轮子,我们找到了别人已经做过的类似的项目
我们只需要分析这个源代码中最核心的部分,即求相似区段的源代码,就能知道它是不是符合我们的项目需求了:

可以看到,这部分代码就是做了我们算法的第二步,进行了片段与片段之间的相似度计算。
检测时用到的相似函数是这样的:
这主要是因为歌曲由12个基本音符的帧的集合而组成,v1和v2是任意两段音乐的音符矢量,如果说两段音乐非常相似,那么右边的式子将接近于0. 如果说 1-右边的式子 得分非常高,则说明两段音乐非常相似。
下面我们看看怎么使用这个项目求音乐高潮部分,其实非常简单。
你可以通过pip安装该项目,如果你还没有安装好Python相关环境,建议先安装,PIP安装指令如下:
pip install pychorus
实际上,这个包用起来可是相当简单,如果我们只是想单纯提取歌曲高潮部分:
from pychorus import find_and_output_chorus
chorus_start_sec = find_and_output_chorus("你的音乐文件", "提取结果的目标路径", 要多少秒的高潮部分)
没错,两行代码就解决了。如果你想知道一些详细的细节,比如说输出相似矩阵或者结果可视化,建议阅读github中该项目的操作指令。下面让我们检验一下效果。
以《孤芳自赏》 为例,让我们试试这个提取器的功力。 编写代码:
# 提取音乐高潮部分
from pychorus import find_and_output_chorus
chorus_start_sec = find_and_output_chorus("孤芳自赏.mp3", "孤芳自赏_high.wav", 40)
非常优秀!提取了我心目中想要的部分。大家也可以根据我们今天的教程,试着提取一下自己喜欢的音乐的高潮部分哦!
刚刚,只是完成了单首歌曲的高潮提取,如果你想提取整个文件夹下的音乐的高潮部分,可以这样做:

文字版代码:
# Python 实用宝典
# 提取音乐高潮部分
# 2020/06/11
import os
import sys
from pychorus import find_and_output_chorus
def 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\")
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要为大家介绍了PyTorch深度学习LSTM从input输入到Linear输出深入理解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块,下面这篇文章主要给大家介绍了关于Python中条件语句、循环语句和pass语句使用的相关资料,需要的朋友可以参考下
这篇文章介绍了Python中的基本数据类型,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
本文主要介绍了numpy array找出符合条件的数并赋值的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧<BR>
#!/use/bin/envpython#-*-conding:utf-8-*-#author:shanshan"""写代码1,实现用户输入用户名和密码,当用户名为seven且密码为123时,显示登陆成功,否则登陆失败!2,实现用户输入用户名和密码,当用户名为seven且密码为123时,显示登陆成功,否则登陆失败,失败时允许重复输入三次3,实现用户输入用户名和密码,当用户
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008