I've never commented on a CZcams channel so far, but honestly, you have the most underrated channel with your presentation hardworked and prepared for the students. Please, Valerio, keep it up for those who are eager to learn acoustics!!
I've been watching your videos for a while and my gosh they are so interesting and useful. I'm about to start and master in computing for sound and audio and it's super useful to have these maths reminder. Thank you and keep up the great work Valerio !
How do we get F(k) = k /NT ? By nyquist-shannon theorem maximum frequncy in the digital signal is sample_rate / 2. With your formula almost 1/T = sample_rate.
Thanks a lot for these clear videos, at ~16:04, since we replace f(and seeing the next minutes for the frequence definition), why don't we have x(KSr/N) instead of x(K/N) since we are replacing f. thanks. YOU ROCK!
It's because we also replaced time (t) with "sample index" (n). So we are replacing both f and t. Valerio forgot to mention that to get back to time, we need to use "t = n / sr". So when you multiply time by frequency, you get "n / sr * k * sr / N = n k / N".
Hi Velardo. Thanks for the nice videos. I saw that Y-axis in Frequency Domain representation is sometimes referred to as Magnitude and sometimes as Amplitude. Why this is the case?
As far as I understand now (please correct me if I am wrong), If I have a sampling rate of 16000 Hz, I only can get the frequencies that are present between 0 Hz -> 16000 Hz. And the frequency gap range will be "sampling rate / total samples count" and the value of k'th index in the Fourier complex array I will get the frequency of "( k * sampling rate ) / total samples count" .. in my case total samples were 524288 so frequency gap range is 16000/524288 = 0.031 Hz.. so the magnitude (abs) value of fouriered_complex_array[0] will indicate the energy level of "0 * 0.031 Hz" and fouriered_complex_array[1] will indicate the energy level of "1 * 0.031 Hz" and so on till fouriered_complex_array[16000-1] will indicate "(16000 - 1) * 0.031 " Hz energy. Now you can simply plot and enjoy. Thanks for such detailed explanations, I got it later gradually but really enjoyed your excitement and especially the magic wand :3
Hi Valerio, at 16:16, the equation uses M / N for range of k. Suppose M is NOT EQUAL to N, that is, I have sampling rate : 16000 and my audio contains 220500 samples. What is the range for k in this case? Is it 1 to 16000 or 1 to 220500?
It seems that in practice sometimes the signal is zero-padded at the end to double the length of the audio you're looking at. To increase frequency resolution? Or why is that? Thank you again for the informative video!
In a ML learning context, you may want to 0-pad audio files, so that they all have the same number of samples. Apart from that, I can't think of other useful applications...
@@ValerioVelardoTheSoundofAI Thank you for your reply. Indeed, for e.g. batching in ML, zero-padding is useful. However, I was actually talking about FFT Frequency resolution. I came across posts like these: - www.bitweenie.com/listings/fft-zero-padding/ - dsp.stackexchange.com/questions/741/why-should-i-zero-pad-a-signal-before-taking-the-fourier-transform I was wondering if you would be able to explain the why of this technique more clearly?
I've never commented on a CZcams channel so far, but honestly, you have the most underrated channel with your presentation hardworked and prepared for the students. Please, Valerio, keep it up for those who are eager to learn acoustics!!
I've been watching your videos for a while and my gosh they are so interesting and useful. I'm about to start and master in computing for sound and audio and it's super useful to have these maths reminder. Thank you and keep up the great work Valerio !
Thank you Leo!
Awesome explanation of DFT, FFT!
How do we get F(k) = k /NT ? By nyquist-shannon theorem maximum frequncy in the digital signal is sample_rate / 2. With your formula almost 1/T = sample_rate.
you please provide source for this statement?
great video mas valerio
Thanks a lot for these clear videos, at ~16:04, since we replace f(and seeing the next minutes for the frequence definition), why don't we have x(KSr/N) instead of x(K/N) since we are replacing f. thanks.
YOU ROCK!
It's because we also replaced time (t) with "sample index" (n). So we are replacing both f and t. Valerio forgot to mention that to get back to time, we need to use "t = n / sr". So when you multiply time by frequency, you get "n / sr * k * sr / N = n k / N".
Yes, our magic wang 😇
I don't deserve this quality of knowledge, consumed on my bed
Well... that's one of my favourite spots to learn. When I get tired, I move to the couch :D
Actual frequency can be very high beyond the sampling frequency , assuming the value to be within sampling rate may not holds true always
That's correct.
Hi Velardo. Thanks for the nice videos. I saw that Y-axis in Frequency Domain representation is sometimes referred to as Magnitude and sometimes as Amplitude. Why this is the case?
Can you please elaborate on the point that how M=N is computationally effective ?
If we define k to represent frequencies in the range from zero to the nyquist frequency, do we still need to remove the last half of the spectrum?
Do I still need to digitalize the audio signal in order to be processed in DFT functions?
just got little confused at 15.20 where you replaced "f" by "k/N" and later described "F(k) = k/NT = K . Sr / N ". just can't connect them.
As far as I understand now (please correct me if I am wrong), If I have a sampling rate of 16000 Hz, I only can get the frequencies that are present between 0 Hz -> 16000 Hz. And the frequency gap range will be "sampling rate / total samples count" and the value of k'th index in the Fourier complex array I will get the frequency of "( k * sampling rate ) / total samples count" .. in my case total samples were 524288 so frequency gap range is 16000/524288 = 0.031 Hz.. so the magnitude (abs) value of fouriered_complex_array[0] will indicate the energy level of "0 * 0.031 Hz" and fouriered_complex_array[1] will indicate the energy level of "1 * 0.031 Hz" and so on till fouriered_complex_array[16000-1] will indicate "(16000 - 1) * 0.031 " Hz energy. Now you can simply plot and enjoy.
Thanks for such detailed explanations, I got it later gradually but really enjoyed your excitement and especially the magic wand :3
Make video on FFT
@9:45 sounds like a Slack notification
SOUNDOFAI man!
Hi Valerio, at 16:16, the equation uses M / N for range of k. Suppose M is NOT EQUAL to N, that is, I have sampling rate : 16000 and my audio contains 220500 samples. What is the range for k in this case? Is it 1 to 16000 or 1 to 220500?
Is F(k) = k/(NT) the explanation for pitching effects when we occur a package(- and therefor a sample)loss? (MIND = BLOWN??)
It seems that in practice sometimes the signal is zero-padded at the end to double the length of the audio you're looking at. To increase frequency resolution? Or why is that?
Thank you again for the informative video!
In a ML learning context, you may want to 0-pad audio files, so that they all have the same number of samples. Apart from that, I can't think of other useful applications...
@@ValerioVelardoTheSoundofAI Thank you for your reply. Indeed, for e.g. batching in ML, zero-padding is useful.
However, I was actually talking about FFT Frequency resolution. I came across posts like these:
- www.bitweenie.com/listings/fft-zero-padding/
- dsp.stackexchange.com/questions/741/why-should-i-zero-pad-a-signal-before-taking-the-fourier-transform
I was wondering if you would be able to explain the why of this technique more clearly?
How can I extract DFT from speech dataset using python programming language ?
You can use numpy/scipy. Stay tuned for next video and you'll find that out!
Good tutorial on FFT but I don't see anything related to machine learning in it.