Percobaan 8. Ekstraksi Ciri Pada Sinyal

Percobaan 8. Ekstraksi Ciri Pada Sinyal Speech

PERCOBAAN 8
EKSTRAKSI CIRI PADA SINYAL SPEECH
Oleh:

Bakhrul Dwitamala R.I
Mohammad Abdur Rozaqi
Sutra Wardatul Jannah

Tujuan Praktikum
- Mahasiswa mampu melakukan estimasi frekuensi fundamental sinyal speech dengan pengamatan
frekens spektrum dan bentuk gelombangnya
- Mahasiswa mampu menggambarkan bentuk kuefrensi dan cepstrum sinyal speech.

8.1 Dasar Teori
8.1.1 Autokorelasi Sinyal Speech
Tujuan melakukan estimasi dalam domain waktu adalah untuk mendapatkan nilai
autokorelasi sinyal speech. Nilai autokorelasi suatu sinyal wicara akan menunjukkan bentuk
gelombang itu yang membentuk suatu korelasi pada dirisnya sendiri sebagai fungsi perubahan
waktu. Bentuk-bentuk yang sama atau mirip pada perioda tertentu menunjukkan perulangan

bentuk yang menjadi pola dari sinyal wicara. Dengan demikian akan dapat kita lakukan estimasi
nilai frekuensi fundamentalnya.

Gambar 8.1. Sinyal Wicara dalam Bentuk Gelombang, dan Fungsi Auto Korelasi
8.1.2 Analisa Spectral Sinyal Spech
Proses ekstraksi ciri sinyal speech didasarkan pada sebuah diagram blok yang cukup
popular seperti berikut.

Gambar 8.2 Diagram Blok Ekstraksi Ciri Sinyal Wicara
Dengan mengikuti diagram blok di atas, kita akan mendapatkan langkah-demi langkah
ekstraksi ciri. Pada Sub Bab ini pembicaraan berkisar pada proses melihat short time fourier
analisys dari sinyal speech, atau yang juga kita kenal sebagai power spectral density (PSD) sebuah
sinyal speech pada durasi atau frame tertentu. Dengan mengetahui bentuk PSD sinyal wicara kita
akan mampu melakukan ekstraksi ciri sinyal wicara tersebut. Target akhir sub bab ini dalah

mencari bentuk power spectral density (PSD). Sebelum proses pada Gambar di atas dilakukan ada
baiknya kita melihat gambaran sebuah sinyal speech yang telah kita simpan dalam bentuk file
“a.wav”. Setelah kita dapatkan bentuknya dalam domain waktu seperti pada Gambar 8.3 bagian
atas, selanjutnya kita coba melihatnya sebagai fungsi dari sampling. Dalam hal ini kita lihat bentuk
sinyal wicara sesuai dengan urutan sampel yang ada. Seperti kita lihat bahwa untuk nilai sampel

ke-700 sampai dengan sampel ke-8200, menunjukkan nilai magnitudo sinyal yang relatif stabil.
Kita lanjutkan dengan melakukan pembentukan frame sebuah sinyal wicara seperti pada
Gambar 8.4 bagian atas. Dengan melakukan windowing kita akan mendapatkan bentuk frame
sinyal wicara terwindow seperti pada Gambar 8.4 bagian bawah. Sudah tentu kita paham untuk
apa proses windowing dilakukan disini. Dengan demikian tidak salah apabila kita mengambil satu
frame sinyal dari sampel ke-2000 sampai dengan sampel ke 2480. Karena dalam satu frame kita
bentuk dari:

Sampel/frame = (sample/detik)*(detik/frame)
= 16000 * 0,06= 480 sampel/frame
Hal ini dilakukan dengan menetapkan bahwa satu frame sinyal wicara sepanjang 50 ms.

Gambar 8.3. Sinyal Wicara dalam Domain Waktu dan Sebagai Fungsi Sampel ke-n

Gambar 8.4. Satu Frame Sinyal Wicara dalam Domain Waktu
Proses dilanjutkan dengan melakukan transformasi sinyal ke dalam domain frkeuensi.
Dengan menggunakan fft dan proses logaritmik akan kita dapatkan nilai power spectral
density(PSD) sinyal wicara seperti pada Gambar 8.5.

Gambar 8.5. Power Spectral Density Sinyal Speech


