0
我已經設法使用GetSpectrumData函數計算麥克風音頻輸入的音高。但現在我需要得到前7個音頻諧波的幅度(項目要求) 我對Audio dsp的瞭解非常少。我所理解的只是諧波是基頻的倍數。但是,我將如何獲得諧波的振幅。Unity3D中音頻信號諧波的幅度
感謝
我已經設法使用GetSpectrumData函數計算麥克風音頻輸入的音高。但現在我需要得到前7個音頻諧波的幅度(項目要求) 我對Audio dsp的瞭解非常少。我所理解的只是諧波是基頻的倍數。但是,我將如何獲得諧波的振幅。Unity3D中音頻信號諧波的幅度
感謝
首先,你需要找出哪些FFT斌你的基本頻率是的,說:它位於濱#10的諧波會駐留在倉的整數倍,因此二次諧波將在斌20,第三個在垃圾箱30中,依此類推。對於這些諧波箱中的每一個,都需要計算振幅。根據您在FFT中使用的窗口函數,您將需要在計算中包含少量分檔(如果您有興趣,可以使用Google譜泄漏)。
double computeAmpl(double[] spectrum, int windowHalfLen, int peakBin, int harmonic)
{
double sumOfSquares = 0.0;
for (int bin = peakBin-windowHalfLen; bin <= peakBin+windowHalfLen; bin++)
{
sumOfSquares += spectrum[bin] * spectrum[bin];
}
return sqrt(sumOfSquares);
}
正如我所說的窗口半長取決於窗口。一些常見的有: