Is it possible to frequency filter a time domain signal, without converting the signal to a frequency domain..

My question comes in regards how MFCC according to wiki and other pages describe the extracting step.

enter image description here

Is this necessary though?

  • $\begingroup$ The diagram you offer is just how one finds a signal's MFCC. At what point is a 'frequency filter applied to a time domain signal'? $\endgroup$ – Tendero Aug 15 '17 at 14:08
  • $\begingroup$ This diagram shows the general scheme I would find on the net.. In which the signal is converted to the frequency domain, and then mel scale filtered.. a frequency filtering.. of frequency domain signal. The processed signal is time/discrete signal. $\endgroup$ – Bob Burt Aug 15 '17 at 14:18
  • $\begingroup$ So you want to know if it is possible to find the MFCC without calculating the FFT? $\endgroup$ – Tendero Aug 15 '17 at 14:21
  • $\begingroup$ Yes.. basically it.. I think I for short moment forget the usage of FFT, and why we convert to frequency domain.. But yes of course it makes sense. Question is whether it is sensible to do.. would i computation wise reduce the time needed to compute it. or will the added "complexity" make up for it.. $\endgroup$ – Bob Burt Aug 15 '17 at 14:31

When you want to explicitly apply a frequency domain operation on a given signal $x[n]$ then you need to obtain those frequency domain samples $X[k]$ of $x[n]$,

However, it's possible that you can also apply an equivalent operation on the time domain samples $x[n]$ which will implicitly realize the proposed frequency domain operation on $X[k]$ as a result. However in order to accomplish that, you shuld be able to convert the frequency domain operation into a time domain equivalent, usually by applying Fourier transform properties.

If you cannot find such a (simple) time domain equivalent of frequency domain operation, then, no, you cannot apply it on time domain samples.

As an example if you would multiply the DTFT $X(e^{j\omega})$ by a rectengular window of cotoff frequency $\omega_c$; $Y(e^{j \omega}) = W(e^{j \omega}) X(e^{j \omega})$ then you could also perform it on the time domain as a convolution: $y[n] = w[n] \star x[n]$ , but if you would do the following operation on the frequency samples $Y(e^{j \omega}) = log( |X(e^{j \omega})| )$ then it's hard to find an simple time domain equivalent case...

(Note that I've used the theoretical DTFT, $X(e^{j\omega})$ to show the expressions while referring to the frequency samples which actually belong to DFT $X[k]$, please keep in mind the circularity issue when finding the exact expression.)

For the mel-scale operations that are included in the box such as the $\log$ operation etc, the degree of nonlinearity will probably disallow an (simple) equivalent time domain expression to be formulated, and I don't know one such, but if you can find one, then why not.

  • $\begingroup$ So... It's just the basic "school rule" of converting it to different domain for easy processing. $\endgroup$ – Bob Burt Aug 15 '17 at 14:19
  • $\begingroup$ I don't know what you mean by a "shcool rule" but you have to find a time domain operation which is reflected by the Fourier transform into the frequency domain as the required Frequency domain operation. $\endgroup$ – Fat32 Aug 15 '17 at 14:32

A time domain FIR filter with exactly the same triangular response shape as a triangular frequency domain filter would require an infinitely long impulse response. That (for a single MFCC coefficient) would be slower and require more compute power than an FFT. Even a shorter FIR filter, say log(N)+1 taps, would likely be slower than a well optimized FFT.

You could use a higher order IIR bandpass filter, but that may or may not be close enough to an MFCC filter's frequency response for your purposes.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.