pyAudio回调中的in_data是什么?

时间:2018-05-15 22:34:49

标签: python scipy signal-processing fft pyaudio

我试图从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所代表的转换数据是什么,可以使用。

0 个答案:

没有答案