我是portaudio的新手,我看了“如何提取频率......”的问题,但我仍然希望得到一些帮助。 我需要传输一个频率(使用扬声器)然后我想检查这个频率是否被传输(在麦克风中捕获),当然我想使用portaudio进行发送和检测。 另外,我不知道如何使用fft进行检测,因为我看到了记录示例,并且他们使用了SAMPLE数据类型,并且使用这种数据类型,他们可以找到最大振幅,我可以用它来查找频率吗?
提前tnx。答案 0 :(得分:1)
在PortAudio中播放简单的音调为sample code。
虽然没有根据特定数字计算出的音高,但很容易弄明白:
amplitude[n] = sin( n * desiredFreq * 2 * pi / samplerate )
在PortAudio示例代码中,您可能需要考虑使用查找表而不是为每次调用计算sin(),这两者都是为了提高性能(以及大数字的罪的准确性,这可能很好,但是我'我不确定)。
检测正在播放的频率是在SO上提出的一个问题。 Here是我最近给出的答案。
结果是,有很多方法取决于您的技能水平和背景噪音等问题。如果您只是检测到一个简单的sin wav并且不期望大量的噪声,那么在确保信号高于某个阈值之后,您可能只计算过零点。如果你确实期望噪音,你必须得到更好的。