问题标签 [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 投票
6 回答
16804 浏览

audio - Note onset detection

I am developing a system as an aid to musicians performing transcription. The aim is to perform automatic music transcription (it does not have to be perfect, as the user will correct glitches / mistakes later) on a single instrument monophonic recording. Does anyone here have experience in automatic music transcription? Or digital signal processing in general? Help from anyone is greatly appreciated no matter what your background.

So far I have investigated the use of the Fast Fourier Transform for pitch detection, and a number of tests in both MATLAB and my own Java test programs have shown it to be fast and accurate enough for my needs. Another element of the task that will need to be tackled is the display of the produced MIDI data in sheet music form, but this is something I am not concerned with right now.

In brief, what I am looking for is a good method for note onset detection, i.e. the position in the signal where a new note begins. As slow onsets can be quite difficult to detect properly, I will initially be using the system with piano recordings. This is also partially due to the fact I play piano and should be in a better position to obtain suitable recordings for testing. As stated above, early versions of this system will be used for simple monophonic recordings, possibly progressing later to more complex input depending on progress made in the coming weeks.

0 投票
4 回答
1682 浏览

java - 音乐转录

我正在做一个复调音乐转录项目。我已经阅读了一些论文并阅读了解释类似任务的文章。我对问题域的许多方面感到非常困惑。希望有人能帮助我。

到目前为止,我已经从给定的 mp3 中获得了解码后的音频数据流。

我知道发病检测是转录的第一步。. 是否有任何可用的 java 库可用于检测发病。

接下来,正如我所读到的,也使用 FFT 来检测基频。

我想知道 FFT 在这些任务中的用途。(我对 FFT 不太熟悉)。是否绝对有必要对发病检测和 F0 检测执行 FFT。如果不是还有什么其他方法。我可以对我拥有的音频流执行 FFT,还是必须执行一些其他操作才能操作这些音频数据。

非常感谢。

0 投票
3 回答
288 浏览

waveform - 在波形中添加“可听见的滴答声”以进行起始检测调试

我正在自己玩一些起始/节拍检测算法。我的输入是一个 .wav 文件,我的输出是一个 .wav 文件;我可以访问 float[] 数组块中的整个波形。

我很难想出一个调试和评估我的算法的好方法。由于我的输入和输出都是听觉的,我认为如果我的调试工具也是听觉的,例如,那将是最有意义的。通过在起始点向 .wav 文件添加可听见的“滴答声”或“哔哔声”。

有人对如何做到这一点有任何想法吗?理想情况下,这将是一个简单的 for 循环,我会运行几百或几千个样本。

0 投票
0 回答
275 浏览

java - 注意音频中的开始检测

可能重复:
注意发病检测

对于我在 Java/Matlab 中的论文工作,我需要一个非常强大的音符起始检测器。从一个音频文件中,我提取了我需要的响度和一些其他(某种)特征,但起始问题仍然是一个难题,而且大多数时候,还没有完全解决。

有人可以帮我解决这个问题吗?

米迪不关心!

INPUT:带有低音线的音频信号(来自文件或线路输入)

背景:我需要实时完成......所以其他问题无关紧要。

0 投票
1 回答
305 浏览

audio - 注意发病检测动态阈值

所以我正在研究音符开始检测。我在这里实现了这个方法:注意发病检测

但是,我发现有关该方法的“静态”性质的一些困难或问题。我正在寻找的是如何使阈值方法“动态”。但我很难找到合适的解决方案。

除此之外,我还在研究不是将幅度值作为通过阈值的基础,而是利用两个幅度值之间的“差异”来了解信号何时增加或不增加,以及增加了多少或减少。这是我目前正在使用的。

任何愿意帮助或解决过此类问题的人?谢谢!

此外,你们中的任何人是否有此论文的 PDF 文件:http ://www.mendeley.com/research/methods-detecting-impulsive-noise-speech-audio-signals-14/

0 投票
2 回答
79 浏览

audio - 根据起始位置确定音符持续时间

我有一个关于如何根据它们的起始位置确定音符的持续时间的问题。

因此,例如,我有一个幅度值数组(包含短)和另一个相同大小的数组,如果检测到音符开始,则包含 1,如果没有,则包含 0。所以基本上,每个 1 之间的距离将用于确定持续时间。

我怎样才能做到这一点?我知道我必须使用音频数据的采样率和其他属性,但是我可以使用特定的公式吗?

谢谢!

0 投票
1 回答
579 浏览

audio - 关于音符起始检测过滤器的问题?

如果我可能无知,请原谅我,但我想问一些关于使用过滤算法进行音符起始检测的问题。

  1. “检测功能”是否与对音频信号使用过滤器相同?或者一般来说,检测功能、过滤(信号预处理)和峰值拾取之间有什么区别?

  2. 我经常听说低通(或高通)滤波器,但我很困惑。我读到它可以消除低于(或高于)某个阈值的某些频率。但是,我使用时域来计算音符开始(即使用信号幅度/能量的变化)。所以我不确定如何将低通滤波应用于时域。还有其他用于音符开始检测的好的过滤器吗?

  3. 光谱能量和相位能量有什么区别?(我知道频谱是指频谱图或频率,但我不知道相位是什么)

  4. 我在使用动态阈值时遇到了困难。有什么好的算法建议吗?例如,我有以下信号:

在此处输入图像描述

如上图所示,我错过了一些音符开始。简要描述我的算法,我计算并记录音频信号中发生的能量/幅度变化。然后我得到最大的“能量变化”并根据灵敏度,我取它的百分比并将其设置为阈值。所以这就是处理不同程度的幅度/能量的问题所在。如果我将灵敏度设置得太低,我会想出“鬼”发作,如果我将灵敏度设置得太高,我会错过一些发作。有什么建议可以改进我正在使用的算法(或建议一种新算法)?

我确信很难达到 100% 的准确率,但与我现在所拥有的相比,我需要一个更好的算法来检测音符的起始位置。我会很感激我能得到的所有帮助。非常感谢!

0 投票
3 回答
1533 浏览

audio - 注意使用光谱差异的起始检测

我对发病检测相当陌生。我阅读了一些关于它的论文,并且知道仅使用时域时,可能会有大量的误报/否定,并且通常建议同时使用时域和频域或频域。

关于这一点,我有点困惑,因为我在如何使用频谱能量或 FFT bin 的结果来确定音符开始方面遇到了麻烦。因为,音符的开始不是由振幅的尖峰代表吗?

有人可以启发我吗?谢谢!

0 投票
2 回答
2200 浏览

audio - 开始击败检测?

你如何确定哪些发作是节拍?我正在使用 Spectral Flux 进行音符起始检测,并使用 Running Mean 进行峰值拾取/阈值处理。

我只是在使用吉他乐器,所以打击乐器的存在可能对此无济于事。有任何想法吗?

谢谢!

0 投票
3 回答
654 浏览

audio - 从音符开始的节拍检测?

您如何确定哪些 Note Onsets 是节拍?目前,我所拥有的有点像使用所谓的“脉冲列车”的“蛮力”方法。

基本上,这个想法是,您生成从最小速度到最大速度的脉冲序列。这些脉冲序列只是表示节拍以特定速度发生的时间。例如,如果 Tempo = 60bpm(每分钟节拍数),则脉搏序列的节拍间隔为 1 秒(60 / 60 bpm)。对于 Tempo = 120bpm,脉冲序列的节拍间隔为 0.5 秒 (60 / 120bpm)。

现在基本上,我只是使用这些脉冲序列来比较和对比在假定的节拍上发生的音符起始点的接近程度。所以一般来说,这个想法是,如果音符开始发生在靠近节拍位置的地方,整体差异会更小。然后它基本上只是选择总体差异最小的节奏。

但是,我遇到了有关此实现的两个问题。

1.)很少有完美的音符开始位置,尤其是通过录制的音乐(我正在使用),这通常会导致效果较差。

2.) 较高的速度将导致较小的间隔,这使其成为具有非节拍开始(即 8 分音符、16 分音符)的音乐的更好候选者,而不是音乐的实际更好的节奏(即 60bpm 纯8 分音符可能会返回 120bpm)

你能推荐一些其他(甚至简单的)节拍检测方法吗?我想自己实现该算法以获得经验,因此非常感谢有用的教程链接。谢谢!