问题标签 [onset-detection]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
499 浏览

matlab - Wrong onset detection when using MATLAB GUI

I'm trying to create a GUI on MATLAB that will automatically transcribe piano music when a .wav file is given as an input. Before using GUI I created the whole algorithm using MATLAB and it worked just fine.

Now when I create the GUI and transfer the codings there, my onset (peak) detection produces wrong results as the envelope of my signal is not as smooth as how it was when run using matlab script.

Onsets before using GUI

Onset Detection after when using GUI

As you can see the envelope is pretty much smooth when used normally rather than when using GUI. Due to these peaks are detected all over the slope as well and not just at the actal peaks.

This is the code I used to build the algorithm:

And this is what I included in the GUI script:

What am I doing wrong here?? Really appreciate if someone could help me out here. Thanx in advance...

0 投票
0 回答
312 浏览

ios - iOS 上的 BPM 检测选项

我在网上搜索了有关 iOS 的 BPM 检测的资源,尝试实现各种技术并链接到各种库等,但我只是遇到了构建错误或 bpm 检测不起作用的问题。

在 iOS 上进行基本 BPM 检测的可行选项是什么?它不必对起始位置非常准确,而只需检测一系列音频缓冲区的 BPM。

我尝试了 VAMP,但无法让它在 iOS 上运行,我尝试了各种 c++ 选项,但它们都不起作用。

是否有任何 MIT 许可的 BPM 检测算法可以轻松地与 iOS 集成,或者任何商业选项不需要负载,因为它用于完整的音频库。我想不通过麦克风从文件中检测 BPM。

我只想要一个 BPM 检测器类,因为此时我没有时间自己学习和实现一个。

任何帮助将不胜感激。

0 投票
1 回答
913 浏览

python - 查找在 wav 文件中播放的音符的时间戳

假设我们有一个录制了一些吉他音乐的 wav 文件。声音非常干净,没有多余的声音,只有吉他本身和节拍器的滴答声。

找到在 Python 中演奏的每个音符(或和弦)的时间戳的最佳方法是什么?我不需要识别笔记本身,只需要识别它发生时的时间戳。

我以前从来没有做过这种事情,所以我有点困惑。我在 Wikipedia 上阅读了有关短时傅立叶变换的信息,它看起来很有希望,但我找不到任何相关的例子。非常感谢有关如何开始的任何帮助/提示。

0 投票
2 回答
1428 浏览

python - 一个音符的录制音频会产生多个起始时间

我正在使用Librosa库进行音高和起始检测。具体来说,我正在使用onset_detectand piptrack

这是我的代码:

在录音棚中录制的吉他音频样本上运行此程序时,因此样本没有噪音(像这样),我在这两个功能中都得到了非常好的结果。开始时间是正确的,频率几乎总是正确的(有时会出现一些八度音阶错误)。

然而,当我尝试用我便宜的麦克风录制自己的吉他声音时,出现了一个大问题。我得到带有噪音的音频文件,例如this。该onset_detect算法感到困惑,并认为噪声包含起始时间。因此,我得到了非常糟糕的结果。即使我的音频文件由一个音符组成,我也会有很多次发作。

这是两个波形。第一个是在录音室录制的 B3 音符的吉他样本,而第二个是我录制的 E2 音符。

工作室 记录

第一个的结果是正确的 B3(检测到一个起始时间)。第二个的结果是一个包含7 个元素的数组,这意味着检测到 7 个起始时间,而不是 1 个!其中一个元素是正确的开始时间,其他元素只是噪声部分的随机峰值。

另一个例子是这个包含音符 B3、C4、D4、E4 的音频文件:

b3-e4

如您所见,噪声很清晰,我的高通滤波器没有帮助(这是应用滤波器后的波形)。

我认为这是一个噪音问题,因为这些文件之间的区别就在那里。如果是,我能做些什么来减少它?我尝试过使用高通滤波器,但没有任何变化。

0 投票
1 回答
203 浏览

python - 通过 Python 中的 librosa.onset.detect 删除声音蜂鸣检测中的偏移

我正在研究一种声音,以检测声音哔声何时开始在 Python 中使用 librosa。当我绘制检测到的时间时,它有一些偏移,如图中的红线所示。如果哔声之间的间隔发生变化,则此偏移量会发生变化。由于我想要一种强大的方法来检测声音中小波开始的可变哔声间隔,我该如何去除这个偏移量?

图与发病检测和间隔之间的差异 检测偏移

我在下面的链接中添加了声音文件。可以直接模拟文件。Python Colab 笔记本:链接

0 投票
0 回答
27 浏览

python - 无法成功使用 essentia python 库中的 OnsetDetectionGlobal

我正在尝试使用 essentia 的(phyton 库)OnsetDetectionGlobal 获取音频文件的开始时间。不幸的是,当我尝试将此函数的输出传递给 Onsets 以及时获取位置时,我收到以下错误:

在 convertData raise TypeError('Cannot convert data from type %s (%s) to type %s' % TypeError: Cannot convert data from type VECTOR_REAL (<class 'numpy.ndarray'>) to type MATRIX_REAL

从错误来看,问题似乎是 Onsets 期望随着时间的推移会出现一系列 onsets 函数,而 OnsetDetectionGlobal 只返回一个......我试着玩一下大小(比如将输出重塑为矩阵)但无法解决它。这是导致错误的函数: