It is possible to make an assumption that the FFT bin is applicable, but the outcomes at low frequencies may not be satisfactory. In cases where the entire Mel band covers only one or two FFT bins, the results may not be great. The function of the triangle mainly centers on the Mel band with a frequency range of 0 to Fs/2, where the center Mel band is represented by a triangle around it.

Question:

As a newcomer to both Signal Processing and Python, I’m attempting to develop a script that can implement an EQ on an input voice recording and output the modified signal. Although I came across some methods for signal processing in Python that involve transfer functions, the only functions I found were for low-

pass filter

filters, which wouldn’t suffice for my specific EQ manipulation. Therefore, I created the necessary filter curve EQ using Audacity, as shown in

.

Based on my basic grasp of signal processing, I believe that I must transform the continuous curve into a

discrete transfer function

before utilizing the transfer function on the input signal. Nevertheless, I am unsure of the procedure to convert the curve into a transfer function. Additionally, since this is my first time working with Python, my knowledge of how to execute this operation in a Python script is minimal. Any assistance you can offer would be greatly appreciated. Thank you!

Solution 1:

By utilizing the manage/export feature, you can transform your Audacity filter preset into a text document that includes frequency/value pairs and supplementary details. The file appears to be constructed using an 8192 FFT grid alongside a B-spline to interpolate the frequency/value pairs throughout the grid. Presumably, an inverse FFT is performed along with some circular time shifting to develop an impulse response that takes

linear phase

time, which is then utilized with a filter application technique similar to

fftfilt

.

Simply import the text file into Python, analyze it, and proceed with identical procedures.

Solution 2:

To apply a filter in Python, one approach is to create a track with an impulse, filter it in Audacity using your desired filter, and then extract the filter kernel by saving the resulting impulse response.