我想通过Android手机的麦克风开发一种需要对乐器进行精确音高检测的应用程序。我读过的大多数建议都涉及使用快速傅里叶变换(FFT),但是他们提到它在准确性和处理能力方面存在问题(考虑到它应该在智能手机上顺利运行)。一个答案表明5Hz的误差范围,这在低频音调范围内会非常明显。如果误差是对数而不是静态的,那么每个音符的误差范围应该小于10分(1分=半音的第100根,倍频的1,200根),这将是<(1.005792941 .. )。
这些问题是否正确?如果是这样,是否有更好的音高检测方法?有没有这样做的开源库,或者我必须自己编写算法(同时旨在准确地检测每秒可能有多个音符)?我有基本的Java知识。
此外,普通智能手机麦克风的频率范围灵敏度的预期限制是什么?