我试图从pyAudio的回调()生成的数组中获取频率。
def callback(in_data, frame_count, time_info, flag):
audio_data = np.fromstring(in_data, dtype=np.float32)
freq_data = np.fft.fft(audio_data)
freq = np.abs(freq_data)
# Operations here
recovered_signal = np.fft.ifft(filtered_freq).astype(np.float32).tostring()
我得到一个2048长度的数组,我不知道该如何继续。我已经缩小了我需要做的操作并尝试对其应用FFT,但我意识到我需要解压缩数据,并且pyAudio的文档有点缺乏(有时甚至不在线)。
我的部分问题是我不理解in_data
是什么。从我从研究中可以看出,它的字节,numpy为我转换成一个数组。但是,阅读一篇关于python信号处理的文章给了我的印象,我应该能够将其提取到频率中,然后对它进行基本的通带滤波器。
for f in freq:
if index > LOWCUT and index < HIGHCUT:
if f > 1:
filtered_freq.append(f)
#print(index)
else:
filtered_freq.append(0)
else:
filtered_freq.append(0)
index += 1
我也看过np.fft.fftfreq
,但这似乎仍然会产生一个2048长度的数组,而不是包含所有频率及其功率的数组。
编辑:我知道有两个通道是交织的,但是我的问题主要是不了解numpy所代表的转换数据是什么,可以使用。