SignalLab2/speech_analysis.m

70 lines
1.7 KiB
Matlab

pkg load signal
%load & plot audio file modulator
[audio_data sampling_freq]= audioread('modulator22.wav');
figure;
plot(audio_data);
xlabel('Time in [s]');
ylabel('Amplitude in [dB]');
title('Speech data in time domain');
%FFT vs DFT comparison
if (0)
t = 5;
%average
for i=1:t
%FFT
[power, duration]=frequencySpectrum(audio_data,sampling_freq,1);
duration_fft(i) = duration;
%DFT
[power, duration]=frequencySpectrum(audio_data,sampling_freq,0);
duration_dft(i) = duration;
sum_fft =0;
sum_dft =0;
sum_fft = sum_fft + duration_fft(i);
sum_dft = sum_fft + duration_dft(i);
endfor
%estimate the duration of FFT
average_fft = sum_fft/t
average_dft = sum_dft/t
end
%Spectrogram
frequencySpectrum(audio_data,sampling_freq,1);
%Compute and display spectrogram
if(0)
spectrogram(audio_data,sampling_freq,5,5);
%spectrogram(audio_data,sampling_freq,30,5);
wan = audio_data(0.37*sampling_freq:1.17*sampling_freq);
tu = audio_data(1.24*sampling_freq:1.75*sampling_freq);
tri = audio_data(1.84*sampling_freq:2.19*sampling_freq);
frequencySpectrum(wan,sampling_freq,1);
frequencySpectrum(tu,sampling_freq,1);
frequencySpectrum(tri,sampling_freq,1);
end
%downsampling
audio_downsampled = downsample(audio_data, 2);
audiowrite('downsampled_audio.wav',audio_downsampled ,4000);
%down_deci = decimate(audio_data, 2);
%audiowrite('decimate_audio.wav',down_deci,4000);
%low-pass filter
lp = fir1(30,1000/sampling_freq,'low');
y = filter(lp,1,audio_data);
frequencySpectrum(y,sampling_freq,1);
lp_butter = butter(8,1000/sampling_freq,'low');
y_butter = filter(lp_butter,1,audio_data);
frequencySpectrum(y_butter,sampling_freq,1);