我刚接触portaudio,我看过“如何提取频率...”问题,但我仍然希望能得到一些帮助。我需要传输一个频率(使用扬声器),然后我想检查这个频率是否传输(在麦克风中捕获它),当然我想使用portaudio进行发送和检测。此外,我不知道如何使用fft进行检测,因为我看到了记录示例,他们使用样本数据类型,使用此数据类型,他们可以找到最大振幅我可以使用它来找到频率吗?
提前使用tnx。
发布于 2012-07-13 23:26:54
在PortAudio中,播放简单的音调被指定为sample code。
虽然那里的音高不是从特定的数字计算出来的,但很容易弄清楚:
amplitude[n] = sin( n * desiredFreq * 2 * pi / samplerate )与PortAudio示例代码一样,您可能希望考虑在每次调用时使用查找表,而不是依赖sin(),这既是为了提高性能(也是为了提高sin在大数时的准确性,这可能没问题,但我不确定)。
检测正在播放的频率是一个在SO上被问到的问题。Here是我最近给出的一个答案。
结果是,有许多方法取决于你的技能水平,以及背景噪音等问题。如果您只是检测一个简单的正弦波,并且不期望有很多噪声,那么在确保信号高于某个阈值之后,您可能会很好地计数零交叉。如果你真的期待噪音,你就得变得更花哨些。
https://stackoverflow.com/questions/11451934
复制相似问题