使用 FFT 进行实时音频处理

Realtime Audio Processing with FFT

所以我在 Python 中进行实时音频处理。好消息是,我找到了这个 link,它可以帮助我从我的 PC 麦克风收集数据,并实时绘制所有数据,这太棒了。

我还从其他 link 中找到了这段代码,我可以在给定时间内将数据从麦克风流式传输到扬声器。

    self.stream=self.p.open(format=pyaudio.paInt16,channels=self.CHANNELS,rate=self.RATE,input=True,
              output=True,frames_per_buffer=self.CHUNK)

   def stream_data(self):
        for i in range(0, int(self.RATE / self.CHUNK * self.RECORD_SECONDS)):
            data = self.stream.read(self.CHUNK)
            self.stream.write(data, self.CHUNK)

我的想法与上述 link 不同的地方是,我想在将麦克风数据发送到扬声器之前对其应用 FFT。如果我从上面的代码打印 'data' ,我会看到它是一大堆必须转换为十进制格式的六边形乱码。从前面的link开始,我也知道怎么做了

data = np.frombuffer(self.stream.read(self.CHUNK),dtype=np.int16)

我有我需要的十进制格式的数据。但是现在我有了这些数据,我如何在处理后将它转换回 hex 格式,'self.stream.write' 可以理解并输出到扬声器。我不确定这是如何完成的。

我相信我已经找到了答案。所以如果这对其他人也有帮助,那么这里有一篇对我有帮助的论文。

Real-Time Digital Signal Processing Using pyaudio_helper and the ipywidgets