• Tidak ada hasil yang ditemukan

Pendefinisian HMM

Dalam dokumen 7203030018 (Halaman 82-87)

PERENCANAAN DAN PEMBUATAN

3.2. PEMBUATAN DATABASE SUARA

3.2.4. Pendefinisian HMM

Dengan menggunakan perintah di atas maka pitch akan diekstrak dari file *.raw yang terdapat di direktori raw/ kemudian hasil file F0 secara otomatis masuk ke dalam direktori f0/

3.2.4. Pendefinisian HMM

Sebelum data yang diperoleh dapat digunakan untuk pengenalan feature yang telah diperoleh harus dimodelkan terlebih dahulu kedalam bentuk Hidden Markov Model (HMM), karena Speech Syntesis engine hanya dapat memproses data yang telah direpresentasikan. Untuk dapat membuat model dari bahasa yang akan dipakai dalam Speech Syntesis engine maka dibutuhkan master model yang akan di isi dengan parameter dari feature yang telah diperoleh. Master ini disebut dengan prototype yang ditempatkan pada folder model/proto. Prototype ini berisi tentang matrix banyaknya state, kemudian panjang vektor, dan jenis encoding yang digunakan dalam ekstraksi fitur dan juga sebuah matrix diagonal yang menggambarkan distribusi gaussian.

