2009-10-23 139 views
3

我试图从麦克风实时检测语音输入。c基本频率+语音检测#

我已经接收到输入,执行FFT算法,结果以dB为单位。我有一个频域,一个时域和一个谱图。

我怎样才能获得基本频率? 如果我能得到基本频率,我可以指定如果频率在某些值之间,那么我们正在说话的是语音? 有没有其他的方式来做到这一点,我已经拥有的东西?

韩国社交协会提前

+0

“光谱图”或“光谱”?他们不是一回事。 – endolith 2009-12-05 18:35:58

回答

1

采取的范围内,这对语音频谱(比方说,400至10K赫兹)的最高峰。这应该给你基本的频率。

或者,您可能需要整合一个频率直方图。这是因为有些时候,你的单词开始于或包含具有相当高频率和广谱的擦音(“s”声音)和摩擦音(“f”和“th”声音)。你不想错过讲话的开始,因为它是从元音以外的东西开始的。

另一个因素是除了语音之外你还会选择什么。是否有很多背景噪音?哪一种?如果没有,那么声音的存在就足够了。例如,如果有音乐,那么你有一个完全不同的挑战。如果你试图区分语音和其他声音,那么我会试图尝试一种神经网络方法 - 它可能需要这种复杂性。

+2

这是一种常见的误解,但基频不一定是频谱中最大的峰值。在声音方面,它取决于谐波如何与谐振器配合,并且可以根据声音的频率和质量而改变。 – tom10 2009-10-26 17:52:45

3

frequency estimation有很多不同的算法,正确的使用取决于你在做什么。你期望什么样的输入?你想用这个输入做什么?你有什么样的处理能力?

检测基本频率不会帮助您确定某个特定的人是否在说话,如果这就是您想要做的。你的声音频率不断变化。你必须制作人的头像的“指纹”等。

简单地找到FFT的峰值不会给你带来好的语音结果。看看cepstral analysis