我有一个5秒长的声音信号,它来自螺旋桨的声音。我需要通过求包络线的频率来求出螺旋桨的转速
import wave
import numpy as np
import matplotlib.pyplot as plt
raw = wave.open('/content/drive/MyDrive/Demon.wav','r')
signal = raw.readframes(-1)
signal = np.frombuffer(signal , dtype="int16")
frate = raw.getframerate()
time = np.linspace(0,len(signal) / frate,num = len(signal))
plt.figure(1)
plt.title("Sound Wave")
plt.xlabel("Time")
plt.plot(time, signal)
plt.show()
下面是指向声音文件本身的链接:https://sndup.net/5v3j
由于它是一个5秒长的信号,有80.000个样本,我想通过观察信号的1秒部分来详细了解它
partial_signal = signal [1 : 16000]
partial_time = time[1 : 16000]
plt.plot(partial_time,partial_signal)
plt.show()
图的输出如下所示
编辑:看起来图像不会显示此处是指向图像的链接: https://imgur.com/P5lnSM1 现在,我需要通过使用只python来找到螺旋桨转速的频率
通过对信号振幅应用快速傅里叶变换(FFT),可以很容易地做到这一点。以下是一个例子:
频率图如下所示:
最终检测到的频率为3.0 Hz,这与我们能听到的非常一致
相关问题 更多 >
编程相关推荐