我试图从一个声源中提取一个基本频率。也许有人在对着麦克风唱A3,所以我想要探测到~110 be
我的方法是:
(Peak.power=1063.343750,.freq=2032.715088
(Peak1.power=1047.764893,.freq=3070.605225
(Peak2.power=1014.986877,.freq=5925.878418
(Peak3.power=1011.707825,.freq=6963.769043
(Peak4.power=1009.152954,.freq=4022.363037
(Peak5.power=995.199585,.freq=4974.120605
(Peak6.power=987.243713,.freq=8087.792480
(Peak7.power=533.514832,.freq=908.691833
我的问题是:我怎样才能设计出一种算法,正确地将上述基本值识别为~1000 as?
它不能保证在~1000时会有比~2000或~3000等更高的浓度,甚至不能保证会有任何入口~1000。我们可以有~5000 x一项,~4000 x三项,~3000 x 2条目,以及几个伪值,如上面列表中的226。
我想我可以再次重复这个过程,剔除那些与列表的其他部分不“调和”的基本原理。这至少可以消除那些虚假的价值..。
也许我甚至没有问正确的问题。也许这整个方法糟透了。但我认为挑选最强的峰值并提取与该峰值相关的一组谐波是有意义的。
理论上,如果初始最强峰是三次谐波,那么这组峰应该包含3/1 3/2 3/ 3 /4 3/5 3/6 3/7等。尽管有些人可能失踪了。
现实地说,我有一种感觉,它总是具有最大力量的基本和声或第一和弦。但我不知道我能不能依靠这个..。
太多的因素,它使我的头游泳。我为这样一个混乱的问题事先道歉。希望我能在死后把它整理好。
发布于 2011-02-01 05:14:19
我重新表述了这个问题,并在这里给出了一个答案:如何取一组{301,102,99,202,198,103}的数字,然后扔掉~100?
我看过几种方法,这比我发现的任何方法都要简洁得多。我已经测试过了,而且效果很好。
发布于 2011-01-19 04:27:50
Cepstum (或倒谱分析)和调和乘积谱是从泛音序列中估计激励器频率的两种很好的算法。
如果泛音序列间隔适当,则倒谱(FFT峰值的对数FFT )可用于估计频率间隔的周期,然后可用于估计频率。
谐波乘积谱基本上是比较光谱峰与第n个多拷贝本身,通过抽取谱的多个低整数比,并重叠它们。
发布于 2011-11-21 13:40:01
您可以浏览有关语音识别的文章的链接。
文章:用于语音识别的相空间点分布参数 (订阅全文所需)
https://stackoverflow.com/questions/4716620
复制相似问题