在Android中计算音频文件中的节拍/分钟

时间:2014-03-03 21:44:45

标签: java android

我想在android中的音频文件中计算每分钟的节拍,我只是一个小线索,有一个Visualizer库用音频文件波创建DIGITAL BAR效果,我可以用这个检查节拍,这是正确的解决方案还是有任何正确的方法来做到这一点?我想以适当的方式对音频文件进行分类。根据档案中的节拍/分钟。

任何帮助都会很棒

2 个答案:

答案 0 :(得分:3)

每分钟节拍可以用多个级别计算,一个简单的能量计算器,你应该通过应用电平表或VAD(语音/音频活动探测器)来制作,在某些方面可以做得很简单,作为一个合适的音高探测器,这是一个复杂的过程,隔离音乐片段的节拍可能很复杂,因为节拍的感觉很复杂。 如果你只是对能量计算器/节拍功能感兴趣,你可以做的是有两个运行平均值,看看你的信号相对于另一个有多大。

X= [x1……xn] input audio samples, separate the buffers into smaller segment say 100 samples. n=100,  
Take the absolute value for this array abs(X), 
Simple one pole smoothing function can be made with
X_filtered_long= X_filtered_long . (1-alpha) + abs(X). alpha // alpha is .02, value depends on the sample rate, signals and what beat of interest 
Create the second filtered signals 
X_filtered_short= X_filtered_short . (1-beta) + abs(X). beta // beta is .2 
If (X_filtered_short > X_filtered_long) 

Detected_beat= 1; 
InsideBeat=+1;

else 

Detected_beat= 0;
InsideBeat=0;

如果您愿意,“我想以适当的方式对音频文件进行分类。根据文件中的节拍/分钟。”这只能通过使用MFCC等参数手指打印音频来完成。 好的参考将是

音乐内容的自动流派分类:调查
Scaringella,N .; Zoia,G .; Mlynek,D。
IEEE信号处理杂志 卷:23,问题:2

答案 1 :(得分:0)

你在这里问的是非常困难的。

通过使用信号处理技术将音频信号从时域变换到频域,通常通过对音频数据的复杂数学处理来进行音频分析以获得节拍。有完整的书籍专门讨论这个主题。

您在内部提到的可视化器使用了许多这些DSP技术,分析可视化器数据可能比音频数据更糟糕。

即使您设法找到一个为您执行此操作的库,结果也会非常不可靠。也许对于电子音乐来说节拍更明显,你会得到比古典音乐或爵士乐更好的效果。