原文链接:Onset Detection Part 4.5: What to expect

(这篇文章没大翻译明白,建议阅读原文。大概内容就是在展示自制检测器对各种类型音乐的检测效果,以及和 audiosurf 的检测效果的对比。)

正如我在本系列的第一部分中所说的,声音可以被分解成不同的频率,这些频率组成了完整的歌曲的声音。在下一篇文章中,我们将详细讨论这个主题,但是对于这篇文章,您首先需要了解频率:每种乐器都有一个频率范围,声乐也是如此。这是一个乐器/声乐的音调分布图。鼓和其他的打击乐器通常是无音调的(non-pitched),并遍布整个频谱。这是来自维基百科的一个非常有趣的图表:

图片来自原文,谁能告诉我咋把水印去了?

在我们深入研究傅里叶变换和类似的主题之前,我想让你们对我们在这里开发的起点检测器有一些了解。为此,我准备了几个不同类型的视频,展示我们的起点检测器将输出什么。不需要解释细节:在每个视频中,你会看到三个图表,第一个是低频,下一个是中频,最后一个在底部是非常高频。红线让我们知道起点可能在哪里。绿线是平均线。绿线以上的任何红色峰值都是潜在的起点/节拍(beat)。说到这里,让我们来看看探测器是如何在各种类型上工作的。让我们从流行音乐开始。

此处有一个youtube视频

我想这是一首非常有名的歌。在这三个范围内,onset都是清晰可见的。这是因为这首歌主要由合成乐器组成。特别是低音和鼓给探测器留下了深刻的印象,它似乎很适合这种类型。下一个流派:摇滚

此处有一个YouTube视频

全明星乐队“A perfect circle”的一首歌叫做《weak and powerless》。鼓点对整体的起点/节拍有很大的影响。探测器在这种情况下也做得很好。摇滚由于其较高的噪声水平,对任何一种起点检测模式来说都比较困难。扭曲的吉他和贝斯严重污染了所有的频率,使得检测任务变得非常困难。然而,如果负责混音的音响工程师工作得很好,那么控制节奏的乐器的频率就会很突出,我们的算法可以检测到。接下来我们来看看声乐摇滚:

此处有一个YouTube视频

一首由“Tenacious D”创作的名为《Explosivo》的歌曲,以一把原声吉他开始,然后进入一个更摇滚的部分。探测器一开始就能很好地捕捉到吉他的音色。当吉他变成背景音,整段音乐进入重头戏时,鼓就成为最有影响力的节奏部分。在最上面的图中,我们还可以看到鼓手踢得很快,如果没有图我可能也不能完全听清这些节奏。还请注意,在重头部分开始之前,hi-hat(架子鼓的踩镲)如何在底部的图中淡入。所有鼓的部分,如hi-hat, cymbals等,都会在那个图中被识别出来。

此处有一个YouTube视频

一首纯正的原声歌曲,由您真实演绎。探测器很好地检出了吉他。你可以很容易地在这三个图中看到3/4的节奏。声音对探测器没有太大的影响。

此处有一个YouTube视频

(下面这一段没翻译明白,附上原文)

Jazz对于起点检测器来说是非常困难的。很多音符都是同时或接近于同时演奏的。而且,很多的频率范围被用完了。在这个例子中,控制节奏的乐器还是鼓,还有一点贝斯也被探测器检测到。然而,在开始的时候,是钢琴在演奏节奏部分。探测器的工作也做得很好。注意开始时的拍手声是如何让检测器变得有点疯狂的。就探测器而言,拍手声基本上就是随机噪音,所以他会尽最大努力去选择可能的节奏模式。

(Jazz is said to be extremely hard for onset detectors. A lot of notes a player simultaniously or near simultaniously. Also, a lot of the frequency range is used up. In this example the instrument governing the rythm is again the drums as well as a little bit of bass which are picked up by the detector. However, in the beginning it’s the piano which does the rythm section. Again the detector does its job pretty well. Note how the clapping at the beginning makes the detector go a bit crazy. The clapping is basically just random noise as far as the detector is concerned, so he tries his best to pick what might be rythmical patterns.)

此处有一个YouTube视频

古典是每一个起点探测器的噩梦,特别是当作品是由弦乐器组成时,就像莫扎特的这段演奏。节拍检测器可以捕捉到一些弦重击,但任何带有颤音的都是一团糟。不过在这方面,它仍然比Audiosurf表现得更好。

此处有一个YouTube视频

最后是 In-Flames 的金属。有趣的是小军鼓的能量最大。但踢腿鼓就不一样了,与歌曲的其他部分相比,踢腿鼓实际上非常安静。如果你看这首歌的完整频谱,你会看到一个大混乱的热图(至少我使用热图的频谱)。hi-hat并没有被探测器很好地接收到,因为它是开着播放的,在没有很多能量的情况下会产生安静嘈杂的声音。

下一个视频显示的是把以上所有的摘录形式混合成一个mp3并在Audiosurf中播放。如果把每个片段单独放到Audiosurf中,结果可能会有所不同,但那将会非常单调乏味

此处有一个YouTube视频

