C# 基频+;c语言中的语音检测#

C# 基频+;c语言中的语音检测#,c#,detection,voice,frequency,C#,Detection,Voice,Frequency,我试图通过麦克风的输入实时检测语音 我已经准备好接收输入,执行FFT算法,并将结果存入数据库。我有一个频域,一个时域和一个频谱图 如何获得基频? 如果我得到基频,我可以指定,如果频率在一定的值之间,那么我们谈论的是声音吗? 我所有的东西都准备好了,还有别的办法吗 TK预先在声谱图上取语音范围内的最高峰值(例如,400到10K hz)。这应该给你基本频率 或者,您可能需要整合频率直方图。这是因为有时你的单词以西伯利亚语(“s”音)开头或包含西伯利亚语(“s”音)和摩擦音(“f”和“th”音),它们

我试图通过麦克风的输入实时检测语音

我已经准备好接收输入,执行FFT算法,并将结果存入数据库。我有一个频域,一个时域和一个频谱图

如何获得基频? 如果我得到基频,我可以指定,如果频率在一定的值之间,那么我们谈论的是声音吗? 我所有的东西都准备好了,还有别的办法吗


TK预先

在声谱图上取语音范围内的最高峰值(例如,400到10K hz)。这应该给你基本频率

或者,您可能需要整合频率直方图。这是因为有时你的单词以西伯利亚语(“s”音)开头或包含西伯利亚语(“s”音)和摩擦音(“f”和“th”音),它们具有相当高的频率和广谱。你不想错过演讲的开头,因为它不是以元音开头的


另一个因素是,除了声音,你还能听到什么。有很多背景噪音吗?什么样的?如果没有,那么只要有声音就足够了。例如,如果有音乐,那么你就有一个完全不同的挑战。如果你试图区分声音和其他声音,那么我会尝试神经网络方法——它可能需要那种复杂程度。

有许多不同的算法,正确的算法取决于你在做什么。你希望得到什么样的投入?你想用这些输入做什么?你有什么样的处理能力

检测基本频率并不能帮助你识别某个特定的人是否在说话,如果你正试图这么做的话。你说话的频率不断变化。你必须对这个人的共振峰做个“指纹”等等


简单地找到FFT的峰值并不能给语音带来好的效果。调查

这是一个常见的误解,但基频不一定是频谱中的最大峰值。在语音中,它取决于谐波与共振峰的排列方式,并且可以根据声音的频率和质量而改变?他们不是一回事。