Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在尝试通过麦克风的输入实时检测语音。
我已经接收到输入,执行 FFT 算法并得到以 dB 为单位的结果。我有一个频域、一个时域和一个频谱图。
我怎样才能得到基频?如果我得到基频,我可以指定如果频率在某些值之间,那么我们正在说话的是语音吗?有没有其他方法可以用我已经拥有的东西来做到这一点?
提前谢谢
频率估计有许多不同的算法,使用正确的算法取决于您在做什么。你期望什么样的输入?你想用那个输入做什么?你有什么样的处理能力?
检测基频并不能帮助您确定某个特定的人是否在说话,如果那是您正在尝试做的事情。你声音的频率不断变化。您必须制作此人的共振峰等的“指纹”。
简单地找到 FFT 的峰值不会给你带来好的语音结果。查看倒谱分析。
取频谱图上语音范围内的最高峰(例如,400 到 10K hz)。那应该给你基本频率。
或者,您可能需要整合频率直方图。这是因为有时您的单词开头或包含嘶嘶声(“s”音)和摩擦音(“f”和“th”音),它们具有相当高的频率和广谱。你不想错过演讲的开头,因为它不是以元音开头的。
另一个因素是除了语音之外,你还能听到什么。有很多背景噪音吗?哪一种?如果没有,那么只有声音的存在就足够了。例如,如果有音乐,那么您将面临完全不同的挑战。如果你想区分语音和其他声音,那么我很想尝试神经网络方法——它可能需要那种复杂程度。