SlideShare a Scribd company logo
1 of 13
PraktikumPengkodean Sinyal Wicara
1
Pengolahan Informasi Wicara
Bab: Pengkodean Sinyal Wicara
Sub: Kegiatan Pembelajaran di Lab Menyusun Model Pengkodean Sinyal Wicara
Pada kegiatan di laboratorium ini kita akan melakukan proses pengkodean sinyal wicara
menggunakan standar pengolahan sinyal wicara yang memenuhi persyaratan Linear dan Time
Invariant seperti yang telah dibicarakan di dalam teori pada Bab xxx. Untuk melakukan proses
secara keseluruhan akan memakan waktu, untuk itu perlu dilakukan penyederhanaan dengan
melakukan simulasi tanpa harus mengorbankan pemahaman pada konsep system yang
sesungguhnya.
Ada dua model pengkodean sinyal wicara yang kita buat pada kegiatan lab ini, yaitu berbasis
Linear Predictive Code (LPC) untuk pengkodean atau kompresi, berbasis model Discrete
Cosines Transform (DCT), dan pengkodean CELP yang merupakan pengembangan dari bentuk
LPC pada sistem yang sudah diaplikasikan pada sistem celullar.
P.1.1. Model Pengkodean Sinyal Wicara dengan LPC
 Menyusun Model Pengkodean LPC
Pemodelan dimulai dengan mengacu pada diagram blok pada Gambar 1 berikut. Pada gambar
sudah jelas langkah-langkah apa yang seharusnya dilakukan.
Sinyal
Wicara
Sampling
Frame
Blocking
Windowing
LPC
Encoder
LPC
Decoding
Reshape
Frame
Sinyal Wicara
Recovery
Hitung
Error
Pengiriman,
penyimpanan,
dsb
Gambar 1. Diagram blok model LPC coding.
PraktikumPengkodean Sinyal Wicara
2
Agar anda dapat menjalankan pemodelan ini, akan lebih baik jika anda memulai dengan melihat
cara kerja dari fungsi lpc.m yang ada di Matlab. Caranya adalah dengan memanfaatkan fasilitas
help. Anda ketikkan “help lpc”, tekan enter.
lpc Linear PredictorCoefficients.
A = lpc(X,N) finds the coefficients, A=[ 1 A(2) ... A(N+1) ], of an
Nthorder forward linear predictor.
Xp(n) = -A(2)*X(n-1) - A(3)*X(n-2) - ... - A(N+1)*X(n-N)
such that the sum of the squares of the errors
err(n) = X(n) - Xp(n) is minimized. X can be a vector or a matrix. If X
is a matrix containing a separate signal in each column, lpc returns a
model estimate for each column in the rows of A. N specifies the order of
the polynomial A(z) which must be a positive integer. N must be less or
equal to the length of X. If X is a matrix, N must be less or equal to
the length of each column of X.
If you do not specify a value for N, lpc uses a default
N =length(X)-1.
[A,E] = lpc(X,N) returns the variance (power) of the prediction error.
lpc uses the Levinson-Durbin recursion to solve the normal equations that
arise from the least-squares formulation. This computation of the linear
prediction coefficients is often referred to as the autocorrelation
method.
% Example:
% Estimate a data series using a third-order forward predictor, and
% compare to the original signal.
% Create signal data as the output of an autoregressive process
% driven by white noise. Use the last 4096 samples of the AR process
% output to avoid start-up transients:
randn('state',0);
noise = randn(50000,1); % Normalized white Gaussian noise
x = filter(1,[1 1/2 1/3 1/4],noise);
x = x(45904:50000);
a = lpc(x,3);
 Langkah Pemrograman LPC Coding