8.1.3 Cepstrum Sinyal Speech
Cepstrum c(τ) didefiniskan sebagai inverse transformasi Fourier pada short-time nilai
logarithmik spektrum amplitudo sebuah sinyal, |X(ω)|. Jika log amplitudo spectrum tersusun dari
banyak spasi harmonik yang teratur, maka analisis Fourier pada spektrum ini akan menunjukkan
sebuah puncak yang berhubungan dengan jarak antar harmonisa tersebut, yang juga dikenal
sebagai frekuensi fundamental.

Dengan melakukan proses mengikuti diagram blok pada Gambar 8.2, maka proses
berikutnya adalah melakukan ifft nilai PSD yang sudah diperoleh. Proses ini menghasilkan sebuah
nilai kuefrensi dari sinyal speech. Gambaran dari nilai kuefrensi seperti pada Gambar 8.6, berikut
ini. Langkah ini dilanjutkan dengan lifter window, yaitu proses pengambilan sebagian saja dari
nilai kuefrensi sinyal speech yang terdapat pada Gambar 8.6. Dalam hal ini kita bisa mengambil
16 sampai 20 nilai pertama yang muncul. Nilai ini sudah cukup representatif untuk mendapatkan
ciri dari sinyal wicara. Yang terakhir dari langkah kita adalah melakukan transformasi fourier pada
hasil lifter window yang selanjutnya akan menghasilkan sebuah cepstrum dari sinyal speech yang
kita olah.

Gambar 8.6. Gambaran Kuefrensi Sinyal Speech ”a.wav”


Gambar 8.7. Perbandingan Nilai Psd dan Cepstrum Sinyal Speech ”a.wav”
Dari Gambar 8.7 di atas kita dapatkan gambaran bentuk cepstrum sinyal speech
menunjukkan pola yang mirip dengan pola PSD. Di sini tampak bahwa bentuk cepstrum
merupakan penghalusan dari bentuk PSD sebuah sinyal speech.

8.2. Peralatan
- 1 (satu) buah PC Multimedia lengkap sound card dan microphone
- Satu perangkat lunak Matlab under windows
8.3. Langkah Percobaan
8.3.1 Penataan Perangkat
Sebelum melakukan percobaan harus dilakukan penataan seperti pada Gambar 8.8, berikut
ini.

Gambar 8.8 Penataan Perangkat Percobaan Pengukuran Energi Sinyal Wicara

PC harus dilengkapi dengan peralatan multimedia seperti sound card, speaker active dan
microphone. Untuk microphone dan speaker active. Sebelum anda memulai praktikum, sebaiknya
anda tes dulu, apakah seluruh perangkat multimedia anda sudah terintegrasi dengan PC.
Untuk membantu anda dalam menjalankan praktikum ini, di sini diberikan beberapa contoh
perintah dasar yang akan anda perlukan pada proses ekstraksi ciri sinyal speech. Untuk

menentukan korelasinya digunakan perintah sebagai berikut:
Korelasi: C = XCORR(A,B),
Contoh pemakaiannya seperi berikut:
clear all;
x=[1 3 2 1 3 6 1];
subplot(211)

plot(x,’b’,’linewidth’,3)
axis([0 8 0 7])
xx=xcorr(x);
subplot(212)
plot(xx,’b’,’linewidth’,3)
Hasilnya adalah seperti berikut ini.

Gambar 8.9. Contoh Proses Korelasi
Nilai sample ke-n
Membaca sebuah nilai pada sample tertentu
Fs=12000;
[x,Fs]=wavread('file_a');
x_240=x(2000:2240);

Dengan program ini akan didapatkan nilai x_240 sebagai nilai dari variabel x pada sampel 2000
sampai dengan sampel ke 2240.
Transformasi dari domain waktu ke frekuensi
[H,W] = FREQZ(B,A,N) returns the N-point complex frequency response vector H and
the N-point frequency vector W in radians/sample of the filter:
Contoh pemakaiannya
X=freqz(x_wind);
Langkah ini akan mentransormasikan nilai x_wind menjadi bentuk domain frekuensi
yang hasilnya disimpan pada variabel X. Kita harus tahu bahwa nilai yang disimpan

