Algoritma sistem pengenalan pembicara
Gambar 3.2 Bagan alir algoritma program perancangan sistem pengenalan
pembicara.
Untuk menjelaskan secara ringkas algoritma diatas, maka dapat kita kategorikan dalam beberapa bagian sebagai berikut :
1. Matlab
Matlab Matrix Laboratory merupakan salah satu bahasa pemrograman yang dikembangkan oleh MathWorks. Matlab adalah
sebuah bahasa pemrograman dengan unjuk kerja tinggi high performance untuk komputasi teknis, yang mengintegrasikan komputasi,
visualisasi, dan pemrograman didalam lingkungan yang mudah penggunaannya dalam memecahkan persoalan dengan solusinya yang
dinyatakan dengan notasi matematik. Salah satu yang cukup menarik dari MatLab adalah kemudahan
dan kejelasannya dalam memahami contoh dan demo serta help yang ada pada Matlab. Matlab dapat berlaku seperti bahasa pemrograman C ataupun
pascal yang mempunyai struktur control program. Pemrograman dengaan Matlab memerlukan lebih dari satu baris dan dimungkinkan untuk
didokumentasikan dalam m-file, control program ini digunakan untuk memperbaiki tampilan yang diinginkan. Untuk mengenal lebih dekat
tentang Matlab dapat dilihat pada Gambar 3.3 yang menampilkan ruang kerja Matlab R2012a dengan berbagai tolls dan fasilitas yang
disediakannya.
Gambar 3.3 Tampilan program Matlab
Sistem Matlab terdiri dari 5 bagian utama, yaitu : a.
Bahasa pemrograman Matlab Bagian ini adalah bahasa pemrograman tingkat tinggi yang
menggunakan matriksarray dengan pernyataan aliran kendali program, struktur data, masukankeluaran, dan fitur-fitur pemrograman berorientasi
objek. b.
Lingkungan kerja Matlab Bagian ini adalah sekumpulan tools dan fasilitas Matlab yang digunakan
oleh pengguna atau pemrograman. Fasilitas yang dimaksudkan misalkan untuk mengelola variable didalam ruang kerja workspace dan melakukan
impor dan ekspor data. c.
Penanganan Grafik Bagian ini adalah sistem grafik MATLAB, termasuk perintah – perintah
program tingkat tinggi untuk visualisasi data dimensi 2 dan dimensi 3, pengolahan citra, animasi, dan presentasi grafik.
d. Pustaka Library fungsi matematis MATLAB
Bagian ini adalah koleksi algoritma komputasi mulai dari fungsi dasar seperti menjumlahkan sum, menentukan nilai sinus sine, kosinus
cosine, dan aritmatik bilangan kompleks. e.
API Application Program Interface Bagian ini adalah pustaka Library untuk menuliskan program dalam
bahasa C dan Fortran yang berinteraksi dengan MATLAB, termasuk fasilitas untuk memanggil rutin program dari MATLAB dynamic linking,
memanggil MATLAB sebagai mesin komputasi computation engine dan untuk pembacaan serta penulisan MAT – files.
2. File Suara
File suara yang dijadikan inputan pada sistem ini berasal dari data yang dikirim kan oleh alat pengolahan suara analog yang disimpan dalam
bentuk format file dokumen dan akan diubah kembali menjadi file suara dalam format dot wav. Wav merupakan standar format container file yang
digunakan oleh Windows. Wav umumnya digunakan untuk menyimpan audio tak termampatkan, file suara yang memiliki kualitas CD, yang
berukuran besar sekitar 10 MB per menit. File wav juga dapat berisi data terkodekan dengan beraneka ragam codec untuk mengurangi ukuran file.
File audio WAV dengan PCM, namun bisa terkompresi maupun tidak terkompresi. Format WAV banyak digunakan oleh handphone, sehingga
popularitas bisa menyamai file MP3.
Kualitas produksi waveform audio bergantung pada sampling rate banyaknya sampel per detik. Waveformaudio disebut juga pulse code
modulator pcm audio. WAV merupakan standar untuk komputer berbasis Windows, namum dapat digunakan dikomputer berbasis
Machitosh. Adapun file suara yang akan dijadikan sampel memiliki rentang atau pita suara sebesar 2 detik dengan satu buah pengucapan kata
tertentu dengan perbedaan setiap sampel kata terdiri dari satu suara manusia. Adapun contoh file suara yang telah diambil ditunjukkan pada
Gambar 3.4
Gambar 3.4 Contoh sampel suara “MAKAN”
Adapun file suara yang akan diinisialisasi berdasarkan file name suara yang akan diproses menjadi 4 buah variable data. Untuk lebih jelasnya
sintaks program Matlab adalah sebagai berikut : Data Awal Speech Continuous
[data, Fs, nbits, opts] = wavread s1.wav
; siz = wavread
s1.wav ,
size ;
subplot2, 1, 1; plotdata;
title Suara Asli
;
3. Frame Blocking
Pada perancangan sistem ini nilai N ditentukan atau ditetapkan berdasarkan nilai yang ditulis dalam program yang panjang nya antara 10-
30 ms atau 256-1024 data.Panjang frame yang digunakan sangat mempengaruhi keberhasilan dalam analisa spectral. Di satu sisi ukuran
dalam frame harus sepanjang mungkin untuk dapat menunjukkan resolusi frekuensi yang baik. Akan tetapi, di lain sisi ukuran frame juga harus
cukup pendek untuk dapat menunjukkan resolusi waktu yang baik. Dalam perancangan sistem ini sinyal suara yang kontinyu akan diblock
menjadi frame sampel N, dengan frame yang berdekatan dipisahkan oleh M MN. Frame pertama terdiri dari N sampel, Frame kedua dimulai
sampel M setelah frame yang pertama, dan melawati dari sampel N-M dan seterusnya. Proses ini berlanjut sampai semua suara dicatat dalam satu
frame atau lebih. Dengan cara yang sama, frame ketiga dimulai 2M sampel setelah frame pertama atau M sampel setelah frame kedua dan overlap
dengan N– 2M sampel. Proses ini berlanjut hingga semua sinyal suara dihitung dalam satu atau banyak frame. Nilai untuk N dan M adalah N =
256 dan M =100. Berikut ini adalah diagram blok untuk proses penentuan frame yang ditunjukkan pada Gambar 3.5 [6].
Gambar 3.5 Diagram block proses penentuan frame blocking
Jadi, proses frame tersebut dilakukan secara terus-menerus hingga semua sinyal dapat terproses. Selain itu, proses ini umumnya dilakukan secara
overlapping untuk setiap frame-nya. Panjang daerah overlap yang umum digunakan adalah kurang lebih 30 sampai 50 dari panjang frame.
Untuk lebih jelasnya sintaks program Frame Blocking pada Matlab adalah sebagai berikut :
1 Frame Blocking.. N = 256;
N point FFT M = 100;
Overlapping NN = floorN2+1;
N2 nbFrames = ceillengthdata-NM;
Frames = zerosnbFrames+1,N; for
i = 0:nbFrames-1 temp = dataiM+1:iM+N;
Framesi+1,1:N = temp; end
Last Frame.. temp = zeros1,N;
lastLength = lengthdata- nbFramesM; temp1:lastLength = datanbFramesM+1:nbFramesM
+1 + lastLength-1; FramesnbFrames+1, 1:N = temp;
b = 1:N; subplot2, 1, 2;
plottemp; title
After Frame Blocking ;
4. Windowing
Pada perancangan sistem pengenalan pembicara proses windowing ini bertujuan untuk mengurangi terjadinya kebocoran spectral atau aliasing
yang mana merupakan suatu efek dari timbulnya sinyal baru yang memiliki frekuensi yang berbeda dengan sinyal aslinya. Efek tersebut
dapat terjadi karena rendahnya jumlah sampling rate atau karena proses frame blocking yang menyebabkan sinyal menjadi discontinue.
Hamming windows digunakan pada perancangan sistem ini dikarenakan tujuan penulis untuk mengetahui seberapa besar pengaruh windowing ini
terhadap sinyal analog yang akan diproses. Secara umum Fungsi ini menghasilkan sidelobe level yang tidak terlalu tinggi kurang lebih -43
dB. Selain itu, noise yang dihasilkan pun tidak terlalu besar kurang lebih 1.36 BINS. Untuk lebih jelas memahami mengenai sistem kerja atau
pengaruh sinyal yang diakibatkan oleh Hamming window ditunjukan pada Gambar 3.6 [6].
Gambar 3.6Pengaruh sinyal yang diakibatkan Hamming window
Untuk lebih jelas, adapun script sintaks program Windowing pada Matlab adalah sebagai berikut :
Windowing frameSize = sizeframes;
nbFrames = frameSize1; nbSamples = frameSize2;
Hamming Window w = hammingnbSamples;
Windows = zerosnbFrames,nbSamples; for
i = 1:nbFrames temp = Framesi,1:nbSamples;
Windowsi, 1:nbSamples = w.tempt; end
subplot6, 1, 3; plotw;
title After Hamming Window
;
5. FFT fast fourier transform
Pada perancangan sistem ini untuk mendapatkan sinyal dalam domain frekuensi dari sebuah sinyal discrete, maka digunakan salah satu
metode transformasi discrete fourier transform.DFT dilakukan terhadap masing-masing frame dari sinyal yang telah di windowing. Namun, yang
menjadi persoalan adalah bahwa DFT tersebut memerlukan waktu komputasi yang sangat panjang untuk data yang besar. Oleh karena itu,
diperlukan suatu teknik komputasi yang efisien, baik dari sisi waktu maupun dari sisi penggunaan memori.
FFT adalah algoritma cepat untuk mengimplementasikan discrete fourier transform DFT.FFT ini mengubah masing-masing frame N sampel dari
domain waktu menjadi domain frekuensi. Hasil transformasi ini dipengaruhi oleh beberapa parameter, yaitu sample
rate sinyal suara dan FFT size. Sample rate adalah banyaknya sampel input
analog yang diambil secara digital dengan satuan Hertz Hz. Sample rate sinyal suara berpengaruh pada besarnya jangkauan frekuensi dari koefisien
hasil FFT. Jangkauan frekuensi hasil FFT adalah setengah dari sample rate sinyal suara yang ditransformasi. Artinya, apabila terdapat sinyal suara
dengan sample rate 44100 Hz, maka koefisien-koefisien hasil transformasi dari sinyal suara tersebut berkisar dari 0 Hz sampai 22050 Hz. Jadi,
semakin besar sample rate , maka akan semakin detail pula sampel analog yang diambil secara digital.
Sedangkan FFT size adalah panjang dari FFT yang digunakan. FFT size berpengaruh terhadap ketelitian tiap koefisien FFT. Semakin besar FFT
size, maka tiap koefisien hasil FFT akan mewakili rentang frekuensi yang semakin kecil, sehingga ketelitiannya semakin tinggi. Sebaliknya apabila
ukuran sampel FFT semakin kecil, maka tiap koefisien hasil FFT akan mewakili rentang frekuensi yang semakin besar, sehingga ketelitiannya
semakin rendah. Adapun script program Matlab tentang FFT fast fourier transform adalah sebagai berikut :
Fourier Transform.. ffts = fft Windows;
subplot6, 1, 4; plotffts;
title After Fourier Transform
;
6. MFCC mel frequency cepstrum coefficients
Pada perancangan sistem ini dibutuhkan suatu metode yang mampu mengidentifikasi sinyal yang masuk. Untuk itu MFCC dipilih
sebagai salah satu metode yang digunakan untuk tujuan tersebut. MFCC berasal dari tipe representasi kepstral dari klip audio yang disebut sebagai
spectrum yag berasal dari spectrum yang lain. Perbedaan antara ceptrum dan mel frequency cepsturm adalah terletak pada MFC nya, Band
frekuensi diposiskan secara algoritma pada skala mel yang mendekati respon sistem pendengaran manusia, lebih dekat dari band frekuensi ruang
yang diperoleh secara langsung dari FFT dan DCT. Cara ini mampu memberikan peluang yang lebih baik dalam memproses data, sebagai
contonya adalah audio compression. MFCC secara umum diperoleh sebagai berikut :
a. Mengambil perubahan Fourier dari windowing sebuah sinyal
b. Pemetaan logaritma amplitude dari perolehan spectrum diatas
menuju ke skala mel, menggunakan jendela overlap berbentuk segitiga
c. Memerlukan discrete cosine transform DCT dari logaritma
amplitude mel, hanya jika itu merupakan sebuah sinyal d.
MFCC adalah aplitudo dalam menghasilkan spectrum
Dalam metode MFCC ini dapat dijelaskan script pemrograman dalam Matlab adalah sebagai berikut :
Mel-frequency Wrapping.. a Calculate Power spectrum..
PowSpecs = absffts.2; PowSpecs = PowSpecs1:NN-1,:;
b Mel filter generation nof_c = 20;
Number of channels.. df = FsN;
Nmax = N2; fmax = Fs2;
Convert to mel scale.. melmax = 2595log101+fmax700;
melinc = melmaxnof_c+1; melcenters = 1:nof_c.melinc;
Convert to frequency scale.. fcenters = 70010.melcenters.2595-1;
centerf = roundfcenters.df; startf = [1,centerf1:nof_c-1];
stopf = [centerf2:nof_c,Nmax]; W = zerosnof_c,Nmax;
Making filter.. for
i = 1:nof_c increment = 1.0centerfi-startfi;
for j = startfi:centerfi
Wi,j = j-startfiincrement; end
decrement = 1.0stopfi-centerfi; for
j = centerfi:stopfi Wi,j = j-centerfidecrement;
end end
Normalising.. for
i = 1:nof_c Wi,: = Wi,:sumWi,:;
end c Apply mel filters to Power spectrum coeffs..
melPowSpecs = WPowSpecs; d MFCC calculations..
melCeps = dctlogmelPowSpecs; melCeps1,: = [];
subplot6, 1, 5; plotmelCeps;
title
After MFCC ;
7. Cepstrum
Pada perancangan sistem pengenalan suara ini cepstrum dikembangkan untuk penggunaan dengan sinyal ucapan, yang secara
spectral mempunyai banyak puncak dan selalu memiliki jeda datar. Ketika logaritma magnitude spektrrum telah dapat diambil, puncak ini dapat
dikurangi, amplitudonya dibawa kedalam suatu skala yang dapat dipakai, dan menghasilkan suatu bentuk gelombang periodik dalam daerah
frekuensi, periode berhubungan dengan frekuensi fundamental sinyal asli. Cepstrum merupakan suatu analisis spectral dengan keluaran berupa
alihragam Fourier dari fungsi logaritma magnitudo spectrum gelombang masukan. Prosedur ini dikembangkan dalam percobaan untuk membuat
suatu sistem tidak linier agar lebih linier. Cepstrum atau koefisien cepstral, didefenisikan sebagai balikan alihragam Fourier dari spectrum amplitude
logaritmik waktu pendek. Maksud dari cepstrum sesungguhnya adalah menyederhanakan koefisien yang diperoleh dari MFCC. Hasil dari
penyederhanaan inilah yang menjadi data Matriks yang digunakan untuk mengidentifikasi kepemilikan sinyal suara masukan.
Adapun script pemrograman Matlab tentang cepstrum ini adalah sebagai berikut :
Cepstrum cepstrum = rcepsmelCeps;
[long,coefficient] = sizecepstrum; x = iccpeslong,coefficient;
z = maxsumabscepstrum; y = round10000z;
figure6; title
After Cepstrum ;