我可以在音频分析上使用一些帮助。我想要做的是找到音频文件中的特定模式。问题是我没有确切的音频参考,我只是想在文件中找到类似的模式。 到目前为止,我已经在轨道上计算了RMS,因为我们可以看到很容易看到声音和我想要提取的声音之间的区别(箭头指向的声音)。
我已经尝试过计算标准差,但没有任何有趣的内容。 所以我对所有我应该研究的统计属性都持开放态度。
float rms(short* buffer, int length){
float avg = 0;
float sum = 0;
for (int i=0;i < length;++i){
sum += buffer[i];
}
avg = sum / (float)length;
float summean = 0;
for (int i = 0;i < length;++i){
summean += (buffer[i] - avg) * (buffer[i] - avg);
}
return pow(summean / (float)length, 0.5);
}
void main(){
SndfileHandle file = read_file("audio_file.wav");
float* avgBuffer; //the buffer is allocated somewhere else
float seconds = 0.03;
int bufferLength = seconds * 16000; //samplerate
short* buffer = (short*)malloc(sizeof(short) * bufferLength);
while ((len = file.read(buffer, bufferLength))){
avgBuffer[x] = rms(buffer, len);
x++;
}
display(avgBuffer); //displays the red graph
}