Note that there are some explanatory texts on larger screens.

plurals
  1. POFrequency Analysis in Python
    primarykey
    data
    text
    <p>I'm trying to use Python to retrieve the dominant frequencies of a live audio input. For the moment I am experimenting using the audio stream my Laptop's built in microphone, but when testing the following code, I am getting very poor results.</p> <pre><code> # Read from Mic Input and find the freq's import pyaudio import numpy as np import bge import wave chunk = 2048 # use a Blackman window window = np.blackman(chunk) # open stream FORMAT = pyaudio.paInt16 CHANNELS = 1 RATE = 1920 p = pyaudio.PyAudio() myStream = p.open(format = FORMAT, channels = CHANNELS, rate = RATE, input = True, frames_per_buffer = chunk) def AnalyseStream(cont): data = myStream.read(chunk) # unpack the data and times by the hamming window indata = np.array(wave.struct.unpack("%dh"%(chunk), data))*window # Take the fft and square each value fftData=abs(np.fft.rfft(indata))**2 # find the maximum 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 thefreq = (which+x1)*RATE/chunk print("The freq is %f Hz." % (thefreq)) else: thefreq = which*RATE/chunk print("The freq is %f Hz." % (thefreq)) # stream.close() # p.terminate() </code></pre> <p>The code is cannibalized from <a href="https://stackoverflow.com/questions/2648151/python-frequency-detection">this question</a>, which deals with Fourier Analysis of a wave file. It's in the current modular structure as I'm implementing it with the Blender Game Environment (hence the import bge at the top), but I'm pretty certain my problem lies within the AnalyseStream module.</p> <p>Any advice you can offer would be much appreciated.</p> <p>UPDATE: I'm getting the correct values every now and again, but they're found infrequently amongst incorrect values (&lt;10Hz). That and the program runs REALLY slowly.</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload