Downsample audio signal am I doing it right?
Show older comments
Hello,
I have an audio file and I want to perform Downsampling
form 44100 to 22050 / from 22050 to 11025 / from 11025 to 8000
Please find bellow my code.
[samples,fs] = audioread ('piano.wav');
audiowrite('piano.wav', samples,fs);
subplot (2,1,1)
plot(samples)
xlabel 'audio signal'
% processing second part downsampling
S1 = resample(fs,22050,44100); % downsample from 44100 to 22050
S2 = resample (S1,11025,22050); % downsample from 22050 to 11025
S3 = resample (S2,8000,11025); % doensample from 11025 to 8000
5 Comments
Walter Roberson
on 4 Dec 2018
Looks okay, except that there is no good reason for writing the file you just read from.
Also, you should be using a better x axis for the plot: it should be
x = (0:size(samples,1)-1)/fs;
plot(x, samples);
Isida Kaloshi
on 4 Dec 2018
Hari Ijjada
on 6 Sep 2019
After resampling the origanl samples how can i listen the resampled file ?
Henrik Gunnar Sundt
on 18 Jun 2020
You probably mean:
S1 = resample(samples,22050,44100);
not:
S1 = resample(fs,22050,44100);
Walter Roberson
on 18 Jun 2020
Good point, Henrik
Answers (1)
Yash Bansod
on 27 Sep 2019
I don't think that you are doing it rigt.
The following post describes the correct procedure: https://www.mathworks.com/help/signal/ug/changing-signal-sample-rate.html
To summerize:
% Code to read audio files
[y,Fs] = audioread(filename);
% code to resample audio
Fs_new = 16000;
[Numer, Denom] = rat(Fs_new/Fs);
y_new = resample(y, Numer, Denom);
% Code to play an already read audio file
sound(y, Fs);
Categories
Find more on Multirate Signal Processing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!