dalam X merupakan bentuk komplek.
Transformasi dari domain frekuensi ke domain waktu
IFFT(X) is the inverse discrete Fourier transform of X.
Contoh pemakaiannya
x_k = abs(ifft(X_dB));
Langkah ini akan mentransformasikan dari domain frekuensi ke dalam domain waktu,
operasinya kita kenal sebagai invers fast fourier transform.
8.3.2 Estimasi Frekuensi Fundamental dengan Domain Waktu
Pada percobaan ini kita coba untuk melakukan estimasi nilai frekuensi fundamental dengan
menggunakan domain waktu. Dalam hal ini kita memanfaatkan fungsi auto korelasi suatu sinyal

wicara. Langkah-langkahnya adalah sebagai berikut:
1. Buat program untuk memanggil file ‘a.wav’ .
2. Tampilkan hasilnya dalam domain waktuk sebagai figure(1)
3. Ambil beberapa sampel saja dari nilai a.wav yang sudah anda panggil. Dalam hal ini anda bisa
menentukan sebanyak 200, 300, atau terserah anda.
4. Tambahkan program untuk mencari bentuk auto korelasinya
5. Hitung jarak antar puncak satu dengan puncak berikutnya yang paling dekat. Coba amati juga jarak
puncak ke 0, puncak ke 1, puncak ke 2. Arahkan pandangan anda geser ke kiri, perhatikan puncak
ke-1, puncak ke-2, dst. Coba anda hitung jarak antar puncak tersebut. Tentu saja nilainya dalam
satuan waktu, bisa mili detik atau yang lain.

%--------------------------------------------------------% Bakhrul D.R.I / M.A. Rozaqi / Sutra W.J
% 8.4.3. Estimasi Frekuensi Fundamental dengan Domain Waktu
%--------------------------------------------------------% 1. Buat program untuk memanggil file ‘a.wav’ .
clear all;
fs=16000;
[y,fs]=wavread('a.wav');
%2. Tampilkan hasilnya dalam domain waktuk sebagai figure(1)
dt = 1/fs;
t = 0:dt:(length(y)*dt)-dt;

subplot(311);
plot(t,y); xlabel('Seconds'); ylabel('Amplitude');title('figure(1)');
%3. Ambil beberapa sampel saja dari nilai a.wav yang sudah anda panggil.
%
Dalam hal ini anda bisa menentukan sebanyak 200, 300, atau terserah
anda.
y_400=y(1000:1400);
subplot(312);
plot(y_400); xlabel('N Sample'); ylabel('Amplitude');title('figure(2)');
%4. Tambahkan program untuk mencari bentuk auto korelasinya
subplot(313);
c=xcorr(y_400);
plot(c);
%5. Hitung jarak antar puncak satu dengan puncak berikutnya yang paling
dekat.
%
Coba amati juga jarak puncak ke 0, puncak ke 1, puncak ke 2.
%
Arahkan pandangan anda geser ke kiri, perhatikan puncak ke-1, puncak
ke-2, dst.


8.3.4 Karakterisrik Power Spectral Density
1. Panggil sinyal wicara “a.wav”.
2. Tampilkan dalam domain waktu dan dalam bentuk sinyal sebagai fungsi sample ke-n.
3. Buat sebuah frame sinyal sepanjang 240 sampel, dalam hal ini anda bisa memilih bagian sinyal
yang representatif, yang memiliki nilai cukup stabil selama durasi frame yang anda tetapkan
panjangnya.
4. Transformasikan ke dalam domain frekuensi, anda bisa menggunakan perintah fft atau yang lain.
5. Rubah nilainya dalam parameter dB, 20 log10(abs(X))

%--------------------------------------------------------% Bakhrul D.R.I / M.A. Rozaqi / Sutra W.J
% 8.3.4 Karakterisrik Power Spectral Density
%--------------------------------------------------------%1. Panggil sinyal wicara “a.wav”.
clear all;
fs=16000;
[y,fs]=wavread('a.wav');
%2. Tampilkan dalam domain waktu dan dalam bentuk sinyal sebagai fungsi sample
ke-n.
dt = 1/fs;
t = 0:dt:(length(y)*dt)-dt;

subplot(321);
plot(t,y); xlabel('Seconds'); ylabel('Amplitude');
subplot(322);
plot(y); xlabel('N Sample'); ylabel('Amplitude');
%3. Buat sebuah frame sinyal sepanjang 240 sampel, dalam hal ini anda bisa
memilih
%
bagian sinyal yang representatif, yang memiliki nilai cukup stabil selama
durasi
%
frame yang anda tetapkan panjangnya.
y_240=y(42500:42740);
subplot(323);
plot(y_240); xlabel('N Sample'); ylabel('Amplitude');
%4. Transformasikan ke dalam domain frekuensi, anda bisa menggunakan
%
perintah fft atau yang lain.
L=length(y_240);
NFFT = 2^nextpow2(L); % Next power of 2 from length of y
Y = fft(y_240,NFFT)/L;

