BAB IV. ANALISIS DAN PERANCANGAN PERANGKAT LUNAK Bab ini menjelaskan tentang analisis kebutuhan dan perancangan perangkat lunak sebagai implementasi digital watermarking pada berkas WAV dengan menggunakan teknik Time Base Modulation yang diberi nama TBMWav. Pembahasan mengenai tahap analisis perangkat lunak dibagi menjadi analisis kebutuhan, tujuan pengembangan, batasan rancangan sistem dan aliran informasi. Pembahasan mengenai tahap perancancangan perangkat lunak dibagi menjadi perancangan struktur data, batasan perancangan serta dekomposisi modul. IV.1 Analisis Perangkat lunak TBMWav memiliki fungsionalitas utama yaitu fungsi penyisipan tanda air (encoding) dan pengambilan kembali tanda air (decoding). Pada proses penyisipan diperlukan masukan berupa berkas suara WAV dan berkas tanda air berformat teks, proses ini menghasilkan keluaran berupa berkas WAV yang telah diberi tanda air. Pada proses ekstraksi tanda air diperlukan masukan berupa berkas WAV asal, berkas WAV bertanda air dan berkas tanda air asal, proses ini menghasilkan berkas tanda air. IV.1.1 Analisis Kebutuhan Analisis kebutuhan perangkat lunak yang akan dibangun adalah sebagai berikut: 1. Mampu membagi data audio menjadi fragmen-fragmen waktu 2. Mampu melakukan pemanjangan dan pemendekan pada fragmen waktu untuk proses penyisipan tanda air 3. Mampu menemukan tanda air dari audio yang telah disisipi. IV.1.2 Tujuan Pengembangan Perangkat lunak ini dikembangkan dengan tujuan untuk dapat menyisipkan tanda air ke dalam sinyal audio berformat WAV dengan menggunakan teknik time base modulation, dengan berkas tanda air adalah sekumpulan string biner (string dengan isi deretan 0 dan 1 saja), perangkat lunak ini juga harus dapat melakukan proses ekstraksi tanda air yang telah disisipkan. IV-1
IV-2 IV.1.3 Batasan Rancangan Sistem Batasan rancangan sistem dalam pengembangan perangkat lunak ini ialah: 1. Tanda air yang disisipkan berupa file teks dalam bentuk string biner dalam format.txt 2. Berkas audio yang digunakan adalah berkas WAV tak terkompresi. IV.1.4 Aliran Informasi Dalam sub bab ini dijelaskan aliran informasi yang terjadi dalam perangkat lunak yang akan dibangun. Aliran informasi ini meliputi contex diagram dan DFD proses-proses yang ada. DFD hanya dibuat untuk proses-proses utama yang dipandang perlu untuk dijelaskan lebih lanjut. IV.1.4.1 Contex Diagram Pada perangkat lunak ini hanya ada satu jenis pengguna. Pengguna memberikan masukan berkas audio WAV asli dan berkas teks tanda air kepada perangkat lunak. Perangkat lunak akan melakukan penyisipan tanda air ke dalam berkas audio asli dan mengembalikannya sebagai berkas audio baru bertanda air. Proses pengambilan kembali tanda air dilakukan dengan cara memberi masukan berkas audio WAV asli, berkas audio bertanda air dan berkas tanda air awal kepada perangkat lunak. Perangkat lunak akan membandingkan kedua berkas untuk mendapatkan kembali tanda air itu. Kedua proses ini dapat dilihat pada Gambar IV-1. File teks watermark asli File audio asli File audio asli Pengguna File audio berwatermark 0 TMBWav + File teks watermark asli Pengguna File teks watermark keluaran File audio berwatermark Gambar IV-1: Context Diagram TMBWav IV.1.4.2 DFD Level 1 Fungsi utama perangkat lunak adalah fungsi penyisipan tanda air ke dalam berkas audio, disebut juga encoding, dan fungsi pengambilan tanda air dari dalam berkas audio atau decoding (Gambar IV-2). Penjelasan proses encoding dan decoding dapat dilihat dalam Tabel IV-1.
IV-3 1 Encoding + Teks tanda air File teks tanda air asli Audio asli Audio bertanda air File audio asli File audio bertanda air Teks tanda air Audio asli Audio bertanda air 2 Decoding + Teks tanda air keluaran File teks tanda air keluaran Gambar IV-2: DFD Level 1 Tabel IV-1: Tabel Proses DFD Level 1 Encoding Decoding Melakukan penyisipan teks tanda air pada berkas audio 1. berkas teks tanda air 2. berkas audio WAV asli 1. berkas audio bertanda air Melakukan penngambilan tanda air dari berkas audio bertanda air 1. berkas audio bertanda air 2. berkas audio WAV asli 3. berkas teks tanda air asli 1. berkas teks tanda air keluaran
IV-4 IV.1.4.3 DFD Level 2 Proses Encoding Proses encoding (Gambar IV-3) dibagi menjadi delapan sub proses yaitu membuka berkas audio masukan, membuka berkas teks tanda air, membuat berkas WAV keluaran, inisiasi phase vocoder input dan output, membaca berkas WAV per segmen waktu, membuat frame dari tiap segmen, memproses frame, terakhir menulis berkas WAV keluaran. Lebih jelasnya dapat mengacu pada Tabel IV-2. File teks tanda air 1.1 Membuka file teks tanda air Teks_tanda_air Paremeter perubahan waktu Teks_tanda_air Pengguna File audio asli Parameter optional 1.4 Menginisialisasi phase vocoder input dan output Phase vocoder output 1.2 Membuka file wav Phase vocoder input Data berkas wav 1.5 Membaca wav per segmen Segmen wav masukan 1.6 membuat frame wav frame 1.7 Memproses frame Segmen wav keluaran 1.3 Membuat file wav keluaran Berkas wav keluaran 1.8 Menulis file wav keluaran berkas_wav _keluaran Gambar IV-3: DFD Level 2 Proses Encoding Tabel IV-2: Proses DFD Level 2 Proses Encoding Membuka file teks tanda air Membuka berkas teks tanda air dan menyimpan isinya ke dalam memori. 1. berkas teks tanda air
IV-5 Membuka file wav Membuat file keluaran Menginisiasi phase vocoder input dan output 1. teks tanda air Membuka berkas WAV, melakukan analisa chunk format dan header berkas tersebut dan mendapatkan datanya. 1. berkas WAV 1. data berkas WAV Membuat berkas keluaran dan mengeset header dan chunk format dari berkas keluaran tersebut. 1. nama berkas 1. berkas WAV tanpa chunk data Menginisiasi phase vocoder input dan output berdasarkan parameter masukan. 1. bit tanda air menentukan pemanjangan atau pemendekan atau besar skala perubahan. 2. skala perubahan menentukan besar perubahan terhadap fragmen waktu. 3. mode menentukan mode dari phase vocoder 4. tipe skala menentukan tipe perubahan skala. 5. window type menentukan tipe window yang dipakai. 6. fftlen menentukan jumlah sampel per window. 7. sample rate
IV-6 Membaca WAV per segmen Membuat frame wav Memproses frame Menulis file keluaran menentukan sample rate, nilainya didapat dari berkas WAV masukan 8. overlap type menentukan besar overlap antar-window 1. input phase vocoder 2. output phase vocoder Membaca berkas WAV per segmen 1. Berkas WAV yang akan dibaca 2. Besar segmen 1. Segmen WAV Input phase vocoder membuat frame untuk tiap segmen waktu. 1. faktor desimasi 2. segmen wav 3. tipe frame 1. frame WAV Output phase vocoder memproses frame hasil dari input phase vocoder. 1. frame wav 2. tipe frame 1. frame WAVtermodifikasi Menulis ke dalam berkas keluaran per segmen waktu. Masukkan: 1. berkas keluaran 2. segmen waktu
IV-7 1. berkas WAV keluaran IV.1.4.4 DFD Level 2 Proses Decoding Proses decoding (Gambar IV-4) dibagi menjadi tujuh sub proses, yaitu membuka berkas WAV, membaca berkas WAV per segmen, membuka file teks, mencari panjang teks tanda air, membandingkan segmen-segmen tersebut, membuat berkas teks tanda air dan menuliskan tanda air hasil proses pembandingan segmen berkas audio ke dalam berkas teks tanda air. Lebih jelasnya dapat mengacu pada Tabel IV-3. File audio asli Pengguna File audio bertanda air 2.1 Membuka file wav Berkas audio asli File teks tanda air asli 2.3 Membuka file teks teks tanda air asli Berkas audio bertanda air Segmen audio asli 2.2 Membaca wav per segmen 2.4 Mencari panjang teks tanda air Panjanga teks tanda air 2.5 Membandingkan antar segmen + Segmen audio bertanda air Bit tanda air 2.6 Membuat file teks tanda air file tanda air keluaran 2.7 Menulis berkas teks tanda air File teks tanda air keluaran Gambar IV-4: DFD Level 2 Proses Decoding
IV-8 Tabel IV-3: Proses DFD Level 2 Proses Decoding Membuka file wav Membaca WAV per segmen Membuka file teks Menghitung panjang teks Membandingkan antarsegmen Membuka berkas wav, melakukan analisa chunk format dan header berkas tersebut dan mendapatkan datanya. 1. berkas WAV 1. data berkas WAV Membaca berkas WAV per segmen 1. Berkas WAV yang akan dibaca 2. Besar segmen 1. Segmen WAV Membuka berkas teks tanda air 1. berkas teks tanda air 1. teks tanda air Menghitung panjang teks tanda air 1. teks tanda air 1. panjang teks tanda air Membandingkan segmen WAV asli dengan segmen WAV bertanda air untuk mencari tanda air yang disisipkan 1. Segmen WAV asli 2. Segmen WAV bertanda air 3. Panjang tanda air tanda air asli
IV-9 Membuat berkas teks tanda air Menulis berkas teks tanda air 1. Bit tanda air Menginisiasi berkas teks penampung tanda air 1. Nama berkas 1. Berkas teks Menulis bit-bit tanda air ke dalam berkas teks tanda air. 1. Bit tanda air 1. Berkas teks berisi tanda air IV.1.4.5 DFD Level 3 Proses Membandingkan Antarsegmen Proses ini adalah inti dari proses decoding, pada proses ini (Gambar IV-5) tiap segmen WAV dikenai proses FFT untuk mendapatkan representasi spektralnya (frekuensi dan magnitude yang bersesuaian). Komponen spektral tesebut kemudian dijumlahkan. Hasil penjumlahan komponen spektral segment berkas asli akan dibandingkan dengan dibandingkan hasil penjumlahan komponen spektral segmen yang bersesuaian dari berkas bertanda air. Untuk lebih jelasnya lihat Gambar IV-5. Penjelasan proses-proses pada Gambar IV-5 dapat dilihat pada Tabel IV-4. Tabel IV-4: Proses DFD Level 3 Proses membandingkan segmen FFT Mengenakan Fast Fourrier Transform pada masing-masing segmen berdasarkan besar window FFT. 1. Segment WAV 2. Besar window FFT 1. Data analisis spektral segmen
IV-10 Menjumlahkan magnitude Membuat perbandingan antara dua buah segmen terdekat Membandingkan hasil perbandingan Menjumlahkan magnitude per segmen 1. Data analisis spektral segmen 1. Data magnitude total segmen Membuat perbandingan jumlah magnitude antara dua buah segmen. Caranya dengan mengurangi data magnitude total suatu segmen dengan segmen yang mendahului. 1. Data magnitude total segmen 1. Data perbandingan magnitude Membandingkan data perbandingan magnitude antara segmen bertanda air dengan segmen asli, untuk setiap segmen yang bersesuaian antara berkas asli dengan berkas keluaran. 1. Data perbandingan magnitude segmen bertanda air 2. Data perbandingan magnitude segmen asli 1. Bit tanda air
IV-11 Segmen berkas WAV asli 2.5.1 FFT Data analisis frekuensi segmen asli Segmen berkas WAV bertanda air Data analisis frekuensi segmen bertanda air 2.5.2 Menjumlahkan magnitude Data penjumlahan magnitude segment asli Data penjumlahan magnitude segment bertanda air 2.5.3 Membuat perbandingan antar dua segmen terdekat Data hasil perbandingan segmen bertanda air Panjang teks tanda air 2.5.4 Membandingkan hasil perbandingan Data hasil perbandingan segmen asli Bit tanda air Gambar IV-5: DFD Level 3 Proses membandingkan segmen IV.2 Perancangan Dalam sub bab ini akan dijelaskan tahap perancangan hasil dari tahap analisis perangkat lunak. Tahap perancangan ini menjelaskan tentang perancangan struktur data, batasan perancangan dan dekomposisi modul. IV.2.1 Perancangan Struktur Data Perangkat lunak ini akan memakai struktur data: 1. Struktur data phasevocoder tidak dirancang dalam tugas akhir ini. 2. Struktur data riffwav_fmt akan dipakai untuk merepresentasikan format dari berkas audio. Tipe bentukan riffwav_fmt mempunyai elemen-elemen: jumlah channel audio
IV-12 (nchannels), jumlah sampel per detik (nsamplespersec), rata-rata jumlah byte per detik (navgbytespersec), jumlah block align (nblockallign), jumlah bit per sampel (wbitspersample). riffwav_waveformat = < nchannels : integer tak bertanda nsamplespersec : integer tak bertanda navgbytespersec : integer tak bertanda nblockalign : integer tak bertanda wbitspersample : integer tak bertanda > 3. Struktur data riffwav_struct akan dipakai untuk merepresentasikan berkas WAV. riffwav_struct adalah tipe bentukan dengan elemen-elemen: berkas audio itu sendiri (file), nama berkas audio (filename), ukuran berkas audio (filesize), pencatat posisi frame saat ini, untuk proses pembacaan data (curframepos), jumlah frame (nframes), letak data audio (dataoffset), letak data peak, data format audio (fmt), dan data channel(s) peak (ppeaks). riffwav_struct = < file : FILE filename : string; filesize : integer tak bertanda curframepos : integer tak bertanda nframes : integer tak bertanda dataoffset : integer tak bertanda fmtoffset : integer tak bertanda peakoffset : integer tak bertanda fmt : riffwav_waveformat ppeaks : wav_chpeak > 4. Struktur data wav_chpeak akan dipakai untuk merepresentasikan channel peak. Tipe bentukan mempunyai dua elemen, nilainya (val) dan posisinya (pos). wav_chpeak = < val : float pos : integer tak bertanda > IV.2.2 Batasan Perancangan Batasan dari perancangan ini adalah: 1. Berkas audio yang diterima dan dihasilkan hanya berkas bertipe WAV 2. Berkas teks tanda air berisi bilangan biner.
IV-13 IV.2.3 Dekomposisi Modul Perangkat lunak ini dapat dibagi menjadi tiga modul utama yaitu modul phase vocoder, modul riffwav, modul encoding dan decoding. IV.2.3.1 Modul Phase Vocoder Modul ini tidak dikembangkan dalam pembuatan perangkat lunak ini. Modul ini dibuat oleh Richard Dobson. Penjelasan lebih lanjut mengenai modul ini dapat mengacu sub bab III.1.1. Modul ini didapat dari alamat: http://dream.cs.bath.ac.uk/researchdev/pvocex/pvocex2_src01.zip, revisi terakhir dari modul ini adalah 5 Agustus 2000. IV.2.3.2 Modul Riffwav Modul ini berisi tentang format data berkas WAV dan operasi-operasi pada berkas tersebut. Operasi yang didukung adalah membuka untuk membaca dan menulis, membaca dan menulis header berkas WAV, membaca dan menulis chunk format WAV, membaca dan menulis chunk data berkas WAV. IV.2.3.3 Modul Encoding dan Decoding Modul ini berisi proses encoding atau penyisipan tanda air, dan proses decoding atau pengambilan kembali tanda air. Modul ini adalah modul utama dari perangkat lunak yang dibangun.