title: python specific frequency remove(notch filter)?
body: <pre><code>#complie by python3 only_test.py
  
  import pyaudio
  import numpy as np
  import wave
  import time
  import math
  #from pydub import AudioSegment
  #from pydub.playback import play
  #from scipy.signal import iirfilter
  from scipy import signal
  
  RATE = 48000
  CHUNK = 4096
  WIDTH = 2
  volume = 0.0
  duration = 1.0
  #SHORT_NORMALIZE = (1.0/32768.0)
  #INPUT_BLOCK_TIME = 1
  #INPUT_BLOCK_PER_BLOCK = int(RATE*INPUT_BLOCK_TIME)
  
  while True:
  
      #use a blackman window
      window = np.blackman(CHUNK)
  
      #load audio stream
      p = pyaudio.PyAudio()
  
      player = p.open(format=pyaudio.paInt16,
                      channels=1,
                      rate=RATE,
                      output=True,
                      frames_per_buffer=CHUNK)
  
      stream = p.open(format=pyaudio.paInt16,
                      channels=1,
                      rate=RATE,
                      input=True,
                      frames_per_buffer=CHUNK)
  
      #errorcount = 0
  
      for i in range(int(20*RATE/CHUNK)):
  
          sound = stream.read(CHUNK)
  
          #imp_ff = signal.filtfilt(b,a,sound)
  
          #playback microphone sound 
          #player.write(np.fromstring(sound,dtype=np.int16),CHUNK)
  
          #generate samples with return frequency to array
          #samples= (np.sin(2*np.pi*np.arange(RATE*duration)*freq/RATE)).astype(np.int16)
  
          #inverse frequency samples
          #inverse_samples = -samples
  
          #return frequency sound stream      
          #player.write(np.fromstring((volume*inverse_samples)\
          ,dtype=np.int16),CHUNK)
  
          #unpack the data and times by hamming window
          indata = np.array(wave.struct.unpack("%dh"%(len(sound)/WIDTH),\
                                               sound))*window
  
          #take the fft and square each value
          fftData = abs(np.fft.rfft(indata))*2
  
          #ifftData = abs(np.fft.irfft(indata))*2
  
          #find the maxium
          which = fftData[1:].argmax() + 1
  
          #use quadratic interpolation around the max
          if which != len(fftData)-1:
              y0,y1,y2 = np.log(fftData[which-1:which+2:])
              x1 = (y2-y0)*.5 / (2*y1-y2-y0)
  
              #find the frequency and output it
              freq = (which+x1)*RATE/CHUNK
              print("the freq is %d hz." % (freq))
  
          else:
              freq = which*RATE/CHUNK
              print("the freq is %d hz." % (freq))
  
          #playback the mic sound
          player.write(np.fromstring(sound,dtype=np.int16),CHUNK)
  
          if freq &lt; 65:
             freq = 0
  
          #generate samples, note conversion to array
          #samples = 
          (np.sin(2*np.pi*np.arange(RATE*duration)*freq/RATE)).astype(np.int16)
  
          #invert phase of samples
          #result_samples = samples 
  
          #playback the invert_mic sound
          #player.write(np.fromstring(result_samples,dtype=np.int16),CHUNK)
  
      stream.stop_stream()
      stream.close()
      p.terminate()
  </code></pre>
  
  <p>We are currently processing microphones in real time.
  It is designed to obtain the frequency through it and to remove the sine wave sound through the notch filter (bandstop filter) for the output frequency.
  I do not know what code to write to do a notch filter (bandstop filter).
  Do you have any code or libraries to help?</p>