我正在尝试实现一个歌唱游戏,它将分析原始麦克风输入并告诉玩家他的歌声有多好。这需要实时完成。
我遇到了很多线程问同样的问题,但我仍然没有完成它,可能是由于我缺乏该领域的经验和浅薄的数学背景。我已经根据 DSPDimension 网站音高变换的文章实现了一个算法:http ://www.dspdimension.com/admin/pitch-shifting-using-the-ft/
就像文章解释的那样,我提取了真实的频率和幅度,但我不知道用这个找到基频。我试图获得最大幅度的 bin,但这只会为我提供更高音调信号的正确结果,无论我使用哪种过采样因子,我仍然会得到低频信号的不良数据。这种方法是完全错误的,还是我在正确的轨道上但只是错过了一些东西?
提前致谢,
编辑:我忘了提到我只对音高课程感兴趣,所以如果缺少基本音也没关系,但我在样本中有很强的泛音。
EDIT2:感谢大家,我刚刚完成了一个运行得很好的算法版本。低音调估计问题是由于我的输入测试造成的。当我唱出音符时,它匹配正确。另外,我现在正在考虑所有谐波,而不仅仅是最高峰。