1.1 Tujuan
Setelah melaksanakan percobaan ini praktikan mampu:
1. Memahami fungsi dasar teorema sampling Nyquist.
2. Memahami analisis time frequency dari Audio.
3. Mengaplikasikan proses Transformasi Fourier Waktu Pendek.
4. Mengaplikasikan Vocoder Fasa.
1.2 Peralatan
Peralatan yang digunakan pada percobaan ini adalah:
1. Laptop atau Personal Computer
2. Software MATLAB 2014a
size(tt);
sint = sin(tt);
radfreq = freq*(2*pi)/1;
sint2 = sin(radfreq*tt); % Frekuensi radial adalah
radfreq, sedangkan Hz adalah radfreq/(2*pi)
plot(sint2(1:100), 'k')
title('radfreq plot')
%play sample sint2
p = Audioplayer(sint2, samp_freq);
play(p, [1 samples]);
pause(1)
disp('Doing Sampling:');
if nyq - freq < 0 alias = nyq - abs(nyq-freq), end
cnt = 1;
for ii = 1:samp_time:samples
tt_sf(cnt) = ii/samples;
cnt=cnt+1;
end
if ii < samples tt_sf(cnt) = 1; end
sint3 = sin(radfreq*tt_sf);
hold on
tt_sf_sze = size(tt_sf,2)
figure
plot(sint3(1:100), 'r')
p = Audioplayer(sint3, nyq);
play(p, [1 tt_sf_sze]);
s = length(x);
if length(w) == 1
if w == 0
% special case: rectangular window
win = ones(1,f);
else
if rem(w, 2) == 0 % force window to be odd-len
w = w + 1;
end
halflen = (w-1)/2;
halff = f/2; % midpoint of win
halfwin = 0.5 * ( 1 + cos( pi *
0:halflen)/halflen));
win = zeros(1, f);
acthalflen = min(halff, halflen);
win((halff+1):(halff+acthalflen)) =
halfwin(1:acthalflen);
win((halff+1):-1:(halff-acthalflen+2)) =
halfwin(1:acthalflen);
end
else
win = w;
end
w = length(win);
% now can set default hop
if h == 0
h = floor(w/2);
end
c = 1;
for b = 0:h:(s-f)
u = win.*x((b+1):(b+f));
t = fft(u);
d(:,c) = t(1:(1+f/2))';
c = c+1;
end;
% stft_Spectogram .m
% Make Spectrogram
specy = abs(Y)/n;
%istft.m
function x = istft(d, ftsize, w, h)
s = size(d);
%if s(1) != (ftsize/2)+1
% error('number of rows should be fftsize/2+1')
%end
cols = s(2);
xlen = ftsize + (cols-1)*h;
x = zeros(1,xlen);
if length(w) == 1
if w == 0
% special case: rectangular window
win = ones(1,ftsize);
else
if rem(w, 2) == 0 % force window to be odd-len
w = w + 1;
end
halflen = (w-1)/2;
halff = ftsize/2;
halfwin = 0.5 * ( 1 + cos( pi *
(0:halflen)/halflen));
win = zeros(1, ftsize);
acthalflen = min(halff, halflen);
win((halff+1):(halff+acthalflen)) =
halfwin(1:acthalflen);
win((halff+1):-1:(halff-acthalflen+2)) =
halfwin(1:acthalflen);
% 2009-01-06: Make stft-istft loop be identity
win = 2/3*win;
end
else
win = w;
w = length(win);
end
for b = 0:h:(h*(cols-1))
ft = d(:,1+b/h)';
ft = [ft, conj(ft([((ftsize/2)):-1:2]))];
px = real(ifft(ft));
x((b+1):(b+ftsize)) =
x((b+1):(b+ftsize))+px.*win;
end;
Koding program 1.5 Demo Program istft.m
figure(2)
imshow(255*abs(Yedit)/n)
colormap('hsv')
title('Edited Xedit Spectrogram')
% Remake sound
yedit = istft(Yedit,n,n, nhop);
sound(y,Fs)
sound(yedit,Fs)
figure(3)
plot(yedit)
title('Xedit')
figure(4)
plot(yedit(1:length(yedit)) - y(1:length(yedit))')
title('Xedit residual')
% Play residual
sound(yedit(1:length(yedit)) -
y(1:length(yedit))',Fs);
figure(5)
imshow(255*abs(Yedit)/n)
colormap('hsv')
title('Edited Yedit Spectrogram')
% Remake sound
yedit = istft(Yedit,n,n, nhop);
sound(y,Fs);
sound(yedit,Fs)
figure(6)
plot(yedit)
title('Yedit')
figure(7)
plot(yedit(1:length(yedit)) - y(1:length(yedit))')
title('Yedit residual')
% Play residual
sound(yedit(1:length(yedit)) - y(1:length(yedit))',
Fs);
Koding Program 1.6 Demo Program stft_Spectogram _edit.m
2. Vocoder Fasa:
Buka M-file Matlab di D:Prak PSM\Percobaan1\ Fourier\ pvoc_speed.m
a. Perubahan Tempo : Ubah kecepatan Audio dengan:
1. Kecepatan satu setengah lebih pelan.
2. Kecepatan satu setengah lebih cepat.
3. Tiga kali lebih cepat.
4. Tugas:
Amati dan analisis kualiatas suara ketika kecepatan Audio
% Get some Audio
load handel;
% Half Speed
yslow =pvoc(y,.5,1024);
% Compare original and resynthesis
sound(y,Fs);
sound(yslow,Fs);
% Twice as Fast
yfast =pvoc(y,2,1024);
% Compare original and resynthesis
sound(y,Fs);
sound(yfast,Fs);
Koding Program 1.7 Demo Program pvoc_speed.m
% Pitch up a Fifth
ypvoc =pvoc(y, 0.66666);
ypitch = resample(ypvoc,2,3); % NB: 0.666 = 2/3
sound(y,Fs);
sound(ypitch, Fs);
sound(y(1:length(ypitch)) + ypitch, Fs);
% Pitch up an octave
ypvoc =pvoc(y, 0.5);
ypitch = resample(ypvoc,1,2);
sound(y,Fs);
sound(ypitch, Fs);
sound(y(1:length(ypitch)) + ypitch, Fs);
ypitch = resample(ypvoc,2,1);
sound(y,Fs);
sound(ypitch, Fs);
sound(y + ypitch(1:length(y)), Fs);
Koding program 1.8 Demo program pvoc_pitch.m
1.5 Gambar dan Data Hasil Percobaan
1.5.1 Teorema Sampling Nyquist dan Efek Aliasing
1.5.1.1 Teorema Sampling Nyquist dan Efek Aliasing Pada Waveform
1. Frekuensi Gelombang Sinus (Frekuensi Sinyal Informasi) Dibawah Batas
Nyquist.
Gambar 1.23 Spectogram dengan f=256, w=256, ukuran offset (h) adalah 256/4
2. Window = 512
Gambar 1.24 Spectogram dengan f=512, w=512, ukuran offset (h) adalah 512/4
3. Hann-Windowed
Pada gambar 1.44 hasil sinyal Audio tersampling ini menunjukkan hasil
intonasi yang lebih tinggi dari sinyal frekuensi informasi.
Pada gambar 1.48 hasil sinyal Audio tersampling ini menunjukkan hasil
intonasi yang lebih rendah dari sinyal frekuensi informasi, karena mengalami efek
Aliasingpada proses samplingnya. Yang mengahasilkan efekAliasingpada
frekuensi sinyal informasi 13000Hz untuk batas Nyquist 11025 Hz sebesar 9050
Hz.
4. Frekuensi gelombang sinus (frekuensi sinyal informasi) setengah batas
Nyquist
Pada kondisi ini frekuensi sinyal informasi adalah 5512Hz di mana
frekuensi ini di setengah batas ketentuan Nyquist. Di mana outputAudio ini
menunjukkan hasil intonasi yang tinggi dari frekuensi sinyal informasi yang ada di
atas dapat di tunjukkan pada gambar 1.49 sebagai berikut:
Pada gambar 1.50 hasil sinyal Audio tersampling ini menunjukkan hasil
intonasi yang lebih rendah dari sinyal frekuensi informasi yang ada sebelumnya,
karena mengalami efek Aliasing pada proses samplingnya.
5. Frekuensi gelombang sinus (frekuensi sinyal informasi) sama dengan
sample frequency
Pada kondisi ini frekuensi sinyal informasi adalah 22050 Hz di mana
frekuensi ini sama dengan frekuensi sample. Di mana output Audio ini
menunjukkan hasil intonasi yang lebih rendah dari frekuensi sinyal informasi yang
ada di atas. Gambar frekuensi sinyal informasi dapat di tunjukkan pada gambar 1.53
sebagai berikut:
1.6.2.1 Spectogram
Pada kondisi ini hasil dari koding program “stft.m” dan “stft_Spectogram
.m” menghasilkan output berupa Spectogram yaitu pada FFT size (f), window(w),
dan offset (h) yang berbeda yang juga terdapat pada perbedaan nilai window untuk
kondisi hann-windowed dan kondisi rectangular. Kedua gambar tersebut berbeda
pada inputan dan hasil Spectogramnya, dimana hasil spectrogram pada gambar
1.54 lebih besar di banding gambar 1.53 karena lebar windowdari gambar 1.55 2
kali lebih besar dari gambar 1.53. Namunhasil warnanya sama yang menghasilkan
perbedaan frekuensi berdasarkan satuan waktu. Perbedaan frekuensi ini di sebut
juga dengan trade-off, dalam satu windowspectogram terdapat enam kali trade-off
dalam waktu yang berbeda.
1. Window = 256
Pada gambar 1.53 menunjukkan FFT size (f) = 256, window(w) = 256, dan
offset (h) = 256/4. Gambar tersebut menunjukkan hasil warnanya sama yang
menghasilkan perbedaan frekuensi berdasarkan satuan waktu. Perbedaan frekuensi
ini di sebut juga dengan trade-off, dalam satu windowsepctogram terdapat enam
kali trade-off dalam waktu yang berbeda.
Gambar 1.53 Spectogram dengan f=256, w=256, ukuran offset (h) adalah 256/4
2. Window = 512
Pada gambar 1.54 menunjukkan FFT size (f) = 512, window(w) = 512, dan
offset (h) = 512/4. Gambar tersebut menunjukkan hasil warnanya sama yang
menghasilkan perbedaan frekuensi berdasarkan satuan waktu. Perbedaan frekuensi
ini di sebut juga dengan trade-off, dalam satu windowsepctogram terdapat enam
kali trade-off dalam waktu yang berbeda.
Gambar 1.54 Spectogram dengan f=512, w=512, ukuran offset (h) adalah 512/4
3. Hann-Windowed
Pada kondisi ini menggunakan koding program 1.3 “stft.m” dimana hanya
window yang di ubah. Hann-windowed menggunakan windows (w) sebesar 256
(sama dengan besar FFT size (f)) dapat di tunjukkan pada gambar 1.57. Pada
gambar 1.55 menunjukkan hasil yang sama dimana perubahan nilai window dari
kondisi hann-windowed tidak mempengaruhi hasil spectrogram.
Gambar 1.55 Spectogram Hann-windowed (w)=256
4. Rectangular
Rectangular menggunakan windows (w) sebesar 0 (nol). Karena window
adalah 0 (nol) maka rentang parameter yang di ukur tidak ada. Itulah yang
menyebabkan hasil spectrogram tidak nampak.