Orgin:Using Audio Onset Detection Algorithms

本文档只记录了部分的内容,主要以aubio相关内容为主,并非整个文档的完整内容,记录人:lihaiping1603@aliyun.com

QMUL算法: 这个基于信号的算法,它结合了能量(观察信号的能量)和相位(观察FFT状态偏差)所共同构成复域。它包括一个自适应增白组件,该组件平滑了信号的时间和频率变化,从而通过“将每个频段的幅度引入一个类似的动态范围,使振幅较大的峰值更加明显。该算法跟进复域内的峰值计算每个频域内发生突发事件的可能性,并使用峰值选取算法来标记onset.

Aubio:关于onset detection的算法aubio和QMUL算法类似,它改进了onset detection中的自动校正功能,通过计算节拍周期,phase相位对齐方法.主要是根据周期,相位,节拍来做预测。这个算法有两个主要的变量参数值:threshold阀值0.01-0.99(主要用于峰值拾取)和onset模式(对于detection功能,包含高频内容,复域,能量和光谱差异)。

例如分析下面的长笛音乐,采用了复域的分析方法。然后系统参数变量调优中FFT bin大小为1024,增量大小为512,峰值阀值threshold设置为0.5,寂静阀值设置为-50dB,以及内部最小的onset间隔设置为40ms。由于相位声编码器的存在,窗口大小window设置为1024,跳数hope设置为512. 通过改变峰值选取算法的阀值,越低或者越高,会导致过多或者过小的onset。

实际情况和aubio的onset算法分析结果的对比展示如上图。在上图可以看出来,在这个音乐中11个真实的onset都被正确的发现了。

Pyin算法:它和上述算法的不同之处在于,他的目的是检测音高,而不是显式的onset detection,并且是一种基于概率的方法。它提取给定频域范围内的音高。由于该算法的设计在基频估计的基础上附加了一个时间戳,证明了他是一个有效的onset detection竞争者。同时这个信息可以用于推断音符的onset.

使用示例,系统使用FFT bin 大小为1024个样本,增量大小为512,YIN threshold(一组相关概率的音高候选值)全部设置为11,抑制低幅度音高估计值设置为0.1(将振幅抑制在一定值以下),onset的灵敏度设置为0.7(相当于峰值拾取),分析的结果如下图:

 转载请注明出处:https://www.cnblogs.com/lihaiping/p/aubio.html

(原)关于音频onset detection算法的阅读的更多相关文章

  1. 结合Python代码介绍音符起始点检测 (onset detection)

    本文由 meelo 原创,请务必以链接形式注明 本文地址 音符起始点检测介绍 音符起始点检测(onset detection)是音乐信号处理中非常重要的一个算法.节拍和速度(tempo)的检测都会基于 ...

  2. 【转】DM8168添加DSP音频编解码算法--集成现有voice或audio codec

    本文根据“How to integrate audio/voice in RPE in EZSDK.pdf”整理,建议读者直接下载,参考原文件.原文件下载链接: http://download.csd ...

  3. 社区发现(Community Detection)算法 [转]

    作者: peghoty 出处: http://blog.csdn.net/peghoty/article/details/9286905 社区发现(Community Detection)算法用来发现 ...

  4. 社区发现(Community Detection)算法(转)

    作者: peghoty 出处: http://blog.csdn.net/peghoty/article/details/9286905 社区发现(Community Detection)算法用来发现 ...

  5. linux音频alsa-uda134x驱动文档阅读之一转自http://blog.csdn.net/wantianpei/article/details/7817293

    前言 目前,linux系统常用的音频驱动有两种形式:alsa oss alsa:现在是linux下音频驱动的主要形式,与简单的oss兼容.oss:过去的形式而我们板子上的uda1341用的就是alsa ...

  6. 社区发现(Community Detection)算法

    作者: peghoty 出处: http://blog.csdn.net/peghoty/article/details/9286905 社区发现(Community Detection)算法用来发现 ...

  7. 基于高斯分布的异常检测(Anomaly Detection)算法

    记得在做电商运营初期,每每为我们频道的促销活动锁取得的“超高”销售额感动,但后来随着工作的深入,我越来越觉得这里面水很深.商家运营.品类运营不断的通过刷单来获取其所需,或是商品搜索排名,或是某种kpi ...

  8. ios原声音频播放AVAudioSession 总结

    //音频播放/*英译:record:录音 */ 1 导入头文件#import<AVFoundation/AVFoundation.h>//AVAudioSession是一个单例模式.在IO ...

  9. Tarjan算法【阅读笔记】

    应用:线性时间内求出无向图的割点与桥,双连通分量.有向图的强连通分量,必经点和必经边. 主要是求两个东西,dfn和low 时间戳dfn:就是dfs序,也就是每个节点在dfs遍历的过程中第一次被访问的时 ...

随机推荐

  1. php命令模式(command pattern)

    ... <?php /* The command pattern decouples the object that executes certain operations from objec ...

  2. P1092 虫食算[搜索]

    这个式子是是由\(A\sim A+N\)组成的,那么\(A\sim A+N\)就只能等于\(0\sim N-1\),因此我们每次对\(A\sim A+N\)的取值做一个新的排列,然后judge一下当前 ...

  3. xz格式解压

    1.安装xz命令 yum install xz -y 2.将xz文件解压为tar文件 xz -d example.tar.xz 3.将tar文件解压 tar xf example.tar 如果无法安装 ...

  4. 用Python打造了一个渗透测试暴力探测器

    资源探测的作用 通过资源探测,我们可以在目标系统中发现文件.目录.活动.服务还有相关的参数,为下一步的行动提供信息参考. 一个开源的模糊测试数据库 https://github.com/fuzzdb- ...

  5. tomcat学习之路

    一:介绍目录文件夹 bin文件夹:放置可执行文件 startup.bat:脚本文件,windows环境,起服务 shutdown.bat:脚本文件,windows环境,关闭 startup.sh:脚本 ...

  6. 地址栏参数获取函数 GetQueryStr(name)

    //name:参数名称,return:有则返回该参数对应值,没有则返回null function GetQueryStr(name) {          var reg = new RegExp(& ...

  7. Game-Based Learning Is Changing How We Teach. Here's Why.

    https://www.edsurge.com/news/2019-02-04-game-based-learning-is-changing-how-we-teach-here-s-why This ...

  8. 指针*和取地址&函数输入使用

    函数输入问题: 1 带&和不带& (参数本身还是拷贝一份参数) 2 函数输入指针 #include <iostream> using namespace std; int ...

  9. ent 基本使用十八 查询谓词

    ent 生成的代码包含了比较完整的查询谓词 字段谓词 Bool: =, != Numeric: =, !=, >, <, >=, <=, IN, NOT IN Time: =, ...

  10. Supercharging your ETL with Airflow and Singer

    转自:https://www.stitchdata.com/blog/supercharging-etl-with-airflow-and-singer/ singer 团队关于singer 与air ...