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.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.
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.
Gambar IV-1: Context Diagram TMBWav
Pengguna File teks watermark asli
File audio asli
File audio berwatermark Pengguna
0 TMBWav
+ File audio berwatermark
File audio asli
File teks watermark keluaran File teks watermark asli
Tabel IV-1: Tabel Proses DFD Level 1
Nama Proses Deskripsi
Encoding Melakukan penyisipan teks tanda air pada
berkas audio Masukan:
1. berkas teks tanda air 2. berkas audio WAV asli Keluaran:
1. berkas audio bertanda air
Decoding Melakukan penngambilan tanda air dari berkas
audio bertanda air Masukan:
1. berkas audio bertanda air 2. berkas audio WAV asli 3. berkas teks tanda airasli Keluaran:
1. berkas teks tanda airkeluaran Gambar IV-2: DFD Level 1
1 Encoding
+
Audio bertanda air
File audio asli
File teks tanda air asli Teks tanda air
Audio asli
2 Decoding
+
File audio bertanda air
Audio bertanda air
File teks tanda air keluaran Teks tanda air
keluaran Audio asli
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.
Tabel IV-2: Proses DFD Level 2 Proses Encoding
Nama Proses Deskripsi
Membuka file teks tanda air Membuka berkas teks tanda air dan menyimpan
isinya ke dalam memori. Masukan:
1. berkas teks tanda air Gambar IV-3: DFD Level 2 Proses Encoding
1.2 Membuka file
wav
1.1 Membuka file teks tanda air
Pengguna
File teks tanda air
File audio asli
1.3 Membuat file wav keluaran 1.4 Menginisialisasi phase vocoder input dan output Parameter optional
1.5 Membaca wav
per segmen Data berkas wav
1.6 membuat frame wav Phase vocoder input
Segmen wav masukan
1.7 Memproses
frame Paremeter perubahan waktu
Phase vocoder output Teks_tanda_air
Teks_tanda_air
berkas_wav _keluaran frame
Segmen wav keluaran
1.8 Menulis file wav
keluaran Berkas wav keluaran
Keluaran:
1. teks tanda air
Membuka file wav Membuka berkas WAV, melakukan analisa
chunk format dan header berkas tersebut dan mendapatkan datanya.
Masukan: 1. berkas WAV Keluaran:
1. data berkas WAV
Membuat file keluaran Membuat berkas keluaran dan mengeset header
dan chunk format dari berkas keluaran tersebut. Masukan:
1. nama berkas Keluaran:
1. berkas WAV tanpa chunk data
Menginisiasi phase vocoder input dan output Menginisiasi phase vocoder input dan output berdasarkan parameter masukan.
Masukan: 1. bit tanda air
menentukan pemanjangan atau pemendek-an atau besar skala perubahpemendek-an.
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.
Nama Proses Deskripsi
menentukan sample rate, nilainya didapat dari berkas WAV masukan
8. overlap type
menentukan besar overlap antar-window Keluaran:
1. input phase vocoder 2. output phase vocoder
Membaca WAV per segmen Membaca berkas WAV per segmen
Masukan:
1. Berkas WAV yang akan dibaca 2. Besar segmen
Keluaran:
1. Segmen WAV
Membuat frame wav Input phase vocoder membuat frame untuk tiap
segmen waktu. Masukan: 1. faktor desimasi 2. segmen wav 3. tipe frame Keluaran: 1. frame WAV
Memproses frame Output phase vocoder memproses frame hasil
dari input phase vocoder. Masukan:
1. frame wav 2. tipe frame Keluaran:
1. frame WAVtermodifikasi
Menulis file keluaran Menulis ke dalam berkas keluaran per segmen
waktu. Masukkan:
1. berkas keluaran 2. segmen waktu
Keluaran:
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.
Gambar IV-4: DFD Level 2 Proses Decoding
2.1 Membuka file
wav Pengguna
File audio asli
File audio bertanda air
2.2 Membaca wav
per segmen Berkas audio bertanda air
Berkas audio asli
2.5 Membandingkan antar segmen + 2.7 Menulis berkas
teks tanda air 2.6
Membuat file teks tanda air
File teks tanda air keluaran Segmen audio asli
Segmen audio bertanda air
Bit tanda air
file tanda air keluaran File teks tanda air asli
2.3 Membuka file
teks teks tanda air asli
2.4 Mencari panjang teks
tanda air
Tabel IV-3: Proses DFD Level 2 Proses Decoding
Nama Proses Deskripsi
Membuka file wav Membuka berkas wav, melakukan analisa chunk
format dan header berkas tersebut dan mendapatkan datanya.
Masukan: 1. berkas WAV Keluaran:
1. data berkas WAV
Membaca WAV per segmen Membaca berkas WAV per segmen
Masukan:
1. Berkas WAV yang akan dibaca 2. Besar segmen
Keluaran:
1. Segmen WAV
Membuka file teks Membuka berkas teks tanda air
Masukan:
1. berkas teks tanda air Keluaran:
1. teks tanda air
Menghitung panjang teks Menghitung panjang teks tanda air
Masukan:
1. teks tanda air Keluaran:
1. panjang teks tanda air
Membandingkan antarsegmen Membandingkan segmen WAV asli dengan
segmen WAV bertanda air untuk mencari tanda air yang disisipkan
Masukan:
1. Segmen WAV asli
2. Segmen WAV bertanda air 3. Panjang tanda air tanda airasli
Keluaran: 1. Bit tanda air
Membuat berkas teks tanda air Menginisiasi berkas teks penampung tanda air
Masukan: 1. Nama berkas Keluaran:
1. Berkas teks
Menulis berkas teks tanda air Menulis bit-bit tanda air ke dalam berkas teks
tanda air. Masukan:
1. Bit tanda air Keluaran:
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
Nama Proses Deskripsi
FFT Mengenakan Fast Fourrier Transform
pada masing-masing segmen berdasar-kan besar window FFT.
Masukan:
1. Segment WAV 2. Besar window FFT Keluaran:
Nama Proses Deskripsi
Menjumlahkan magnitude Menjumlahkan magnitude per segmen
Masukan:
1. Data analisis spektral segmen Keluaran:
1. Data magnitude total segmen Membuat perbandingan antara dua buah segmen
terdekat
Membuat perbandingan jumlah
magnitude antara dua buah segmen. Caranya dengan mengurangi data
magnitude total suatu segmen dengan segmen yang mendahului.
Masukan:
1. Data magnitude total segmen Keluaran:
1. Data perbandingan magnitude
Membandingkan hasil perbandingan Membandingkan data perbandingan
magnitude antara segmen bertanda air dengan segmen asli, untuk setiap segmen yang bersesuaian antara berkas asli dengan berkas keluaran.
Masukan:
1. Data perbandingan magnitude
segmen bertanda air
2. Data perbandingan magnitude
segmen asli Keluaran:
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
Gambar IV-5: DFD Level 3 Proses membandingkan segmen
2.5.1 FFT
Segmen berkas WAV bertanda air Segmen berkas WAV asli
2.5.2 Menjumlahkan magnitude 2.5.3 Membuat perbandingan antar dua segmen terdekat
2.5.4 Membandingkan
hasil perbandingan
Bit tanda air Data analisis frekuensi
segmen bertanda air
Data analisis frekuensi segmen asli
Data penjumlahan magnitude segment asli
Data penjumlahan magnitude segment bertanda air
Data hasil perbandingan segmen asli Data hasil perbandingan segmen bertanda air
(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.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.