我对信号处理很陌生。我现在有两个声音信号数据。每个数据都是以10 KHz,2秒的采样率采集的。我已经将这些数据导入到python中。sound_1和sound_2现在都是numpy数组。当然,每个声音数据的长度是20000。你知道吗
声音1包含水流声(我感兴趣)和环境噪声(我不感兴趣),而声音2只包含环境噪声(我不感兴趣)。你知道吗
我正在寻找一个算法(或包),可以帮助我确定这个水流声音的频率范围。我想如果我能找出频率范围,我可以用傅立叶逆变换来过滤环境噪音。你知道吗
然而,我的最终目的是从声波数据中提取水流声,并消除环境噪声。如果有其他方法就好了。你知道吗
我正在看这个帖子:Python frequency detection
但我不明白他们怎么能只用一个声音信号就知道频率。我想我们至少需要比较两个信号数据(一个包含我感兴趣的声音,另一个没有),这样我们就可以找出区别。你知道吗
因为
sound_1
包含水流和环境噪声,所以没有直接的方法提取水流。傅里叶变换将得到信号中的所有频率,而不考虑信号源。你知道吗方法是从
sound_2
中提取环境噪声的频率,然后从sound_1
中去除。完成之后,您可以从已经去噪的sound_1
中提取频率。你知道吗常用的降噪方法之一是采用频谱选通。基本上,您首先确定噪声听起来如何,然后从信号中移除平滑的频谱。平滑是至关重要的,因为声音是一个波,一个连续的实体。如果你简单地从波中剔除离散的频率,你会得到很差的结果(音频会听起来不自然和机器人)。应用的平滑量将决定减少了多少噪声(请注意,噪声永远不会真正消除-您将始终得到一些残留)。你知道吗
具体解决方案。你知道吗
下面是一个片段:
现在只需在
reduced_noise
上运行FFT即可发现水流的频率。你知道吗Here's我如何使用降噪。在this part中,我确定频率统计。你知道吗
相关问题 更多 >
编程相关推荐