Pemodelan dapat disusun dengan pembuatan program sbb:
1. Lakukan proses pengambilan sinyal wicara dari file yang sudah anda buat tsb, dan
gambarkan hasilnya. Untuk menyesuaikan dengan standar pengolahan wicara, anda
lakukan proses resampling. Tetapi jika anda merasa tidak terlalu urgent, anda dapat
melakukannya tanpa proses resample. Karena file yang anda ambil terdiri dari 2 kolom
(berbentuk matrix), maka anda cukup ambil salah satu kolom saja, agar proses bisa berjalan
dengan benar.
[y,Fs]=wavread('file_a.wav');
x0=y(:,1);
PraktikumPengkodean Sinyal Wicara
3
2. Agar anda dapat mengetahui kondisi asli dari sinyal wicara yang akan anda gunakan, akan
sebagai objek percobaan, maka tampilkan sinyal asli tsb.
N=320;
figure();
plot(x0);
Gambar 2. Sinyal file_a.wav
3. Dari gambar tersebut anda dapat memilih sampel ke 3201 sampai 3600 untuk diamati.
Karena anda sudah menetapkan satu frame berukuran N=320, maka anda dapat menyusun
program sbb:
x = filter(1,[1 1/2 1/3 1/4],x0);
x_LPC = x0(10*N+1:12*N);
a=lpc(x_LPC,6);
Anda dapat memiliki nilai N yang lain, jika ukuran frame anda berubah sesuai dengan
Frekuensi sampling yang anda pilih, atau bisa juga anda menentukan posisi sampel berbeda
dengan nilai tersebut di atas, asalkan pilihan anda tepat pada sinyal wicara yang masih
merepresentasikan ‘vokal a’.
4. Lanjutkan dengan memanfaatkan filter digital IIR sederhana, seperti telah ditetapkan nilainya
melalui variable ‘x’ di atas untuk melakukan pemulihan sinyal wicara pada frame tersebut.
0 0.5 1 1.5 2 2.5 3 3.5
x 10
4
-0.4
-0.3
-0.2
-0.1
0
0.1
0.2
0.3
0.4
PraktikumPengkodean Sinyal Wicara
4
est_x = filter([0 -a(2:end)],1,x); % Estimated signal
e = x - est_x; % Prediction error
[acs,lags] = xcorr(e,'coeff'); % ACS of prediction error
5. Jika tidak terjadi kesalahan pada program anda, coba tampilkan pembentukan frame sinyal
asli 2 frame, dengan sinyal hasil pemulihan yang telah dibuat. Dan anda dapat juga
menampilkan error estimasi dari perbedaan sampel sinyal asli dengan sinyal pemulihan.
figure();
%Compare the predicted signal to the original signal
plot(10*N+1:12*N,x(10*N+1:12*N),10*N+1:12*N,est_x(10*N+1:12*N),'r--
',10*N+1:12*N,e(10*N+1:12*N),'k--');
title('Original Signal vs. lpc Estimate');
xlabel('Sample Number'); ylabel('Amplitude'); grid;
legend('Original Signal','lpc Estimate')
Gambar 3. Perbandingan sinyal asli, hasil rekonstruksi dan error estimasi
6. Anda juga bisa melihat korelasi dari kesalahan prediksi yang terjadi. Tetapi bagian terakhir
ini sifatnya hanya pilihan.
%Look at the autocorrelation of the prediction error.
figure; plot(lags,acs);
title('Autocorrelation of the Prediction Error');
xlabel('Lags'); ylabel('Normalized Value'); grid;
3200 3300 3400 3500 3600 3700 3800 3900
-0.2
-0.15
-0.1
-0.05
0
0.05
0.1
0.15
Original Signal vs. lpc Estimate
Sample Number
Amplitude
Original Signal
lpc Estimate
PraktikumPengkodean Sinyal Wicara
5
7. Coba anda lakukan langkah 1 s/d 5 untuk jenis file suara (vocal yang lain)
P.1.2. Menyusun Model Pengkodean LPC untuk satu Sinyal Penuh
1. Langkah 1 sama dengan pada P.1.1, diawali dengan pengambilan data dan proses resampling.
%File Name:LPC_Code_Est_02.m
%dari Mathwork, 28 Maret 2020, sudah masuk akal...
%Untuk seluruh file
close all; clear all;clc;
[y,Fs]=wavread('file_a.wav');
y10=y(:,1);
%Proses resampling:
%------------------
fs1=16000;
y1r=resample(y10,fs1,Fs);
2. Atur agar panjang sampel adalah kelipatan dari ukuran satu frame sinyal, dalam hal ini
kelipatan dari 320 (0,02*fs1). Kemudian lakukan pembentukan frame dengan memanfaatkan
fungsi reshape.m.
%Pembentukan Frame
%------------------
N=0.02*fs1;
NN=floor(length(y1r)/N);
y1=y1r(1:NN*N);
y1_reshape=reshape(y1,N,NN);
x=y1_reshape;
3. Proses pengkodean LPC melibatkan perubahan sinyal sebelum diproses, dan dilakukan pada
setiap frame.
[m,n]=size(x);
for i=1:n,
x1(:,i) = x(:,i);
x2(:,i) = filter(1,[1 1/2 1/3 1/4],x1(:,i));
end
%Compute the predictor coefficients and the estimated signal.
a=lpc(x2,3);
4. Lakukan pemulihan ulang sinyal terkode LPC, dan hitung perbedaan antara sinyal pemulihan
dibanding sinyal asalnya.
%Estimated Signal at the receiver part:
%-------------------------------------
for j=1:n,
y_est(:,j)= filter([0 -a(j,2:end)],1,x2(:,j));
y_salah(:,j)=x2(:,j)-y_est(:,j);
end
PraktikumPengkodean Sinyal Wicara
6
5. Bandingkan bentuk sinyal asli dan sinyal estimasi hasil pemulihan dalam domain waktu
x2_filter=reshape(x2,N*NN,[]);
y1_recover=reshape(y_est,N*NN,[]);
y_salah_r=reshape(y_salah,N*NN,[]);
figure(1);
t=1:NN*N;
plot(t,x2_filter,'r',t,y1_recover,'g',t,y_salah_r,'k');
6. Bandingkan bentuk sinyal asli dan sinyal estimasi hasil pemulihan dalam domain frekuensi
%perbandingan domain frekuensi
%-----------------------------
figure();
pwelch(x2_filter,[],[],[],fs1,'onesided');title('PSD Estimate Sinyal
Asli')
figure();
pwelch(y1_recover,[],[],[],fs1,'onesided');title('PSD Estimate Sinyal
Recover')
P.1.3. Menyusun Model Pengkodean DCT
 Menyusun Model Pengkodean
Pemodelan dimulai dengan mengacu pada diagram blok pada Gambar 4 berikut. Pada gambar
sudah jelas langkah-langkah apa yang seharusnya dilakukan.
Sinyal
Wicara
Sampling
Frame
Blocking
Windowing
DCT
Encoder
DCT
Decoder
Reshape
Frame
Sinyal Wicara
Recovery
Hitung
Error
Pengiriman,
penyimpanan,
dsb
Gambar 4. Diagram blok penyusunan pengkodean dengan DCT
Anda dapat memanfaatkan fungsi dct dan fungsi idct yang ada di Matlab. Untuk itu anda perlu
memahami cara kerja kedua fungsi tersebut.
dct Discrete cosine transform.
Y = dct(X) returns the discrete cosine transform of X.
The vector Y is the same size as X and contains the discrete cosine
transform coefficients.
PraktikumPengkodean Sinyal Wicara
7
Y = dct(X,N) pads or truncates the vector X to length N before
transforming.
If X is a matrix, the dct operation is applied to each column. This
transform can be inverted using IDCT.
% Example:
% Find how many dct coefficients represent 99% of the energy
% in a sequence.
x = (1:100) + 50*cos((1:100)*2*pi/40); % Input Signal
X = dct(x); % Discrete cosine transform
[XX,ind] = sort(abs(X)); ind = fliplr(ind);
num_coeff = 1;
while (norm([X(ind(1:num_coeff)) zeros(1,100-num_coeff)])/norm(X)<.99)
num_coeff = num_coeff + 1;
end;
num_coeff
idct Inverse discrete cosine transform.
X = idct(Y) inverts the DCT transform, returning the original vector if
Y was obtained using Y = DCT(X).
X = idct(Y,N) pads or truncates the vector Y to length N before
transforming.
If Y is a matrix, the idct operation is applied to each column.
% Example:
% Generate a 25 Hz sinusoidal sequence, sampled at 1000 Hz and
% compute the DCT of this sequence and reconstruct the signal using
% only those components with value greater than 0.1 (64 of the
% original 1000 DCT coefficients.
t = (0:1/999:1); % Time vector
x = sin(2*pi*25*t); % Sinusoid
y = dct(x); % Compute DCT
y2 = find(abs(y) < 0.9); % Use 17 coefficients
y(y2) = zeros(size(y2)); % Zero out points < 0.9
z = idct(y); % Reconstruct signal w/inverse DCT
 Langkah Pemrograman DCT Coding
Pemodelan dapat disusun dengan pembuatan program sbb:
1. Lakukan proses pengambilan sinyal wicara dari file yang sudah anda buat tsb, dan
gambarkan hasilnya. Karena file yang anda ambil terdiri dari 2 kolom (berbentuk matrix),
maka anda cukup ambil salah satu kolom saja, agar proses bisa berjalan dengan benar.
%File Name: DCT_01.m
%Contoh program DCT 1 dimensi (untuk sinyal suara,dsb.)
clear al;clc;close all;
[y,Fs]=wavread('file_a.wav');
y1_0=y(:,1);
fs1=16000;
y1=resample(y1_0,fs1,Fs);
PraktikumPengkodean Sinyal Wicara
8
2. Pilih satu frame dari sinyal wicara tersebut, misal frame ke-3, hal ini ditujukan untuk
mendapatkan gambaran sinyal dalam durasi pendek yang memenuhi persyaratan linear dan
time invariant, LTI). Anda dapat memilih ukuran frame yang lain, jika ukuran frame anda
berubah sesuai dengan Frekuensi sampling yang anda pilih, atau bisa juga anda menentukan
posisi sampel berbeda dengan nilai tersebut di atas, asalkan pilihan anda tepat pada sinyal
wicara yang masih merepresentasikan ‘vokal a’.
i=3;%Frame ke-i
x=y1(0.02*fs1*(i-1)+1:0.02*fs1*i);%Frame ke-i
Gambar 5. Sinyal suara dari ‘file_a.wav’
3. Dapatkan koefisien-koefisien DCT, atau bentuk pengkodean dari ‘file_a’ menjadi terkode
DCT.
%x = (1:100) + 50*cos((1:100)*2*pi/40);
X_dct = dct(x);
Luaran dari langkah ini adalah suatu hasil pengkodean sinyal wicara dalam kondisi
terkompresi/terkode dengan DCT. Anda bisa mengamati bentuk sinyal hasil pengkodean
dengan menampilkan grafik dari variable terkait, dalam hal ini adalah X_dct.
0 0.5 1 1.5 2 2.5 3 3.5
x 10
4
-0.4
-0.3
-0.2
-0.1
0
0.1
0.2
0.3
0.4
PraktikumPengkodean Sinyal Wicara
9
4. Pada langkah ini anda dapat melakukan proses pemulihan (recovery) dengan memanfaatkan
fungsi idct seperti pada cuplikan program berikut. Dan coba lakukan evaluasi untuk
mengamati perbedaan hasil recovery dengan sinyal aslinya.
%Reconstruct the signal and compare it to the original signal.
x_rec = idct(X_dct);
%Perbedaan asli dan rekonstruksi
x_dif = x - x_rec;
5. Tampilkan bentuk sinyal asli pada frame yang diamati, bandingkan dengan sinyal hasil
recovery (pemulihan), dan lihat error atau beda nilai antara sinyal asli dengan sinyal
recovery.
%Penggambaran
t=1:length(x);
figure();plot(t,x,'k',t,x_rec,'r--',t,x_dif,'b');
legend('Original',['Reconstructed, N = '
int2str(needed)],'Beda','Location','SouthEast');
Gambar 6. Sinyal suara dari ‘file_a.wav’, frame ke-3 dalam versi asli,
recovery dengan DCT, dan nilai error
6. Bandingkan bentuk spectral sinyal asli dengan sinyal hasil rekonstruksi, memanfaatkan
fungsi ‘periodogram.m’ atau ‘pwelch.m’
figure();
pwelch(x,[],[],[],fs1,'onesided');title('PSD Estimate Sinyal Asli')
600 650 700 750 800 850 900 950 1000
-0.1
-0.08
-0.06
-0.04
-0.02
0
0.02
0.04
0.06
0.08
0.1
Original
Reconstructed, N = 14
Beda
PraktikumPengkodean Sinyal Wicara
10
figure();
pwelch(x_rec,[],[],[],fs1,'onesided');title('PSD Estimate Sinyal
Recover')
P.1.4. Menyusun Model DCT Code untuk Satu Sinyal Penuh
7. Langkah 1 sama dengan pada P.1.3, diawali dengan pengambilan data dan proses resampling.
%Contoh program DCT 1 dimensi (untuk sinyal suara,dsb.)
%Untuk seluruh Sinyal
clear al;clc;close all;
fs1=16000;
[y,fs]=wavread('file_a.wav');
%================
%bagian pemancar:
%----------------
y10=y(:,1);
N=0.02*fs1;
y1r=resample(y10,fs1,fs);
8. Atur agar panjang sampel adalah kelipatan dari ukuran satu frame sinyal, dalam hal ini
kelipatan dari 320 (0,02*fs1). Kemudian lakukan pembentukan frame dengan memanfaatkan
fungsi reshape.m.
NN=floor(length(y1r)/N);
y1=y1r(1:NN*N);
y1_reshape=reshape(y1,N,NN);
x=y1_reshape;
9. Lakukan proses dct pada keseluruhan data yang sudah dalam bentuk frame
X_dct = dct(x);
10. Kembalikan data terkoding DCT menjadi nilai aslinya, dan lanjutkan dengan
menggabungkan kembali frame-frame sinyal menjadi satu sinyal utuh.
x1=idct(X_dct);
%================
%bagian penerima:
%----------------
y1_recover=reshape(x1,N*NN,[]);
11. Coba amati bagaimana perbandingan bentuk sinyal dalam domain waktu dan domain
frekuensi.
%perbandingan domain waktu
%-------------------------
t=1:length(y1);
figure();
subplot(211);plot(t,y1,'b');xlabel('Sinyal Asli');
PraktikumPengkodean Sinyal Wicara
11
subplot(212);plot(t,y1_recover,'r');xlabel('Sinyal Recovery');
title('Perbandingan Input - Output dg DCT');
%perbandingan domain frekuensi
%-----------------------------
figure();
pwelch(y1,[],[],[],fs1,'onesided');title('PSD Estimate Sinyal Asli')
figure();
pwelch(y1_recover,[],[],[],fs1,'onesided');title('PSD Estimate Sinyal
Recover')
P.1.5. Model Pengkodean Sinyal Wicara dengan CELP
 Menyusun Model Pengkodean CELP
Untuk melakukan penyusunan model pengkodean CELP anda harus memiliki file-file
pendukung berikut ini: celpana.m, celpexit.m, celpsyn.m, durbin.m, lpcana.m, lpxcrespith.m,
lpcweight.m, rf2lpc.m, celp16k.m, celp9600.m, dan file suara file_a.wav, handel.wav, atau file
wav lainnya. Jika anda kesulitan untuk mendapatkan file-file tersebut, coba konsultasikan kepada
dosen pengampu. Selanjutnya langkah pemodelan dilakukan sebagai berikut.
1. Langkah 1 sama dengan pada P.1.3, diawali dengan pengambilan data dan proses resampling.
%File Name: CELP_RUN.m
% The script to run the CELP codecs: 16 kbps CELP & 9.6 kbps CELP
clc;clear all;close all;
% %coba dengan model baru, berawal dari sini...
[x0,Fs] = wavread('file_a.wav');
x10 = x0(:,1);
%Proses resampling:
fs1 = 8000;
y1r = resample(x10,fs1,Fs);
2. Tetapkan variable-variabel untuk pembentukan frame, dsb.
% Taking the input data from speech file
x = y1r;
N = 160; % Frame length
L = 40; % Sub-frame length
M = 12; % Order of LP analysis
c = 0.85; % constant parameter for perceptual weighted filter
Pidx = [16 160];
3. Masukkan data ke CELP analysis-by-synthesis untuk menghasilkan suatu Gaussian
codebook
% Entering into the CELP analysis-by-synthesis codec
% creating the Gaussian codebook
randn('state',0);
PraktikumPengkodean Sinyal Wicara
12
cb = randn(L,1024);
% invoking the CELP codecs
[xhat1, e, k, theta0, P, b] = celp9600(x,N,L,M,c,cb,Pidx);
[xhat2, e, k, theta0, P, b] = celp16k(x,N,L,M,c,cb,Pidx);
4. Cek hasil pengkodean dengan memanfaatkan wavplay. Pada beberapa versi Matlab terbaru
wavplay akan digantikan dengan fungsi lain.
% playing all the sound files
tunda=zeros(8000,1);
for i = 1:3,
if(i==1),
display('Playing the original sound file...');
wavplay(x,8000);
elseif(i==2),
display('Playing the 16 kbps CELP generated sound file...');
wavplay(tunda,8000);
wavplay(xhat1,8000);
elseif(i==3),
display('Playing the 9.6 kbps CELP generated sound file...');
wavplay(tunda,8000);
wavplay(xhat2,8000);
end
end
5. Gambarkan hasilnya dalam bentuk perbandingan beberapa frame gambar menjadi satu, atau
setiap hasil pengkodean dengan yang asli
% plotting all the speech profiles
figure(1)
subplot(3,1,1)
plot(x)
axis([0 length(x) min(x) max(x)]);
%axis([0 7*10^4 -1 1]);
xlabel('time'); ylabel('Amplitude');
title('The original speech samples');
subplot(3,1,2)
plot(xhat1,'m')
axis([0 length(xhat1) min(xhat1) max(xhat1)]);
%axis([0 7*10^4 -1 1]);
xlabel('time'); ylabel('Amplitude');
title('The CELP 16 kbps synthetic samples');
subplot(3,1,3)
plot(xhat2,'c')
axis([0 length(xhat2) min(xhat2) max(xhat2)]);
%axis([0 7*10^4 -1 1]);
xlabel('time'); ylabel('Amplitude');
title('The CELP 9.6 kbps synthetic samples');
% comparing all the synthetic speech profiles with original speech
kk=1:length(x);
figure(2)
%plot([x xhat1]);
plot(kk,x,'b',kk,xhat1,'r')
PraktikumPengkodean Sinyal Wicara
13
axis([0 length(x) min(x)-.1 max(x)+.1]);
legend('original speech','16 kbps CELP speech');
xlabel('time'); ylabel('Amplitude');
title('The comparison of original speech & 16 kbps CELP synthetic
samples');
figure(3)
%plot([x xhat2]);
plot(kk,x,'b',kk,xhat2,'r')
axis([0 length(x) min(x)-.1 max(x)+.1]);
%axis([0 7*10^4 -1 1]);
legend('original speech','9.6 kbps CELP speech');
xlabel('time'); ylabel('Amplitude');
title('The comparison of original speech & 9.6 kbps CELP synthetic
samples');
Gambar 7. Perbanding sinyal versi asli file_a.wav dengan hasil coding-by-synthesis CELP.
6. Anda lakukan pengamatan dalam domain frekuensi dengan memanfaatkan fungsi
periodogram.m atau pwelch.m. Dan berikan penjelasan secukupnya dari gambar-gambar
yang telah anda peroleh, sejauh mana pengaruh pengkodean dan synthesa dibandingkan
dengan sinyal aslinya.
0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000
-0.2
0
0.2
time
Amplitude
The original speech samples
0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000
-0.2
0
0.2
time
Amplitude
The CELP 16 kbps synthetic samples
0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000
-0.2
0
0.2
time
Amplitude
The CELP 9.6 kbps synthetic samples

More Related Content

What's hot

Soal tugas akhir semester pengolahan sinyal i
Soal  tugas  akhir semester pengolahan sinyal  iSoal  tugas  akhir semester pengolahan sinyal  i
Soal tugas akhir semester pengolahan sinyal iSimon Patabang
 
Hand out sinyal & sistem
Hand out sinyal & sistemHand out sinyal & sistem
Hand out sinyal & sistemSetyo Wibowo'
 
Analisa Rangkaian Listrik Menggunakan MATLAB
Analisa Rangkaian Listrik Menggunakan MATLABAnalisa Rangkaian Listrik Menggunakan MATLAB
Analisa Rangkaian Listrik Menggunakan MATLABAndry Saftiawan
 
Slide minggu ke 3 pertemuan 2 (data diskrit kontinu)
Slide minggu ke 3 pertemuan 2 (data diskrit kontinu)Slide minggu ke 3 pertemuan 2 (data diskrit kontinu)
Slide minggu ke 3 pertemuan 2 (data diskrit kontinu)Setia Juli Irzal Ismail
 
Algoritma Pencarian String matching
Algoritma Pencarian String matching Algoritma Pencarian String matching
Algoritma Pencarian String matching Kukuh Setiawan
 
Buku speech processing_subp_pengklasteran-fitur-sinyal-wicara-b
Buku speech processing_subp_pengklasteran-fitur-sinyal-wicara-bBuku speech processing_subp_pengklasteran-fitur-sinyal-wicara-b
Buku speech processing_subp_pengklasteran-fitur-sinyal-wicara-bTri Budi Santoso
 
konsep dasar sinyal dan sistem
konsep dasar sinyal dan sistemkonsep dasar sinyal dan sistem
konsep dasar sinyal dan sistemrajareski ekaputra
 
Tusas pengenalan sinyal dan sistem
Tusas pengenalan sinyal dan sistemTusas pengenalan sinyal dan sistem
Tusas pengenalan sinyal dan sistemfauzankent
 
Matematika Diskrit - 11 kompleksitas algoritma - 02
Matematika Diskrit - 11 kompleksitas algoritma - 02Matematika Diskrit - 11 kompleksitas algoritma - 02
Matematika Diskrit - 11 kompleksitas algoritma - 02KuliahKita
 
Bab ii discrete time
Bab ii   discrete timeBab ii   discrete time
Bab ii discrete timeRumah Belajar
 
Telekounikasi Analog & Digital - Slide week 2 - lanjutan sinyal & spektrum
Telekounikasi Analog & Digital - Slide week 2 - lanjutan sinyal & spektrumTelekounikasi Analog & Digital - Slide week 2 - lanjutan sinyal & spektrum
Telekounikasi Analog & Digital - Slide week 2 - lanjutan sinyal & spektrumBeny Nugraha
 
PREDICTIVE DECONVOLUTION IN SEISMIC DATA PROCESSING
PREDICTIVE DECONVOLUTION IN SEISMIC DATA PROCESSINGPREDICTIVE DECONVOLUTION IN SEISMIC DATA PROCESSING
PREDICTIVE DECONVOLUTION IN SEISMIC DATA PROCESSINGFajar Nawawi
 
Pengertian sinyal
Pengertian sinyalPengertian sinyal
Pengertian sinyalDina Aprila
 
7 Analog Digital Converter
7 Analog Digital Converter7 Analog Digital Converter
7 Analog Digital ConverterSimon Patabang
 

What's hot (20)

Soal tugas akhir semester pengolahan sinyal i
Soal  tugas  akhir semester pengolahan sinyal  iSoal  tugas  akhir semester pengolahan sinyal  i
Soal tugas akhir semester pengolahan sinyal i
 
8 Kuantisasi
8 Kuantisasi8 Kuantisasi
8 Kuantisasi
 
Modul psd2
Modul psd2Modul psd2
Modul psd2
 
Hand out sinyal & sistem
Hand out sinyal & sistemHand out sinyal & sistem
Hand out sinyal & sistem
 
Analisa Rangkaian Listrik Menggunakan MATLAB
Analisa Rangkaian Listrik Menggunakan MATLABAnalisa Rangkaian Listrik Menggunakan MATLAB
Analisa Rangkaian Listrik Menggunakan MATLAB
 
Slide minggu 6 jul
Slide minggu 6 julSlide minggu 6 jul
Slide minggu 6 jul
 
1 konsep sinyal
1 konsep sinyal1 konsep sinyal
1 konsep sinyal
 
Algoritma brute force
Algoritma brute forceAlgoritma brute force
Algoritma brute force
 
Sinyal fix
Sinyal fixSinyal fix
Sinyal fix
 
Slide minggu ke 3 pertemuan 2 (data diskrit kontinu)
Slide minggu ke 3 pertemuan 2 (data diskrit kontinu)Slide minggu ke 3 pertemuan 2 (data diskrit kontinu)
Slide minggu ke 3 pertemuan 2 (data diskrit kontinu)
 
Algoritma Pencarian String matching
Algoritma Pencarian String matching Algoritma Pencarian String matching
Algoritma Pencarian String matching
 
Buku speech processing_subp_pengklasteran-fitur-sinyal-wicara-b
Buku speech processing_subp_pengklasteran-fitur-sinyal-wicara-bBuku speech processing_subp_pengklasteran-fitur-sinyal-wicara-b
Buku speech processing_subp_pengklasteran-fitur-sinyal-wicara-b
 
konsep dasar sinyal dan sistem
konsep dasar sinyal dan sistemkonsep dasar sinyal dan sistem
konsep dasar sinyal dan sistem
 
Tusas pengenalan sinyal dan sistem
Tusas pengenalan sinyal dan sistemTusas pengenalan sinyal dan sistem
Tusas pengenalan sinyal dan sistem
 
Matematika Diskrit - 11 kompleksitas algoritma - 02
Matematika Diskrit - 11 kompleksitas algoritma - 02Matematika Diskrit - 11 kompleksitas algoritma - 02
Matematika Diskrit - 11 kompleksitas algoritma - 02
 
Bab ii discrete time
Bab ii   discrete timeBab ii   discrete time
Bab ii discrete time
 
Telekounikasi Analog & Digital - Slide week 2 - lanjutan sinyal & spektrum
Telekounikasi Analog & Digital - Slide week 2 - lanjutan sinyal & spektrumTelekounikasi Analog & Digital - Slide week 2 - lanjutan sinyal & spektrum
Telekounikasi Analog & Digital - Slide week 2 - lanjutan sinyal & spektrum
 
PREDICTIVE DECONVOLUTION IN SEISMIC DATA PROCESSING
PREDICTIVE DECONVOLUTION IN SEISMIC DATA PROCESSINGPREDICTIVE DECONVOLUTION IN SEISMIC DATA PROCESSING
PREDICTIVE DECONVOLUTION IN SEISMIC DATA PROCESSING
 
Pengertian sinyal
Pengertian sinyalPengertian sinyal
Pengertian sinyal
 
7 Analog Digital Converter
7 Analog Digital Converter7 Analog Digital Converter
7 Analog Digital Converter
 

Similar to PengkodeanSinyalWicara

Cepat mahir dengan matlab
Cepat mahir dengan matlabCepat mahir dengan matlab
Cepat mahir dengan matlabNur Hy
 
Dasar Sistem Pengaturan-Matlab
Dasar Sistem Pengaturan-MatlabDasar Sistem Pengaturan-Matlab
Dasar Sistem Pengaturan-MatlabChardian Arguta
 
Tutorialmatlab bahasa indonesia
Tutorialmatlab bahasa indonesiaTutorialmatlab bahasa indonesia
Tutorialmatlab bahasa indonesiazn Yedhi
 
Tutorial matlab libre
Tutorial matlab libreTutorial matlab libre
Tutorial matlab libreDoni Rahman
 
Tutorial matlab
Tutorial matlabTutorial matlab
Tutorial matlabNur Lely
 
Software Matematika Sebagai Penunjang Proses Belajar
Software Matematika Sebagai Penunjang Proses BelajarSoftware Matematika Sebagai Penunjang Proses Belajar
Software Matematika Sebagai Penunjang Proses BelajarPrandita Sega
 
Bab i1 kohonen (recovered)
Bab i1 kohonen (recovered)Bab i1 kohonen (recovered)
Bab i1 kohonen (recovered)Eka Suryadana
 
App dsp prak_8_ver_01-pemanfaatan ste dan pitch extraction pada voice automat...
App dsp prak_8_ver_01-pemanfaatan ste dan pitch extraction pada voice automat...App dsp prak_8_ver_01-pemanfaatan ste dan pitch extraction pada voice automat...
App dsp prak_8_ver_01-pemanfaatan ste dan pitch extraction pada voice automat...Tri Budi Santoso
 
Jeni Intro2 Bab03 Teknik Pemrograman Lanjut
Jeni Intro2 Bab03 Teknik Pemrograman LanjutJeni Intro2 Bab03 Teknik Pemrograman Lanjut
Jeni Intro2 Bab03 Teknik Pemrograman LanjutIndividual Consultants
 

Similar to PengkodeanSinyalWicara (20)

Matlab 8
Matlab 8Matlab 8
Matlab 8
 
Matlab 6
Matlab 6Matlab 6
Matlab 6
 
Modul 1 matlab 1
Modul 1 matlab 1Modul 1 matlab 1
Modul 1 matlab 1
 
Matlab tutor sns
Matlab tutor snsMatlab tutor sns
Matlab tutor sns
 
Laporan
LaporanLaporan
Laporan
 
Matlab 2
Matlab 2Matlab 2
Matlab 2
 
Cepat mahir dengan matlab
Cepat mahir dengan matlabCepat mahir dengan matlab
Cepat mahir dengan matlab
 
Dasar Sistem Pengaturan-Matlab
Dasar Sistem Pengaturan-MatlabDasar Sistem Pengaturan-Matlab
Dasar Sistem Pengaturan-Matlab
 
Matlab
MatlabMatlab
Matlab
 
Tutorialmatlab bahasa indonesia
Tutorialmatlab bahasa indonesiaTutorialmatlab bahasa indonesia
Tutorialmatlab bahasa indonesia
 
Tutorial matlab .pdf
Tutorial matlab .pdfTutorial matlab .pdf
Tutorial matlab .pdf
 
Tutorial matlab libre
Tutorial matlab libreTutorial matlab libre
Tutorial matlab libre
 
Matlab Tutorial
Matlab TutorialMatlab Tutorial
Matlab Tutorial
 
Tutorial matlab
Tutorial matlabTutorial matlab
Tutorial matlab
 
Software Matematika Sebagai Penunjang Proses Belajar
Software Matematika Sebagai Penunjang Proses BelajarSoftware Matematika Sebagai Penunjang Proses Belajar
Software Matematika Sebagai Penunjang Proses Belajar
 
1 pengenalan matlab
1  pengenalan matlab1  pengenalan matlab
1 pengenalan matlab
 
Tugas2 20914009
Tugas2 20914009Tugas2 20914009
Tugas2 20914009
 
Bab i1 kohonen (recovered)
Bab i1 kohonen (recovered)Bab i1 kohonen (recovered)
Bab i1 kohonen (recovered)
 
App dsp prak_8_ver_01-pemanfaatan ste dan pitch extraction pada voice automat...
App dsp prak_8_ver_01-pemanfaatan ste dan pitch extraction pada voice automat...App dsp prak_8_ver_01-pemanfaatan ste dan pitch extraction pada voice automat...
App dsp prak_8_ver_01-pemanfaatan ste dan pitch extraction pada voice automat...
 
Jeni Intro2 Bab03 Teknik Pemrograman Lanjut
Jeni Intro2 Bab03 Teknik Pemrograman LanjutJeni Intro2 Bab03 Teknik Pemrograman Lanjut
Jeni Intro2 Bab03 Teknik Pemrograman Lanjut
 

More from Tri Budi Santoso

Modul ajar tb_bab00_ver01_2020_09_09
Modul ajar tb_bab00_ver01_2020_09_09Modul ajar tb_bab00_ver01_2020_09_09
Modul ajar tb_bab00_ver01_2020_09_09Tri Budi Santoso
 
Modul ajar dsp_2020-bab_4_sistem linear time invariant
Modul ajar dsp_2020-bab_4_sistem linear time invariantModul ajar dsp_2020-bab_4_sistem linear time invariant
Modul ajar dsp_2020-bab_4_sistem linear time invariantTri Budi Santoso
 
Modul ajar dsp_2020-bab_3-review filter analog-ver2020
Modul ajar dsp_2020-bab_3-review filter analog-ver2020Modul ajar dsp_2020-bab_3-review filter analog-ver2020
Modul ajar dsp_2020-bab_3-review filter analog-ver2020Tri Budi Santoso
 
Modul ajar dsp_bab_9_design iir filter_2020_04
Modul ajar dsp_bab_9_design iir filter_2020_04Modul ajar dsp_bab_9_design iir filter_2020_04
Modul ajar dsp_bab_9_design iir filter_2020_04Tri Budi Santoso
 
Modul ajar dsp_bab_8_design_filter_fir_2020_04_14
Modul ajar dsp_bab_8_design_filter_fir_2020_04_14Modul ajar dsp_bab_8_design_filter_fir_2020_04_14
Modul ajar dsp_bab_8_design_filter_fir_2020_04_14Tri Budi Santoso
 
Ambient Noise Measurement and Characterization of Underwater Acoustic Channel...
Ambient Noise Measurement and Characterization of Underwater Acoustic Channel...Ambient Noise Measurement and Characterization of Underwater Acoustic Channel...
Ambient Noise Measurement and Characterization of Underwater Acoustic Channel...Tri Budi Santoso
 

More from Tri Budi Santoso (6)

Modul ajar tb_bab00_ver01_2020_09_09
Modul ajar tb_bab00_ver01_2020_09_09Modul ajar tb_bab00_ver01_2020_09_09
Modul ajar tb_bab00_ver01_2020_09_09
 
Modul ajar dsp_2020-bab_4_sistem linear time invariant
Modul ajar dsp_2020-bab_4_sistem linear time invariantModul ajar dsp_2020-bab_4_sistem linear time invariant
Modul ajar dsp_2020-bab_4_sistem linear time invariant
 
Modul ajar dsp_2020-bab_3-review filter analog-ver2020
Modul ajar dsp_2020-bab_3-review filter analog-ver2020Modul ajar dsp_2020-bab_3-review filter analog-ver2020
Modul ajar dsp_2020-bab_3-review filter analog-ver2020
 
Modul ajar dsp_bab_9_design iir filter_2020_04
Modul ajar dsp_bab_9_design iir filter_2020_04Modul ajar dsp_bab_9_design iir filter_2020_04
Modul ajar dsp_bab_9_design iir filter_2020_04
 
Modul ajar dsp_bab_8_design_filter_fir_2020_04_14
Modul ajar dsp_bab_8_design_filter_fir_2020_04_14Modul ajar dsp_bab_8_design_filter_fir_2020_04_14
Modul ajar dsp_bab_8_design_filter_fir_2020_04_14
 
Ambient Noise Measurement and Characterization of Underwater Acoustic Channel...
Ambient Noise Measurement and Characterization of Underwater Acoustic Channel...Ambient Noise Measurement and Characterization of Underwater Acoustic Channel...
Ambient Noise Measurement and Characterization of Underwater Acoustic Channel...
 

Recently uploaded

Manual Desain Perkerasan jalan 2017 FINAL.pptx
Manual Desain Perkerasan jalan 2017 FINAL.pptxManual Desain Perkerasan jalan 2017 FINAL.pptx
Manual Desain Perkerasan jalan 2017 FINAL.pptxRemigius1984
 
materi pengendalian proyek konstruksi.pptx
materi pengendalian proyek konstruksi.pptxmateri pengendalian proyek konstruksi.pptx
materi pengendalian proyek konstruksi.pptxsiswoST
 
Slide Transformasi dan Load Data Menggunakan Talend Open Studio
Slide Transformasi dan Load Data Menggunakan Talend Open StudioSlide Transformasi dan Load Data Menggunakan Talend Open Studio
Slide Transformasi dan Load Data Menggunakan Talend Open Studiossuser52d6bf
 
MAteri:Penggunaan fungsi pada pemrograman c++
MAteri:Penggunaan fungsi pada pemrograman c++MAteri:Penggunaan fungsi pada pemrograman c++
MAteri:Penggunaan fungsi pada pemrograman c++FujiAdam
 
Strategi Pengembangan Agribisnis di Indonesia
Strategi Pengembangan Agribisnis di IndonesiaStrategi Pengembangan Agribisnis di Indonesia
Strategi Pengembangan Agribisnis di IndonesiaRenaYunita2
 
TEKNIS TES TULIS REKRUTMEN PAMSIMAS 2024.pdf
TEKNIS TES TULIS REKRUTMEN PAMSIMAS 2024.pdfTEKNIS TES TULIS REKRUTMEN PAMSIMAS 2024.pdf
TEKNIS TES TULIS REKRUTMEN PAMSIMAS 2024.pdfYogiCahyoPurnomo
 
001. Ringkasan Lampiran Juknis DAK 2024_PAUD.pptx
001. Ringkasan Lampiran Juknis DAK 2024_PAUD.pptx001. Ringkasan Lampiran Juknis DAK 2024_PAUD.pptx
001. Ringkasan Lampiran Juknis DAK 2024_PAUD.pptxMuhararAhmad
 
Pembangkit Listrik Tenaga Nuklir Kelompok 1.pptx
Pembangkit Listrik Tenaga Nuklir Kelompok 1.pptxPembangkit Listrik Tenaga Nuklir Kelompok 1.pptx
Pembangkit Listrik Tenaga Nuklir Kelompok 1.pptxmuhammadrizky331164
 

Recently uploaded (8)

Manual Desain Perkerasan jalan 2017 FINAL.pptx
Manual Desain Perkerasan jalan 2017 FINAL.pptxManual Desain Perkerasan jalan 2017 FINAL.pptx
Manual Desain Perkerasan jalan 2017 FINAL.pptx
 
materi pengendalian proyek konstruksi.pptx
materi pengendalian proyek konstruksi.pptxmateri pengendalian proyek konstruksi.pptx
materi pengendalian proyek konstruksi.pptx
 
Slide Transformasi dan Load Data Menggunakan Talend Open Studio
Slide Transformasi dan Load Data Menggunakan Talend Open StudioSlide Transformasi dan Load Data Menggunakan Talend Open Studio
Slide Transformasi dan Load Data Menggunakan Talend Open Studio
 
MAteri:Penggunaan fungsi pada pemrograman c++
MAteri:Penggunaan fungsi pada pemrograman c++MAteri:Penggunaan fungsi pada pemrograman c++
MAteri:Penggunaan fungsi pada pemrograman c++
 
Strategi Pengembangan Agribisnis di Indonesia
Strategi Pengembangan Agribisnis di IndonesiaStrategi Pengembangan Agribisnis di Indonesia
Strategi Pengembangan Agribisnis di Indonesia
 
TEKNIS TES TULIS REKRUTMEN PAMSIMAS 2024.pdf
TEKNIS TES TULIS REKRUTMEN PAMSIMAS 2024.pdfTEKNIS TES TULIS REKRUTMEN PAMSIMAS 2024.pdf
TEKNIS TES TULIS REKRUTMEN PAMSIMAS 2024.pdf
 
001. Ringkasan Lampiran Juknis DAK 2024_PAUD.pptx
001. Ringkasan Lampiran Juknis DAK 2024_PAUD.pptx001. Ringkasan Lampiran Juknis DAK 2024_PAUD.pptx
001. Ringkasan Lampiran Juknis DAK 2024_PAUD.pptx
 
Pembangkit Listrik Tenaga Nuklir Kelompok 1.pptx
Pembangkit Listrik Tenaga Nuklir Kelompok 1.pptxPembangkit Listrik Tenaga Nuklir Kelompok 1.pptx
Pembangkit Listrik Tenaga Nuklir Kelompok 1.pptx
 

PengkodeanSinyalWicara

  • 1. PraktikumPengkodean Sinyal Wicara 1 Pengolahan Informasi Wicara Bab: Pengkodean Sinyal Wicara Sub: Kegiatan Pembelajaran di Lab Menyusun Model Pengkodean Sinyal Wicara Pada kegiatan di laboratorium ini kita akan melakukan proses pengkodean sinyal wicara menggunakan standar pengolahan sinyal wicara yang memenuhi persyaratan Linear dan Time Invariant seperti yang telah dibicarakan di dalam teori pada Bab xxx. Untuk melakukan proses secara keseluruhan akan memakan waktu, untuk itu perlu dilakukan penyederhanaan dengan melakukan simulasi tanpa harus mengorbankan pemahaman pada konsep system yang sesungguhnya. Ada dua model pengkodean sinyal wicara yang kita buat pada kegiatan lab ini, yaitu berbasis Linear Predictive Code (LPC) untuk pengkodean atau kompresi, berbasis model Discrete Cosines Transform (DCT), dan pengkodean CELP yang merupakan pengembangan dari bentuk LPC pada sistem yang sudah diaplikasikan pada sistem celullar. P.1.1. Model Pengkodean Sinyal Wicara dengan LPC  Menyusun Model Pengkodean LPC Pemodelan dimulai dengan mengacu pada diagram blok pada Gambar 1 berikut. Pada gambar sudah jelas langkah-langkah apa yang seharusnya dilakukan. Sinyal Wicara Sampling Frame Blocking Windowing LPC Encoder LPC Decoding Reshape Frame Sinyal Wicara Recovery Hitung Error Pengiriman, penyimpanan, dsb Gambar 1. Diagram blok model LPC coding.
  • 2. PraktikumPengkodean Sinyal Wicara 2 Agar anda dapat menjalankan pemodelan ini, akan lebih baik jika anda memulai dengan melihat cara kerja dari fungsi lpc.m yang ada di Matlab. Caranya adalah dengan memanfaatkan fasilitas help. Anda ketikkan “help lpc”, tekan enter. lpc Linear PredictorCoefficients. A = lpc(X,N) finds the coefficients, A=[ 1 A(2) ... A(N+1) ], of an Nthorder forward linear predictor. Xp(n) = -A(2)*X(n-1) - A(3)*X(n-2) - ... - A(N+1)*X(n-N) such that the sum of the squares of the errors err(n) = X(n) - Xp(n) is minimized. X can be a vector or a matrix. If X is a matrix containing a separate signal in each column, lpc returns a model estimate for each column in the rows of A. N specifies the order of the polynomial A(z) which must be a positive integer. N must be less or equal to the length of X. If X is a matrix, N must be less or equal to the length of each column of X. If you do not specify a value for N, lpc uses a default N =length(X)-1. [A,E] = lpc(X,N) returns the variance (power) of the prediction error. lpc uses the Levinson-Durbin recursion to solve the normal equations that arise from the least-squares formulation. This computation of the linear prediction coefficients is often referred to as the autocorrelation method. % Example: % Estimate a data series using a third-order forward predictor, and % compare to the original signal. % Create signal data as the output of an autoregressive process % driven by white noise. Use the last 4096 samples of the AR process % output to avoid start-up transients: randn('state',0); noise = randn(50000,1); % Normalized white Gaussian noise x = filter(1,[1 1/2 1/3 1/4],noise); x = x(45904:50000); a = lpc(x,3);  Langkah Pemrograman LPC Coding Pemodelan dapat disusun dengan pembuatan program sbb: 1. Lakukan proses pengambilan sinyal wicara dari file yang sudah anda buat tsb, dan gambarkan hasilnya. Untuk menyesuaikan dengan standar pengolahan wicara, anda lakukan proses resampling. Tetapi jika anda merasa tidak terlalu urgent, anda dapat melakukannya tanpa proses resample. Karena file yang anda ambil terdiri dari 2 kolom (berbentuk matrix), maka anda cukup ambil salah satu kolom saja, agar proses bisa berjalan dengan benar. [y,Fs]=wavread('file_a.wav'); x0=y(:,1);
  • 3. PraktikumPengkodean Sinyal Wicara 3 2. Agar anda dapat mengetahui kondisi asli dari sinyal wicara yang akan anda gunakan, akan sebagai objek percobaan, maka tampilkan sinyal asli tsb. N=320; figure(); plot(x0); Gambar 2. Sinyal file_a.wav 3. Dari gambar tersebut anda dapat memilih sampel ke 3201 sampai 3600 untuk diamati. Karena anda sudah menetapkan satu frame berukuran N=320, maka anda dapat menyusun program sbb: x = filter(1,[1 1/2 1/3 1/4],x0); x_LPC = x0(10*N+1:12*N); a=lpc(x_LPC,6); Anda dapat memiliki nilai N yang lain, jika ukuran frame anda berubah sesuai dengan Frekuensi sampling yang anda pilih, atau bisa juga anda menentukan posisi sampel berbeda dengan nilai tersebut di atas, asalkan pilihan anda tepat pada sinyal wicara yang masih merepresentasikan ‘vokal a’. 4. Lanjutkan dengan memanfaatkan filter digital IIR sederhana, seperti telah ditetapkan nilainya melalui variable ‘x’ di atas untuk melakukan pemulihan sinyal wicara pada frame tersebut. 0 0.5 1 1.5 2 2.5 3 3.5 x 10 4 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4
  • 4. PraktikumPengkodean Sinyal Wicara 4 est_x = filter([0 -a(2:end)],1,x); % Estimated signal e = x - est_x; % Prediction error [acs,lags] = xcorr(e,'coeff'); % ACS of prediction error 5. Jika tidak terjadi kesalahan pada program anda, coba tampilkan pembentukan frame sinyal asli 2 frame, dengan sinyal hasil pemulihan yang telah dibuat. Dan anda dapat juga menampilkan error estimasi dari perbedaan sampel sinyal asli dengan sinyal pemulihan. figure(); %Compare the predicted signal to the original signal plot(10*N+1:12*N,x(10*N+1:12*N),10*N+1:12*N,est_x(10*N+1:12*N),'r-- ',10*N+1:12*N,e(10*N+1:12*N),'k--'); title('Original Signal vs. lpc Estimate'); xlabel('Sample Number'); ylabel('Amplitude'); grid; legend('Original Signal','lpc Estimate') Gambar 3. Perbandingan sinyal asli, hasil rekonstruksi dan error estimasi 6. Anda juga bisa melihat korelasi dari kesalahan prediksi yang terjadi. Tetapi bagian terakhir ini sifatnya hanya pilihan. %Look at the autocorrelation of the prediction error. figure; plot(lags,acs); title('Autocorrelation of the Prediction Error'); xlabel('Lags'); ylabel('Normalized Value'); grid; 3200 3300 3400 3500 3600 3700 3800 3900 -0.2 -0.15 -0.1 -0.05 0 0.05 0.1 0.15 Original Signal vs. lpc Estimate Sample Number Amplitude Original Signal lpc Estimate
  • 5. PraktikumPengkodean Sinyal Wicara 5 7. Coba anda lakukan langkah 1 s/d 5 untuk jenis file suara (vocal yang lain) P.1.2. Menyusun Model Pengkodean LPC untuk satu Sinyal Penuh 1. Langkah 1 sama dengan pada P.1.1, diawali dengan pengambilan data dan proses resampling. %File Name:LPC_Code_Est_02.m %dari Mathwork, 28 Maret 2020, sudah masuk akal... %Untuk seluruh file close all; clear all;clc; [y,Fs]=wavread('file_a.wav'); y10=y(:,1); %Proses resampling: %------------------ fs1=16000; y1r=resample(y10,fs1,Fs); 2. Atur agar panjang sampel adalah kelipatan dari ukuran satu frame sinyal, dalam hal ini kelipatan dari 320 (0,02*fs1). Kemudian lakukan pembentukan frame dengan memanfaatkan fungsi reshape.m. %Pembentukan Frame %------------------ N=0.02*fs1; NN=floor(length(y1r)/N); y1=y1r(1:NN*N); y1_reshape=reshape(y1,N,NN); x=y1_reshape; 3. Proses pengkodean LPC melibatkan perubahan sinyal sebelum diproses, dan dilakukan pada setiap frame. [m,n]=size(x); for i=1:n, x1(:,i) = x(:,i); x2(:,i) = filter(1,[1 1/2 1/3 1/4],x1(:,i)); end %Compute the predictor coefficients and the estimated signal. a=lpc(x2,3); 4. Lakukan pemulihan ulang sinyal terkode LPC, dan hitung perbedaan antara sinyal pemulihan dibanding sinyal asalnya. %Estimated Signal at the receiver part: %------------------------------------- for j=1:n, y_est(:,j)= filter([0 -a(j,2:end)],1,x2(:,j)); y_salah(:,j)=x2(:,j)-y_est(:,j); end
  • 6. PraktikumPengkodean Sinyal Wicara 6 5. Bandingkan bentuk sinyal asli dan sinyal estimasi hasil pemulihan dalam domain waktu x2_filter=reshape(x2,N*NN,[]); y1_recover=reshape(y_est,N*NN,[]); y_salah_r=reshape(y_salah,N*NN,[]); figure(1); t=1:NN*N; plot(t,x2_filter,'r',t,y1_recover,'g',t,y_salah_r,'k'); 6. Bandingkan bentuk sinyal asli dan sinyal estimasi hasil pemulihan dalam domain frekuensi %perbandingan domain frekuensi %----------------------------- figure(); pwelch(x2_filter,[],[],[],fs1,'onesided');title('PSD Estimate Sinyal Asli') figure(); pwelch(y1_recover,[],[],[],fs1,'onesided');title('PSD Estimate Sinyal Recover') P.1.3. Menyusun Model Pengkodean DCT  Menyusun Model Pengkodean Pemodelan dimulai dengan mengacu pada diagram blok pada Gambar 4 berikut. Pada gambar sudah jelas langkah-langkah apa yang seharusnya dilakukan. Sinyal Wicara Sampling Frame Blocking Windowing DCT Encoder DCT Decoder Reshape Frame Sinyal Wicara Recovery Hitung Error Pengiriman, penyimpanan, dsb Gambar 4. Diagram blok penyusunan pengkodean dengan DCT Anda dapat memanfaatkan fungsi dct dan fungsi idct yang ada di Matlab. Untuk itu anda perlu memahami cara kerja kedua fungsi tersebut. dct Discrete cosine transform. Y = dct(X) returns the discrete cosine transform of X. The vector Y is the same size as X and contains the discrete cosine transform coefficients.
  • 7. PraktikumPengkodean Sinyal Wicara 7 Y = dct(X,N) pads or truncates the vector X to length N before transforming. If X is a matrix, the dct operation is applied to each column. This transform can be inverted using IDCT. % Example: % Find how many dct coefficients represent 99% of the energy % in a sequence. x = (1:100) + 50*cos((1:100)*2*pi/40); % Input Signal X = dct(x); % Discrete cosine transform [XX,ind] = sort(abs(X)); ind = fliplr(ind); num_coeff = 1; while (norm([X(ind(1:num_coeff)) zeros(1,100-num_coeff)])/norm(X)<.99) num_coeff = num_coeff + 1; end; num_coeff idct Inverse discrete cosine transform. X = idct(Y) inverts the DCT transform, returning the original vector if Y was obtained using Y = DCT(X). X = idct(Y,N) pads or truncates the vector Y to length N before transforming. If Y is a matrix, the idct operation is applied to each column. % Example: % Generate a 25 Hz sinusoidal sequence, sampled at 1000 Hz and % compute the DCT of this sequence and reconstruct the signal using % only those components with value greater than 0.1 (64 of the % original 1000 DCT coefficients. t = (0:1/999:1); % Time vector x = sin(2*pi*25*t); % Sinusoid y = dct(x); % Compute DCT y2 = find(abs(y) < 0.9); % Use 17 coefficients y(y2) = zeros(size(y2)); % Zero out points < 0.9 z = idct(y); % Reconstruct signal w/inverse DCT  Langkah Pemrograman DCT Coding Pemodelan dapat disusun dengan pembuatan program sbb: 1. Lakukan proses pengambilan sinyal wicara dari file yang sudah anda buat tsb, dan gambarkan hasilnya. Karena file yang anda ambil terdiri dari 2 kolom (berbentuk matrix), maka anda cukup ambil salah satu kolom saja, agar proses bisa berjalan dengan benar. %File Name: DCT_01.m %Contoh program DCT 1 dimensi (untuk sinyal suara,dsb.) clear al;clc;close all; [y,Fs]=wavread('file_a.wav'); y1_0=y(:,1); fs1=16000; y1=resample(y1_0,fs1,Fs);
  • 8. PraktikumPengkodean Sinyal Wicara 8 2. Pilih satu frame dari sinyal wicara tersebut, misal frame ke-3, hal ini ditujukan untuk mendapatkan gambaran sinyal dalam durasi pendek yang memenuhi persyaratan linear dan time invariant, LTI). Anda dapat memilih ukuran frame yang lain, jika ukuran frame anda berubah sesuai dengan Frekuensi sampling yang anda pilih, atau bisa juga anda menentukan posisi sampel berbeda dengan nilai tersebut di atas, asalkan pilihan anda tepat pada sinyal wicara yang masih merepresentasikan ‘vokal a’. i=3;%Frame ke-i x=y1(0.02*fs1*(i-1)+1:0.02*fs1*i);%Frame ke-i Gambar 5. Sinyal suara dari ‘file_a.wav’ 3. Dapatkan koefisien-koefisien DCT, atau bentuk pengkodean dari ‘file_a’ menjadi terkode DCT. %x = (1:100) + 50*cos((1:100)*2*pi/40); X_dct = dct(x); Luaran dari langkah ini adalah suatu hasil pengkodean sinyal wicara dalam kondisi terkompresi/terkode dengan DCT. Anda bisa mengamati bentuk sinyal hasil pengkodean dengan menampilkan grafik dari variable terkait, dalam hal ini adalah X_dct. 0 0.5 1 1.5 2 2.5 3 3.5 x 10 4 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4
  • 9. PraktikumPengkodean Sinyal Wicara 9 4. Pada langkah ini anda dapat melakukan proses pemulihan (recovery) dengan memanfaatkan fungsi idct seperti pada cuplikan program berikut. Dan coba lakukan evaluasi untuk mengamati perbedaan hasil recovery dengan sinyal aslinya. %Reconstruct the signal and compare it to the original signal. x_rec = idct(X_dct); %Perbedaan asli dan rekonstruksi x_dif = x - x_rec; 5. Tampilkan bentuk sinyal asli pada frame yang diamati, bandingkan dengan sinyal hasil recovery (pemulihan), dan lihat error atau beda nilai antara sinyal asli dengan sinyal recovery. %Penggambaran t=1:length(x); figure();plot(t,x,'k',t,x_rec,'r--',t,x_dif,'b'); legend('Original',['Reconstructed, N = ' int2str(needed)],'Beda','Location','SouthEast'); Gambar 6. Sinyal suara dari ‘file_a.wav’, frame ke-3 dalam versi asli, recovery dengan DCT, dan nilai error 6. Bandingkan bentuk spectral sinyal asli dengan sinyal hasil rekonstruksi, memanfaatkan fungsi ‘periodogram.m’ atau ‘pwelch.m’ figure(); pwelch(x,[],[],[],fs1,'onesided');title('PSD Estimate Sinyal Asli') 600 650 700 750 800 850 900 950 1000 -0.1 -0.08 -0.06 -0.04 -0.02 0 0.02 0.04 0.06 0.08 0.1 Original Reconstructed, N = 14 Beda
  • 10. PraktikumPengkodean Sinyal Wicara 10 figure(); pwelch(x_rec,[],[],[],fs1,'onesided');title('PSD Estimate Sinyal Recover') P.1.4. Menyusun Model DCT Code untuk Satu Sinyal Penuh 7. Langkah 1 sama dengan pada P.1.3, diawali dengan pengambilan data dan proses resampling. %Contoh program DCT 1 dimensi (untuk sinyal suara,dsb.) %Untuk seluruh Sinyal clear al;clc;close all; fs1=16000; [y,fs]=wavread('file_a.wav'); %================ %bagian pemancar: %---------------- y10=y(:,1); N=0.02*fs1; y1r=resample(y10,fs1,fs); 8. Atur agar panjang sampel adalah kelipatan dari ukuran satu frame sinyal, dalam hal ini kelipatan dari 320 (0,02*fs1). Kemudian lakukan pembentukan frame dengan memanfaatkan fungsi reshape.m. NN=floor(length(y1r)/N); y1=y1r(1:NN*N); y1_reshape=reshape(y1,N,NN); x=y1_reshape; 9. Lakukan proses dct pada keseluruhan data yang sudah dalam bentuk frame X_dct = dct(x); 10. Kembalikan data terkoding DCT menjadi nilai aslinya, dan lanjutkan dengan menggabungkan kembali frame-frame sinyal menjadi satu sinyal utuh. x1=idct(X_dct); %================ %bagian penerima: %---------------- y1_recover=reshape(x1,N*NN,[]); 11. Coba amati bagaimana perbandingan bentuk sinyal dalam domain waktu dan domain frekuensi. %perbandingan domain waktu %------------------------- t=1:length(y1); figure(); subplot(211);plot(t,y1,'b');xlabel('Sinyal Asli');
  • 11. PraktikumPengkodean Sinyal Wicara 11 subplot(212);plot(t,y1_recover,'r');xlabel('Sinyal Recovery'); title('Perbandingan Input - Output dg DCT'); %perbandingan domain frekuensi %----------------------------- figure(); pwelch(y1,[],[],[],fs1,'onesided');title('PSD Estimate Sinyal Asli') figure(); pwelch(y1_recover,[],[],[],fs1,'onesided');title('PSD Estimate Sinyal Recover') P.1.5. Model Pengkodean Sinyal Wicara dengan CELP  Menyusun Model Pengkodean CELP Untuk melakukan penyusunan model pengkodean CELP anda harus memiliki file-file pendukung berikut ini: celpana.m, celpexit.m, celpsyn.m, durbin.m, lpcana.m, lpxcrespith.m, lpcweight.m, rf2lpc.m, celp16k.m, celp9600.m, dan file suara file_a.wav, handel.wav, atau file wav lainnya. Jika anda kesulitan untuk mendapatkan file-file tersebut, coba konsultasikan kepada dosen pengampu. Selanjutnya langkah pemodelan dilakukan sebagai berikut. 1. Langkah 1 sama dengan pada P.1.3, diawali dengan pengambilan data dan proses resampling. %File Name: CELP_RUN.m % The script to run the CELP codecs: 16 kbps CELP & 9.6 kbps CELP clc;clear all;close all; % %coba dengan model baru, berawal dari sini... [x0,Fs] = wavread('file_a.wav'); x10 = x0(:,1); %Proses resampling: fs1 = 8000; y1r = resample(x10,fs1,Fs); 2. Tetapkan variable-variabel untuk pembentukan frame, dsb. % Taking the input data from speech file x = y1r; N = 160; % Frame length L = 40; % Sub-frame length M = 12; % Order of LP analysis c = 0.85; % constant parameter for perceptual weighted filter Pidx = [16 160]; 3. Masukkan data ke CELP analysis-by-synthesis untuk menghasilkan suatu Gaussian codebook % Entering into the CELP analysis-by-synthesis codec % creating the Gaussian codebook randn('state',0);
  • 12. PraktikumPengkodean Sinyal Wicara 12 cb = randn(L,1024); % invoking the CELP codecs [xhat1, e, k, theta0, P, b] = celp9600(x,N,L,M,c,cb,Pidx); [xhat2, e, k, theta0, P, b] = celp16k(x,N,L,M,c,cb,Pidx); 4. Cek hasil pengkodean dengan memanfaatkan wavplay. Pada beberapa versi Matlab terbaru wavplay akan digantikan dengan fungsi lain. % playing all the sound files tunda=zeros(8000,1); for i = 1:3, if(i==1), display('Playing the original sound file...'); wavplay(x,8000); elseif(i==2), display('Playing the 16 kbps CELP generated sound file...'); wavplay(tunda,8000); wavplay(xhat1,8000); elseif(i==3), display('Playing the 9.6 kbps CELP generated sound file...'); wavplay(tunda,8000); wavplay(xhat2,8000); end end 5. Gambarkan hasilnya dalam bentuk perbandingan beberapa frame gambar menjadi satu, atau setiap hasil pengkodean dengan yang asli % plotting all the speech profiles figure(1) subplot(3,1,1) plot(x) axis([0 length(x) min(x) max(x)]); %axis([0 7*10^4 -1 1]); xlabel('time'); ylabel('Amplitude'); title('The original speech samples'); subplot(3,1,2) plot(xhat1,'m') axis([0 length(xhat1) min(xhat1) max(xhat1)]); %axis([0 7*10^4 -1 1]); xlabel('time'); ylabel('Amplitude'); title('The CELP 16 kbps synthetic samples'); subplot(3,1,3) plot(xhat2,'c') axis([0 length(xhat2) min(xhat2) max(xhat2)]); %axis([0 7*10^4 -1 1]); xlabel('time'); ylabel('Amplitude'); title('The CELP 9.6 kbps synthetic samples'); % comparing all the synthetic speech profiles with original speech kk=1:length(x); figure(2) %plot([x xhat1]); plot(kk,x,'b',kk,xhat1,'r')
  • 13. PraktikumPengkodean Sinyal Wicara 13 axis([0 length(x) min(x)-.1 max(x)+.1]); legend('original speech','16 kbps CELP speech'); xlabel('time'); ylabel('Amplitude'); title('The comparison of original speech & 16 kbps CELP synthetic samples'); figure(3) %plot([x xhat2]); plot(kk,x,'b',kk,xhat2,'r') axis([0 length(x) min(x)-.1 max(x)+.1]); %axis([0 7*10^4 -1 1]); legend('original speech','9.6 kbps CELP speech'); xlabel('time'); ylabel('Amplitude'); title('The comparison of original speech & 9.6 kbps CELP synthetic samples'); Gambar 7. Perbanding sinyal versi asli file_a.wav dengan hasil coding-by-synthesis CELP. 6. Anda lakukan pengamatan dalam domain frekuensi dengan memanfaatkan fungsi periodogram.m atau pwelch.m. Dan berikan penjelasan secukupnya dari gambar-gambar yang telah anda peroleh, sejauh mana pengaruh pengkodean dan synthesa dibandingkan dengan sinyal aslinya. 0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000 -0.2 0 0.2 time Amplitude The original speech samples 0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000 -0.2 0 0.2 time Amplitude The CELP 16 kbps synthetic samples 0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000 -0.2 0 0.2 time Amplitude The CELP 9.6 kbps synthetic samples