2018
http://repositori.usu.ac.id/handle/123456789/3991
Downloaded from Repositori Institusi USU, Univsersitas Sumatera Utara
IDENTIFIKASI SINYAL SUARA MENGGUNAKAN METODE
FAST FOURIER TRANSFORM (FFT) BERBASIS MATLAB
SKRIPSI
DEPARTEMEN FISIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS SUMATERA UTARA
MEDAN
2018
SKRIPSI
DEPARTEMEN FISIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS SUMATERA UTARA
MEDAN
2018
OLEH:
DISETUJUI OLEH:
Komisi Pembimbing
Pembimbing 2 Pembimbing 1
Diketahui Oleh
Ketua,
PERSETUJUAN
Disetujui di
Medan, Januari 2018
Komisi Pembimbing
Pembimbing 2 Pembimbing 1
Disetujui Oleh
PERNYATAAN
SKRIPSI
Saya mengakui bahwa skripsi ini adalah hasil karya saya sendiri. Kecuali beberapa
kutipan dan ringkasan yang masing-masing disebutkan sumbernya.
PENGHARGAAN
Puji dan syukur kehadirat Tuhan Yang Maha Esa atas segala anugerah dan
karunia-Nya, sehingga penulis dapat menyelesaikan skripsi yang berjudul
“IDENTIFIKASI SUARA MANUSIA MENGGUNAKAN METODE FAST
FOURIER TRANSFORM (FFT) BERBASIS MATLAB”. Skripsi ini disusun
sebagai syarat akademis dalam menyelesaikan studi program Sarjana (S1) Jurusan
Fisika Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Sumatera
Utara.
Penulis menyadari bahwa selama proses hingga terselesaikannya penyusunan
skripsi ini banyak mendapatkan kontribusi dari berbagai pihak. Dengan segala
kerendahan hati, penulis ingin menyampaikan rasa terimakasih yang sebesar-
besarnya atas segala bantuan, dukungan serta saran yang telah diberikan. Oleh karena
itu dalam kesempatan ini penulis menyampaikan terimakasih kepada:
1. Tuhan Yang Maha Esa yang senantiasa memberikan saya kesehatan dan ide-ide
dalam penyelesaian skripsi ini.
2. Bapak Dr. Kerista Sebayang, MS selaku Dekan Fakultas Matematika dan Ilmu
Pengetahuan Alam Universitas Sumatera Utara.
3. Bapak Tua Raja Simbolon, S.Si, M.Si selaku dosen pembimbing yang dengan
sabar dan bijaksana memberikan bimbingan serta saran sehingga penulis dapat
menyelesaikan skripsi ini dengan baik.
4. Bapak Lukman Hakim, S.Si, M.Si selaku dosen wali yang telah banyak
membantu penulis selama menempuh pendidikan di Fakultas Matematika dan
Ilmu Pengetahuan Alam Universitas Sumatera Utara.
5. Segenap Dosen Fakukltas Matematika dan Ilmu Pengetahuan Alam yang telah
mendidik dan memberikan ilmu pengetahuan yang bermanfaat bagi penulis.
6. Ibu tercinta Timaria Nainggolan, abang, kakak dan kakak ipar saya tersayang
Nahot Sibarani, Romauli Sibarani dan Elvi Gawi Nainggolan yang senantiasa
memberikan penulis motivasi-motivasi untuk tetap semangat dalam mengerjakan
skripsi ini, Amang Rikson Silalahi dan Inang Gloria Sitepu yang telah banyak
membantu dan memberi dukungan penuh terhadap penulis, sehingga saya dapat
menyelesaikan skripsi ini. Adik-adik tersayang Damai, Jesika, Putri Dan Ezra
yang sangat membantu dalam pengambilan sampel pada skripsi ini.
7. Sahabat-sahabat seperjuangan, Widya Nazri Afrida, Widya Arianti, Gibson
Hutagalung, J.S Maniur Purba, Gibson Hutagalung, Sherly Tambunan, Almizan
Ridho dan Berthianna Nurcresia yang telah banyak membantu penulis
memberikan ide-ide dan masukan kepada penulis, sehingga penulis mampu
menyelesaikan skripsi ini.
8. Seluruh pihak yang tidak dapat disebutkan satu per satu, terimakasih atas semua
bantuannya dalam penyelesaian skripsi ini.
Penulis menyadari bahwa dalam skripsi ini masih terdapat banyak kekurangan.
Oleh karena itu, penulis mohon maaf apabila terdapat banyak kekurangan dan
kesalahan. Akhir kata, penulis berharap semoga skripsi ini dapat memberikan
manfaat bagi penulis maupun orang lain yang membacanya. Amin.
ABSTRAK
Suara manusia merupakan satu jenis gelombang yang sangat unik. Tiap manusia juga
memiliki jenis gelombang yang berbeda. Pada umumnya semakin besar frekuensi
dasar gelombang bunyi, maka semakin tinggi suara yang terdengar. Penulis
menggunakan microphone dalam sistem pengenalan suara yang berfungsi untuk
merekam suara dan Laptop beserta software Matlab untuk pengolahannya. Sistem ini
akan mencari nilai maksimum untuk setiap sampel suara pada sinyal FFT, kemudian
membuat suatu klasifikasi suara agar nantinya dapat teridentifikasi. Nilai maksimum
tersebut akan dianalisis untuk mengetahui suara yang dimainkan. Nilai maksimum
ini digunakan sebagai penentu teks suaranya dengan hasil yang ditampilkan berupa
plot hasil sinyal FFT, indeks nilai maksimum dan teks suara yang dikenali. Program
pengenalan sudah berhasil dibuat dan dapat menampilkan plot sinyal FFT, indeks
nilai maksimum dan teks hasil pengenalan suara . Pada program ini, parameter
pengenalan terbaik adalah 96 % dalam pengujian secara real time.
.
ABSTRACT
The human voice is a very unique type of wave. Each human also has a different
wave type. In general, the greater the basic frequency of sound waves, the higher the
sound is heard. The author uses a microphone in voice recognition system that serves
to record sounds and laptops along with Matlab software for processing. The system
will find the maximum value for each sound sample on the FFT signal, then create a
sound classification so that it can later be identified. The maximum value will be
analyzed to determine the sound played. This maximum value is used as the
determinant of the voice text with the result shown in the plot of the FFT signal
result, the maximum value index and the recognized voice text. The recognition
program has been successfully created and can display FFT signal plot, maximum
value index and speech recognition text. In this program, the best introduction
parameter is 96% in real time testing.
DAFTAR ISI
PERSETUJUAN i
PERNYATAAN ii
PENGHARGAAN iii
ABSTRAK v
ABSTRACT vi
DAFTAR ISI vii
DAFTAR TABEL xi
DAFTAR GAMBAR xiii
BAB I PENDAHULUAN 1
1.1. Latar Belakang 1
1.2. Rumusan Masalah 2
1.3. Batasan Masalah 2
1.4. Tujuan penelitian 3
1.5. Manfaat penelitian 3
1.6. Sistematika Penulisan 3
2.6. Mikrofon 13
2.7. Preprocessing 13
2.7.1 Normalisasi 14
2.7.2 Pemotongan Sinyal 14
2.7.3 Frame Blocking 14
2.7.4 Hamming Window 15
2.8. Ekstraksi Ciri 15
2.8.1 Transformasi Fourier 15
2.8.1.1 Transformasi Fourier Diskrit 16
2.8.1.2 Fast Fourier Transform (FFT) 18
2.9. Matlab 20
2.9. Guide Matlab 21
DAFTAR PUSTAKA 64
LAMPIRAN
Lampiran 1 Listing Program Pengambilan Sampel Suara
Lampiran 2 Percobaan Menentukan Indeks Nilai Maksimum Pada Look Up Table
Untuk Masing-Masing Suara
DAFTAR TABEL
Tabel
LAMPIRAN
DAFTAR GAMBAR
3 Gelombang Transversal 7
4 Gelombag Longitudinal 8
LAMPIRAN
BAB 1 PENDAHULUAN
dipakai dalam penelitian ini yaitu format wav karena Matlab hanya bisa menyimpan
format suara dalam bentuk wav. (Azhar, 2013)
Tahap-tahap yang akan dilalui dalam proses pengenalan suara ini ialah tahap
perekaman, kemudian preprocessing yang terdiri dari normalisasi, pemotongan sinyal,
frame blocking, dan windowing. Kemudian mengekstraksi ciri FFT untuk mendapatkan
spektrum frekuensi yang kemudian akan dianalisis dengan mencari nilai-nilai
maksimumnya. Fast Fourier Transform adalah suatu algoritma untuk menghitung Discrete
Fourier Transform (DFT) dengan cepat dan efisien maka dari itu penulis menggunakan
metode FFT sebagai pengidentifikasi sinyal suara manusia. Dalam penelitian ini digunakan
lebih dari satu look up table untuk penentuan keluarannya, sehingga diharapkan sistem
pengenalan dapat mengenali secara akurat.
Berdasarkan latar belakang diatas, maka penulis mengangkat permasalahan
dengan judul “IDENTIFIKASI SINYAL SUARA MENGGUNAKAN METODE
FAST FOURIER TRANSFORM (FFT) BERBASIS MATLAB”
2.2 Gelombang
Gelombang adalah gejala dari perambatan usikan (gangguan) di dalam suatu medium.
Pada peristiwa rambatan tersebut tidak disertai dengan perpindahan tempat yang
permanen dari materi – materi medium. Rambatan dari usikan (gangguan) itu
merupakan rambatan energi.
Kemajuan ilmu pengetahuan dan teknologi turut mendorong terciptanya alat
pengirim dan penerima informasi yang mempunyai cara kerja dengan mengirim atau
menerima gelombang. Tanpa disadari setiap makhluk hidup di bumi ini hidup dalam
lautan gelombang. Sinar matahari, sinar kosmis yang setiap saat menghujani bumi, suara
bising di jalan, sampai gelombang radio dari seluruh pemancar di seluruh dunia,
berkelebatan tak henti – hentinya di sekitar makhluk hidup di bumi ini. Sayangnya
hanya sedikit gelombang yang dapat terlihat oleh mata manusia secara langsung, seperti
gelombang laut, gelombang diam pada senar gitar.
Gelombang dapat dikelompokkan menjadi 2 bagian :
a. Gelombang Elektromagnetik
Gelombang elektromagetik adalah gelombang yang dalam perambatanya tidak
memerlukan medium. Yang termasuk gelombang elektromagnetik di antaranya: cahaya,
gelombang radio, gelombang tv, gelombang radar, sinar infra merah, sinar ultraviolet,
sinar X dan sinar gamma.
b. Gelombang Mekanik
Gelombang Mekanik adalah gelombang yang dalam perambatanya memerlukan
medium. Yang termasuk gelombang mekanik adalah : gelombang bunyi, gelombang
pada tali, gelombang permukaan air.
b. Gelombang Longitudinal
Gelombang longitudinal adalah gelombang yang arah getarnya berimpit atau
searah dengan arah rambat gelombang. Suatu gelombang longitudinal tidak menyatakan
suatu deretan bukit atau lembah gelombang. tetapi suatu deretan rapatan dan
renggangan. Rapatan dan renggangan gelombang longitudinal dapat dilihat pada sebuah
kawat spiral yang dibentangkan mendatar. Contoh: gelombang pada pegas dan gelombang
bunyi. (Harahap, 2010)
Kumpulan ciri dari suatu pola dinyatakan sebagai vektor ciri dalam ruang multi
dimensi. Jadi, setiap pola dinyatakan sebagai sebuah titik dalam ruang multi dimensi.
Ruang multi dimensi dibagi menjadi sejumlah sub-ruang. Tiap sub-ruang dibentuk
berdasarkan pola-pola yang sudah dikenali kategori dan ciri-cirinya melalui fase
pelatihan.
proses yang terjadi di dalam otak. Misalnya, yang terjadi pada anak-anak, mereka
mampu belajar untuk melakukan pengenalan meskipun mereka tidak mengetahui
algoritma apa yang digunakan. (Jain, 2000)
2.5 Sampling
Sampling adalah proses pencuplikan gelombang suara yang akan menghasilkan sinyal
diskrit. Dalam proses sampling ada yang disebut laju pencuplikan (sampling rate).
Sampling rate menandakan berapa banyak pencuplikan gelombang analog dalam selang
waktu 1 detik. Sampling rate dinyatakan dalam satuan Hertz (Hz). Pada proses
sampling, sebaiknya sampling rate memenuhi kriteria Nyquist. Kriteria Nyquist
menyatakan bahwa sampling rate harus lebih besar dari dua kali frekuensi tertinggi
sinyal analog.
Secara matematis dapat dituliskan :
𝑓𝑠 ≥2𝑓𝑚 (2.1)
Dengan 𝑓𝑠 adalah frekuensi sampling dan 𝑓𝑚 adalah frekuensi tertinggi sinyal suara
analog. Yang dimana dapat dilihat bahwa frekuensi sampling harus lebih besar dua kali
dari frekuensi sampling harus lebih besar dua kali dari frekuensi tertinggi sinyal analog
tersebut. (Sklar, 1988)
Contoh penentuan nilai frekuensi sampling : misalnya frekuensi tertinggi dari
sinyal analog adalah 50 Hz, maka frekuensi sampling haruslah dua kalinya dari sinyal
suara, yaitu 100 Hz. Apabila frekuensi sampling 100 Hz maka sinyal suara harus
mempunyai frekuensi maksimum 50 Hz.
Terdapat sebuah teknik yang memungkinkan sinyal analog diubah dan diproses
menjadi bit-bit digital. Teknik tersebut yaitu teknik sampling. Apabila sinyal analog
menjadi sinyal digital maka sinyal ini jauh lebih baik, dan juga noise yang dapat
diproses dengan mudah. Digital Signal Processing merupakan perkembangan dari
teknik sampling yang memungkinkan untuk membentuk sampel – sampel berupa suara.
Pada tahap ini terjadi suatu pengambilan sampel dari bentuk sinyal analog.
Pengambilan dilakukan pada bagian – bagian sinyal analog dengan pembagian sampel,
karena sampel yang diambil akan lebih menggambarkan sinyal yang asli. Frekuensi
sinyal sampling ini paling sedikit adalah 2 kali frekuensi sinyal yang akan mengalami
sampling (sinyal analog). Hal tersebut merupakan batas minimum dari frekuensi sampel
agar nantinya cuplikan yang diambil menunjukkan bentukan sinyal yang asli (analog).
Lebih besar frekuensi sampling tentunya lebih baik, karena cuplikan akan lebih
menggambarkan sinyal yang asli. (Safaat, 2016)
2.6 Mikrofon
Mikrofon adalah suatu komponen elektronika yang dapat mengubah atau
mengkonversikan energi akustik (gelombang suara) ke energi listrik (sinyal audio).
Fungsi dari mikrofon adalah sebagai komponen atau alat pengubah satu bentuk energi ke
bentuk energi lainya. Setiap jenis Mikrofon memiliki cara yang berbeda dalam
mengubah (konversi) bentuk energinya, tetapi semua jenis mikrofon memiliki
persamaan yaitu memiliki suatu bagian utama yang disebut dengan diafragma. Mikrofon
merupakan komponen penting dalam perangkat elektronik seperti alat bantu
pendengaran, perekam suara, penyiaran radio maupun alat komunikasi lainnya seperti
handpnone, telepon, interkom, walkie talkie serta home entertainment seperti karaoke.
(Fingkirani, 2014)
Pada perancangan ini mikrofon digunakan sebagai alat perekaman suara untuk
mendapatkan suara terekam agar kemudian dapat diproses untuk melalui tahap
selanjutnya sehingga mendapatkan keluaran teks yang sesuai dengan suara yang
dimainkan. Dalam proses perekaman, mikrofon dihubungkan langsung dengan kartu
suara yang ada di laptop.
2.7 Preprocessing
Preprocessing adalah proses-proses awal yang dilakukan sebelum proses
membangkitkan spectrum. Tujuan dari Preprocessing ini adalah untuk menyetarakan
sinyal suara masukan agar lebih mudah diproses untuk pengenalan suara. Proses
Preprocessing memiliki beberapa tahapan yang harus dilewati, yaitu normalisasi,
pemotongan sinyal, frame blocking, windowing, ekstraksi cirri FFT, pencarian nilai
maksimum dan teks suara.
2.7.1 Normalisasi
Normalisasi merupakan suatu cara untuk mengatasi jarak antara sumber suara dengan
mikrofon. Pada proses perekaman atau pengambilan suara ini perlu adanya normalisasi
supaya amplitude suara saat dimainkan dapat menjadi maksimal. Proses normalisasi
awal dilakukan dengan cara membagi tiap nilai data masukan yaitu suara terekam
dengan nilai absolute maksimal dari data masukan tersebut.
Perhitungan nilai normalisasi dirumuskan dengan persamaan sebagai berikut :
𝑋 𝑖𝑛
𝑋𝑛𝑜𝑟𝑚 = (2.2)
max
(𝑎𝑏𝑠 (𝑋 𝑖𝑛 ))
Dengan 𝑋𝑛𝑜𝑟𝑚 adalah hasil data sinyal normalisasi, 𝑋𝑖𝑛 adalah data masukan dari
sampling.
sehingga dapat mempercepat proses perhitungan pada Fast Fourier Transform. Jumlah
data pada setiap frame memiliki 2N data sampel. (Saputra, 2017)
Dengan N adalah jumlah data dari sinyal dan n adalah waktu diskrit ke- [0,1,2, …,N-1]
analisis dan sintesis dalam domain waktu memerlukan analisis cukup panjang dengan
melibatkan turunan dari fungsi, yang dapat menimbulkan ketidaktelitian hasil analisis.
Analisis dan sintesis sinyal akan lebih mudah dilakukan pada domain frekuensi. Salah
satu teknik untuk menganalisis sinyal adalah mentransformasikan (alih bentuk) sinyal
yang semula analog menjadi diskrit dalam domain waktu, dan kemudian diubah ke
dalam domain frekuensi. Transformasi Fourier adalah suatu model transformasi yang
memindahkan sinyal domain spasial atau sinyal domain waktu menjadi sinyal domain
frekuensi. (Meris, 2015)
Dalam bidang pemrosesan sinyal kontinu, Persamaan 2.4 digunakan untuk mengubah
fungsi domain waktu kontinu x(t) menjadi fungsi domain frekuensi kontinu X(f). Fungsi
X(f) memungkinkan untuk menentukan kandungan isi frekuensi dari beberapa sinyal
dan menjadikan beragam analisis sinyal dan pengolahan yang dipakai di bidang teknik
dan fisika. DFT didefenisikan sebagai urutan sinyal diskrit domain frekuensi X(m),
dimana:
𝑁−1 −𝑗 2𝜋𝑛𝑚/𝑁
𝑋 𝑚 = 𝑛=0 𝑥(𝑛) 𝑒 (2.5)
Dimana :
N = jumlah sampel input
X(m) = urutan ke-m komponen output DFT (X(0), X(1), … , X(N-1))
m = indeks output DFT dalam domain frekuensi (0,1, … , N-1)
x(n) = urutan ke-n sampel input (x(0), x(1), … , x(N-1))
n = indeks sampel input dalam domain waktu (0,1, … , N-1)
j = bilangan imajiner ( −1 )
𝜋 = derajat (180°)
e = basis logaritma natural (2.7182818284…)
Persamaan 2.5 kemudian dihubungkan dengan rumus Euler 𝑒 −𝑗𝜃 = cos (𝜃) – j sin(𝜃),
sehingga setara dengan :
𝑁−1 2𝜋𝑛𝑚 2𝜋𝑛𝑚
𝑋 𝑚 = 𝑛=0 𝑥(𝑛) [cos – j sin ] (2.6)
𝑁 𝑁
Dimana :
N = jumlah sampel input
X(m) = urutan ke-m komponen output DFT (X(0), X(1), … , X(N-1))
m = indeks output DFT dalam domain frekuensi (0,1, … , N-1)
x(n) = urutan ke-n sampel input (x(0), x(1), … , x(N-1))
n = indeks sampel input dalam domain waktu (0,1, … , N-1)
j = bilangan imajiner ( −1 )
𝜋 = derajat (180°)
diperlukan untuk menghitung N-titik DFT. Diperlukan N-perkalian kompleks dan N-1
sebagai tambahan. Kemudian, setiap perkalian membutuhkan N-perkalian riil, sehingga
untuk menghitung seluruh nilai N (X(0), X(1), …, X(N-1)) memerlukan N2 perkalian.
Hal ini menyebabkan perhitungan DFT memakan waktu yang lama jika jumlah sampel
yang akan diproses dalam jumlah besar.
Algoritma FFT memecah sampel menjadi dua bagian yaitu bagian genap dan bagian
ganjil. Persamaan 2.5 dibagi menjadi bagian ganjil dan bagian genap sebagai berikut:
(𝑁/2)−1 (𝑁/2)−1
𝑋 𝑚 = 𝑛=0 𝑥[2𝑛] 𝑒 −𝑗 2𝜋(2𝑛𝑚)/𝑁 + 𝑒 −𝑗 2𝜋𝑚/𝑁 𝑛=0 𝑥[2𝑛 + 1] . 𝑒 −𝑗 2𝜋(2𝑛𝑚)/𝑁 (2.7)
Dimana:
N = jumlah sampel input
X(m) = urutan ke-m komponen output FFT (X(0), X(1), … , X(N-1))
m = indeks output FFT dalam domain frekuensi (0,1, … , N-1)
x(2n) = urutan ke-n sampel input genap (x(0), x(2), … , x(N-2))
x(2+1) = urutan ke-n sampel input ganjil (x(1), x(3), … , x(N-1))
n = indeks sampel input dalam domain waktu (0,1, … , N/2-1)
j = konstanta bilangan imajiner ( −1 )
𝜋 = derajat (180°)
e = basis logaritma natural (2.7182818284…)
Setelah melakukan transformasi FFT, suara asli yang diperoleh dari hasil
perekaman akan diubah ke dalam bentuk pola suara yang merupakan hasil ekstraksi ciri
suara. Data suara yang telah diubah mempunyai bentuk 1 dimensi, keluaran hasil
ekstraksi ciri mempunyai dimensi yang sama dengan masukan suara asli yaitu 1 dimensi.
(Susilawati, 2009)
2.9 Matlab
Matlab adalah sebuah bahasa high-performance untuk komputasi teknis. Matlab
merupakan singkatan dari Matrix Laboratory. Matlab mengintegrasikan perhitungan,
visualisasi, dan pemrograman dalam suatu lingkungan yang mudah digunakan dimana
permasalahan dan solusi dinyatakan dalam notasi secara matematis yang dikenal umum.
Matlab memvisualisasi data dalam berbagai cara, melakukan aljabar matriks,
bekerja dengan polinomial dan fungsi integrasi. Matlab dapat diperlakukan sebagai
sebuah bahasa pemrograman yang akrab pengguna, yang memungkinkan untuk
menangani kalkulasi matematis dalam suatu cara yang mudah. Penggunaan Matlab
meliputi bidang-bidang :
Matematika dan komputasi
Pengembangan algoritma
Pengumpulan data
Pemodelan, simulasi, dan prototype
Analisis data, eksplorasi, dan visualisasi
Rancang-bangun grafis
Pengembangan aplikasi, termasuk membangun Graphical User Interface (GUI)
Matlab merupakan suatu sistem interaktif yang memiliki elemen data dalam suatu
array sehingga tidak lagi bermasalah dengan dimensi. Hal ini memungkinkan
memecahkan banyak masalah teknis yang terkait dengan komputasi, khususnya yang
berhubungan dengan matrix dan formulasi vector, yang mana masalah tersebut
merupakan momok apabila kita harus menyelesaikannya dengan menggunakan bahasa
level rendah seperti Pascall, C dan Basic. Dalam lingkungan perguruan tinggi teknik,
matlab merupakan perangkat standard untuk memperkenalkan dan mengembangkan
penyajian materi matematika, rekayasa dan keilmuan. Di industri, Matlab merupakan
perangkat pilihan untuk penelitian dan produktifitas yang tinggi analisanya.
Fitur-fitur Matlab sudah banyak dikembangkan, dan lebih kita kenal dengan nama
toolbox. Sangat penting bagi seorang pengguna Matlab, toolbox mana yang mendukung
untuk learn dan apply teknologi yang sedang dipelajari. Toolbox-toolbox ini merupakan
kumpulan dari fungsi-fungsi Matlab (M-Files) yang telah dikembangkan ke suatu
lingkungan kerja Matlab untuk memecahkan masalah dalam kelas particular. Area-area
yang sudah bisa dipecahkan dengan toolbox saat ini meliputi pengolahan sinyal, sistem
control, neural networks, fuzzy logic, wavelets, dan lain-lain.
Beberapa bagian penting yang terdapat pada antar muka MATLAB adalah sebagai
berikut:
a. Command Window atau jendela perintah adalah jendela yang dipakai untuk
memberikan perintah secara manual.
b. Workspace berisi daftar variabel yang diciptakan oleh pemakai dan masih ada dalam
memori.
c. Command History mencantumkan perintah-perintah yang pernah diberikan oleh
pemakai.
d. Current Directory menyatakan direktori kerja.
Terdapat dua metode yang digunakan untuk menulis program dalam Matlab. Kedua
metode itu adalah metode langsung dan tidak langsung. Untuk menulis program Matlab
secara langsung maka program itu ditulis langsung di Command Window. Untuk
menulis program Matlab secara tidak langsung maka program itu dapat ditulis sebagai
M-File. (Gunawan, 2011)
2) GUIDE Matlab mempunyai fungsi built - in yang siap digunakan dan pemakai
tidak perlu repot membuatnya sendiri.
3) Ukuran file, baik FIG - file maupun M-file, yang dihasilkan relatif kecil.
4) Kemampuan grafisnya cukup andal dan tidak kalah dibandingkan dengan bahasa
pemrograman lainnya. ( Teuinsuska, 2009)
dihasilkan dari getaran pita suara, sedangkan unvoiced sounds dihasilkan dari gesekan
antara udara dengan vocal tract. ( Suwandi, 2011 )
3.2.2 Mikrofon
Mikrofon berfungsi untuk menangkap suara kemudian menyalurkannya pada laptop
kemudian diproses untuk pengenalan suara. Mikrofon dapat mengubah suara menjadi
getaran listrik sinyal analog untuk selanjutnya diperkuat dan diolah sesuai dengan
kebutuhan. Agar lebih efektif, mikrofon yang digunakan haruslah sesuai dengan
kebutuhan dan seimbang antara sumber suara manusia yang ingin dicuplik. Jarak yang
digunakan antara mulut dengan mikrofon adalah ± 15 cm.
4. Klik Open maka akan tampil aplikasi pengenalan suara seperti Gambar 3.2
5. Kemudian pilih Run Figure. Maka akan tampil aplikasi pengenalan suara.
6. Pilih nilai frame blocking yang akan digunakan dalam proses pengenalan
suara. Setelah memilih nilai frame blocking, tekan tombol “REKAM” untuk
memulai program pengenalan suara dan diikuti dengan memainkan salah satu
suara. Gambar 3.4 memperlihatkan hasil pengenalan suara.
7. Dapat dilihat plot perekaman pada kotak Axes1 dan plot FFT pada kotak
Axes2, indeks nilai maksimum pada kotak Edit Text 2, serta teks hasil
pengenalan suara pada kotak Edit Text 1.
8. User dapat mengulangi kembali proses proses pengenalan suara dengan
menekan tombol “REKAM” dan memilih nilai frame blocking yang berbeda.
Untuk membersihkan jendela plot FFT, indeks nilai maksimum, dan teks
suara dengan menekan tombol “RESET”.
9. Program pengenalan dapat diakhiri dengan menekan tombol “SELESAI”
untuk keluar dari tampilan utama program pengenalan suara.
10. Selesai.
Hasil
Normalisasi Pemotongan Sinyal
Perekaman
Setiap subproses dalam proses pengenalan suara ini memiliki fungsi masing-masing,
yaitu :
1. Suara Manusia
Hasil dari sampling suara yang direkam dengan menggunakan mikrofon akan
diproses ke tahap selanjutnya.
2. Normalisasi
Data yang telah melalui proses perekaman selanjutnya dinormalisasi. Pada tahap ini
semua suara yang sudah terekam akan dinormalisasi. Tujuan dari normalisasi ini agar
amplitudo pada saat data suara dimainkan bisa maksimal.
3. Pemotongan Sinyal
Fungsi proses pemotongan sinyal adalah untuk menghilangkan efek noise atau suara
lain yang ikut terekam saat proses perekaman.
4. Frame blocking
Proses ini berfungsi untuk memilih data dari suara terekam, sehingga data yang
dipilih dapat mewakili semua data pada suara yang terekam.
5. Windowing
Setelah frame blocking data suara akan mengalami proses windowing. Windowing
berfungsi untuk menghilangkan efek diskontinuitas yang disebabkan oleh frame
blocking.
Gambar 3.3 Diagram Alir Pencarian Nilai Maksimum Untuk Look up table
RESET SELESAI
Tampilan program ini dibuat supaya user dapat dengan mudah menjalankan
program yang dibuat dan memahami hasil dari pengenalan suara. Berikut adalah
keterangan tampilan utama program pada Table 3.1.
Masukan
Suara.wav FFT
Pencarian Nilai
Rekam
Maksimum
Pemotongan Sinyal
Keluaran
Teks Suara
Frame blocking
Selesai
Gambar 3.5 Diagram Alir Program Pengenalan Suara
3.6.3 Rekam
Pada proses perekaman ini akan melalui proses pertama yaitu sampling yang bertujuan
untuk merekam suara manusia dengan frekuensi sampling yang telah ditentukan yaitu
4800 Hz. Nilai frekuensi sampling tersebut ditentukan berdasarkan criteria Nyquist pada
persamaan 2.1 berikut :
𝑓𝑠 ≥ 2𝑓𝑚
𝑓𝑠 ≥ 2 × 84
𝑓𝑠 ≥ 168
Lama waktu penangkapan ucapan ditentukan sebesar 1,5 detik. Waktu tersebut
ditentukan agar suara yang dihasilkan dapat terekam secara utuh. Penentuan lama waktu
berdasarkan hasil percobaan yang disertakan dalam lampiran (Lampiran 1). Semua
sampel suara yang diambil akan melalui proses sampling lebih dahulu sebelum masuk
ke tahap selanjutnya. Sampling suara dilakukan dengan menentukan panjang durasi
perekaman, frekuensi sampling dan jumlah sampel terlebih dahulu. Kemudian merekam
suara masukan dengan perintah waverecord. Menyimpan hasil rekaman dengan perintah
wavwrite. Lalu menampilkan sinyal hasil rekaman dengan perintah plot. Hasil keluaran
dari proses perekaman ini adalah dalam format wav. Diagram dapat dilihat seperti pada
Gambar 3.6.
Mulai
Ya
3.6.4 Normalisasi
Proses normalisasi ini dilakukan setelah keluaran proses rekam berupa wav. Pada proses
normalisasi, sinyal suara harus mempunyai nilai maksimum. Setelah pencarian nilai
maksimum maka tahap selanjutnya adalah membagi data dengan nilai absolut maksimal
suara yang terekam. Tujuan adanya normalisasi ini adalah untuk menyetarakan
amplitudo suara yang terekam menjadi maksimum, agar efek kuat atau lemahnya suara
yang terekam tidak mempengaruhi proses pengenalan suara. Gambar 3.7 menunjukkan
proses dari normalisasi.
Mulai
Masukan :
Suara Terekam
Keluaran : Hasil
Normalisasi
Selesai
daerah bagian transisi. Tujuan dari pemotongan daerah bagian silence adalah untuk
menghilangkan bagian yang tidak termasuk dari bagian sinyal suara, dan tujuan
pemotongan pada daerah bagian transisi adalah untuk mendapatkan sinyal yang
merupakan sinyal suara manusia. Proses pemotongan daerah bagian transisi dilakukan
dengan menghilangkan ¼ bagian dari sinyal yang terdapat di bagian awal (bagian
transisi) setelah pemotongan bagian silence. Pemotongan sinyal dilakukan dengan
menentukan nilai batas potong yaitu 0,3. Lalu mencari bagian sinyal yang lebih besar
dari 0,3 dan lebih kecil dari -0,3. Sinyal yang dicari tersebut diinisialisasi sebagai b0.
Sinyal yang tidak termasuk b0 akan dihilangkan, sinyal yang dihilangkan ini dinamakan
sinyal silence. Kemudian pemotongan sinyal transisi dilakukan dengan mengalikan
jumlah data sinyal dengan 0,2. Pemotongan sinyal transisi diinisialisasi sebagai bts. Dan
menghilangkan data sinyal mulai dari indeks 1 sampai dengan indeks bts. Gambar 3.8
akan menjelaskan proses pemotongan sinyal.
. Mulai
Masukan : Hasil
Normalisasi
Keluaran : Hasil
Pemotongan
Selesai
Gambar 3.7 Diagram Alir Pemotongan Sinyal
Mulai
Keluaran : Hasil
Frame blocking
Selesai
Masukan : Hasil
Frame blocking
Keluaran : Hasil
Hamming Window
Selesai
Gambar 3.9 Diagram Alir Hamming Window
Pencarian nilai mutlak pada tiap perhitungan ditujukan agar nilai yang didapat
merupakan bilangan real sehingga proses perhitungan dapat dilanjutkan.
Gambar 3.10 merupakan diagram proses ekstraksi ciri FFT.
Mulai
Masukan : Hasil
Hamming Window
Keluaran : Hasil
Normalisasi
Selesai
Gambar 3.10 Diagram Alir Ekstraksi Ciri FFT
Mulai
Masukan : Hasil
Ekstraksi Ciri FFT
Keluaran : Nilai
Maksimum
Selesai
Gambar 3.11 Diagram Alir Pencarian Nilai Maksimum
Tidak
Ya
DL≤i≤DH DAMAI
Tidak
Ya
JL≤i≤JH JESIKA
Tidak
Ya
PL≤i≤PH PUTRI
Tidak
Keluaran : Teks Suara Ya
Selesai EL≤i≤EH EZRA
Pada GUI
ERROR
Setelah mengetahui nilai maksimumnya, maka hasil keluaran pengenalan berupa teks
suara. Penentuan keluaran menggunakan look up table. Gambar 3.3 memperlihatkan
proses pencarian nilai maksimum pada look up table. Table berikut memperlihatkan
proses perancangan penentuan range nilai maksimum setiap frame blocking.
Tabel 3.2 Look up table Untuk Penentuan Suara Pada Frame blocking 16
Tabel 3.3 Look up table Untuk Penentuan Suara Pada Frame blocking 32
Tabel 3.4 Look up table Untuk Penentuan Suara Pada Frame blocking 64
Tabel 3.5 Look up table Untuk Penentuan Suara Pada Frame blocking 128
Tabel 3.6 Look up table Untuk Penentuan Suara Pada Frame blocking 256
Untuk menentukan nilai maksimum dari look up table maka harus menentukan
nilai range dari setiap suara. Misalkan dilakukan percobaan untuk suara “RUT” dengan
3 kali percobaan pada frame 256, percobaan pertama memperoleh nilai maksimum 54
pada sinyal FFT, selanjutnya percobaan kedua memperoleh nilai maksimum 52 pada
sinyal FFT, dan percobaan yang ketiga memperoleh nilai maksimum 56 pada sinyal
FFT. Maka, range nilai maksimum untuk suara “RUT” pada frame 256 adalah 52
sebagai RL dan nilai maksimum 56 sebagai RH. Apabila nilai yang dihasilkan tidak
berada pada range tersebut, maka keluaran pada GUI berupa “ERROR” yang akan
ditampilkan dalam bentuk teks. Proses penentuan range nilai maksimum look up table
dapat dilihat pada (Lampiran 2).
.
Mulai
Masukan : Nilai
Maksimum
Tidak
Hasilout =
Hasilout = Error
Suaraout
Ya
Keluaran : Teks
Suara
Selesai
membersihkan jendela plot FFT, indeks nilai maksimum, dan teks suara, user dapat
menekan tombol “RESET”. Tombol “SELESAI” digunakan untuk keluar dari tampilan
utama program pengenalan suara. Pada tampilan utama GUI pengenalan suara terdapat 1
pop up menu, 3 push button, 1 axes dan 2 Edit Text.
Pada program dalam pemilihan nilai variasi frame blocking, nilai frame blocking
di inisialisasi dengan nama “frameb”. Inisialisasi tersebut dipakai untuk menginisialisasi
nilai dalam pop up menu yang dipakai dalam program selanjutnya. Inisialisasi “frameb”
diubah menjadi “frame” dengan diikuti kata “handles”, hal ini untuk membuat agar nilai
frame blocking yang telah dipilih dapat dikenali sebagai bahasa program untuk langkah
selanjutnya. Tiap program dalam pop up menu mempunyai dua jenis kata inisialisasi,
seperti “frameb” dan “frame” untuk pemilihan variasi nilai frame blocking. Hal ini
dikarenakan untuk membedakan susunan proses pengolahan nilai dalam program agar
lebih jelas. Proses akhir inisialisasi dalam pop up menu terdapat pada bahasa program
“handles”. Setelah melalui proses program “handles”, nilai-nilai variasi dapat digunakan
untuk program selanjutnya. Untuk proses pemanggilan nilai yang akan diubah menjadi
nilai untuk bahasa program digunakan pilihan callback.
4.2.2.1 Rekam
Pada proses perekaman ini akan melalui proses pertama yaitu sampling yang bertujuan
untuk merekam suara manusia. Semua sampel suara yang diambil akan melalui proses
sampling lebih dahulu sebelum masuk ke tahap selanjutnya. Hasil keluaran dari proses
perekaman ini adalah dalam format wav. Berikut listing program untuk proses
perekaman suara beserta tampilan hasil perekaman.
sample_length=1.5;
sample_freq=4800;
sample_time=(sample_length*sample_freq);
x=wavrecord(sample_time, sample_freq);
wavwrite(x, sample_freq, 's.wav');
figure(1)
xlabel('Data Tercuplik')
ylabel('Amplitudo')
axes(handles.axes1)
plot(x);
4.2.2.2 Normalisasi
Proses normalisasi ini dilakukan setelah keluaran proses rekam wav. Pada proses
normalisasi, sinyal suara harus mempunyai nilai maksimum. Dalam program untuk
menampilkan plot sinyal FFT, proses pertama yang dilakukan adalah proses normalisasi
untuk sinyal suara terekam. Berikut listing program untuk proses normalisasi sinyal
suara beserta tampilan normalisasinya.
% Batas Potong
b0=0.3;
frame=128;% nilai frame blocking
16,32,64,128 dan 256
%Normalisasi
y1=x/max(x);
figure(2)
plot(y1)
Batas potong diinisialisasi sebagai b0. Nilai b0 diinput terlebih dahulu agar dapat
digunakan dalam program selanjutnya. Dari proses perekaman hingga proses keluaran
menggunakan frame blocking 128. y1 adalah hasil normalisasi, x adalah sinyal suara
terekam dan max(x) adalah nilai maksimum dari sinyal suara terekam. Normalisasi
dilakukan dengan membagi data masukan (data sinyal suara terekam) dengan nilai
maksimum data tersebut. y1 diplotkan dalam figure 2. Berikut ini merupakan hasil plot
sinyal hasil normalisasi.
% Pemotongan Sinyal
% 1. Potong
b1=find(y1>b0 | y1<-b0);
y1(1:b1(1))=[];
figure(3)
plot(y1)
b1 adalah sinyal bagian silence. Pada pemotongan sinyal bagian silence, data
yang tingginya lebih besar dari 0,3 dan lebih kecil dari (-0,3) diinisialisasikan sebagai
b0. Data yang tidak memenuhi syarat dari b0 merupakan bagian sinyal silence sehingga
sinyal tersebut dihilangkan ([ ]). y1 diplotkan dalam figure 3. Berikut ini merupakan
hasil plot sinyal bagian silence.
% 2. Potong 2
bts=floor(0.25*length(y1));
y1(1:bts)=[];
figure(4)
plot(y1)
% Frame blocking
y2=y1(1:frame);
figure(5)
plot(y2)
y2 adalah hasil frame blocking. Proses pertama yang dilakukan dalam frame
blocking adalah menentukan nilai titik tengah dari data hasil pemotongan sinyal (y1).
Kemudian ditentukan besarnya data yang akan diambil untuk proses selanjutnya. Dalam
proses ini, data yang diambil mulai dari sinyal paling kiri dan akan diambil sepanjang
nilai frame yang telah dipilih sehingga memudahkan dalam proses perhitungan dan
analisa sinyal. y2 diplotkan dalam figure 5. Berikut ini merupakan hasil frame blocking.
4.2.2.5 Windowing
Windowing memiliki fungsi untuk menghilangkan efek diskontinuitas yang diakibatkan
oleh proses sebelumnya, yaitu frame blocking ketika sinyal ditransformasikan ke domain
frekuensi. Sehingga sampel yang telah dibagi menjadi beberapa frame perlu dijadikan suara
kontiniu. Proses windowing ini menggunakan hamming window. Berikut listing program
untuk proses windowing beserta tampilan hasil windowing.
% Windowing
h=hamming(frame);
y3=y2.*h;
figure(6)
plot(y3)
Proses ini dimulai dengan mencari nilai komputasi FFT yang diinisialisasi
sebagai fft dan dilanjutkan dengan mencari nilai absolute dari hasil komputasi FFT
tersebut yang diinisialisasi sebagai abs. y4 adalah hasil ekstraksi ciri FFT. y4 diplotkan
dalam figure 7. Berikut ini merupakan hasil ekstraksi ciri FFT.
4 Putri 75≤nilaimaks≤80
5 Ezra 81≤nilaimaks≤85
Tabel 4.1 sampai 4.5 memperlihatkan look up table yang digunakan untuk setiap
nilai frame blocking. Pada look up table nilai range low dan range high mengalami
perubahan nilai range, agar tidak terlihat nilai maksimum yang sama dan harus sesuai
dengan penulisan program yang benar. Perubahan nilai range menggunakan nilai selisih
terkecil dari setiap suara, nilai selisih terkecil digunakan untuk menentukan range low
dan range high.
function suaraout=lut16(imax,handles)
% Penentu keluaran text untuk LUT dengan
% frame blocking 16 titik
if imax>=1 && imax<=2
suaraout={'RUT'};
set(handles.edit1,'string',suaraout)
elseif imax>=3 && imax<=4
suaraout={'DAMAI'};
set(handles.edit1,'string',suaraout)
elseif imax>=5 && imax<=6
suaraout={'JESIKA'};
set(handles.edit1,'string',suaraout)
function suaraout=lut32(imax,handles)
% Penentu keluaran text untuk LUT dengan
% frame blocking 32 titik
if imax>=4 && imax<=5
suaraout={'RUT'};
set(handles.edit1,'string',suaraout)
elseif imax>=6 && imax<=7
suaraout={'DAMAI'};
set(handles.edit1,'string',suaraout)
elseif imax>=8 && imax<=9
suaraout={'JESIKA'};
set(handles.edit1,'string',suaraout)
elseif imax>=10 && imax<=11
suaraout={'PUTRI'};
set(handles.edit1,'string',suaraout)
elseif imax>=12 && imax<=13
suaraout={'EZRA'};
set(handles.edit1,'string',suaraout)
else
suaraout={'ERROR'};
set(handles.edit1,'string',suaraout)
end
function suaraout=lut64(imax,handles)
% Penentu keluaran text untuk LUT dengan
% frame blocking 64 titik
if imax>=8 && imax<=9
suaraout={'RUT'};
set(handles.edit1,'string',suaraout)
elseif imax>=10 && imax<=11
suaraout={'DAMAI'};
set(handles.edit1,'string',suaraout)
elseif imax>=12 && imax<=13
suaraout={'JESIKA'};
set(handles.edit1,'string',suaraout)
elseif imax>=14 && imax<=15
suaraout={'PUTRI'};
set(handles.edit1,'string',suaraout)
elseif imax>=16 && imax<=17
suaraout={'EZRA'};
set(handles.edit1,'string',suaraout)
else
suaraout={'ERROR'};
set(handles.edit1,'string',suaraout)
end
function suaraout=lut128(imax,handles)
% Penentu keluaran text untuk LUT dengan
% frame blocking 128 titik
if imax>=26 && imax<=28
suaraout={'RUT'};
set(handles.edit1,'string',suaraout)
elseif imax>=29 && imax<=31
suaraout={'DAMAI'};
set(handles.edit1,'string',suaraout)
elseif imax>=32 && imax<=34
suaraout={'JESIKA'};
set(handles.edit1,'string',suaraout)
elseif imax>=37 && imax<=39
suaraout={'PUTRI'};
set(handles.edit1,'string',suaraout)
elseif imax>=41 && imax<=43
suaraout={'EZRA'};
set(handles.edit1,'string',suaraout)
else
suaraout={'ERROR'};
set(handles.edit1,'string',suaraout)
end
function suaraout=lut256(imax,handles)
% Penentu keluaran text untuk LUT dengan
% frame blocking 256 titik
if imax>=52 && imax<=56
suaraout={'RUT'};
set(handles.edit1,'string',suaraout)
elseif imax>=57 && imax<=64
suaraout={'DAMAI'};
set(handles.edit1,'string',suaraout)
elseif imax>=65 && imax<=70
suaraout={'JESIKA'};
set(handles.edit1,'string',suaraout)
elseif imax>=75 && imax<=80
suaraout={'PUTRI'};
set(handles.edit1,'string',suaraout)
elseif imax>=81 && imax<=85
suaraout={'EZRA'};
set(handles.edit1,'string',suaraout)
else
suaraout={'ERROR'};
set(handles.edit1,'string',suaraout)
end
4.2.2.10 Reset
Pushbutton “RESET” digunakan untuk membersihkan axes dan edit pada tampilan GUI
menjadi kondisi awal sebelum program pengenalan suara dijalankan. Berikut merupakan
listing program untuk pushbutton “RESET” :
axes(handles.axes1);
plot(0);
axes(handles.axes2);
plot(0);
set(handles.edit1,'string',' ');
set(handles.edit2,'string',' ');
set(handles.popupmenu1,'Value',1);
4.2.2.11 Selesai
Pushbutton “SELESAI” digunakan untuk mengakhiri program pengenalan suara dan
keluar dari tampilan GUI. Berikut merupakan listing program untuk pushbutton
“SELESAI” :
close;
sebanyak 10 kali untuk masing-masing suara tiap nilai frame blocking. Tujuan dari
pengujian ini adalah untuk mengetahui apakah program dapat bekerja dengan baik atau
tidak.
5.1 Kesimpulan
Berdasarkan pengujian yang telah dilakukan dalam sistem pengenalan suara manusia
menggunakan metode Fast Fourier Transform (FFT), maka diperoleh hasil sebagai
berikut.
1. Sistem pengenalan telah bekerja sesuai dengan perancangan dan dapat
menampilkan Plot Sinyal FFT, Indeks Nilai Maksimum dan Hasil Pengenalan
Suara pada GUI MATLAB untuk setiap suara yang teridentifikasi. Sistem
pengenalan juga dapat mengenali suara dengan benar sesuai dengan suara yang
dimainkan untuk nilai frame blocking 16, 32, 64, 128 dan 256. Dimana tingkat
pengenalan menjadi lebih baik jika nilai frame lebih tinggi, dan pada penelitian
ini menghasilkan tingkat pengenalan terbaik yaitu 96 % pada frame blocking
256. Namun tingkat pengenalan suara menjadi turun ketika nilai frame blocking
berada dibawah 128, yaitu 16, 32 dan 64. Penurunan tingkat pengenalan ini
dikarenakan nilai indeks maksimum setiap suara berada di range yang sama.
2. Telah dirancang sebuah program bantu untuk mengidentifikasi suara manusia
dimana dalam program tersebut terdapat beberapa subproses yang akan dilalui
hingga akhirnya didapatkan hasil pengenalan suara. Program dapat dilihat pada
Lampiran 4.
5.2 Saran
Pada sistem pengenalan suara menggunakan Metode Fast Fourier Transform (FFT)
berbasis Matlab ini tentunya masih jauh dari kesempurnaan. Oleh karena itu diharapkan
dapat membantu pengembangan sistem pengenalan suara ini agar semakin baik. Adapun
saran penulis kepada penulis berikutnya adalah sebagai berikut :
1. Menggunakan metode yang berbeda dalam sistem pengenalan sehingga dapat
dibandingkan hasil tingkat pengenalan suaranya.
2. Pengembangan penerapan sistem agar dapat mengenali suara tanpa harus merekam
masukan secara manual melainkan secara kontiniu.
DAFTAR PUSTAKA
LAMPIRAN 1
LISTING PROGRAM PENGAMBILAN SAMPEL SUARA
sample_length=1.5;
sample_freq=4800;
sample_time=(sample_length*sample_freq);
x=wavrecord(sample_time, sample_freq);
wavwrite(x, sample_freq, 'Damai_1.wav);
plot(x);
xlabel('Data Tercuplik')
ylabel('Amplitudo')
LAMPIRAN 2
PERCOBAAN UNTUK MENENTUKAN INDEKS NILAI MAKSIMUM PADA
LOOK UP TABLE UNTUK MASING-MASING SUARA
Variabel :
1. Frekuensi sampling yang digunakan sebesar 4800 Hz.
2. Durasi perekaman yang digunakan sebesar 1,5 detik.
3. Masing-masing suara direkam sebanyak 10 kali.
Berikut merupakan listing program untuk menentukan range pada look up table :
% Batas Potong
b0=0.3;
% Definisi variabel
frame=16;% nilai frame blocking
16,32,64,128 dan 256
% Sinyal masukan
x=wavread('Jes16a.wav');
%Normalisasi
y1=x/max(x);
% Pemotongan Sinyal
% 1. Potong
b1=find(y1>b0 | y1<-b0);
y1(1:b1(1))=[];
% 2. Potong 2
bts=floor(0.25*length(y0));
y1(1:bts)=[];
% Frame blocking
y2=y1(1:frame);
% Windowing
h=hamming(frame);
y3=y2.*h;
Gambar L2.1 Sintaks Program Mencari Nilai Range Untuk Setiap Look Up Table
Berikut merupakan contoh plot sinyal suara JESIKA pada sinyal FFT untuk
menentukan range pada look up table dengan frame blocking 16 :
Gambar L2.2 Sinyal Suara JESIKA_1 Pada Sinyal FFT Pada Frame Blocking 16
Gambar L2.3 Sinyal Suara JESIKA_2 Pada Sinyal FFT Pada Frame Blocking 16
Gambar L2.4 Sinyal Suara JESIKA_3 Pada Sinyal FFT Pada Frame Blocking 16
Gambar diatas merupakan contoh dari proses penentuan range untuk look up
table pada frame blocking 16 dilakukan sebanyak 10 kali pengambilan data pada
masing-masing suara. Tabel L2.1 memperlihatkan proses pengambilan nilai indeks
maksimum untuk nilai range pada look up table.
Tabel L2.1 Proses Pengambilan Nilai Indeks Maksimum Dengan Look Up Table dengan
Frame Blocking 16
Suara Pengambilan Rata-Rata
1 2 3 4 5 6 7 8 9 10
RUT 2 1 2 2 2 1 1 2 2 1 2
DAMAI 3 4 3 4 3 3 4 3 4 3 3
JESIKA 5 5 5 5 6 5 6 5 6 5 6
PUTRI 7 7 7 7 7 7 7 8 8 7 7
EZRA 10 10 10 9 10 9 10 9 10 10 10
Tabel L2.2 Proses Penentuan Range untuk Look Up Table dengan Frame Blocking 16
Suara Rata-Rata Selisih
RUT 2 1
DAMAI 3
DAMAI 3 3
JESIKA 6
JESIKA 6 1
PUTRI 7
PUTRI 7 3
EZRA 10
Dari hasil yang terdapat pada Tabel L2.2, maka diperoleh range untuk look up
table dengan frame blocking 16 adalah 1. Nilai range ini diperoleh dari selisih terkecil
dari setiap suara. Kemudian selisih terkecil tersebut digunakan sebagai range atas dan
range bawah.
Berikut merupakan contoh plot sinyal suara PUTRI pada sinyal FFT untuk
menentukan range pada look up table dengan frame blocking 32 :
Gambar L2.5 Sinyal Suara PUTRI_1 Pada Sinyal FFT Pada Frame Blocking 32
Gambar L2.6 Sinyal Suara PUTRI_2 Pada Sinyal FFT Pada Frame Blocking 32
Gambar L2.7 Sinyal Suara PUTRI_3 Pada Sinyal FFT Pada Frame Blocking 32
Gambar diatas merupakan contoh dari proses penentuan range untuk look up
table pada frame blocking 32 dilakukan sebanyak 10 kali pengambilan data pada
masing-masing suara. Tabel L2.3 memperlihatkan proses pengambilan nilai indeks
maksimum untuk nilai range pada look up table.
Tabel L2.3 Proses Pengambilan Nilai Indeks Maksimum Dengan Look Up Table dengan
Frame Blocking 32
Suara Pengambilan Rata-Rata
1 2 3 4 5 6 7 8 9 10
RUT 5 4 5 5 5 4 4 4 4 5 5
DAMAI 6 6 7 7 7 6 7 7 7 7 7
JESIKA 8 8 8 8 9 8 9 8 9 9 8
PUTRI 10 10 10 11 10 10 10 11 10 10 10
EZRA 13 13 13 12 13 12 13 12 13 13 13
Tabel L2.4 Proses Penentuan Range untuk Look Up Table dengan Frame Blocking 32
Suara Rata-Rata Selisih
RUT 5 2
DAMAI 7
DAMAI 7 1
JESIKA 8
JESIKA 8 2
PUTRI 10
PUTRI 10 3
EZRA 13
Dari hasil yang terdapat pada Tabe L2.4, maka diperoleh range untuk look up
table dengan frame blocking 32 adalah 1. Nilai range ini diperoleh dari selisih terkecil
dari setiap suara. Kemudian selisih terkecil tersebut digunakan sebagai range atas dan
range bawah.
Berikut merupakan contoh plot sinyal suara EZRA pada sinyal FFT untuk
menentukan range pada look up table dengan frame blocking 64 :
Gambar L2.8 Sinyal Suara EZRA_1 Pada Sinyal FFT Pada Frame Blocking 64
Gambar L2.9 Sinyal Suara EZRA_2 Pada Sinyal FFT Pada Frame Blocking 64
Gambar L2.10 Sinyal Suara EZRA_3 Pada Sinyal FFT Pada Frame Blocking 64
Gambar diatas merupakan contoh dari proses penentuan range untuk look up
table pada frame blocking 64 dilakukan sebanyak 10 kali pengambilan data pada
masing-masing suara. Tabel L2.5 memperlihatkan proses pengambilan nilai indeks
maksimum untuk nilai range pada look up table.
Tabel L2.5 Proses Pengambilan Nilai Indeks Maksimum Dengan Look Up Table dengan
Frame Blocking 64
Suara Pengambilan Rata-Rata
1 2 3 4 5 6 7 8 9 10
RUT 9 8 9 9 9 8 8 9 8 8 9
DAMAI 10 11 10 10 10 11 10 10 11 10 10
JESIKA 12 12 12 12 13 12 13 12 13 13 12
PUTRI 14 14 14 15 14 14 14 15 15 14 14
EZRA 16 17 16 17 16 17 17 17 16 17 17
Tabel L2.6 Proses Penentuan Range untuk Look Up Table dengan Frame Blocking 64
Suara Rata-Rata Selisih
RUT 9 1
DAMAI 10
DAMAI 10 2
JESIKA 12
JESIKA 12 2
PUTRI 14
PUTRI 14 3
EZRA 17
Dari hasil yang terdapat pada Tabe L2.4, maka diperoleh range untuk look up
table dengan frame blocking 64 adalah 1. Nilai range ini diperoleh dari selisih terkecil
dari setiap suara. Kemudian selisih terkecil tersebut digunakan sebagai range atas dan
range bawah.
Berikut merupakan contoh plot sinyal suara DAMAI pada sinyal FFT untuk
menentukan range pada look up table dengan frame blocking 128 :
Gambar L2.11 Sinyal Suara DAMAI_1 Pada Sinyal FFT Pada Frame Blocking 128
Gambar L2.12 Sinyal Suara DAMAI_2 Pada Sinyal FFT Pada Frame Blocking 128
Gambar L2.13 Sinyal Suara DAMAI_3 Pada Sinyal FFT Pada Frame Blocking 128
Gambar diatas merupakan contoh dari proses penentuan range untuk look up
table pada frame blocking 128 dilakukan sebanyak 10 kali pengambilan data pada
masing-masing suara. Tabel L2.7 memperlihatkan proses pengambilan nilai indeks
maksimum untuk nilai range pada look up table.
Tabel L2.7 Proses Pengambilan Nilai Indeks Maksimum Dengan Look Up Table dengan
Frame Blocking 128
Suara Pengambilan Rata-Rata
1 2 3 4 5 6 7 8 9 10
RUT 28 28 26 28 26 26 26 28 28 26 27
DAMAI 29 29 31 29 31 29 29 29 31 31 30
JESIKA 33 33 34 34 33 33 34 34 33 33 33
PUTRI 38 39 39 39 38 38 39 38 38 38 38
EZRA 43 41 41 43 43 41 43 41 43 43 42
Tabel L2.8 Proses Penentuan Range untuk Look Up Table dengan Frame Blocking 64
Suara Rata-Rata Selisih
RUT 27 3
DAMAI 30
DAMAI 30 3
JESIKA 33
JESIKA 33 5
PUTRI 38
PUTRI 38 6
EZRA 42
Dari hasil yang terdapat pada Tabe L2.8, maka diperoleh range untuk look up
table dengan frame blocking 128 adalah 3. Nilai range ini diperoleh dari selisih terkecil
dari setiap suara. Kemudian selisih terkecil tersebut digunakan sebagai range atas dan
range bawah.
Berikut merupakan contoh plot sinyal suara DAMAI pada sinyal FFT untuk
menentukan range pada look up table dengan frame blocking 256 :
Gambar L2.14 Sinyal Suara DAMAI_1 Pada Sinyal FFT Pada Frame Blocking 256
Gambar L2.15 Sinyal Suara DAMAI_2 Pada Sinyal FFT Pada Frame Blocking 256
Gambar L2.16 Sinyal Suara DAMAI_3 Pada Sinyal FFT Pada Frame Blocking 256
Gambar diatas merupakan contoh dari proses penentuan range untuk look up
table pada frame blocking 256 dilakukan sebanyak 10 kali pengambilan data pada
masing-masing suara. Tabel L2.9 memperlihatkan proses pengambilan nilai indeks
maksimum untuk nilai range pada look up table.
Tabel L2.9 Proses Pengambilan Nilai Indeks Maksimum Dengan Look Up Table dengan
Frame Blocking 256
Suara Pengambilan Rata-Rata
1 2 3 4 5 6 7 8 9 10
RUT 54 54 54 53 54 53 53 55 54 55 54
DAMAI 57 64 61 57 59 57 64 57 61 64 60
JESIKA 66 68 66 66 67 66 66 68 68 66 67
PUTRI 75 74 74 76 75 74 74 76 75 76 75
EZRA 81 80 79 81 80 81 81 80 79 81 80
Tabel L2.10 Proses Penentuan Range untuk Look Up Table dengan Frame Blocking 256
Suara Rata-Rata Selisih
RUT 54 6
DAMAI 60
DAMAI 60 7
JESIKA 67
JESIKA 67 8
PUTRI 75
PUTRI 75 5
EZRA 80
Dari hasil yang terdapat pada Tabe L2.10, maka diperoleh range untuk look up
table dengan frame blocking 256 adalah 5. Nilai range ini diperoleh dari selisih terkecil
dari setiap suara. Kemudian selisih terkecil tersebut digunakan sebagai range atas dan
range bawah.
LAMPIRAN 3
PROSES MENYELURUH YANG DICERMINKAN DALAM BENTUK DIAGRAM
Mulai
Masukan
Suara.wav
Normalisasi
Gambar L3.1 Contoh Sinyal Suara Perekaman
Pemotongan Sinyal
Bagian Silence
Pemotongan Sinyal
Bagian Transisi Gambar L3.3 Contoh Pemotongan Sinyal Bagian Silence
Frame Blocking
Hamming Window
Keluaran Teks
Suara
Selesai
LAMPIRAN 4
LISTING PROGRAM PENGENALAN SUARA
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @guirut_OpeningFcn, ...
'gui_OutputFcn', @guirut_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% --- Outputs from this function are returned to the command line.
function varargout = guirut_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of
MATLAB
% handles structure with handles and user data (see GUIDATA)
% Batas Potong
b0=0.3;
%Normalisasi
y1=x/max(x);
% Pemotongan Sinyal
% 1. Potong
b1=find(y1>b0 | y1<-b0);
y1(1:b1(1))=[];
% 2. Potong 2
bts=floor(0.25*length(y1));
y1(1:bts)=[];
% Frame blocking
frame=handles.frame
y2=y1(1:frame);
% Windowing
h=hamming(frame);
y3=y2.*h;
function suaraout=lut16(imax,handles)
% Penentu keluaran text untuk LUT dengan
% frame blocking 16 titik
if imax>=1 && imax<=2
suaraout={'RUT'};
set(handles.edit1,'string',suaraout)
elseif imax>=3 && imax<=4
suaraout={'DAMAI'};
set(handles.edit1,'string',suaraout)
elseif imax>=5 && imax<=6
suaraout={'JESIKA'};
set(handles.edit1,'string',suaraout)
elseif imax>=7 && imax<=8
suaraout={'PUTRI'};
set(handles.edit1,'string',suaraout)
elseif imax>=9 && imax<=10
suaraout={'EZRA'};
set(handles.edit1,'string',suaraout)
else
suaraout={'ERROR'};
set(handles.edit1,'string',suaraout)
end
function suaraout=lut32(imax,handles)
% Penentu keluaran text untuk LUT dengan
% frame blocking 32 titik
if imax>=4 && imax<=5
suaraout={'RUT'};
set(handles.edit1,'string',suaraout)
elseif imax>=6 && imax<=7
suaraout={'DAMAI'};
set(handles.edit1,'string',suaraout)
elseif imax>=8 && imax<=9
suaraout={'JESIKA'};
set(handles.edit1,'string',suaraout)
function suaraout=lut64(imax,handles)
% Penentu keluaran text untuk LUT dengan
% frame blocking 64 titik
if imax>=6 && imax<=7
suaraout={'RUT'};
set(handles.edit1,'string',suaraout)
elseif imax>=8 && imax<=9
suaraout={'DAMAI'};
set(handles.edit1,'string',suaraout)
elseif imax>=10 && imax<=11
suaraout={'JESIKA'};
set(handles.edit1,'string',suaraout)
elseif imax>=12 && imax<=13
suaraout={'PUTRI'};
set(handles.edit1,'string',suaraout)
elseif imax>=14 && imax<=15
suaraout={'EZRA'};
set(handles.edit1,'string',suaraout)
else
suaraout={'ERROR'};
set(handles.edit1,'string',suaraout)
end
function suaraout=lut128(imax,handles)
% Penentu keluaran text untuk LUT dengan
% frame blocking 128 titik
if imax>=26 && imax<=28
suaraout={'RUT'};
set(handles.edit1,'string',suaraout)
elseif imax>=29 && imax<=31
suaraout={'DAMAI'};
set(handles.edit1,'string',suaraout)
elseif imax>=32 && imax<=34
suaraout={'JESIKA'};
set(handles.edit1,'string',suaraout)
elseif imax>=37 && imax<=39
suaraout={'PUTRI'};
set(handles.edit1,'string',suaraout)
function suaraout=lut256(imax,handles)
% Penentu keluaran text untuk LUT dengan
% frame blocking 256 titik
if imax>=52 && imax<=56
suaraout={'RUT'};
set(handles.edit1,'string',suaraout)
elseif imax>=57 && imax<=64
suaraout={'DAMAI'};
set(handles.edit1,'string',suaraout)
elseif imax>=65 && imax<=70
suaraout={'JESIKA'};
set(handles.edit1,'string',suaraout)
elseif imax>=75 && imax<=80
suaraout={'PUTRI'};
set(handles.edit1,'string',suaraout)
elseif imax>=81 && imax<=85
suaraout={'EZRA'};
set(handles.edit1,'string',suaraout)
else
suaraout={'ERROR'};
set(handles.edit1,'string',suaraout)
end
CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
LAMPIRAN 5
GAMBAR PERANCANGAN ALAT PENELITIAN