如何以编程方式确定歌曲的速度/ BPM?常用的算法是什么,必须考虑哪些因素?
我有兴趣使用JavaScript WebAudioAPI来检测歌曲节拍,然后在画布中渲染它们.
我可以处理画布部分,但我不是一个很大的音频人,真的不明白如何在JavaScript中制作节拍探测器.
我已经尝试过这篇文章但是,对于我的生活,我不能连接每个函数之间的点来制作一个功能程序.
我知道我应该向你展示一些代码,但说实话,我没有任何代码,我所有的尝试都失败了,并且在前面提到的文章中有相关的代码.
无论如何,我真的很感激一些指导,甚至更好的演示如何实际检测歌曲节拍WebAudioAPI.
谢谢!
在Python的audioop文档指出,大多数可用的功能需要"声音碎片".
audioop模块包含对声音片段的一些有用操作.它对声音片段进行操作,声音片段由8,16或32位宽的有符号整数样本组成,存储在Python字符串中.
究竟什么是声音片段,如何将现有的.wav文件合并为一个?
谢谢.
我正在开发一个需要BPM跟踪的Android音频项目.我决定编写自己的不是一个好主意,在环顾四周之后,我发现了一些可以进行BPM跟踪的库,例如aubio,vamp,echonest等.出了很多,aubio似乎是一个不错的选择.问题是我找不到可以帮助理解我如何使用库的好文档,例如,哪种输入音频格式是兼容的(我应该在将音频传递给函数之前对其进行预处理)等.
你能指点我一些开源项目的文档或aubio的实现(在android上会是一个奖励).
如果你认为有更简单的方法(另一个算法/库)来移植到android(最好是在c),请告诉我.
谢谢.
我一直在努力确定Web Audio API是否可用于分析拉入ArrayBuffer比实时更快的音频数据.可能的应用是在浏览器中进行节拍检测,音调检测等,而不是将文件传递到服务器来完成工作.
该AnalyserNode界面看起来非常适合这样的任务,但感觉笨重,因为它仍然需要链接到AudioBufferSourceNode与start()荷兰国际集团它,你得到任何数据之前.并且,要比实时更快地完成它需要增加它playbackRate,这将降低分析的质量.
或者,使用dsp.js可能更合适,但它的存储库几年来一直处于非活动状态,这不是一个巨大的信任投票.
我想根本问题是:Web Audio API是用于分析工作还是其唯一目的(以及它的设计和优化)性能和回放?如果不是,是否有任何其他标准或工具专门用于音频分析?我是否通过提及dsp.js来回答我自己的问题?
抱歉,如果我提交了副本,但是我想知道python中是否有任何lib使您能够从音频文件中提取声谱。我希望能够获取音频文件并编写算法,该算法将返回一组数据{TimeStampInFile; 频率幅度}。
我听说这通常称为节拍检测,但是据我所知,节拍检测不是一种精确的方法,它仅对可视化有用,而我想对提取的数据进行处理,然后将其转换回音频文件。我不需要实时执行此操作。
我将不胜感激任何建议。
嗨,大家好!
我是音频编程的新手,想构建一个 Java FX 应用程序,它与来自我的麦克风或线路输出的音频进行交互。
我在谷歌上搜索图书馆,发现 minim 似乎很受欢迎。它是为处理而编写的,但您也可以在 Java 中使用它。问题是我没有找到关于如何做到这一点的好文档。(我不想使用处理的原因是我想构建一个非常高级的gui,我认为在JavaFX中更容易做到)。
作为第一步,我试图建立一个对歌曲中的每个节拍都有反应的库。我的代码如下所示:
public class Main extends Application {
/* Used to trick minim constructor (needs an object with those methods) */
class MinimInput {
String sketchPath( String fileName ) {
return "";
}
InputStream createInput(String fileName) {
return new InputStream() {
@Override
public int read() throws IOException {
return 0;
}
};
};
}
@Override
public void start(Stage stage) throws Exception {
...
//Some gui logic here!
...
stage.setScene(scene);
stage.show();
/* …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用此节拍检测算法在 python 中进行音频处理。我已经实现了上述文章中的第一个(非优化版本)。虽然它打印了一些结果,但我无法检测它是否具有一定的准确性,因为我不知道如何用它播放声音。
目前,我习惯Popen在进入计算循环之前用歌曲异步启动媒体播放器,但我不确定此策略是否有效并给出同步结果。
#!/usr/bin/python
import scipy.io.wavfile, numpy, sys, subprocess
# Some abstractions for computation
def sumsquared(arr):
sum = 0
for i in arr:
sum = sum + (i[0] * i[0]) + (i[1] * i[1])
return sum
if sys.argv.__len__() < 2:
print 'USAGE: wavdsp <wavfile>'
sys.exit(1)
numpy.set_printoptions(threshold='nan')
rate, data = scipy.io.wavfile.read(sys.argv[1])
# Beat detection algorithm begin
# the algorithm has been implemented as per GameDev Article
# Initialisation
data_len = data.__len__()
idx = 0
hist_last = …Run Code Online (Sandbox Code Playgroud)