MARATUS SOLIHAH
NRP. 7203.040.006
Dosen Pembimbing :
TRI BUDI SANTOSO, ST, MT.
NIP. 132 128 464
HALAMAN JUDUL
APLIKASI PENGENALAN WICARA UNTUK
SISTEM AKSES BUKU PERPUSTAKAAN
(Fase Pembelajaran)
LEMBAR PENGESAHAN
Oleh :
MARATUS SOLIHAH
NRP. 7203 040 006
Disetujui oleh:
Tim Penguji Proyek Akhir: Dosen Pembimbing:
1. 1.
ii
ABSTRAK
iii
ABSTRACT
iv
KATA PENGANTAR
Penulis
v
UCAPAN TERIMA KASIH
vi
12. Semua teman-teman yang dengan ikhlas menyumbangkan
suaranya untuk kami rekam maupun untuk pengujian.
13. Kurnia Hayati Rahman,makhluk terbaik,terlucu,termanis yang
pernah ku kenal, how great to be your sister, terima kasih atas
segala senyum, tawa, keceriaan, tempat berbagi suka dan duka
selama ini.
14. Mas Iwan K, terimakasih buat segala ketulusan doa, sharing
ilmu dan pikiran,support, dan semangat yang tak pernah henti
serta berbagai kiriman paket tak terduga selama Tugas Akhir.
15. Mbak Kiky, Ukhty Uci, Ukhty Fatim, Mbak Kurnia, Ukhty
Cyntia, semoga genk solihah kita awet sampe akhirat.
16. Adek-adek kecil ku di TPA Chusnul Khotimah Asem Jajar,
senyum tulus dan tawa ceriamu benar-benar melenyapkan
segala penat dan beban di hati.
17. Genk Alumni SSKI V and friends,
Kurnia,Hani,Husnia,Evi,Fithriyah,Rahma,Pipit,Liana,Yeni,Qon
ita,Ellysa,Lina,Belina,dkk, be my sister forever, kehadiran
kalian,mampu bangkitkan kembali semangatku.
18. Semua saudara & saudari ku mantan pengurus BEM PENS-
ITS,mantan SC OMB ’04 dan mantan Pemandu, Mbak
Putri,Mas Ilham, Mas Satria,Yuda dkk yang selalu mensupport
dikala TA. Terima kasih atas segala kenangan indah,sharing
pengalaman & pikiran , serta dukungan moril yang tiada henti.
19. Seluruh pengurus UKKI PENS-ITS, dek Yanti, dek Atik,
Ratna,Risna,Willy,Fitria,Diana,Ima,Febri,dkk,terima kasih atas
dukungan moril dan keceriaan yang dihadirkan selama ini.
20. Adek-adek Birama di XII P 6, terimakasih buat segala
BIRAMA INDAH qta yang ok’s banget.
21. Seluruh pengurus Uswah Student Center,especially genk
ASTIL dan UNIT 3 + dek Neny.
22. Sahabat kecilku di Teknik Elektro ITS.
23. Dan semua pihak yang telah membantu terselesaikannya
proyek akhir ini, yang tidak dapat kami sebutkan satu per satu
karena keterbatasan halaman.
vii
DAFTAR ISI
HALAMAN JUDUL...............................................................................i
LEMBAR PENGESAHAN .................................................................. ii
ABSTRAK............................................................................................ iii
ABSTRACT ..........................................................................................iv
KATA PENGANTAR ...........................................................................v
DAFTAR ISI ...................................................................................... viii
DAFTAR GAMBAR ............................................................................xi
DAFTAR TABEL ...............................................................................xiv
viii
BAB 3 PERENCANAAN DAN PEMBUATAN PERANGKAT
LUNAK …………………………………………………………….25
3.1 Pendahuluan....................................................................... 25
3.2 Perangkat Lunak yang dipergunakan ................................. 26
3.3 Perekaman Suara................................................................ 26
3.4 Sistem Pengolahan Sinyal Suara........................................ 32
3.4.1 Sampling................................................................... 32
3.4.2 Front End Detection ................................................. 35
3.4.3 Frame Blocking ........................................................ 36
3.4.4 Windowing ............................................................... 38
3.4.5 Fast Fourier Transform............................................. 39
3.4.6 Mutlak Log ............................................................... 42
3.4.7 Liftering.................................................................... 43
3.4.8 Cepstrum .................................................................. 44
3.5 Tahap pembandingan suara................................................ 46
3.5.1 Unknown Cepstrum.................................................. 46
3.5.2 Codebook Cepstrum untuk metode independent
speaker…………………………………………………………..46
3.6 Proses Pengujian ................................................................ 48
3.6.1 SSE (Sum Square Error).......................................... 50
3.6.2 Action ....................................................................... 53
ix
DAFTAR PUSTAKA...........................................................................97
LAMPIRAN I ........................................................................................99
1.1 Instalasi Tcl/tk.............................................................................99
1.2 Instalasi Snack ............................................................................99
1.3 Membangun exstensi .dll pada visual C++ ..............................100
LAMPIRAN II.....................................................................................105
1.1 Program Perekaman .................................................................105
1.2 Program tampilan untuk pengujian offline...............................107
1.3 Program pengolahan sinyal......................................................110
1.4 Program rata-rata ......................................................................118
LAMPIRAN III ...................................................................................121
1.1Program Tampilan Awal............................................................121
1.2Program Pemberitahuan.............................................................122
1.3 Program Gender ........................................................................123
1.4 Program Home ..........................................................................124
1.5 Program Diktat..........................................................................127
1.6 Program Majalah.......................................................................131
1.7 Program Buku ...........................................................................133
1.8 Program CD ..............................................................................137
1.9 Program File Database..............................................................140
LAMPIRAN IV ...................................................................................143
1.1Tampilan Awal ..........................................................................143
1.2Tampilan Pemberitahuan ...........................................................143
1.3 Tampilan Gender ......................................................................144
1.4 Tampilan Home ........................................................................144
1.5 Tampilan Diktat ........................................................................145
1.6 Tampilan Majalah .....................................................................145
1.7 Tampilan Buku..........................................................................146
1.8 Tampilan CD.............................................................................146
1.9 Tampilan Database....................................................................147
PROFIL PENULIS............................................................................149
x
DAFTAR GAMBAR
xi
Gambar 4.4 Sinyal suara “diktat” oleh pewicara perempuan(a) dan laki-
laki(b)...........................................................................................62
Gambar 4.5 Perbandingan sinyal hasil sampling dengan software Matlab
dan Microsoft Visual C++............................................................63
Gambar 4.6 hasil frontend sinyal informasi...........................................64
Gambar 4.7 Sinyal informasi dengan berbagai variasi nilai k ...............65
Gambar 4.8 Frame ke-1 sinyal suara “diktat” dengan pewicara
perempuan....................................................................................66
Gambar 4.9 Hamming window kata “diktat” frame ke-1 oleh pengucap
perempuan....................................................................................67
Gambar 4.10 FFT Spektrum sinyal suara “diktat” pengucap perempuan
.....................................................................................................68
Gambar 4.11 FFT kata “diktat” frame ke-1 dengan bahasa C ...............69
Gambar 4.12 FFT kata “diktat” frame ke-1 dengan Matlab ..................69
Gambar 4.13 Liftering sinyal suara “diktat” pengucap wanita ..............70
Gambar 4.14 Liftering kata “diktat” dengan Matlab .............................71
Gambar 4.15 Spektrum dan Cepstrum dari kata “diktat” untuk pewicara
perempuan....................................................................................72
Gambar 4.16 Perbandingan Cepstrum kata “Diktat” antar pewicara
wanita dan pria. ............................................................................73
Gambar 4.17 Perbandingan cepstrum pewicara dengan cepstrum
codebook. .....................................................................................74
Gambar 4.18 Grafik Hasil Pengujian secara online...............................90
Gambar 4.19 Perbandingan cepstrum ....................................................92
xii
DAFTAR TABEL
xiii
BAB 1
PENDAHULUAN
[1]
Fania.K,Putri,”Pengolahan Sinyal Wicara pada Permainan Pembelajaran
Bahasa Inggris”, PENS-ITS, Surabaya, 2006
1
2
suara dari tiap individu. Sehingga pada sistem ini kami mencoba
menggunakan metode independent speaker yang diharapkan dapat
mengenali berbagai karakter suara manusia. Tetapi karena beberapa
keterbatasan, dalam aplikasi proyek akhir ini masih kami batasi
dengan pengaksesan berdasarkan perbedaan jenis kelamin.
1.2 TUJUAN
• Mengimplementasikan suatu sistem pengenalan sinyal wicara
untuk mengakses database buku perpustakaan yang
menggunakan metode independent speaker.
• Mempelajari lebih lanjut tentang pengolahan suatu sinyal
digital khususnya pengenalan sinyal wicara atau yang biasa
disebut dengan speech recognition.
• Meningkatkan minat masyarakat untuk berkunjung ke
perpustakaan karena adanya penerapan teknologi baru.
1.3 PERMASALAHAN
Permasalahan yang akan diselesaikan pada proyek akhir ini
adalah bagaimana memanfaatkan sistem pengenalan suara (Speech
Recognition) pada user untuk digunakan sebagai parameter dalam
sistem pencarian database buku perpustakaan. Untuk itu diperlukan
parameter-parameter dalam pengolahan sinyal seperti : proses
sampling, frame blocking, windowing dan FFT.
1.5 METODOLOGI
Proyek Akhir ini dilakukan melalui beberapa tahap
yaitu sebagai berikut:
3
• Studi Pustaka
Melakukan studi pustaka mengenai sistem pengolahan sinyal
wicara pada manusia, teknologi speech recognition, dan konsep
dasar Snack , Microsoft Visual C++, serta Tcl/Tk.
• Perancangan Sistem
Perancangan sistem dilakukan berdasarkan pada teori tentang
pengolahan dan pengenalan sinyal wicara dimana pada diagram
fase pembelajaran, sistem akan mengolah sinyal wicara dari
hasil perekaman hingga menjadi sebuah data standart
(database).
• Perekaman Suara
Proses perekaman suara dilakukan di dalam ruangan audio,
dengan menggunakan software recording yang telah kita buat.
• Pembuatan Database
Pembuatan database dilakukan dengan mengolah sinyal wicara
dari hasil perekaman menjadi sebuah data standart.
• Analisa Sistem
Dibuat analisa dari sistem yang telah dibuat berdasar kaidah-
kaidah pengolahan sinyal wicara.
4
BAB 1 : PENDAHULUAN
Pada bab ini akan diterangkan secara singkat mengenai latar
belakang, tujuan, batasan masalah,metodologi, dan sistematika
pembahasan proyek akhir.
BAB 2 : TEORI PENUNJANG
Dijelaskan mengenai teori-teori yang berkaitan dengan bahasan
proyek akhir ini yang meliputi teori tentang pengolahan sinyal
suara, Tcl/Tk, Snack serta Visual C++.
BAB 3 : PERENCANAAN DAN PEMBUATAN
Berisi pembahasan secara lengkap mengenai tahap-tahap
perencanaan dan pengolahan sinyal wicara serta pembuatan data
base dari feature-feature aplikasi.
BAB 4 : PENGUJIAN DAN ANALISA
Bab ini berisi tentang hasil pengujian program disertai analisa yang
digunakan dalam pengolahan sinyal wicara.
BAB 5 : PENUTUP
Bab ini berisi tentang kesimpulan yang diambil dari hasil analisa
serta saran-saran yang diharapkan dapat memberikan
pengembangan dan penyempurnaan proyek akhir ini.
BAB 6 : DAFTAR PUSTAKA
Pada bagian ini berisi tentang referensi-referensi yang telah dipakai
oleh penulis sebagai acuan dan penunjang serta parameter yang
mendukung penyelesaian proyek akhir ini baik secara praktik
maupun sebagai teoritis
BAB 2
TEORI PENUNJANG
[2]
http://www.lib.ui.ac.id/news.php
5
6
[3]
Sulistyo-Basuki. “Pengantar Ilmu Perpustakaan” Jakarta : Gramedia, 1991
7
[4]
Indonesia. Perpustakaan Nasional “Pedoman Pengelolaan Koleksi
Perpustakaan Perguruan Tinggi” Jakarta : perpustakaan nasional, 1999.
8
[5]
http:\\www.eepis-its.edu
9
[6]
Akhmad A,Arry ,” Proses Pembentukan dan Karakteristik Sinyal Ucapan”,
Teknik Elektro ITB,Bandung.
12
Sinyal Input
30000
20000
10000
Amplitudo
0
0 5000 10000 15000 20000
-10000
-20000
-30000
Frekuensi
Sample ke-n
Fsampling ≥ 2 x Fsignal
...........(2.1)
[7]
http://id.wikipedia.org
13
[8]
www.elektroindonesia.com
14
Power = ∑(X )
i=0
i
2
......(2.2.)
Standard Deviasi = ∑x
i=0
i
2
/n
……(2.3)
[9]
Fania.K,Putri,”Pengolahan Sinyal Wicara pada Permainan Pembelajaran
Bahasa Inggris”, PENS-ITS, Surabaya, 2006
15
Rata-rata = ∑
i=0
xi / n
……(2.4)
2.3.5 Windowing
Sinyal suara yang dipotong-potong menjadi beberapa frame
akan menyebabkan efek diskotinuitas sehingga menyebabkan
kesalahan data pada proses fourier transform. Windowing
diperlukan untuk mengurangi efek diskontinuitas dari potongan –
potongan sinyal. Untuk mereduksi puncak pada setiap segment, kita
perlu untuk mengaplikasikan suatu window penghalus pada setiap
frame. Sinyal yang terbentuk memungkinkan terjadi overlapping
[10]
Fania.K,Putri,”Pengolahan Sinyal Wicara pada Permainan Pembelajaran
Bahasa Inggris”, PENS-ITS, Surabaya, 2006
17
Dimana:
N = Jumlah data dalam satu window
n = urutan data ke-n
[11]
http://www.cert.or.id/~budi/courses/security/2006/pradono-report.doc
18
H = ∫ h(t) e-jwt dt
.......(2.6)
Dengan mengubah variabel-variabel waktu (t), frekuensi (w)
kedalam bentuk diskrit diperoleh transformasi fourier diskrit (DFT)
yang persamaanya adalah :
N −1
H(kwo) = ∑ h(nT ) e
n =0
-jkwonT
.......(2.7)
H(k) = ∑ h(n)e
.......(2.8)
dengan k : 0,1,2,…,N-1
[12]
Prayitno,Adi,”Aplikasi Pengenalan Penutur untuk Sistem Absensi dengan
Metode Penutur Dependent ”, PENS-ITS, Surabaya, 2006.
[13]
http://en.wikipedia.org
20
2.3.8 Liftering
Pada proses ini mengambil 16 buah data yang dapat mewakili
seluruh data dalam 1 frame. 16 buah data inilah yang nantinya
dipakai sebagai fitur yang dapat mempresentasikan masing-masing
frame. Liftering merupakan proses dari pemisahan elemen cepstrum
dalam dua faktor yaitu fundamental period dan spectral envelope.
Dimana untuk mendapatkan spectral envelope, elemen quefrency
yang rendah harus melalui proses FFT. Sedangkan untuk
mendapatkan fundamental period, elemen quefrency yang tinggi
harus melalui proses ekstraksi puncak[14].
2.3.9 Cepstrum
Istilah yang mencakup perhitungan cepstrum berasal dari
artikel asli yang ditulis oleh Bogert dimana berbagai terminology
signal processing (spektrum, frekuensi, tahap, analisa) / (spectrum,
frequency, phase, analysis) diaransemen ulang dalam permainan
huruf dan kata menjadi ( cepstrum, quefrency, saphe, alanysis).
Pengarang melakukan penamaan ini untuk menggaris bawahi
perlakuan yang tidak biasa pada data dalam domain frekuensi
seolah-olah adalah data dalam domain waktu dalam
membangkitkan satu set data baru sehingga sumbu x nya berada
dalam unit second tetapi variasi ditandai dalam spektrum frekuensi.
Cepstrum adalah fourier transform dari logaritma
autospektrum. Berguna untuk membatasi periodiksitas pada
autospektrum. Cepstrum juga berfungsi untuk menggandakan
domain frekuensi dan konvolusi pada domain waktu.
[14]
Eka K,Yesika,”Pembuatan Software Pembuka Program Aplikasi Komputer
berbasis Pengenalan Suara”, PENS-ITS, Surabaya, 2006.
21
.......( 2.9)
Menghitung invers dari Fourier Transform dengan rumus
diatas, menghasilkan quefrency, yang mempunyai bentuk matematis
sebagai berikut:
[15]
http://www.cert.or.id/~budi/courses/security/2006/pradono-report.doc
23
SSE (X) = ∑( X
k =1
k − c( X ))2
.......( 2.11)
[16]
Akhmad A,Arry ,” Proses Pembentukan dan Karakteristik Sinyal Ucapan”,
Teknik Elektro ITB,Bandung.
24
Dimana:
X k = nilai ciri kata yang masuk dalam domain frekuensi
(cepstrum sinyal input)
c(X) = nilai ciri dari kata standar dalam code book
(cepstrum code book)
k = jumlah data pada cepstrum
BAB 3
PERENCANAAN DAN PEMBUATAN
PERANGKAT LUNAK
3.1 Pendahuluan
Pada perencanaan dan pembuatan perangkat lunak ini akan
dibahas tentang proses instalasi, pembuatan perangkat lunak,
proses perekaman suara hingga pengolahan sinyal suara untuk
mendapatkan ciri atau parameter dari suara yang masuk yang
kemudian akan dijadikan sebagai suara standart (database). Suara
yang masuk akan dibandingkan dengan suara standart ini untuk
dapat mengakses halaman data buku perpustakaan yang diinginkan.
Bahasa pemrograman yang digunakan adalah Tcl/Tk versi 8.3
yang didukung Visual C++ 6.0 sebagai librarynya. Adapun snack
sebagai fasilitas dalam konfigurasi sistemnya.
Gambaran sistem keseluruhan pada proyek akhir ini
ditunjukkan pada gambar berikut :
Sinyal
Suara
25
26
Hasil dari perekaman suara ini akan disimpan dalam file yang
berekstensi “.WAV”. Perekaman suara digunakan untuk membuat
standart suara yang berupa kata dari nama jenis buku yang ingin
diakses.
30
code
book
Gambar 3.8 Diagram Blok Sistem Pengenalan Wicara pada enrollment phase
3.4.1 Sampling
Seperti yang telah dijelaskan pada sub bab 2.1.2, disebutkan
bahwa frekuensi sampling yang digunakan adalah sebesar 12000
Hz, dimana dalam 1 detik sinyal tersebut terdapat 12000 titik
sampling. Untuk mendapatkan data sampel dari suara yang direkam
dan disimpan dalam file berekstensi “.wav” maka dibuat program
33
sound = Snack_GetSound(interp,Tcl_GetStringFromObj(objv[0],
NULL));
signal_length = Snack_GetLength(sound);
for (k=0;k<signal_length;k++)
{
x[k]=(float)Snack_GetSample(sound, 0, k);
}
• Mean = ∑
i=0
xi / n
n
• Standart Deviasi = ∑x
i=0
i
2
/n
• Sinyal Informasi > mean + standart deviasi
3.4.4 Windowing
Window yang digunakan pada proyek akhir ini adalah window
hamming. Digunakan window ini karena mempunyai hasil yang
lebih baik dalam pembatasan sinyal yang akan dianalisa. Setelah
proses pengambilan sampel maka langkah selanjutnya adalah proses
windowing yang berfungsi untuk mengurangi efek diskontinyuitas
pada ujung-ujung frame yang di hasilkan oleh potongan–potongan
sinyal. Persamaan dari window hamming adalah sebagai berikut :
y[i] = x[i] * (0.54 – 0.46 * cos (2.0 * 3.14159265 * (i-1)/240)) ........ (3.1 )
void cal_fft(x,y,l,mode)
float *x,*y,mode;
int l;
{
int np,lmx,lo,lix,lm,li,j1,j2,nv2,npm1,i,j,k;
float scl,arg,c,s,t1,t2;
for(i=0;i<pow(2,l);i++)
y[i]=0;
--x;
--y;
t2=y[j1]-y[j2];
x[j1]=x[j1]+x[j2];
y[j1]=y[j1]+y[j2];
x[j2]=c*t1+s*t2;
y[j2]=c*t2-s*t1;
}
}
scl=(float)(2.0*scl);
}
3.4.7 Liftering
Pada proses ini mengambil 16 buah data yang dapat mewakili
seluruh data dalam satu frame. Data inilah yang nantinya dipakai
sebagai fitur yang dapat mempresentasikan masing-masing frame.
Untuk membuktikan 16 buah data ini dapat mewakili keseluruhan
data dalam satu frame ,dapat dilakukan proses fourier transform
sekali lagi.
Flowchart dari Liftering adalah sebagai berikut :
3.4.8 Cepstrum
Cepstrum merupakan suatu bentuk yang biasa dipergunakan
untuk mendapatkan informasi dari sebuah sinyal wicara. Cepstrum
dapat digunakan untuk memisahkan sinyal tereksitasi (yang berisi
kata dan pitch) dengan fungsi transfer (yang berisi kualitas suara).
Menggunakan cepstrum sebagai penganalisa spektral adalah sebuah
proses yang sangat berbeda dengan LPC. Cepstrum didapatkan dari
hasil mutlak log FFT kedua setelah proses liftering dilakukan.
Cepstrum inilah yang nantinya digunakan sebagai acuan pembuatan
code book.
45
Unknown Codebook
Cepstrum Cepstrum
SSE
action
SSE (X) = ∑( X
k =1
k − c( X ))2
.......(3.2)
Dimana:
X k = nilai ciri kata yang masuk dalam domain frekuensi
c(X) = nilai ciri dari kata standar dalam code book
k = urutan nilai magnitudo dari ciri kata
m = banyaknya nilai magnitudo dari ciri kata
#include <math.h>
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "snack.h"
FILE *fsse=fopen("sse.txt","w");
FILE *fmin=fopen("min.txt","w");
FILE *fout=fopen("out.txt","w");
char *nama[]={"diktat1.txt","majalah1.txt","buku1.txt","cd1.txt"};
51
char *input="cepstrum.txt";
double sse[NUMFILE],min,out;
int i,j;
fscanf(fin,"%*lf %lf",&in);
fscanf(fstd,"%*lf %lf",&std);
sse[i] += (std-in)*(std-in);
}
fprintf(fsse,"%lf\n",sse[i]);
fclose(fin);
fclose(fstd);
}
min = 100;
for(i = 0; i < NUMFILE; i++){
if( sse[i] < min)
{
min = sse[i];
fprintf(fout ,"%d", min);
}
}
fprintf(fmin,"%lf\n",min);
fclose(fsse);
fclose(fmin);
fclose(fout);
}
#ifdef USE_TCL_STUBS
if (Tcl_InitStubs(interp, "8", 0) == NULL) {
return TCL_ERROR;
}
#endif
#ifdef USE_TK_STUBS
if (Tk_InitStubs(interp, "8", 0) == NULL) {
return TCL_ERROR;
}
#endif
#ifdef USE_SNACK_STUBS
if (Snack_InitStubs(interp, "2", 0) == NULL) {
return TCL_ERROR;
}
#endif
if (Tcl_PkgProvide(interp, "sseq", "1.0") != TCL_OK) {
return TCL_ERROR;
}
Snack_AddSubCmd(SNACK_SOUND_CMD, "sse",
(Snack_CmdProc *) sse, NULL);
return TCL_OK;
}
EXPORT(int, Sse_SafeInit)(Tcl_Interp *interp)
{
return Sse_Init(interp);
}
file ”min.txt” dan juga akan menghasilkan file ”out.txt” yang berfungsi
untuk melakukan tindakan dari sistem ini.
3.6.2 Action
Action adalah tindakan yang dilakukan oleh software apabila
suara yang diucapkan sama dengan codebook. Pada kesempatan ini,
action akan menampilkan informasi tentang judul – judul buku dari
kategori yang diucapkan oleh pengguna. Pada sistem, pengguna dapat
menikmati hasil setelah sistem menghasilkan file “out.txt”. file tersebut
yang akan menentukan tindakan selanjutnya yang dalam sistem ini akan
menampilkan halaman selanjutnya.
BAB 4
PENGUJIAN DAN ANALISA SISTEM
Pada bab ini akan dijelaskan tentang pengujian dan analisa terhadap
kinerja software yang telah dibuat. Dengan demikian akan diketahui
tingkat keberhasilan dan tingkat kekurangan dari sistem atau software
yang telah dibuat dalam proyek akhir kali ini.
Pengujian yang dilakukan meliputi :
1. Pengujian dan analisa sistem pengolahan sinyal suara (mode
pembelajaran)
2. Pengujian dan analisa hasil SSE programming
3. Pengujian dan analisa sistem aplikasi pengenalan suara untuk
mengakses data base buku perpustakaan (mode pengujian)
55
56
Keterangan :
• 12000 : menunjukkan frekuensi sampling yang digunakan.
• Channels : 1, menunjukkan bahwa suara direkam dengan
menggunakan channel mono.
• Sample Encoding : Lin16, menunjukkan bahwa suara direkam
dengan menggunakan 16 bit PCM.
Gambar 4.2 Hasil Perekaman kata “diktat” oleh salah satu pewicara perempuan.
4.1.2 SAMPLING
Dengan menggunakan program yang telah dibuat sesuai dengan
parameter perekaman pada gambar 4.1, proses sampling sinyal
standart menggunakan frekuensi sampling sebesar 12000 Hz. Data
60
-703
-1050
-1058
-1063
-1051
-1036
-1013
-993
-1000
-1010
-998
-978
-979
-1011
-1034
-1026
-1017
-1017
-1040
-1074
-1087
……..
61
b. Pewicara laki-laki :
-1
-2
-3
-6
-7
-8
-12
-12
-13
-16
-18
-20
-23
-24
-26
-28
-31
-32
-33
-34
-34
………
62
• Gambar sinyal
Sample ke-n
(a)
u s
Sample ke-n
(b)
Gambar 4.4 Sinyal suara kata “Diktat” oleh pewicara “Perempuan” (a) dan
pewicara “Laki-laki” (b)
Dari hasil sampling, dapat dilihat bahwa untuk kata yang sama
menghasilkan sinyal yang memiliki perbedaan cukup signifikan
antara pengucap laki-laki dan perempuan. Perbedaan tersebut
meliputi level amplitudo dan bentuk sinyal. Apakah perbedaan ini
dapat dijadikan dasar pembedaan suara pria dan wanita, harus kami
lihat dulu hasil cepstrumnya.
Pada gambar 4.4. dapat dilihat bahwa suara hasil perekaman
dapat dibagi menjadi 3 bagian yaitu (1) silence (S), keadaan pada
saat tidak ada ucapan yang diucapkan; (2) unvoiced (U), keadaan
pada saat vocal cord tidak melakukan vibrasi, sehingga suara yang
dihasilkan bersifat tidak periodik atau bersifat random; (3)voiced
(V), keadaan pada saat terjadinya vibrasi pada vocal cord, sehingga
menghasilkan suara yang bersifat kuasi periodik.
Agar dapat diketahui apakah algoritma yang dipergunakan
untuk proses sampling sesuai dengan flowchart gambar 3.11 adalah
benar, kami membandingkannya dengan program sampling yang
terdapat dalam software Matlab sbb :
Gambar 4.5 Perbandingan sinyal hasil sampling dengan software Matlab dan
Microsoft Visual C++.
(a) (b)
(c) (d)
Sample ke-n
(e)
Gambar 4.7 Sinyal informasi dengan berbagai variasi nilai k
(a) k= 0.1 ,(b)k=3,(c)k=0.5,(d)k=5,(e)k=1
nilai variabel lainnya. Oleh sebab itu, dalam program front end
detection kami pergunakan harga k=1.
20000
15000
10000
Amplitudo
5000
0
-5000 0 50 100 150 200 250 300
-10000
-15000
-20000
jumlah data
Gambar 4.8 Frame ke-1 sinyal suara “diktat” dengan pewicara perempuan.
4.1.5 Windowing
Setelah proses frame blocking, sinyal melakukan proses
window untuk mengurangi efek diskontinuitas ketika sinyal
ditransformasikan ke domain frekuensi. Proses window dilakukan
tiap-tiap frame yang terdiri 240 data sample. Karena adanya
pergeseran inilah kemungkinan puncak-puncak yang mestinya
67
20000
15000
10000
-10000
-15000
-20000
Gambar 4.9 Hamming window dari kata “diktat” frame ke-1 oleh pengucap
perempuan
12
10
MAGNITUDO
8
6
4
2
0
0 2000 4000 6000 8000
FREKUENSI
FFT "Diktat"
12
10
magnitudo
8
6
4
2
0
0 5000 10000 15000
frekuensi
Dari gambar 4.11 dan 4.12, dapat dilihat bahwa hasil fft sinyal
suara yang telah dibuat dalam bahasa C menghasilkan hasil yang
sama persis dengan sampling menggunakan software Matlab, hal ini
membuktikan bahwa algoritma fft yang dibuat sudah benar.
70
4.1.7 Liftering
Pengujian selanjutnya setelah proses FFT adalah liftering.
Sebelum proses liftering dilakukan, hasil dari FFT di invers terlebih
dahulu. Pada liftering ini data yang diambil adalah 16 data saja tiap
framenya yang bisa mewakili semua data dalam 1 frame yang telah
terolah dalam FFT.
Hasil liftering dari kata “diktat” adalah sebagai berikut:
4000
3500
3000
MAGNITUDO
2500
2000
1500
1000
500
0
-500 0 0.5 1 1.5 2
KUEFRENSI
Data dari hasil liftering terdiri dari dua elemen, yaitu elemen
quefrency rendah dan elemen quefrency tinggi. Untuk mendapatkan
periode fundamental dapat diekstraksi dari puncak pada daerah
quefrency tinggi. Hal ini dapat dilakukan dengan mencari mutlak
log dari data hasil liftering.
71
4.1.8 Cepstrum
Cepstrum pada dasarnya sama dengan FFT, hanya saja hasil
dari cepstrum harus melewati beberapa proses, seperti yang telah
dijelaskan di atas yaitu dari hasil FFT harus di invers dulu untuk
mendapatkan nilai lifternya dan untuk mendapatkan nilai cepstrum
maka nilai lifter tersebut harus diproses dengan FFT kembali, hasil
mutlak log dari proses FFT kedua inilah yang disebut sebagai nilai
cepstrum.
Hasil dari nilai cepstrum untuk kata “diktat” adalah sebagai
berikut:
72
Gambar 4.15 FFT Spektrum dan Cepstrum dari kata “diktat” untuk
pewicara perempuan
7.3 7.25
7.25 7.2
7.2 7.15
MAGNITUDO
MAGNITUDO
7.15 7.1
7.05
7.1
7
7.05
6.95
7 6.9
6.95 6.85
6.9 6.8
0 2000 4000 6000 8000 0 2000 4000 6000 8000
KUEFRENSI KUEFRENSI
7.4
7.3
MAGNITUDO
7.2 Code book diktat
Cepstrum diktat 1
7.1
Cepstrum diktat 2
7 Cepstrum diktat 3
6.9
6.8
0 2000 4000 6000 8000
QUEFRENCY
Tabel 4.7 Hasil pengujian kata Tabel 4.8 Hasil pengujian kata
“Majalah” “Buku”
Pewicara PC
Pewicara Iptek
Puguh B
Puguh S
Aji S
Aji S
Budi B
Budi S
Kadek S
Kadek B
Iwan B
Iwan B
Dodi B
Dodi B
Iman S
Iman S
Bambang S
Bambang S
Dedi S
Dedi S
Huda B
Huda B
Ike B
Ike S
Nadya B
Nadya S
Aris B
Aris S
Suci S
Suci B
Rida S
Rida B
Ari S
Ari B
Azizah S
Azizah S
Dian S
Dian S
Dita S
Dita B
Diana S
Diana S
persentase 40%
persentase 40%
89
7.4
7.3
7.2 DIKTAT
Magnitudo
MAJALAH
7.1
BUKU
7 CD
6.9
6.8
0 2000 4000 6000 8000
Frekuensi
Dapat kita lihat dari contoh pada gambar di atas bahwa antara
cepstrum codebook kata “buku” dan kata “cd” memiliki tingkat
kemiripan yang tinggi.
3 Terdapat noise sewaktu pengguna mengucapkan kata data buku
yang akan diakses. Noise ini bisa ditimbulkan oleh lingkungan
sekitar yang cukup bising, kualitas microphone yang dipergunakan
kurang baik, maupun pengkabelan yang kurang bagus serta
berbagai faktor lain. Saat pengguna mengucapkan kata dengan
kondisi noise sekitar yang cukup tinggi maka kemungkinan besar
hasil yang diharapkan tidak sesuai yaitu muncul halaman yang tidak
sama dengan yang diinginkan atau sistem mengeluarkan pernyataan
bahwa perintah tidak dikenali. Hal demikian dapat terjadi karena
adanya threshold yang berfungsi sebagai filter.
4 Terjadi “kelelahan” pada sistem pemrosesan data saat diaktifkan
berulang-ulang tanpa henti. Berdasarkan pengujian, sistem yang
dibuat melakukan proses load antar halaman dengan mengaktifkan
ekstensi .dll yang akan terus-menerus mengulang pemrosesan data
bila dipergunakan berulang-ulang tanpa diulang dari awal. Sehingga
untuk mendapatkan hasil yang maksimal lebih baik software
diulangi dari awal.
5 Dibandingkan sistem yang dibuat pada proyek akhir sebelumnya,
terdapat perbedaan dalam metode pembuatan codebook. Pada
sistem yang kami buat codebook merupakan nilai rata-rata dari 20
suara sehingga hanya menghasilkan satu codebook saja untuk satu
kata dengan pewicara jenis kelamin tertentu. Dengan demikian
diharapkan sistem bisa diakses oleh setiap orang dewasa.
6 Tiap manusia memiliki fitur suara yang berbeda sehingga dapat
mempengaruhi hasil.
BAB 5
PENUTUP
5.1 Kesimpulan
Berdasarkan pada hasil pengujian dan analisa terhadap hasil yang
didapatkan, maka dapat diambil suatu kesimpulan yaitu :
1. Pengoperasian aplikasi pengaksesan database perpustakaan dapat
dilakukan dengan menggunakan perintah suara.
2. Dengan menggunakan metode sum square error , dapat dicari
pemadanan suatu wicara dengan mengukur selisih antara sinyal
input dengan sinyal standar kemudian dicari nilai minimal dari
hasil pengurangan.
3. Rata-rata cepstrum yang dipergunakan dalam setiap codebook
belum sepenuhnya mencerminkan ciri dari suara dikarenakan
besarnya varian antar data yang terjadi.
4. Nilai treshold digunakan untuk mengurangi prosentase error. Nilai
threshold yang dipergunakan dalam proyek akhir ini adalah sebesar
5.00
5. Tingkat keberhasilan sistem berkisar antara 40%-80% untuk
pengujian secara offline dan 25%-90% untuk pengujian secara
online.
6. Keberhasilan sistem dapat ditunjukkan dengan berhasilnya perintah
suara dalam mengakses database buku perpustakaan
5.2 Saran
Mengingat masih banyaknya hal-hal yang belum dapat
diimplementasikan pada proyek akhir ini, maka kami
mempertimbangkan beberapa saran untuk perbaikan-perbaikan proyek
akhir kami ini dalam hal :
1. Tingkat pengurangan noise pada waktu perekaman suara yang
semakin baik.
2. Otomatis sistem, sehingga pengguna tidak perlu lagi
menggerakkan mouse untuk memberikan perintah.
95
96
[1] http://www.relisoft.com/Science/Physics/fft.html.
[2] http://en.wikipedia.org/wiki/Fast_Fourier_Transform.
[3] http://www.speech.cs.smu.edu/comp.speech/Section6/Q6.6.html#i
ntro.
[4] http://home.hib.no/.../seksjon/ SOFF-MASTER/Organs.htm
[5] http://www.elektroindonesia.com/elektro/elek35a.html
[6] http://www.ndt.net/article/az/ut/img/fft_pri.gif
[7] http://www.ics.mq.edu.au/~cassidy/comp449/html/cepstrum.gif
[8] Bayu S.,Bima ,”Aplikasi Pengenalan Wicara untuk Perintah
Nirkabel robot mikro mouse”,PENS-ITS,Surabaya, 2003.
[9] Fania.K,Putri,”Pengolahan Sinyal Wicara pada Permainan
Pembelajaran Bahasa Inggris”, PENS-ITS, Surabaya, 2006.
[10] Huda Miftahul, Bima, “Pelatihan Tcl/Snack”, PENS – ITS,
Surabaya, 2005.
[11] Lawrence Rabiner, Biing Hwang Juan, “Fundamentals of Speech
Recognition”, Prentice Hall International Inc, 1993.
[12] Prayitno Adi,”Aplikasi Penutur untuk Sistem Absensi Dengan
Metode Penutur Dependent”, PENS-ITS, Surabaya, 2006.
[13] Sadaoki Furui. “Digital Speech Processing Synthesis, and
Recognition”, Marcell Dekker, Inc, New York, 1989.
97
LAMPIRAN I
99
100
load frontend.dll
load fft.dll
snack::sound z -channels 2
snack::sound x -file sound.wav -debug 0
snack::sound y
x configure -rate 16000 -encoding LIN16 -channels MONO
y configure -rate 16000 -encoding LIN16 -channels MONO
105
106
proc proses { } {
}
107
proc keluar {} {
tk_messageBox -message {Terima Kasih Anda Telah Menggunakan
Layanan Kami}
exit
}
after 1 Update
proc Update {} {
set l [z max -start 0 -end -1 -channel 0]
.f2.time config -text [format "%.3f sec" [y length -unit
seconds]]
z length 0
.f1.lm configure -level $l
after 50 Update
}
.f1.c itemconf wave -pixelspersecond 300 -width 300
.f1.c create waveform 304 204 -anchor c -sound y -height $height -tags
wave -debug 0 -zerolevel 0 -frame $frame -fill black
load dll\\lagi3.dll
load dll\\sse1.dll
wm geometry . 900x720+75+20
wm overrideredirect . 1
snack::sound s
snack::sound z
snack::sound x
108
##########################################################
###############
######## FUNGSI UTAMA
##########
##########################################################
###############
proc tick { } {
x stop
s stop
s write test.wav
s lagi
109
s sse
z stop
set out [read [open out.txt]]
set out1 [read [open min.txt]]
if {$out1>= 10.000} {
s read Salah.wav
s play
tk_messageBox -message "Maaf kata yang anda
ucapkan tidak sesuai" -type ok
} else {
if { $out == 1} {
Run diktatce.tcl
}
if { $out == 12 } {
Run majalahce.tcl
}
if { $out == 123 } {
Run bukuce.tcl
}
if { $out == 1234 } {
Run cdce.tcl
}
}
}
button .h.quit -bd 2 -bg white -text Quit -font broadway -command
keluar
pack .h.quit -side right -padx 4 -pady 4
}
$i eval wm title . $script
$i eval source $script
}
proc keluar { } {
yes exit
no {tk_messageBox -message "Terima kasih atas kesetiaan Anda:-)" -
type ok}
}
#define pangkat 9
#define nlpc 240
#define w 1.0f
#define w2 -1.0f
int front_end_clip(xx,yy,jml_sin)
float *xx,*yy;
int jml_sin;
{
int i,mulai,akhir,jml_sin_new;
float jml=0,mean,dev,jumdev=0,sd,batas;
for(i=0;i<jml_sin;i++)// mulai 0 samapai panjang sinyal
111
jml+=xx[i];
mean=jml/jml_sin;
for(i=0;i<jml_sin;i++)
{
dev=(float)fabs(xx[i]-mean);
jumdev+=dev*dev;
}
sd=(float)sqrt(jumdev/jml_sin);
batas=mean+sd;
for(i=0;i<jml_sin;i++)
{
if(xx[i]>=batas)
{
mulai=i;
break;
}
}
for(i=jml_sin;i>0;i--)
{
if(xx[i]>=batas)
{
akhir=i;
break;
}
}
jml_sin_new=0;
for(i=mulai;i<akhir;i++)
{
yy[jml_sin_new]=xx[i];
jml_sin_new++;
}
return(jml_sin_new);
}
float Power(data)
float *data;
{
int i;
float jum=0,power;
112
for(i=0;i<240;i++)
jum += (float)pow(data[i],2);
power=(float)sqrt(jum);
return(power);
}
void hammr(x,y,n)
float *x,*y;
int n;
{
int i;
--x;
--y;
for(i=0;i<=n;++i)
{
x[i]=x[i]*(float)(0.54-
0.46*cos(2.0*3.141592654*(i)/(float)n));
y[i]=y[i]*(float)(0.54-
0.46*cos(2.0*3.141592654*(i)/(float)n));
}
}
void cal_fft(x,y,l,mode)
float *x,*y,mode;
int l;
{
int np,lmx,lo,lix,lm,li,j1,j2,nv2,npm1,i,j,k;
float scl,arg,c,s,t1,t2;
for(i=0;i<pow(2,l);i++)
y[i]=0;
--x;
--y;
lmx=(int)(lmx/2.0);
arg=0.0;
for(lm=1;lm<=lmx;++lm)
{
c=(float)cos(arg);
s=(float)(mode*sin(arg));
arg=arg+scl;
for (li=lix; lix<0 ? li>=np : li<=np; li+=lix)
{
j1=li-lix+lm;
j2=j1+lmx;
t1=x[j1]-x[j2];
t2=y[j1]-y[j2];
x[j1]=x[j1]+x[j2];
y[j1]=y[j1]+y[j2];
x[j2]=c*t1+s*t2;
y[j2]=c*t2-s*t1;
}
}
scl=(float)(2.0*scl);
}
if(k>=j)
goto L50;
j-=k;
k=(int)(k/2.0);
goto L40;
L50:
j=j+k;
}
}
FILE
*finput,*finfo,*fframe,*fsignalframe,*fpower,*fwindow,*ffft,*flift,*flo
g,*fceps;
Sound *sound;
double temp_log1;
float x[30000],y[30000],temp[30000];
float real[512],imag[512];
float atus,sida;
int k,frame,frame_no,signal_length,signal_length_new,start;
void mail();
void hammr();
void cal_fft();
sound =
Snack_GetSound(interp,Tcl_GetStringFromObj(objv[0], NULL));
signal_length = Snack_GetLength(sound);
for (k=0;k<signal_length;k++)
{
x[k]=(float)Snack_GetSample(sound, 0, k);
fprintf(finput,"%f\n",x[k]);
}
signal_length_new = front_end_clip(x,&y,signal_length);
for (k=0;k<signal_length_new;k++)
fprintf(finfo,"%f\n",y[k]);
frame_no = signal_length_new/120;
start=0;
atus=0;
sida=(float)20/240;
temp[k]=y[start];
for(frame=0;frame<frame_no-1;frame++)
{
start=(frame)*120;
for(k=0;k<240;k++)
{
temp[k]=y[start];
start++;
}
out_pow_in[frame]=Power(temp);
fprintf(fpower,"%f\n",out_pow_in[frame]);
for (k=0;k<240;k++)
{
real[k]=temp[k];
imag[k]=0;
}
}
fprintf(fwindow,"%f\t%f\n",(k+1)*sida,real[k]);
for(k=240;k<512;k++)
{
real[k]=0;
imag[k]=0;
}
/***** FFT *****/
cal_fft(real,imag,pangkat,w);
}
for(k=0;k<256;k++)
fprintf(flift,"%f\t%f\n",(k+1)*sida,real[k]);
temp_log1=(double)(real[k]*real[k]+imag[k]*imag[k]);
if(temp_log1>0)
real[k]=(float)log10(temp_log1);
else
real[k]=(float)log10(0.000001);
imag[k]=0;
}*/
fclose(finput);
fclose(finfo);
fclose(fframe);
fclose(fsignalframe);
fclose(fpower);
fclose(fwindow);
fclose(ffft);
fclose(flift);
fclose(flog);
fclose(fceps);
return TCL_OK;
}
{
#ifdef USE_TCL_STUBS
if (Tcl_InitStubs(interp, "8", 0) == NULL) {
return TCL_ERROR;
}
#endif
#ifdef USE_TK_STUBS
if (Tk_InitStubs(interp, "8", 0) == NULL) {
return TCL_ERROR;
}
#endif
#ifdef USE_SNACK_STUBS
if (Snack_InitStubs(interp, "2", 0) == NULL) {
return TCL_ERROR;
}
#endif
if (Tcl_PkgProvide(interp, "lagi", "1.0") != TCL_OK) {
return TCL_ERROR;
}
Snack_AddSubCmd(SNACK_SOUND_CMD, "lagi",
(Snack_CmdProc *) lagi, NULL);
return TCL_OK;
}
EXPORT(int, Lagi_SafeInit)(Tcl_Interp *interp)
{
return Lagi_Init(interp);
}
#ifdef __cplusplus
#endif
int main() {
119
FILE *fsignal;
char
*nama[]={"1.txt","2.txt","3.txt","4.txt","5.txt","6.txt","7.txt","8.txt","9.t
xt","10.txt","11.txt","12.txt","13.txt","14.txt","15.txt","16.txt","17.txt","
18.txt","19.txt","20.txt"};
/*int i;
int panjang = 3;
for (i=0;i<3;i++)
{
}*/
double avg[JUMLAHBARIS];
int i;
for(i = 0;i < JUMLAHBARIS;i++){
double sum = 0;
int j;
// printf("baris ke %d : ",i);
for(j = 0; j < NUMFILE;j++){
FILE *fp;
double value = 0;
int k;
fp = fopen(nama[j],"rt");
if( fp == NULL){
printf("cannot open %s\n",nama[j]);
exit(1);
}
//fseek(fp,i,SEEK_SET);
for(k = 0; k <= i;k++){
fscanf(fp,"%*lf %lf",&value);
}
fclose(fp);
//printf("%lf\t",value);
sum += value;
}
//printf("\n");
avg[i] = sum/(double)NUMFILE;
}
120
fsignal=fopen("rata.txt","w");
for(i = 0; i < JUMLAHBARIS; i++){
//fprintf(fsignal,"rata baris %d = %lf\n",i,avg[i]);
fprintf(fsignal,"%lf\n",avg[i]);
}
}
LAMPIRAN III
snack::sound s
s configure -rate 12000 -channels MONO -encoding LIN16
s read suara//welcome.wav
s play
#
#Title Window
#
wm geometry . 850x638+75+20
wm overrideredirect . 1
121
122
snack::sound s
#
#Title Window
#
wm geometry . 850x638+75+20
wm overrideredirect . 1
wm geometry . 900x720+75+20
wm overrideredirect . 1
snack::sound s
snack::sound z
s read suara//gender.wav
s play
pack .h -fill x
button .h.cowo -bd 2 -bg white -text LaKi-LaKi -font jester -command
{Run home.tcl }
button .h.cewe -bd 2 -bg white -text PeReMPuAn -font jester -command
{Run homece.tcl}
yes exit
no {tk_messageBox -message "Terima kasih atas kesetiaan Anda:-)" -
type ok}
}
load dll\\lagi3.dll
load dll\\sse1.dll
wm geometry . 900x720+75+20
wm overrideredirect . 1
snack::sound s
snack::sound z
snack::sound x
x read suara//Welcome.wav
x play
button .h.start -bd 2 -bg white -text PiLiH -font broadway -command {
s record;z record
after 1500 tick
}
126
##########################################################
###############
######## FUNGSI UTAMA
##########
##########################################################
###############
proc tick { } {
x stop
s stop
s write test.wav
s lagi
s sse
z stop
set out [read [open out.txt]]
set out1 [read [open min.txt]]
if {$out1>= 1.50 } {
s read Salah.wav
s play
tk_messageBox -message "Maaf kata yang anda
ucapkan tidak sesuai" -type ok
} else {
if { $out == 1} {
Run diktat.tcl
}
if { $out == 12 } {
Run majalah.tcl
}
if { $out == 123 } {
Run buku.tcl
}
if { $out == 1234 } {
127
Run cd.tcl
}
}
}
button .h.quit -bd 2 -bg white -text Quit -font broadway -command
keluar
pack .h.quit -side right -padx 4 -pady 4
yes exit
no {tk_messageBox -message "Terima kasih atas kesetiaan Anda:-)" -
type ok}
}
load dll\\lagi3.dll
load dll\\sse2.dll
wm geometry . 900x720+75+20
wm overrideredirect . 1
snack::sound s
snack::sound z
snack::sound x
x read suara//Welcome.wav
x play
button .h.start -bd 2 -bg white -text PiLiH -font broadway -command {
s record;z record
after 1500 tick
129
##########################################################
###############
######## FUNGSI UTAMA
##########
##########################################################
###############
proc tick { } {
x stop
s stop
s write test.wav
s lagi
s sse
z stop
set out [read [open out.txt]]
set out1 [read [open min.txt]]
if {$out1>= 1.50 } {
s read Salah.wav
s play
tk_messageBox -message "Maaf kata yang anda
ucapkan tidak sesuai" -type ok
} else {
if { $out == 1} {
Run elka.tcl
}
if { $out == 12 } {
Run telkom.tcl
}
if { $out == 123 } {
Run elin.tcl
}
if { $out == 1234 } {
130
Run it.tcl
}
if { $out == 12345 } {
Run meka.tcl
}
}
}
button .h.quit -bd 2 -bg white -text Quit -font broadway -command
keluar
pack .h.quit -side right -padx 4 -pady 4
yes exit
no {tk_messageBox -message "Terima kasih atas kesetiaan Anda:-)" -
type ok}
}
}
131
load dll\\lagi3.dll
load dll\\sse3.dll
wm geometry . 900x720+75+20
wm overrideredirect . 1
snack::sound s
snack::sound z
snack::sound x
x read suara//Welcome.wav
x play
button .h.start -bd 2 -bg white -text PiLiH -font broadway -command {
s record;z record
after 1500 tick
}
##########################################################
###############
######## FUNGSI UTAMA
##########
##########################################################
###############
proc tick { } {
x stop
s stop
s write test.wav
s lagi
s sse
z stop
set out [read [open out.txt]]
set out1 [read [open min.txt]]
if {$out1>= 1.50 } {
s read Salah.wav
s play
tk_messageBox -message "Maaf kata yang anda
ucapkan tidak sesuai" -type ok
} else {
if { $out == 1} {
Run hiburan.tcl
}
if { $out == 12 } {
Run iptek.tcl
}
if { $out == 123 } {
133
Run ponsel.tcl
}
if { $out == 1234 } {
Run pc.tcl
}
}
}
button .h.quit -bd 2 -bg white -text Quit -font broadway -command
keluar
pack .h.quit -side right -padx 4 -pady 4
yes exit
no {tk_messageBox -message "Terima kasih atas kesetiaan Anda:-)" -
type ok}
}
load dll\\lagi3.dll
load dll\\sse4.dll
wm geometry . 900x720+75+20
wm overrideredirect . 1
snack::sound s
snack::sound x
snack::sound z
x read suara//Welcome.wav
x play
button .h.start -bd 2 -bg white -text PiLiH -font broadway -command {
s record;z record
135
##########################################################
###############
######## FUNGSI UTAMA
##########
##########################################################
###############
proc tick { } {
x stop
s stop
s write test.wav
s lagi
s sse
z stop
set out [read [open out.txt]]
set out1 [read [open min.txt]]
if {$out1>= 1.50 } {
s read Salah.wav
s play
tk_messageBox -message "Maaf kata yang anda
ucapkan tidak sesuai" -type ok
} else {
if { $out == 1} {
Run agama.tcl
}
if { $out == 12 } {
Run komputer.tcl
}
if { $out == 123 } {
Run sosial.tcl
136
}
if { $out == 1234 } {
Run teknologi.tcl
}
if { $out == 1235 } {
Run manajemen.tcl
}
}
}
button .h.quit -bd 2 -bg white -text Quit -font broadway -command
keluar
pack .h.quit -side right -padx 4 -pady 4
yes exit
no {tk_messageBox -message "Terima kasih atas kesetiaan Anda:-)" -
type ok}
}
137
1.8 Program CD
#!/bin/sh
# the next line restarts using wish \
exec wish8.4 "$0" "$@"
load dll\\lagi3.dll
load dll\\sse5.dll
wm geometry . 900x720+75+20
wm overrideredirect . 1
snack::sound s
snack::sound z
snack::sound x
x read suara//Welcome.wav
x play
138
button .h.start -bd 2 -bg white -text PiLiH -font broadway -command {
s record;z record
after 1500 tick
}
##########################################################
###############
######## FUNGSI UTAMA
##########
##########################################################
###############
proc tick { } {
x stop
s stop
s write test.wav
s lagi
s sse
z stop
set out [read [open out.txt]]
set out1 [read [open min.txt]]
if {$out1>= 1.50 } {
s read Salah.wav
s play
tk_messageBox -message "Maaf kata yang anda
ucapkan tidak sesuai" -type ok
} else {
if { $out == 1} {
Run program.tcl
139
}
if { $out == 12 } {
Run umum.tcl
}
}
}
button .h.quit -bd 2 -bg white -text Quit -font broadway -command
keluar
pack .h.quit -side right -padx 4 -pady 4
yes exit
no {tk_messageBox -message "Terima kasih atas kesetiaan Anda:-)" -
type ok}
}
}
140
wm geometry . 900x720+75+20
wm overrideredirect . 1
button .h.start -bd 2 -bg white -text Back -font broadway -command
{Run gender.tcl
}
button .h.quit -bd 2 -bg white -text Quit -font broadway -command
keluar
pack .h.quit -side right -padx 4 -pady 4
yes exit
no {tk_messageBox -message "Terima kasih atas kesetiaan Anda:-)" -
type ok}
}
}
LAMPIRAN IV
1.1 Tampilan Awal
143
144
1.8 Tampilan CD
147
”Tiada suatu bencana pun yang menimpa di bumi dan (tidak pula)
pula pada diri kalian kecuali telah tertulis dalam kitab (Lauh Mahfuzh)
sebelum kami menciptakannya. Sesungguhnya yang demikian itu mudah
bagi Allah. (Kami jelaskan itu)
supaya kalian tidak putus asa atas apa yang luput dari kalian, dan
supaya kalian tidak
terlalu gembira terhadap apa yang diberikan kepada kalian.
Allah tidak menyukai orang yang sombong lagi membangkang.”
(QS. Al-Hadid : 22-23)
149