You are on page 1of 9

Scanned by CamScanner

Scanned by CamScanner
Assignment 4

Code

clear
clc
[speech,fs] = audioread('speech1_10k.wav');
w1=hamming(250);
speech_ham=w1.*speech;
fft_speech_ham=fft(speech_ham,1024);
cepstral_fft=log(abs(fft_speech_ham));
cepstral=ifft(cepstral_fft);
cepstral(1)=0;
lifter=zeros(1024,1);
lifter(1:4)=1;
lifter(2:50)=2;
filtered_cepstral=lifter.*cepstral;
fft_filtered_cepstral=fft(filtered_cepstral,1024);
phase_fil_cepstral=phase(fft_filtered_cepstral);
mag_fil_cepstral=mag2db(abs(fft_filtered_cepstral));

minPhaseImpulseResponse=abs(ifft(fft_filtered_cepstral));

figure;
subplot(3,1,1)
plot(cepstral(1:256))
title('Cepstral')
subplot(3,1,2)
plot(phase_fil_cepstral(1:256*2))
title('Phase of Filtered Cepstral')
subplot(3,1,3)
plot(mag_fil_cepstral(1:256*2))
title('Mag. of Filtered Cepstral')

figure;
plot(exp(minPhaseImpulseResponse(1:200)));
title('Minimum Phase Impulse Response');

pitchPeriod=65;

glottalPulse = zeros(4*pitchPeriod,1);
glottalPulse(1:66:264) = 1;
minPhaseVowel = conv(glottalPulse,minPhaseImpulseResponse);
figure;
subplot(2,1,1);
plot(glottalPulse);
title('Glottal Pulse ');
subplot(2,1,2);
plot(minPhaseVowel(1:500));
title('Minimum Phase suynthesized Vowel');



Question 2

A









B
Teoplitz Matrix =
16.4817 14.8706 10.8230 5.5208
14.8706 16.4817 14.8706 10.8230
10.8230 14.8706 16.4817 14.8706
5.5208 10.8230 14.8706 16.4817

C
Linear Prediction =
1.7975
-1.6233
1.1894
-0.6320

D

E




















Question 3

load('ex5M1.mat')
fs=10000;
w1=hamming(250);
speech=speech1_10k.*w1';
ac_speech=xcorr(speech);

r=[ac_speech(251);ac_speech(252);ac_speech(253);ac_speech(254)];
R=toeplitz([ac_speech(250),ac_speech(251),ac_speech(252),ac_speech(253)]);
lp=inv(R)*r;

A=sqrt(ac_speech(250)-lp(1)*ac_speech(251)-lp(2)*ac_speech(252)-
lp(3)*ac_speech(253)-lp(4)*ac_speech(254));
H=zeros(256);
temp=0;
for n=1:256
w=2*pi*fs*n/256;
temp=0;
for k=1:4
temp=temp+lp(k)*exp(-i*w*k);
end
H(n)=A/(1-temp);
Az(n)=(1-temp)/A;
end
figure
plot(abs(H))
title('Impulse Response')

pitch=(50/3)*fs/256;
display(pitch)
pitch=1/pitch;
display(pitch)
sounda=zeros(256,1);
for i=1:256
if i>4
sounda(i)=lp(1)*sounda(i-1) + lp(2)*sounda(i-2) + lp(3)*sounda(i-3)
+ lp(4)*sounda(i-4);
end
if i==1
sounda(i)=rand(1,1);
end
if i==2
sounda(i)=lp(1)*sounda(i-1);
end
if i==3
sounda(i)=lp(1)*sounda(i-1)+ lp(2)*sounda(i-2);
end
if i==4
sounda(i)=lp(1)*sounda(i-1)+ lp(2)*sounda(i-2) +
lp(3)*sounda(i-3);
end
end
figure;
plot(sounda)
title('Prediction Signal');
se=10*rand(512,1);
sound(se)
A


















B
Pitch Period = 16.667 samples

C

You might also like