PERCOBAAN 8
EKSTRAKSI CIRI PADA SINYAL
SPEECH
Tujuan Praktikum
-
Mahasiswa mampu melakukan estimasi frekuensi fundamental sinyal speech dengan pengamatan
frekens spektrum dan bentuk gelombangnya
-
Mahasiswa mampu menggambarkan bentuk kuefrensi dan cepstrum sinyal
speech.
8.1 Dasar
Teori
8.1.1 Autokorelasi
Sinyal Speech
Tujuan melakukan estimasi
dalam domain waktu adalah untuk mendapatkan nilai autokorelasi sinyal speech.
Nilai autokorelasi suatu sinyal wicara akan menunjukkan bentuk gelombang itu yang
membentuk suatu korelasi pada dirisnya sendiri sebagai fungsi perubahan waktu.
Bentuk-bentuk yang sama atau mirip pada perioda tertentu menunjukkan perulangan
bentuk yang menjadi pola dari sinyal wicara. Dengan demikian akan dapat kita lakukan estimasi nilai frekuensi
fundamentalnya.
Gambar 8.1. Sinyal Wicara dalam Bentuk Gelombang,
dan Fungsi Auto Korelasi
8.1.2 Analisa Spectral Sinyal Spech
Proses
ekstraksi ciri sinyal speech
didasarkan pada sebuah diagram blok yang cukup popular seperti berikut.
Gambar 8.2 Diagram
Blok Ekstraksi Ciri Sinyal Wicara
Dengan mengikuti diagram blok di atas, kita akan
mendapatkan langkah-demi langkah ekstraksi ciri. Pada Sub Bab ini pembicaraan
berkisar pada proses melihat short time fourier analisys dari sinyal speech, atau yang juga kita kenal
sebagai power spectral density (PSD) sebuah sinyal speech pada durasi atau frame tertentu. Dengan mengetahui bentuk PSD sinyal wicara kita
akan mampu melakukan ekstraksi ciri sinyal wicara tersebut. Target akhir
sub bab ini dalah mencari bentuk power spectral density (PSD). Sebelum
proses pada Gambar di atas dilakukan ada baiknya kita melihat gambaran sebuah
sinyal speech yang telah kita simpan
dalam bentuk file “a.wav”. Setelah kita dapatkan bentuknya dalam domain
waktu seperti pada Gambar 8.3 bagian atas, selanjutnya kita coba melihatnya
sebagai fungsi dari sampling. Dalam hal ini kita lihat bentuk sinyal wicara
sesuai dengan urutan sampel yang ada. Seperti kita lihat bahwa untuk nilai
sampel ke-700 sampai dengan sampel ke-8200, menunjukkan nilai magnitudo sinyal
yang relatif stabil.
Kita lanjutkan dengan melakukan pembentukan frame
sebuah sinyal wicara seperti pada Gambar 8.4 bagian atas. Dengan melakukan
windowing kita akan mendapatkan bentuk frame sinyal wicara terwindow seperti
pada Gambar 8.4 bagian bawah. Sudah tentu kita paham untuk apa proses windowing
dilakukan disini. Dengan demikian tidak salah apabila kita mengambil satu frame
sinyal dari sampel ke-2000 sampai dengan sampel ke 2480. Karena dalam satu frame
kita bentuk dari:
Sampel/frame = (sample/detik)*(detik/frame)
= 16000 * 0,06= 480 sampel/frame
Hal ini dilakukan dengan menetapkan bahwa satu frame
sinyal wicara sepanjang 50 ms.
Gambar 8.3. Sinyal
Wicara dalam Domain Waktu dan Sebagai Fungsi Sampel ke-n
Gambar 8.4. Satu Frame Sinyal Wicara dalam Domain Waktu
Proses dilanjutkan dengan
melakukan transformasi sinyal ke dalam domain frkeuensi. Dengan menggunakan fft
dan proses logaritmik akan kita dapatkan nilai power spectral density(PSD)
sinyal wicara seperti pada Gambar 8.5.
Gambar 8.5. Power
Spectral Density Sinyal Speech
8.1.3 Cepstrum
Sinyal Speech
Cepstrum c(Ï„)
didefiniskan sebagai inverse transformasi Fourier pada short-time nilai
logarithmik spektrum amplitudo sebuah sinyal, |X(ω)|. Jika log amplitudo spectrum
tersusun dari banyak spasi harmonik yang teratur, maka analisis Fourier pada spektrum
ini akan menunjukkan sebuah puncak yang berhubungan dengan jarak antar
harmonisa tersebut, yang juga dikenal sebagai frekuensi fundamental.
Dengan melakukan proses
mengikuti diagram blok pada Gambar 8.2, maka proses berikutnya adalah melakukan
ifft nilai PSD yang sudah diperoleh. Proses ini menghasilkan sebuah
nilai kuefrensi dari sinyal speech. Gambaran dari nilai kuefrensi
seperti pada Gambar 8.6, berikut ini. Langkah ini dilanjutkan dengan lifter
window, yaitu proses pengambilan sebagian saja dari nilai kuefrensi sinyal
speech yang terdapat pada Gambar 8.6. Dalam hal ini kita bisa mengambil 16 sampai 20 nilai pertama yang
muncul. Nilai ini sudah cukup representatif untuk mendapatkan ciri dari sinyal
wicara. Yang terakhir dari langkah kita adalah melakukan transformasi fourier
pada hasil lifter window yang selanjutnya akan menghasilkan sebuah cepstrum
dari sinyal speech yang kita
olah.
Gambar 8.6. Gambaran Kuefrensi Sinyal Speech ”a.wav”
Gambar 8.7. Perbandingan Nilai Psd dan Cepstrum Sinyal Speech
”a.wav”
Dari Gambar 8.7 di atas kita dapatkan gambaran
bentuk cepstrum sinyal speech menunjukkan pola yang mirip dengan pola PSD. Di sini
tampak bahwa bentuk cepstrum merupakan
penghalusan dari bentuk PSD sebuah sinyal speech.
8.2. Peralatan
- 1 (satu) buah PC Multimedia lengkap sound card
dan microphone
- Satu perangkat lunak Matlab under windows
8.3. Langkah
Percobaan
8.3.1 Penataan Perangkat
Sebelum melakukan percobaan harus dilakukan
penataan seperti pada Gambar 8.8, berikut ini.
Gambar 8.8 Penataan Perangkat Percobaan
Pengukuran Energi Sinyal Wicara
PC harus dilengkapi dengan peralatan multimedia seperti
sound card, speaker active dan microphone. Untuk microphone
dan speaker active. Sebelum anda memulai praktikum, sebaiknya anda
tes dulu, apakah seluruh perangkat multimedia anda sudah terintegrasi
dengan PC.
Untuk membantu anda dalam
menjalankan praktikum ini, di sini diberikan beberapa contoh perintah dasar
yang akan anda perlukan pada proses ekstraksi ciri sinyal speech. Untuk
menentukan korelasinya digunakan perintah sebagai berikut:
Korelasi: C
= XCORR(A,B),
Contoh pemakaiannya seperi berikut:
clear
all;
x=[1 3
2 1 3 6 1];
subplot(211)
plot(x,’b’,’linewidth’,3)
axis([0
8 0 7])
xx=xcorr(x);
subplot(212)
plot(xx,’b’,’linewidth’,3)
Hasilnya adalah seperti berikut ini.
Gambar 8.9. Contoh Proses Korelasi
Nilai
sample ke-n
Membaca sebuah nilai pada sample tertentu
Fs=12000;
[x,Fs]=wavread('file_a');
x_240=x(2000:2240);
Dengan
program ini akan didapatkan nilai x_240 sebagai nilai dari variabel x pada
sampel 2000 sampai dengan sampel ke 2240.
Transformasi dari domain waktu ke frekuensi
[H,W]
= FREQZ(B,A,N) returns the N-point complex frequency response vector H and the
N-point frequency vector W in radians/sample of the filter:
Contoh pemakaiannya
X=freqz(x_wind);
Langkah ini akan mentransormasikan nilai x_wind menjadi
bentuk domain frekuensi
yang hasilnya disimpan pada variabel X. Kita harus tahu
bahwa nilai yang disimpan
dalam X
merupakan bentuk komplek.
Transformasi dari domain frekuensi ke domain waktu
IFFT(X)
is the inverse discrete Fourier transform of X.
Contoh pemakaiannya
x_k =
abs(ifft(X_dB));
Langkah ini akan mentransformasikan dari domain frekuensi
ke dalam domain waktu,
operasinya kita kenal sebagai invers fast fourier
transform.
8.3.2 Estimasi Frekuensi Fundamental dengan Domain
Waktu
Pada percobaan ini kita
coba untuk melakukan estimasi nilai frekuensi fundamental dengan menggunakan
domain waktu. Dalam hal ini kita memanfaatkan fungsi auto korelasi suatu sinyal
wicara. Langkah-langkahnya
adalah sebagai berikut:
1. Buat program untuk memanggil file
‘a.wav’ .
2. Tampilkan hasilnya dalam domain
waktuk sebagai figure(1)
3. Ambil beberapa sampel saja dari
nilai a.wav yang sudah anda panggil. Dalam hal ini anda bisa menentukan
sebanyak 200, 300, atau terserah anda.
4.
Tambahkan program untuk mencari bentuk auto korelasinya
5.
Hitung jarak antar puncak satu dengan puncak berikutnya yang paling dekat. Coba
amati juga jarak puncak ke 0, puncak ke 1, puncak ke 2. Arahkan pandangan anda
geser ke kiri, perhatikan puncak ke-1, puncak ke-2, dst. Coba anda hitung jarak
antar puncak tersebut. Tentu saja nilainya dalam satuan waktu, bisa mili detik
atau yang lain.
8.3.4 Karakterisrik Power Spectral Density
1.
Panggil sinyal wicara “a.wav”.
2.
Tampilkan dalam domain waktu dan dalam bentuk sinyal sebagai fungsi sample
ke-n.
3.
Buat sebuah frame sinyal sepanjang 240 sampel, dalam hal ini anda bisa memilih bagian
sinyal yang representatif, yang memiliki nilai cukup stabil selama durasi frame
yang anda tetapkan panjangnya.
4.
Transformasikan ke dalam domain frekuensi, anda bisa menggunakan perintah fft
atau yang lain.
5.
Rubah nilainya dalam parameter dB, 20 log10(abs(X))
8.3.5 Mencari Bentuk Cepstal Sinyal Wicara
1. Lakukan hal yang sama seperti
pada langkah percobaan 8.3.4, usahakan tampilan yang sudah anda peroleh anda hold
supaya gambarnya tidak hilang.
2. Tambahkan program untuk melakukan
invers fft anda.
3. Tampilkan bentuk kuefrensi yang telah
anda peroleh, jika terjadi bentuk pencerminan pada sisi kiri dan sisi kanan,
ambil sisi kiri saja dan tampilkan kembali dengan mengatur nilai sample
tertentu saja yang anda olah.
4. Lakukan proses lifter window dengan
cara ambil 16 titik nilai kuefrensi pertama saja. Jika anda ragu anda bisa
mengambil 20 titik nilai kuefrenensi pertama.
5. Transformasikan kembali ke domain
fekuensi, dan usahakan gambarnya menjadi satu dengan hasil tampilan PSD yang
telah anda peroleh.
8.4
Analisis Data
Anda harus menjelaskan
tentang proses urutan sesuai dengan diagram blok pada Gambar 8.2. Termasuk
menjelaskan masing-masing fungsi blok tersebut. Kemudian dari hasil uji coba
yang telah anda lakukan. Apa yang anda peroleh. Berikan penjelasannya.
8.5
Tugas
1. Buat program seperti pada langkah-langkah di
atas, gunakan sinyal speech dengan
merekam sendiri.