• 售前

  • 售后

热门帖子
入门百科

Python 3行代码提取音乐高潮部门

[复制链接]
张瘦身 显示全部楼层 发表于 2022-1-8 07:11:57 |阅读模式 打印 上一主题 下一主题
目录


  • 1.原理简介
  • 2.代码编写

    • 2.1 安装所必要的项目
    • 2.2 编写代码

  • 3.结果检验
  • 4.批量提取
前言:
有些时间,为了设定手机铃声或者发抖音视频,我们会泯灭大量时间在剪辑音乐高潮部门上。那么这个音乐高潮的提取能不能自动化呢?当然可以。
先来看看,怎么样来提取孤芳自赏提取高潮后的部门:

1.原理简介

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

  • 1.遍历整首歌曲。
  • 2.将选定长度的部门与其他部门比较并盘算相似度,以查看是否重复。
  • 3.寻找重复次数较大、且隔断长的片断。

2.代码编写

为了制止造轮子,我们找到了别人已经做过的类似的项目
我们只必要分析这个源代码中最核心的部门,即求相似区段的源代码,就能知道它是不是符合我们的项目需求了:

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

这重要是由于歌曲由12个基本音符的帧的集合而构成,v1和v2是任意两段音乐的音符矢量,如果说两段音乐非常相似,那么右边的式子将接近于0. 如果说 1-右边的式子 得分非常高,则说明两段音乐非常相似。
下面我们看看怎么使用这个项目求音乐高潮部门,其实非常简朴。

2.1 安装所必要的项目

你可以通过pip安装该项目,如果你还没有安装好Python相关环境,发起先安装,PIP安装指令如下:
  1. pip install pychorus
复制代码
2.2 编写代码

现实上,这个包用起来可是相当简朴,如果我们只是想单纯提取歌曲高潮部门:
  1. from pychorus import find_and_output_chorus
  2. chorus_start_sec = find_and_output_chorus("你的音乐文件", "提取结果的目标路径", 要多少秒的高潮部分)
复制代码
没错,两行代码就办理了。如果你想知道一些具体的细节,比如说输出相似矩阵或者结果可视化,发起阅读
  1. github
复制代码
中该项目标利用指令。下面让我们检验一下结果。

3.结果检验

以《孤芳自赏》 为例,让我们试试这个提取器的功力。 编写代码:
  1. # 提取音乐高潮部分
  2. from pychorus import find_and_output_chorus
  3. chorus_start_sec = find_and_output_chorus("孤芳自赏.mp3", "孤芳自赏_high.wav", 40)
复制代码
非常良好!提取了我心目中想要的部门。大家也可以根据我们本日的教程,试着提取一下本身喜欢的音乐的高潮部门哦!

4.批量提取

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

笔墨版代码:
  1. # Python 实用宝典
  2. # 提取音乐高潮部分
  3. # 2020/06/11
  4. import os
  5. import sys
  6. from pychorus import find_and_output_chorus
  7. def extract_all_file(files_path):
  8.     """
  9.     批量提取音乐高潮
  10.     Args:
  11.         files_path (str): 文件夹路径
  12.     """
  13.     # 文件夹路径
  14.     modpath = os.path.dirname(os.path.abspath(sys.argv[0]))
  15.     for filepath in os.listdir(files_path):
  16.         # 路径处理
  17.         datapath = os.path.join(modpath, files_path + filepath)
  18.         # output文件夹是否存在
  19.         targets = f"{modpath}\output"
  20.         if not os.path.exists(targets):
  21.             os.makedirs(targets)
  22.         # 提取音乐高潮至当前output文件夹下
  23.         find_and_output_chorus(
  24.             datapath, f"{targets}{filepath.split('.')[0]}_high.wav", 40
  25.         )
  26. extract_all_file("F:\push\20200611\music")
复制代码
到此这篇关于Python 3行代码提取音乐高潮部门的文章就先容到这了,更多相关Python代码提取音乐高潮部门内容请搜索脚本之家以前的文章或继承欣赏下面的相关文章盼望大家以后多多支持脚本之家!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作