f = fs/2*linspace(0,1,NFFT/2+1);
% Plot single-sided amplitude spectrum.
subplot(324);
plot(f,2*abs(Y(1:NFFT/2+1)));
title('Single-Sided Amplitude Spectrum of y(t)');
xlabel('Frequency (Hz)');
ylabel('|Y(f)|');
%5. Rubah nilainya dalam parameter dB, 20 log10(abs(X))
subplot(3,2,[5 6]);
plot(f,20*log(abs(Y(1:NFFT/2+1)))/log(10));
title('Single-Sided Amplitude Spectrum of y(t)');
xlabel('Frequency (Hz)');
ylabel('dB');

8.3.5 Mencari Bentuk Cepstal Sinyal Wicara
1. Lakukan hal yang sama seperti pada langkah percobaan 8.3.4, usahakan tampilan yang sudah anda
peroleh anda hold supaya gambarnya tidak hilang.
2. Tambahkan program untuk melakukan invers fft anda.
3. Tampilkan bentuk kuefrensi yang telah anda peroleh, jika terjadi bentuk pencerminan pada sisi kiri
dan sisi kanan, ambil sisi kiri saja dan tampilkan kembali dengan mengatur nilai sample tertentu
saja yang anda olah.
4. Lakukan proses lifter window dengan cara ambil 16 titik nilai kuefrensi pertama saja. Jika anda
ragu anda bisa mengambil 20 titik nilai kuefrenensi pertama.
5. Transformasikan kembali ke domain fekuensi, dan usahakan gambarnya menjadi satu dengan hasil
tampilan PSD yang telah anda peroleh.

%--------------------------------------------------------% Bakhrul D.R.I / M.A. Rozaqi / Sutra W.J
% 8.3.5 Mencari Bentuk Cepstal Sinyal Wicara
%--------------------------------------------------------%1. Lakukan hal yang sama seperti pada langkah percobaan 8.3.4,
%
usahakan tampilan yang sudah anda peroleh anda hold supaya gambarnya
tidak hilang.
clear all;
fs=16000;
[y,fs]=wavread('a.wav');
dt = 1/fs;
t = 0:dt:(length(y)*dt)-dt;
subplot(421);
plot(t,y); xlabel('Seconds'); ylabel('Amplitude');
subplot(422);
plot(y); xlabel('N Sample'); ylabel('Amplitude');
y_240=y(22500:22740);
subplot(423);
plot(y_240); xlabel('N Sample'); ylabel('Amplitude');
L=length(y_240);
NFFT = 2^nextpow2(L); % Next power of 2 from length of y
Y = fft(y_240,NFFT)/L;
f = fs/2*linspace(0,1,NFFT/2+1);
% Plot single-sided amplitude spectrum.
subplot(424);
plot(f,2*abs(Y(1:NFFT/2+1)));
title('Single-Sided Amplitude Spectrum of y(t)');
xlabel('Frequency (Hz)');
ylabel('|Y(f)|');
subplot(425);
Y_dB=20*log(abs(Y(1:NFFT/2+1)))/log(10);
plot(f,Y_dB);
title('Single-Sided Amplitude Spectrum of y(t)');
xlabel('Frequency (Hz)');
ylabel('dB');
%2. Tambahkan program untuk melakukan invers fft anda.
y_inv =abs(ifft(Y_dB));
%3. Tampilkan bentuk kuefrensi yang telah anda peroleh, jika terjadi bentuk
%
pencerminan pada sisi kiri dan sisi kanan, ambil sisi kiri saja dan
tampilkan
%
kembali dengan mengatur nilai sample tertentu saja yang anda olah.
subplot(426);
plot(y_inv);
%4. Lakukan proses lifter window dengan cara ambil 16 titik nilai kuefrensi
pertama saja
%
Jika anda ragu anda bisa mengambil 20 titik nilai kuefrenensi pertama.
y_lw=y_inv(1:20);
%5. Transformasikan kembali ke domain fekuensi, dan usahakan gambarnya
menjadi satu
%
dengan hasil tampilan PSD yang telah anda peroleh.
L2=length(y_lw);

