Realtime Audio Processing with FFT

3.6k views Asked by At

So I'm doing real time Audio processing in Python. The good news is, i found this link, which helps me collect data from my PC mic, and plot all the data in real time which is fantastic.

I also found this code from other links, where i can stream the data from Mic to Speaker for a given time.

    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)

Where my idea diverges from the above link is, I want to apply an FFT to the Microphone data before i send it to the speaker. if I print the 'data' from the above code, i see that it is a whole lot of hexa gibberish that has to converted to decimal format. From the earlier link, I know how to do that as well

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

I have the data that I need in decimal format. But now that i have this data, how can i convert it back to the hexa format after processing, that 'self.stream.write' can understand & output to the speaker. I'm not sure how that gets done.

1

There are 1 answers

0
whoknowsmerida On BEST ANSWER

i believe I've been able to find an answer. so if this might help someone else as well, here is a paper that helped me.

Real-Time Digital Signal Processing Using pyaudio_helper and the ipywidgets