C# FFT结果因我使用的计算机而异
我正在使用Unity3D进行基音检测项目。我对编码、unity非常陌生&几乎所有我目前正在从事的工作都是如此!:-) 我偶然发现了这个网页,它帮助我开始工作,我正在我的项目中使用FFT代码: 它大部分工作都很好,但是检测到的频率似乎因我使用的计算机而异。我曾在各种台式机和笔记本电脑(pc和mac的混合机)上试用过,在一些电脑上,它的频率正确,但在其他电脑上,它的频率约为1.5个半音。但有趣的是,在我试过的6台计算机中,有3台是正确的,其他3台都是相同的1.5个半音 这不能归结于话筒,因为我已经在一些电脑上尝试了内置话筒和独立话筒,结果没有变化 有人知道这可能是什么原因,以及我如何解决这个问题吗?我能对代码做些什么调整吗?我正在从事的项目最终将作为iPhone应用程序分发,因此我需要它在所有设备上通用 顺便说一下,目前我只能使用C语言编程 非常感谢您的帮助和建议 祝福C# FFT结果因我使用的计算机而异,c#,unity3d,fft,pitch-detection,C#,Unity3d,Fft,Pitch Detection,我正在使用Unity3D进行基音检测项目。我对编码、unity非常陌生&几乎所有我目前正在从事的工作都是如此!:-) 我偶然发现了这个网页,它帮助我开始工作,我正在我的项目中使用FFT代码: 它大部分工作都很好,但是检测到的频率似乎因我使用的计算机而异。我曾在各种台式机和笔记本电脑(pc和mac的混合机)上试用过,在一些电脑上,它的频率正确,但在其他电脑上,它的频率约为1.5个半音。但有趣的是,在我试过的6台计算机中,有3台是正确的,其他3台都是相同的1.5个半音 这不能归结于话筒,因为我已经
Phil1.5个半音恰好与48 kHz和44.1 kHz采样率之间的比率相同。我的猜测是,您硬编码了48 kHz作为采样率,但您的一些计算机实际使用的采样率为44.1 kHz(反之亦然)。您应该使用合适的API来确定正在使用的采样率,或者自己显式地设置采样率 数学:
- 1.5半音是
=2^(1.5/12)
的比率1.09
- 48 kHz和44.1 kHz之间的比率=
=48/44.1
1.09