gpt4 book ai didi

c++ - 自相关返回带有麦克风输入的随机结果(使用高通滤波器)

转载 作者:搜寻专家 更新时间:2023-10-31 01:23:27 28 4
gpt4 key购买 nike

很抱歉问了一个与我之前问过的问题类似的问题 (FFT Problem (Returns random results)),但我查阅了音高检测和自相关并找到了一些使用自相关进行音高检测的代码。

我正在尝试对用户的歌声进行音调检测。问题是,它不断返回随机结果。我从 http://code.google.com/p/yaalp/ 得到了一些代码我已经将其转换为 C++ 并进行了修改(如下)。我的采样率为 2048,数据大小为 1024。我正在检测正弦波和麦克风输入的音高。正弦波的频率是 726.0,它检测到它是 722.950820(我没问题),但它检测到麦克风的音调是一个从 100 到 1050 左右的随机数。

我现在正在使用高通滤波器来消除直流偏移,但它不起作用。我做得对吗?如果是这样,我还能做些什么来解决它?任何帮助将不胜感激!

(固定)

谢谢,

尼尔。

编辑:更改代码以实现截止频率为 30hz 的高通滤波器(来自 What Are High-Pass and Low-Pass Filters?,谁能告诉我如何使用卷积将低通滤波器转换为高通滤波器?)但它仍然是返回随机结果。不幸的是,将它插入 VST 主机并使用 VST 插件比较频谱对我来说不是一个选择。

编辑:已修复,感谢大家的帮助,但我从来没有让它工作,现在使用新代码。

最佳答案

我不是声音专家,但如果您使用 44100(我猜是每秒采样数)采样并使用 1024 个数据点。您正在处理大约 1/40 秒的数据。我并不惊讶当前的音调变化很大,具体取决于您选择的轨道。如果你想找到一个声音的平均音高或主要音高,我预计需要大约 1 秒的数据。

关于c++ - 自相关返回带有麦克风输入的随机结果(使用高通滤波器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1353368/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com