对于“Hit me baby one more time”,Audiosurf会生成小军鼓和踢腿鼓的节奏。“Weak and Powerless”也主要为踩镲/大镲/叮叮镲生成节奏。“Explosivo”有点奇怪。乍一看,它和这首歌没有任何相似之处。但如果你仔细看,就会发现这些节奏是根据歌声做出来的!我想Audiosurf是检测的声音最大的,在《Explosivo》里,大多数时候都是演唱声音最大。下一首歌是唱歌和吉他的混合。对于这首爵士歌曲来说,钢琴似乎并没有在一开始就被检测到,但是拍手声却被检测到了,剩下的由叮叮镲控制。古典一上来完全没检测到,越到后面才开始变得更好。这似乎与小提琴上升的音量一致。最后一段在大多数情况下都能捕捉到碰撞的声音,并混合了一些小军鼓的声音。总而言之,Audiosurf 似乎对不同波段进行了频带分析,然后选择声音最大的频带来生成节奏。这在流行音乐中效果很好,但在古典音乐中效果似乎不太好。有趣的是,对于cloud connected,我真的很好奇它是如何检测到 crash 的节奏,我在audacity high pass中对它进行了大量的过滤,也仍然看不到峰值。确实奇怪

我们在本系列文章中开发的起点检测器似乎能够检测到 audiosurf 能检测到的所有节奏(如果我们稍微调整一下它对唱歌的检测,这很简单)。也许我们甚至可以设计出比 Audiosurf 更好的处理古典音乐的功能。

音符起始点检测(音频节奏检测)(4.5)相关推荐

  1. 音符起始点检测(音频节奏检测)(1)

    原文链接:Onset Detection Part 1: The Basics 在这篇文章中,我想开始一个小的循序渐进的系列,它将允许您为您的音乐游戏需求构建自己的起始点检测器(onset detec ...

  2. 音频节奏检测(Onset Detection)

    项目代码下载 https://download.csdn.net/download/weixin_43865690/39129840 1. 前言 最近市场上出现一些多个视频拼接而成MV,其原理是根据音 ...

  3. 音符起始点检测(音频节奏检测)(6)

    原文链接:Onset Detection Part 6: Onsets & Spectral Flux 在之前的一篇文章中,我从科学的角度讨论了起点/节拍检测.有很多不同的方案可以不同程度的做 ...

  4. 音符起始点检测(音频节奏检测)(2)

    原文链接:Onset Detection Part 2: A simple framework 好了,我刚刚为我们的起始点检测入门教程组合了一个简单的框架.它位于 http://code.google ...

  5. 音符起始点检测(音频节奏检测)(5)

    原文链接:Onset Detection Part 5: The (Discrete) Fourier Transform 警告:这是我理解离散傅里叶变换的方法,在一些地方可能是错误的.对于傅里叶变换 ...

  6. 音符起始点检测(音频节奏检测)(7)

    原文链接:Onset Detection Part 7: Thresholding & Peak picking 在上一篇文章中,我们看到了如何将一个随着时间的推移而演化为一个简单一维函数的复 ...

  7. python 声音强度检测_python检测音频中的静音

    #-*- coding: utf-8 -*- importosimportwavefrom time importsleepimportnumpy as np SUCCESS=0 FAIL= 1 #需 ...

  8. 音频算法检测发言者方位

    音频算法检测发言者方位:

  9. java mp3静音检测,音频自动增益 与 静音检测 算法 附完整C代码

    前面分享过一个算法<音频增益响度分析 ReplayGain 附完整C代码示例> 主要用于评估一定长度音频的音量强度, 而分析之后,很多类似的需求,肯定是做音频增益,提高音量诸如此类做法. ...

最新文章

  1. C# 读取 appconfig文件配置数据库连接的方法
  2. 有一段时间没来这里了,
  3. 细数二十世纪最伟大的十大算法
  4. HighNewTech:低代码(0代码/无代码,无需代码)开发的简介以及如何选择最合适的低代码开发工具
  5. GitHub 新手详细教程转载,亲测可用
  6. 软件工程中的所有内聚类型【吐血整理,附带排名!】
  7. leetcode 1239. 串联字符串的最大长度
  8. 为什么Spring仍然会是云原生时代最佳平台之一?
  9. 剑指offer——23.反转链表
  10. maven 不能设置为web2.5的解决方法
  11. python全栈开发_day25_面向对象的接口,多态,鸭子类型,抽象父类,析构格式化,反射和断言...
  12. C#上位机与台达PLC通信,modbus TCP协议。真实使用项目,该程序框架完整,适合在此基础上开发项目
  13. Ctfshow菜狗杯------传说之下(雾)
  14. 微软Windows 10 MSDN官方ISO镜像正式版下载
  15. Halcon示例程序Circle 解析
  16. 《数据分析实战》--用R做交叉列表
  17. 预见2020下半场——从自动驾驶新趋势看普及前景
  18. 计算机网络技术中,分组交换技术在计算机网络技术中的作用及特点是什么?
  19. 医学遗传学词汇英语术语英文(Glossary) 3
  20. LWIP-TCP Server连接两次之后无法连接问题

热门文章

  1. 8、ARM嵌入式系统:UART初始化
  2. 医疗his系统值不值得投入使用
  3. Web浏览过程中涉及到的协议
  4. whm面板降mysql_WHMCS与Cpanel/WHM面板整合方法-Cpanel/WHM管理使用教程 | 麦田一棵葱...
  5. 老板电脑装监控,聊天记录全被掌握
  6. 编程式跳转+传参并接收
  7. Java分布式中文分词组件 - word分词(转自 https //github com/ysc/word)
  8. 深入理解JavaScript箭头函数
  9. 箭头函数(Arrow Function)
  10. Python爬取网易云音乐评论,反爬算啥啊!