Sie sind auf Seite 1von 14

SPEECH RECOGNITION

Pertemuan Ke-14
2015-2016

Kompresi Data Suara


STATISTICAL COMPRESSION:
ALGORITMA ARITHMETIC CODING
Dr. R. Rizal Isnanto, ST, MM, MT
Andi Widiasmoro, ST, M.Kom

Algoritma Arithmetic Coding


Merupakan algoritma statistik yang tidak menggunakan
kode prefiks, tapi melalui pengkodean langsung

Algoritma Shannon Fano dan Huffman, menghitung


sebuah kode untuk setiap huruf dalam stream input
Seringkali tingkat informasi rata-rata (entropi) sebuah huruf
bisa sama dengan bilangan pecahan, padahal kode nyata
yang dihitung pasti mempunyai jumlah bit bilangan bulat,
sehingga bisa dikatakan algoritma tidak dapat menghitung
kode secara optimal
Algoritma Arithmetic Coding cukup menghitung satu kode
saja untuk seluruh pesan, tidak satu kode per huruf

Entropi
Entropi = ukuran yang menyatakan jumlah informasi di
dalam pesan
Biasanya dinyatakan dalam satuan bit
Entropi berguna untuk memperkirakan jumlah bit ratarata untuk mengkodekan elemen dari pesan
Contoh: entropi untuk pesan yang menyatakan jenis
kelamin = 1 bit, entropi untuk pesan yang menyatakan
nama hari = 3 bit

Entropi
Secara umum, entropi pesan dihitung dengan
rumus:
n

H ( X ) a log( p( S ))
i i

X = pesan
Si = simbol ke-i di dalam pesan
p(Si) = peluang kemunculan Si
ai = jumlah kemunculan Si

Entropi
Contoh: pesan X = AABBCBDB
n = 4 (A, B, C, D)
p(A) = 2/8, p(B) = 4/8
p(C) = 1/8, p(D) = 1/8
H(x) = -2 2log(2/8) - 4 2log(4/8) -1 2log(1/8) - 1 2log(1/8)
= 4 + 4 + 3 + 3 = 14 bit
Entropi rata-rata = 14/4 = 1,75 bit per simbol

Algoritma Arithmetic Coding Tak Adaptif


Pada Arithmetic Coding pesan inputan dirangkaikan
dengan satu tanda khusus yang tidak muncul dalam pesan
inputan EOF (End of File)
Tanda EOF digunakan dalam proses dekompresi, untuk
menunjukkan proses dekompresi sudah selesai
Nilai EOF harus muncul di perhitungan statistik dengan
kardinalitas 1
Contoh : gadjamada

Contoh Perhitungan

Arithmetic Coding memecah interval dari 0,0 sampai ke


1,0 ke beberapa interval bagian yang ukurannya sesuai
dengan persentase huruf masing-masing

Contoh Perhitungan
Implementasi kompresi dengan algoritma Arithmetic
Coding menggunakan 2 array bantuan, yaitu low_range
dan high-range
Array low_range menyimpan batasan minimal untuk
interval bagian huruf dalam interval 0,0 1,0
Array high_range menyimpan nilai maksimumnya
Misal :
low_range [a] = 0, high_range[a] = 0.4

Contoh Perhitungan

Huruf g LOW [g] = 0,6 HIGH [g] = 0.7 range = 0,7 - 0,6 = 0,1
Huruf a LOW [a] = LOW [g] + range [g] * low_range[a]
= 0,6 + 0,1*0 = 0,6 + 0 = 0,6
HIGH [a] = LOW [g] + range [g] * high_range[a]
= 0,6 + 0,1*0,4 = 0,6 + 0,04 = 0,64
range [a] = 0,64 0,6 = 0,04
Huruf d LOW [d] = LOW [a] + range [a] * low_range[d]
= 0,6 + 0,04*0,4 = 0,6 + 0,016 = 0,616
HIGH [d] = LOW [a] + range [a] * high_range[d]
= 0,6 + 0,04*0,6 = 0,6 + 0,024 = 0,624
range [d] = 0,624 0,616 = 0,008 .dan seterusnya

Contoh Perhitungan
Bisa diteruskan untuk huruf-huruf berikutnya sampai
dengan EOF, kemudian masukkan ke tabel:

Bagaimana proses dekompresinya?


Bilangan [1] = Kode [1] = g sudah jelas
Bilangan [2] = (Bilangan[1] low_range[g])/range[g]
= (0,62186204165 0,6)/0,1
= 0,02186204165 / 0,1
= 0,2186204165 0,218620417(dibulatkan)

Ada di kisaran [0..0,4] Huruf a

Bagaimana proses dekompresinya?

Bilangan [3] = (Bilangan[2] low_range[a])/range[a]


= (0,2186204165 0)/0,4
= 0,2186204165 / 0,4
= 0,546551041
Ada di kisaran [0,4..0,6] Huruf d

Bagaimana proses dekompresinya?


Diperoleh tabel sebagai berikut

TERIMA KASIH

Das könnte Ihnen auch gefallen