使用 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
所以我在 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