$ make_f0 raw/*.raw

x2x +sf raw/$fname.raw | frame -l 640 -p 80 | window -l 640 | pitch -s 16 -l 640 -t 4.5 -L 60 -H 170 > f0/$fname.f0

Prototype digunakan sebagai wadah untuk menampung hasil analisis, dimana susunan prototipe ini disesuaiken dengan jenis encoding, step, dan vector size sebesar 60 dari tipe permodelan MSDINFO. MSDINFO menunjukkan tipe pemodelan menggunakan multi-space probability distribution (MSD) yang telah dijelaskan pada bab sebelumnya. Untuk parameter MSDINFO menunjukan apababila “1” maka stream dimodelkan dengan MSD sedangkan apabila bernilai “0” maka stream tidak dimodelkan dengan MSD.

Contoh prorotype dapat dilihat pada contoh dibawah:

Pada daftar diatas dapat kita lihat sebuah prototipe dengan jenis encoding MSDINFO dengan jumlah state adalah 7 dengan vecsize adalah 60 dimana di sini sesuai dengan jenis encoding yang dipakai. Buat prototipe untuk setiap kata yang terdapat dalam label dalam hal ini adalah label pada file .lab sehingga didapatkan file sebanyak kata itu pula, yang perlu diperhatikan adalah untuk kata yang sama hanya diperlukan satu prototipe, walaupun dalam file label yang berbeda.

Setelah didapatkan prototype dari seluruh label maka seluruh prototype ini kemudian disimpan dalam direktori proto untuk kemudian dilakukan proses training untuk mendapatkan parameter dari MSDINFO.

~o <VecSize> 60 <USER> <MSDINFO> 4 0 1 1 1 <StreamInfo> 4 57 1 1 1 <BeginHMM> <NumStates> 7 <State> 2 <Stream> 1 <Mean> 57 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 <Variance> 57 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0

Dalam pembuatan database suara diperlukan database suara yang bersar dan tingkat pengolahan yang sulit. Dengan adanya sistem HTS maka akan dimudahkan dalam proses mentraining data suara untuk mendapatkan parameter-parameter yang kita inginkan. Parameter tersebut antara lain yaitu Mel-Cepstra, F0, LogF0, koefisien Delta dan lain-lain. Parameter tersebut yang nantinya dapat digunakan untuk membangun sebuah database suara yang mandiri. Dalam mendapatkan parameter di atas dapat menggunakkan HTS yang merupakan gabungan dari HTK dan SPTK. Untuk memulai proses training dengan dengan menggunakan HTS maka terdapat beberapa langkah yang perlu dilakukan. Langkah tersebut telah masuk di dalam script mkdata.pl untuk membangun database suara. Adapun langkah yang harus dilakukan dalam proses training tersebut pertama yaitu pembuatan direktrori seperti: $basedir = "/home/taufik/project/HTS-demo_NIT-ATR503-M001-ori"; $SPTKdir = "/usr/local/SPTK/bin"; $rawdir = "$basedir/raw"; $mcepdir = "$basedir/mcep"; $f0dir = "$basedir/f0"; $lf0dir = "$basedir/log_f0"; $windir = "$basedir/win"; $cmpdir = "$basedir/cmp"; $scpdir = "$basedir/scripts"; $labdir = "$basedir/labels/fullcontext/m001"; Menentukan konfigurasi dalam mensintesa suara. Konfigurasi yang digunakan untuk mensitesa suara adalah sebagai berikut:

$sampfreq = 16000; $framelength = 0.025; $frameshift = 0.005; $windowtype = 0; $normtype = 1; $FFTLength = 512; $freqwarp = 0.42; $mceporder = 18;

Pada konfigurasi di atas ditunjukkan suara akan disintesa menggunakan frekuensi sampling sebesar 16KHz, panjang frame untuk window yaitu 25ms, pergesaran frame sebesar 5 ms dan type window yang digunakan adalah blackman untuk nilai 0, hamming untuk nilai 1 dan hanning untuk nilai 2. Untuk normalisasi dari window yaitu menggunakan power untuk nilai 1, nilai 0 untuk tidak ada normalisasi dan 2 untuk normalisasi window menggunakan magnitude. FFT Length menunjukkan panjang FFT (Fast Fourier Transform) yang digunakan dalam analisa suara. Sedangkan frekuensi wrapping yaitu 0.42 untuk mel 18 order untuk analisa mel. Semua konfigurasi di atas digunakan untuk mensintesa suara untuk menghasilkan suara yang diinginkan.

Setelah menentukan konfigurasi dari proses sintesa suara maka proses sintesa dapat dilakukan. Proses sintesa dilakukan dengan proses sebagai berikut:

1. Analisa Mel-Cepstral

Proses analisa suara dilakuakan dengan analisa Mel-Cepstral. Proses analisa tersebut dalam proses sintesa ini menggunakan SPTK untuk mensintesa suara. Apabila data suara bersifat Big Endian maka data tersebut harus di rubah terlebih dahulu menjadi Little Endian dengan perintah swab kemudian data dirubah menjadi tipe data.float:

Sedangkan apabila data sudah berupa Little Endian maka data hanya perlu dirubah data data.short (16 bit, 16 KHz) menjadi data.float (float, 16 KHz) menggunakan peritah:

Setelah data bertipe data.float maka dapat dilakukan proses sintesa suara untuk mendapatkan Mel-Cepstral. Perintah yang digunakan adalah sebagai berikut:

$ swab +s $data | x2x +sf |

Pada proses sintesa di atas sinyal suara terlebih dahulu di frame dengan panjang frame 25 ms dengan pergeseran frame setiap 5 ms. Setelah data di frame kemudian dilakukan proses windowing dengan menggunakan tipe window blackman dan di FFT dengan panjang FFT 512. Kemudian dilakukan analisa Mel-Cepstral menggunakan perintah mcep. Hasil dari Mel-Cepstral dimasukkan ke dalam direktori /mcep.

2. Konversi F0 menjadi log F0

Proses konversi F0 atau pitch menjadi logF0 berfungsi untuk membedakan antara ada suara dengan tidak ada suara. Pada HTK terdapat standar apabila F0 tidak bersuara atau bernilai 0 maka akan sama dengan -1.0E10. Sedangkan ada suara akan bernilai sama. Pada proses sintesa dalam sistem ini dilakukan oleh script freq2lfreq.pl

3. Penambahan Koefisien Delta

Penambahan koefisien delta diberikan ke dalam file Mel-Cepstral dan logF0. scipt yang digunakan untuk penambahan koefisien delta yaitu delta.pl

4. Penggabungan Mel-Cepstral dengan LogF0

Proses penggabungan Mel-Cepstral dengan LogF0 menggunakan perintah.

$SPTKdir/frame +f -l $frame_length -p $frame_shift | "."$SPTKdir/window -l $frame_length -L $FFTLength -w $windowtype -n $normtype | ". "$SPTKdir/mcep -a $freqwarp -m $mceporder -l $FFTLength > cepdir/$base.mcep "

5. Membuat Header HTK

Proses pembuatan Header HTK dilakukan dengan melakukan proses pengalian frekuensi dalam pergeseran frame sebanyak 107 dan dimasukan kedalam file tmp.head. Juga penambahan 9 byte yang merupakan bagian parameter dari HTK. Proses yang dilakukan adalah sebagai berikut

6. Membandingkan Header HTK dengan Future Vector Proses perbandingan dilakukan dengan perintah:

Proses training di atas digunakan di dalam proses mentraining suatu database suara. Semua perintah di atas telah digabungkan menjadi satu dalam sebuah script yaitu mkdata.pl.

3.2.6. Proses Training pada Databases Suara oleh HTS-demo

Dalam dokumen 7203030018 (Halaman 82-87)