L2=length(y_lw);
NFFT2 = 2^nextpow2(L2); % Next power of 2 from length of y
Y_ceps = fft(y_lw,NFFT2)/L2;
f2 = fs/2*linspace(0,1,NFFT2/2+1);
% Plot single-sided amplitude spectrum.
subplot(427);
plot(f2,(20*log(abs(Y_ceps(1:NFFT2/2+1)))/log(10)));
title('Single-Sided Amplitude Spectrum of y(t)');
xlabel('Frequency (Hz)');
ylabel('dB');
subplot(428);
plot(f2,(20*log(abs(Y_ceps(1:NFFT2/2+1)))/log(10)));
title('Single-Sided Amplitude Spectrum of y(t)');
xlabel('Frequency (Hz)');
ylabel('dB');
hold all;
plot(f,Y_dB);

8.4 Analisis Data
Anda harus menjelaskan tentang proses urutan sesuai dengan diagram blok pada Gambar
8.2. Termasuk menjelaskan masing-masing fungsi blok tersebut. Kemudian dari hasil uji coba
yang telah anda lakukan. Apa yang anda peroleh. Berikan penjelasannya.

8.5 Tugas
1. Buat program seperti pada langkah-langkah di atas, gunakan sinyal speech dengan merekam
sendiri.
% Record your voice for 5 seconds.
fs=16000;
recObj = audiorecorder(fs,8,2);
disp('Start speaking.')
recordblocking(recObj, 5);
disp('End of Recording.');
% Play back the recording.
play(recObj);
% Store data in double-precision array.
myRecording = getaudiodata(recObj);
% Plot the waveform.
subplot(211);
plot(myRecording);
wavwrite(myRecording,fs,'a.wav');

Dokumen yang terkait

FREKUENSI KEMUNCULAN TOKOH KARAKTER ANTAGONIS DAN PROTAGONIS PADA SINETRON (Analisis Isi Pada Sinetron Munajah Cinta di RCTI dan Sinetron Cinta Fitri di SCTV)

27 310 2

PENILAIAN MASYARAKAT TENTANG FILM LASKAR PELANGI Studi Pada Penonton Film Laskar Pelangi Di Studio 21 Malang Town Squere

17 165 2

APRESIASI IBU RUMAH TANGGA TERHADAP TAYANGAN CERIWIS DI TRANS TV (Studi Pada Ibu Rumah Tangga RW 6 Kelurahan Lemah Putro Sidoarjo)

8 209 2

MOTIF MAHASISWA BANYUMASAN MENYAKSIKAN TAYANGAN POJOK KAMPUNG DI JAWA POS TELEVISI (JTV)Studi Pada Anggota Paguyuban Mahasiswa Banyumasan di Malang

20 244 2

FENOMENA INDUSTRI JASA (JASA SEKS) TERHADAP PERUBAHAN PERILAKU SOSIAL ( Study Pada Masyarakat Gang Dolly Surabaya)

63 375 2

PEMAKNAAN MAHASISWA TENTANG DAKWAH USTADZ FELIX SIAUW MELALUI TWITTER ( Studi Resepsi Pada Mahasiswa Jurusan Tarbiyah Universitas Muhammadiyah Malang Angkatan 2011)

59 326 21

PENGARUH PENGGUNAAN BLACKBERRY MESSENGER TERHADAP PERUBAHAN PERILAKU MAHASISWA DALAM INTERAKSI SOSIAL (Studi Pada Mahasiswa Jurusan Ilmu Komunikasi Angkatan 2008 Universitas Muhammadiyah Malang)

127 505 26

PEMAKNAAN BERITA PERKEMBANGAN KOMODITI BERJANGKA PADA PROGRAM ACARA KABAR PASAR DI TV ONE (Analisis Resepsi Pada Karyawan PT Victory International Futures Malang)

18 209 45

STRATEGI PUBLIC RELATIONS DALAM MENANGANI KELUHAN PELANGGAN SPEEDY ( Studi Pada Public Relations PT Telkom Madiun)

32 284 52

Analisis Penyerapan Tenaga Kerja Pada Industri Kerajinan Tangan Di Desa Tutul Kecamatan Balung Kabupaten Jember.

7 76 65