Professional Documents
Culture Documents
TAUFIK WICAKSONO
NRP. 7203.030.018
Dosen Pembimbing:
SRITRUSTA SUKARIDHOTO, ST
NIP. 132 300 372
Oleh:
TAUFIK WICAKSONO
7203.030.018
Disetujui oleh
Tim Penguji Proyek Akhir: Dosen Pembimbing:
Mengetahui:
Ketua Jurusan Telekomunikasi
Puji syukur kehadirat Allah SWT atas segala karunia dan inayah
NYA yang sangat besar sehingga penulis dapat menyelesaikan tugas
akhir dengan judul :
Buku tugas akhir ini disusun sebagai salah satu syarat akademik
untuk memperoleh gelar ahli madya pada jurusan Teknik
Telekomunikasi , Fakultas Politeknik Elektronika Negeri Suarabaya,
Institut Teknologi Speuluh Nopember Surabaya.
Untuk dapat memahami isi dari buku ini dengan mudah,
hendaknya pembaca terlebih dahulu mengetahui latarbelakang, batasan
masalah dan permasalahan yang diangkat.
Dalam penyusunan buku tugas akhir ini penulis mengambil
referensi dari beberapa sumber seperi teori-teori yang yang telah penulis
peroleh dari perkuliahan, membaca literatur, serta bimbingan dari dosen
pembimbing.
Akhirnya penulis menyadari bahwa masih banyak kekurangan
dan kelemahan dalam buku ini. Oleh karena itu, penulis mengharapkan
saran, kritik, dan koreksi yang konstruktif untuk perkembangan lebih
lanjut.
Semoga buku tugas akhir ini dapat memberikan manfaat bagi
pengembangan ilmu pengetahuan dan bagi semua pihak pada umumnya
serta bagi penulis sendiri pada khususnya.
Penyusun
UCAPAN TERIMA KASIH
Akhir kata, segala kritik dan saran sangat saya harapkan untuk
pengembangan penelitian selanjutnya.
Surabaya, Juli 2006
Penyusun
DAFTAR ISI
HALAMAN JUDUL …………………………..……..………. i
LEMBAR PENGESAHAN …………………………...……… ii
ABSTRAK …………………………………………………..... iii
ABSTRACT …………………………………………………... iv
KATA PENGANTAR ………………………………………... v
UCAPAN TERIMA KASIH...................................................... vi
DAFTAR ISI ………………………………………………….. vii
DAFTAR GAMBAR.................................................................. x
DAFTAR TABLE....................................................................... xi
BAB V PENUTUP
5.1 KESIMPULAN…………………………………… 99
5.2 SARAN…………………………………………… 99
DAFTAR PUSTAKA………......……………………………… 100
LAMPIRAN................................................................................. 101
RIWAYAT HIDUP
DAFTAR GAMBAR
1.5 METODOLOGI
b. Instalasi Source
c. Penambahan Kata
Hasil dari pembuatan dan pengeditan pada setiap sub modul yang
terdapat SSM dapat dilakukan integrasi dengan sub modul atau
modul yang lain dan kemudian dilakukan pengujian system. Pada
tahap ini setiap modul dan sub modul harus dapat berjalan dengan
baik. Apabila masih terjadi kesalahan maka akan kembali ke tahab
sebelumnya.
Sistem yang sudah dibangun dan telah terintegrasi dengan baik dapat
dilakukan eksperimen diataranya dengan pengujian terhadap kata-
kata tertentu. Kemudian kita dapat menganalisa terhadap sistem kita.
Buku laporan proyek akhir ini terdiri dari 5 (lima) bab, dimana masing-
masing bab mempunyai kaitan satu sama lain, yaitu:
BAB I. PENDAHULUAN
Akan diuraikan tentang latar belakang dan tujuan batasan masalah
serta metodologi pembahasan masalah yang yang digunakan.
2.1 U M U M
2.2.3.1. Vokal
2.2.3.2. Diftong
Dasar dari system agen menggunakan galatea terdiri dari lima unit
fungsional yang meliputi speech recognition, speech synthetizer, facial
animation synthetizer, agent manager yang bekerja sebagai sebuah
inter-moule communicatin manager, task manager dan dialog manager.
Sebagai tambahan, galatea mempersiapkan prototyping tools untuk
kemudahan pengkodean scenario dialog. Gambar 2.6 menunjukkan
arsitektur model dasar dari galatea toolkit. Di dalam galatea toolkit, unit
fungsional secara bebas dimodulkan. Peralatan input/output secara
langsung diatur dalam modul. Agent manager mengontrol komunikasi
antar modul. Jika anda ingin menambah sebuah fungsi baru, anda
implementasikan sebuah modul baru dengan fungsi baru dan modul baru
tersebut terkoneksi dengan agent manager. Dialog manager
mengkomunikasikan agent manager untuk mencapai dialog tasks
berdasarkan database dari skenario dialog. Prototyping tool yang
mendukung pembuatan database dari skenario dialog dan bekerja secara
bebas dari agent manager.
Concatenative synthesis
Concatenative synthesis berdasarkan sebuah rangkaian sekmen suara
yang terekam. Pada umumnya Concatenative synthesis memberikan
sebuah suara sythetis yang natural. Bagaimanapun variasi natural dari
suara dan teknik otomatis untuk mensegmentasi sebuah gelombang
kadang kala menghasilkan output yang mengalami pengurangan dari
natural.
Formant synthesis
Sintese forman tidak menggunakan suara manusia pada saat runtime.
Sebagai gantinya, suara sintesa dihasilkan menggunakan satu model
akustik. Parameter-parameter seperti frekuensi dasar, suara, dan level
noise bervariasi dari waktu ke waktu untuk membuat satu bentuk
gelombang dari suara buatan. Metode ini adalah disebut rule-based
synthesis.
Dan inverse:
2.12.1.2 F0 Modeling
(2.4)
Dimana ot adalah vektor suara yang diobservasi pada saat t.
Observasi pada dasarnya menentukan nilai dari persamaan berikut
(2.5)
Dimana wi adalah pengucapan yang ke-i, probabilitas ini tidak
dapat dihitung secara langsung tetapi dapat dihitung dengan
menggunakan aturan Bayes
(2.6)
(2.7)
(2.8)
2.13.3 Inisialiasi
(2.9)
(2.10)
dan
(2.11)
(2.12)
Parameter vector akan diestimasi dengan menggunakan algoritma
foreward-backward hingga diperoleh nilai probabilitas P(O|M) terbesar
berdasarkan observasi pada masing – masing state. Perhitungan
algoritma Baum-Welch dilakukan berdasarkan diagram alir berikut :
(2.13)
sedangkan nilai kemungkinan backward untuk model M dan N
state didefinisikan sebagai dan
dapat dihitung dengan persamaan :
(2.14)
berdasarkan persamaan maka didapat
persamaan untuk menentukan nilai probabilitas Lj(t sebagai berikut :
(2.15)
dimana P = P(O|M).
2.14.1 Pendahuluan
2.15.1 SWAB
NAMA
swab – menukar byte dalam unit
SIPNOSIS
DESKRIPSI
Perintah swab akan merubah byte dari little endia (Intel, DEC,
etc) ke big endian (Sun, HP, etc) dan vice versa (byte swap).
Jika input file tidak ditentukan kemudian data membaca dari
input standart. Range swap akan ditentukan dengan option –S,
-E atau –s, -e.
Format data input dan output akan ditentukan dengan +type
OPTIONS
–S S1 awal alamat byte [0]
–s S2 tart data number [0]
–E E1 end byte address [EOF]
–e E2 akhir alamat byte [0]
+type tipe data input dan output [s]
s short (2bytes) l long (4bytes)
f float (4bytes) d double (8bytes)
EXAMPLE
Pada contoh dibawah tipe byte dari data.f dalam format float
akan dirubah menjadi tipe data.swab:
2.15.2 X2X
NAMA
x2x – merubah tipe data
DESKRIPSI
Perintah x2x akan membaca dari input standart dan
mengconvert tipe data dan mengeluarkanya ke output standart.
Tipe data input ditentukan dengan option +type1 dan ouput
data ditentukan dengan option +type2.
OPTIONS
+type1 input data type [f]
+type2 output data type [type1]
Kedua option type1 dan type2 dapat ditentukan
dengan option di bawah
c char (1byte) C unsigned char (1byte)
s short (2bytes) S unsigned short (2bytes)
i int (4bytes) I unsigned int (4bytes)
l long (4bytes) L unsigned long (4bytes)
f float (4bytes) d double (8bytes)
a ASCII
EXAMPLE
Pada contoh di bawah data dikonvert dari format ASCII yaitu
data.asc ke formta data float yaitu data.f
NAMA
frame – mengekstrak frame
SIPNOSIS
frame [ –l L ] [ –n ] [ –p P ] [ +type ] [ infile ]
DESKRIPSI
Perintah frame digunakkan untuk membaca data dari input file
yang telah ditentukkan dan kemudian ekstrak frame dengan
periode P dan panjang L. Jika input data adalah x(0),
x(1),....,x(T) kemudian output data adalah
OPTIONS
–l L panjang frame [256]
–p P periode frame [100]
–n option ini digunakan ketikan x(0) sebagai
center point di dalam frame pertama dan kita
ingin membuat x(0) sebagai point pertama
dalam frame pertama [FALSE]
+t tipe data input dan output [f]
c char (1byte) s short (2bytes)
i int (4bytes) l long (4bytes)
f float (4bytes) d double (8bytes)
EXAMPLE
Di dalam contoh di bawah, data dalam format float yaitu data.f,
periode frame yaitu 80, window blackman dan penggunaan
linear prediction analysis(lpc). Dan data ditulis dalam format
lpc yaitu data.lpc:
frame -p 80 < data.f | window | lpc >
data.lpc
2.15.4 WINDOW
NAME
window – data windowing
SIPNOSIS
window [ –l L1 ] [ –L L2] [ –n N ] [ –w W ] [ infile ]
DESKRIPSI
Perintah input real yang berurutan dari input standart, dan
apabila menggunakan perintah window maka akan
menggunakan fungsi dari windowing dengan kata lain jika
urutan input adalah:
x(0), x(1), . . . , x(L1 − 1)
dan fungsi dari windowing adalah:
w(0), w(1), . . ., w(L1 − 1)
menghasilkan output:
x(0) · w(0), x(1) · w(1), . . . , x(L1 − 1) · w(L1 − 1)
Jika panjang output L2 adalah lebih besar dari L1, kemudian
akan ditambahkan 0s pada output dan menghasilkan:
OPTIONS
–l L1 window length of input (L ≤ 2048) [256]
–L L2 output length [L1]
–n N type of normalization
0 no normalization [1]
L =1
1 normalization so that ∑w
n =0
2
(n)=1
L =1
2 normalization so that ∑w
n =0
(n)=1
–w W type of window [0]
0 Blackman
1 Hamming
2 Hanning
3 Bartlett
4 rectangular
EXAMPLE
Pada contoh di bawah akan menampilkan kelayar gelombang
sinus dengan periode fungsi 20 setelah widowing dengan tipe
window Blackman:
sin -p 20 | window | fdrw | xgr
2.15.5 PITCH
NAMA
pitch – ekstraksi pitch
SIPNOSIS
pitch [ –s S ] [ –l L ] [ –t T ] [ –L Lo ] [ –H Hi ] [ –e E ]
[ –i I ] [ –j J ] [ –d D ] [ infile ]
DESKRIPSI
Perintah ini mengekstarak pitch p(t) menggunakan metode
cepstrum dan mengirimkanya ke output standart. Diasumsikan
input telah dilakukan proses windowing dengan panjang urutah
L adalah
x(0), x(1), . . . , x(L − 1)
OPTIONS
–s S frekuensi sampling (kHz) [10]
–l L panjang frame data input [400]
–t T voiced/unvoiced threshold [6.0]
–L Lo minimum fundamental frequency untuk
mendapatkan (Hz) [60]
–H Hi maximum fundamental frequency untuk
mendapatkan (Hz) [240]
–e E nilai terkecil yang dimasukkan untuk
menghitung kalkulasi dari log power
spectrum [0.0]
Biasanya option tidak ditentukan. Mereka berhubugan dengan
penilaian yang tidak memihak pada metode log spectrum
–i I minimum jumlah iterasi [2]
–j J minimum jumlah iterasi [30]
–d D kondisi akhir [0.1]
EXAMPLE
Data suara dengan sampling rate 10kHz dalam format float
yaitu data.f, kemudian output berupa data pitch yaitu data.pitch.
Pada proyek akhir ini sistem operasi yang dipakai adalah sistem
operasi Debian GNU/Linux sarge dengan kernel 2.6, dan software yang
dipakai untuk menganalisis speech adalah HTK yang dapat didownload
secara gratis di situs HTK kemudian didownload juga paket Galatea dari
situs resminya. Untuk dapat menjalankan software tersebut dengan baik
maka perlu melakukan beberapa konfigurasi agar software nantinya
dapat berjalan dengan baik.
43
Install GRUB boot loader, pilih yes.
Setelah instaling complet,ambil CD installer, pilih continue.
Komputer akan booting ulang.
Tampilan " Welcome to your new Debian System!" pilih no.
Konfigurasi waktu, pilih konfigurasi menual untuk wilayah asia
pilih no.
Pilih asia/ Jakarta ( java & sumatra ).
Konfigurasi password
root password (password untuk super user root)
re-enter password (pengulangan password root)
nama user / full name (user lain selain root)
nama user account
user password (password user)
re-enter password (pengulangan password user)
Konfigurasi apt, untuk instalasi sistem dari CD, masukkan CD
Debian dan pilih CDROM tekan ok. perlu di ketahui letak
direktori CD-ROM berada pada file Æ /dev/cdrom.
Tunggu beberapa saat. !
Tampilan scan untuk CD Debian Yang lain, pilih no
Tampilan pilihan tentang informasi HTTP proxyÆkosongi,
pilih ok.
Tampilan connect security.debian.org Æ CTRL-C untuk cancel
Muncul peringatan untuk access security, pilih ok
Debian Software Debian Selection
Pilihan untuk memilih Paket yang akan diinstal Ækosongi,
pilih ok (instalasi paket di lakukan secara manual saja)
konfigurasi EXIM:
Configuring Exim v4 (exim4- Config) general typre of mail
configuration Æno configuration at this time, pilih ok
Menu konfirmasi untuk Exim v4 Æpilih yes
Menu untuk mempertanyakan tujuan mail (root and post mail
recipent) Æketik sesuai dengan user pilih ok
Tunggu untuk reloding exim4 configuration files
Tampilan Thank you for choosing debianÆok.
Kemudian masuk pada login Æ ketik root dan masukkan
password untuk root
3.1.2. Konfigurasi sound di linux
# su
Password:_
#apt-get install kernel-headers-2.6.8-2-386
# cd /usr/src/modules/alsa-driver
# KSRC=/usr/src/kernel-headers-2.6.8-2-386
KVERS=2.6.8-2-386 debian/rules
# dpkg –i alsa-modules-2.6.8-2-386-XXXXX.deb
# modconf
Gambar 3.1 Konfigurasi Modconf
Aktifkan modul update untuk alsa, dalam hal ini yang akan dipakai
dalam aplikasi adalah modul alsa-oss.
Langkah selanjutnya adalah mengetes soundcard. Untuk
menjalankan soundcard dapat dilakukan dengan menjalankan program
pemutar multimedia misalnya XMMS atau sejenisnya. Apabila aplikasi
tersebut sudah dapat berjalan dengan baik berarti instalasi soundcard
sudah berhasil. Kemudian lakukan reboot komputer dan ulangi lagi
dengan menjalankan program multimedia. Apabila program tidak bisa
berjalan coba dengan perintah alsaconf.
# alsaconf
Kemudian tambahkan baris dibawah kedalam /etc/modules
Snd-mixer-oss
Snd-pcm-oss
Snd-seq-device
# ls /dev/dsp
/dev/dsp
• Debian stable
o http://www.debian.org/
o http://kebo.vlsm.org/
• Driver NVIDIA
o http://www.nvidia.com/
• GALATEA
o http://prdownloads.sourceforge.jp/galatea/15674/galatea-
v3.0a.tar.gz
o http://prdownloads.sourceforge.jp/galatea/17998/gdm-bin-
051215.tar.gz
• Glut 3.7
• Java (j2sdk 1.4.2_05) taruh pada direktori /usr/local/bin/java
• Chasen-2.3.3 : diinstal pada direktori /usr/local/chasen-2.3.3/
dengan prosedur yang akan dijelaskan selanjutnya.
• DM/
o Document (berisi Dokumentasi Galatea)
o galatea (file executable)
o tests (berisi contoh file percakapan)
vxml/ (contoh percakapan dalam format
VXML)
php/ (contoh percakapan dalam format
PHP)
o lib/ ( file yang dibutuhkan untuk mengexsekusi
Galatea Dialog Manager)
o Modules/ (Kumpulan Modul)
am.conf (file konfigurasi Agent
Manager)
gdm.conf (file konfigurasi Galatea
Dialog Manager)
AM-MCL.rb
MON.rb
PAR.rb
SIM.rb
SND.rb
….
• AM/
o 0.README
o AM-MCL.pl
o AgentManager.pl
o DummyModule.pl
o GalateaAM_CommandSet.pdf
o GalateaAM_Manual.pdf
o fsm.init
• FSM/
o INSTALL_LINUX.txt
o INSTALL_WIN.txt
o License.txt
o README.txt
o bin./
fsm (file executable)
o command.pdf
o data/
o ….
• SSM/
o RUN (file executable)
o gtalk (galatea_talk)
o Makefile
o README
o ssm.conf (file konfigurasi module SSM)
o ….
• morph/
o 00README
o chaone-1.1.0-src.tgz
o chaone-1.1.0.jar
o chasen-2.3.3
Makefile
README
…..
o darts-0.2
Makefile
INSTALL
README
…..
o unidic-1.1.0
Makefile
README
• speakers
o female01
duration.pdf
lf0.pdf
mcep.pdf
tree-dur.inf
tree-lf0.inf
tree-mcep.inf
o male01
duration.pdf
lf0.pdf
mcep.pdf
tree-dur.inf
tree-lf0.inf
tree-mcep.inf
o male02
duration.pdf
lf0.pdf
mcep.pdf
tree-dur.inf
tree-lf0.inf
tree-mcep.inf
$ cd FSM/bin
$ ./fsm
Operasi Mouse:
Click kiri menggerakkan agent pada sumbu X, Y
Click tengah memindahkan agent
Click kanan membesarkan atau mengecilkan agent
Operasi Keyboard:
Tombol “r” atau “R” : Mereset agent ke tampilan semula
Tombol “f” atau “F” : Mode fullscreen
Tombol “Esc” : Menghentikan modul
1. darts-0.2
$ pwd
/home/demo/galatea-v3.0/morph
$ cd darts-0.2
$ ./configure
$ make
$ make check
$ su
make install
exit
$ cd ..
2. chasen-2.3.3
$ pwd
/home/demo/galatea-v3.0/morph
$ cd chasen-2.3.3
$./configure --
prefix=/usr/local/chasen-2.3.3
$ make
su
make install
exit
$ cd ..
3. unidic-1.1.0
$ pwd
/home/demo/galatea-v3.0/morph
$ cd unidic-1.1.0
$ ./configure --with-
mkchadic=../chasen-2.3.3/mkchadic \
--with-chasen-config=../chasen-
2.3.3/chasen-config \
--with-exclude-dic=fillers.dic
$ make
$ export LANG=ja_JP.eucJP
$ export LC_ALL=ja_JP.eucJP
$ cd DM/SSM
$ perl RUN
Pada chasenrc
(GRAMMAR ../morph/unidic-1.1.0)
$ cd /home/demo/galatea-v3.0
$./configure
$perl ./SRM_Main.pl
set Run = INIT
set Run = START
Set Grammar =
GramXML/renraku/renraku.xml
$ cd /home/demo/galatea-v3.0
$ cd TM
$ ./demo_Repeat.sh
$ ./demo_Appoint.sh
$ ./demo Renraku.sh
3.1.12. Ruby/TK
$ cd DM
$ ./setup_amixer
$ cd galatea-v3.0
$ cd DM
$ ./galatea tests/weather.vxml
$ ./fin
# wavesurfer
Maka akan muncul tampilan wavesurfer seperti
gambar dibawah:
# make
# make install
¾ Download HTK
# su
Password:_
#HTK-3.2
# ./configure -–prefix=/usr
.. .. ..
# make all
.. .. ..
# make install
¾ Instalasi HTS
$ SPTKDIR = /usr/local/SPTK/bin
$ FESTIVALDIR = /usr/bin
3. Untuk melakukan proses training pada HTS-demo_CMU-
ARCTIC-AWB lakukan:
# make
¾ Instalasi HTS-demo
1. Download "HTS-demo.tar.gz" from
http://hts.ics.nitech.ac.jp/ dan ekstrak pada direktori
hardisk.
2. Baca komentar pada “Makefile” dan lakukan penambahan
konfigurasi yaitu:
$CURRENTDIR = `pwd`
$SPTKBINDIR = /usr/local/SPTK/bin
$HTSBINDIR = /usr/local/bin.linux
$DATADIR=/home/taufik/project/HTS-
demo_CMU-ARCTIC-AWB
$ NAME = awb
$ DATASET = cmu_us_arctic
# make
# ./configure
# make
¾ Test
Jalankan script training. Maka akan HMM akan melakukan
sintesa pada sample suara dari HMM
# perl scripts/Training_cmu_us_arctic_awb.pl
atau
# perl scripts/Training_nit_jp_ATR503_m001.pl
3.2. PEMBUATAN DATABASE SUARA
# HSLab <namafile.wav>
Untuk menentukan namafile disini sebaiknya disesuaikan
dengan kata yang direkam, misalnya yang direkam adalah kata “satu”
kemudian diberi index dengan jumlah kata yang direkam jadi perintah
yang dipakai adalah :
# HSLab satu1.wav
0 7575000 sil
7575000 8950000 s
8950000 10300000 e
10300000 11150000 l
11150000 12700000 a
12700000 13675000 m
13675000 14600000 a
14600000 15550000 t
15550000 18875000 pau
18875000 19350000 p
19350000 20750000 a
20750000 21525000 pau
21525000 22475000 g
22475000 23800000 i
23800000 24550000 sil
3.2.2.2. Wavesurfer
#!/bin/sh
# the next line restarts using wish \
exec wish8.4 "$0" "$@"
snack::sound s
$ make_f0 raw/*.raw
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.
3.2.5. Pembangunan Databases Suara
1. Analisa Mel-Cepstral
3.2.6.1. Inisialisasi
# HInit -A -D –T 1 -S trainlist.txt -M
model/hmm0 \
-H model/proto/PrototipeFile -l label –L
FolderLabel NamaHmm
• HCompV
HcompV digunakan untuk melakukan algortima dengan
operasi “flat initialisation” dari sebuah model. Setiap state dari HMM
menghasilkan mean dan vektor varian yang sama, maksudya adalah
setiap file mfcc dihitung secara global. Perintah yang digunakan adalah:
# HcompV –T 1 -S trainlist.txt -M
model/hmm0flat
-H model/proto/PrototipeFile -l label –L
FolderLabel NamaHmm
3.2.6.2. Training
# HRest -A -D -T 1 -S trainlist.txt -M
model/hmmi -H vFloors \
-H model/hmmi-1/hmmfile -l label -L
DriektoriLabel NamaHMM
3.2.6.3. Iterasi
1. HHed
2. HMGenS
$ HMGenS -A -C /home/taufik/project/HTS-
demo/configs/synthesis.conf -D -T 1 -f 0.005
/home/taufik/project/HTS-
demo/gen/scp/nit_jp_ATR503_m001_qst001.gen
#!/usr/bin/perl
use Tk;
Pada program diatas dibuat frame utama dan disimpan pada variabel
$main_frame sedangkan frame – frame yang lain dibuat diatas frame
utama.
Terdapat beberapa jenis tombol yang digunakan, pada tampilan
yang telah dibuat penulis menggunakan tombol Button dan MenuButton.
Potongan program dibawah merupakan proses untuk membuat tombol
pada tampilan program gui-v2.pl
$ekspresi = $frame1->Menubutton(-text=>'
Expresi ', -background=>'blue', -
foreground=>'white')->pack(-side=>'left');
$tes_modul = $frame1->Menubutton(-text=>'
Test Modul ', -background=>'blue', -
foreground=>'white')->pack(-side=>'left');
use Tk;
$main=MainWindow->new;
$main->minsize(qw(507 685));
$main->configure(-title=>"Operator Tiket", -
background=>'white');
$main -> geometry("+0+0");
$atas = $main->Frame(-background=>'white')-
>pack();
$atas ->Button(-text=>"
Pengaturan ", -command
=>\&option) -> pack(-side=>'top', -pady=>9, -
padx=>8);
4.4 PENDAHULUAN
1. Selamat Pagi
2. Foto Cakep
3. Makan Siang
4. Sore yang Cerah
89
5. Malam Senen
6. Waktu Makan
7. Pembuatan Buku
8. Pemain Figuran
9. Sedang Bermain
10. Wanita Idaman
11. Saya ingin memesan tiket tujuan Surabaya dan Jakarta.
12. Pesawat telah mendarat di bandara Semarang pada hari
Selasa pagi
13. Tujuan keberangkatan pesawat Buraq dari Bandung adalah
Solo.
14. Saya terbang naik Mandala hari Rabu tanggal tiga belas
Maret dua ribu enam.
15. Harga tiket kelas ekonomi dari padang dengan batavia
adalah delapan ratus lima puluh ribu rupiah.
16. Jadwal keberangkatan Mandala, hari Senin, Selasa dan
Rabu.
17. Terima kasih atas tiket Merpati ke Surabaya
18. Untuk keamanan selama terbang, Anda harus memakai
sabuk pengaman.
19. Bulan Januari, februari, september, oktober, november, dan
Desember tiket mahal.
20. Maaf anda belum memesan tiket untuk semarang.
0 7575000 sil
7575000 8950000 s
8950000 10300000 e
10300000 11150000 l
11150000 12700000 a
12700000 13675000 m
13675000 14600000 a
14600000 15550000 t
15550000 18875000 pau
18875000 19350000 p
19350000 20750000 a
20750000 21525000 pau
21525000 22475000 g
22475000 23800000 i
23800000 24550000 sil
$gwave +s nit_jp_ATR503_m001_a01.raw |
xgr
$ make
$ bcut -n 20 -s 65 -e 65 <
nit_jp_ATR503_m001_a01.mcep | mgc2sp -m
20 -a 0.42 -g 0 -l 512 | glogsp -l 512 -
x 8 | xgr
Gambar 4.4 Spektrum FFT
4
3.5
3
2.5
MOS
2 MOS
1.5
1
0.5
0
1 2 3 4 5 6
KALIMAT
5.1. KESIMPULAN
5.2. SARAN
99
DAFTAR PUSTAKA
[1]. Shin-Ichi Kawamoto Et al, Open-Source Software for Developing
Anthropomorphic Dialog Spoken Agent, PRICAI2002-Agent-
FINAL.pdf, The University of Tokyo, 2002.
[2]. Helmut Prendinger and Mitsuru Ishizuka, Introducing the Cast for
Social Computing:Life-like Characters,Hellmut-LLC-book-Intro.pdf,
Department of Information and Communication Engineering Graduate
School of Information Science and Technology University of
Tokyo,2002
[3]. Shigeki Sagayama ,Takuya Nishimoto, Anthropomorphic Agent as
an Integrating Platform of Audio-Visual Information,
Sagayama2003COE09.pdf, The University of Tokyo, 2003
[4]. Microsoft Corporation, Cambridge University Engineering
Department, HTK Book (2001-2005). htkbook.pdf
[5]. Reference Manual for Speech Signal Processing Toolkit Ver. 3.0,
SPTKref_e-3.0.pdf
[6]. Keiichi Tokuda, Takayoshi Yoshimura, Takashi Masuko, Takao
Kobayashi, Tadashi Kitamura, ``Speech parameter generation
algorithms for HMM-based speech synthesis,'' Proceedings of IEEE
International Conference on Acoustics, Speech, and Signal Processing,
Istanbul, Turkey, vol.3, pp.1315-1318, June 2000,
tokuda_icassp2000.pdf
[7]. Keiichi Tokuda, Takashi Mausko, Noboru Miyazaki, Takao
Kobayashi, ``Multi-space probability distribution HMM,'' IEICE Trans.
Information and Systems, vol.E85-D, no.3, pp.455-464, Mar. 2002,
tokuda_ieice_e85-d_3_455-464_2002.pdf
[8]. Takayoshi Yoshimura, Keiichi Tokuda, Takashi Masuko, Takao
Kobayashi and Tadashi Kitamura, ``Simultaneous modeling of spectrum,
pitch and duration in HMM-based speech synthesis,'' Proceedings of
European Conference on Speech Communication and Technology,
Budapest, Hungary, vol.5, pp.2347-2350, Sep. 1999.
yoshimura_eurospeech1999.pdf
[9]. Keiichi Tokuda, Heiga Zen, Alan W. Black, ``An HMM-based
speech synthesis system applied to English,'' 2002 IEEE Speech
Synthesis Workshop, Santa Monica, California, Sep. 11-13, 2002.
tokuda_TTSworkshop2002.pdf
100
LAMPIRAN
#!/usr/bin/perl
# --------------------------------------------
#
# The HMM-Based Speech Synthesis System (HTS):
version 1.1.1 #
# HTS Working Group
# Department of Computer Science
# Nagoya Institute of Technology
# and
# Interdisciplinary Graduate School of Science
and Engineering #
# Tokyo Institute of Technology
#
# Copyright (c) 2001-2003
# All Rights Reserved. #
#
#
# Permission is hereby granted, free of charge,
to use and #
# distribute this software and its
documentation without #
# restriction, including without limitation the
rights to use, #
# copy, modify, merge, publish, distribute,
sublicense, and/or #
# sell copies of this work, and to permit
persons to whom this #
# work is furnished to do so, subject to the
following conditions: #
#
#
# 1. The code must retain the above copyright
notice, this list #
101
# of conditions and the following
disclaimer. #
#
#
# 2. Any modifications must be clearly marked
as such. #
#
#
# NAGOYA INSTITUTE OF TECHNOLOGY, TOKYO
INSITITUTE OF TECHNOLOGY, #
# HTS WORKING GROUP, AND THE CONTRIBUTORS TO
THIS WORK DISCLAIM #
# ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
INCLUDING ALL #
# IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS, IN NO EVENT #
# SHALL NAGOYA INSTITUTE OF TECHNOLOGY, TOKYO
INSITITUTE OF #
# TECHNOLOGY, HTS WORKING GROUP, NOR THE
CONTRIBUTORS BE LIABLE #
# FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
DAMAGES OR ANY #
# DAMAGES WHATSOEVER RESULTING FROM LOSS OF
USE, DATA OR PROFITS, #
# WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
OR OTHER TORTUOUS #
# ACTION, ARISING OUT OF OR IN CONNECTION WITH
THE USE OR #
# PERFORMANCE OF THIS SOFTWARE.
#
#
#
#------------------------------------------ #
# mkdata.pl : make training data for HMM-
based speech synthesis
#
#
# 2003/12/26 by Heiga Zen
#
$|=1;
use File::Basename;
# Endian switch
$byteswap = 0;
# directory ==============================
$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";
@RAW = glob("$rawdir/*.raw");
# mel-cepstral analysis
if ($byteswap) {
$line = "$SPTKdir/swab +s $data | x2x
+sf | "; # big endian
}
else {
$line = "$SPTKdir/x2x +sf $data | ";
# little endian
}
$line .= "$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 > $mcepdir/$base.mcep
";
system "$line \n";
# convert f0 to log f0
if ($byteswap) {
system "$SPTKdir/swab +f
$f0dir/$base.f0 > $lf0dir/tmp.f0 "; # big
endian
}
else {
system "cp $f0dir/$base.f0
$lf0dir/tmp.f0\n"; # little
endian
}
system "perl $scpdir/freq2lfreq.pl
$lf0dir/tmp.f0 > $lf0dir/$base.lf0\n";
`rm -f $cmpdir/tmp.*`;
`rm -f $lf0dir/tmp.*`;
2. freq2lfreq.pl DIGUNAKAN UNTUK MENKONVERSI
FREKUENSI KE LOG FREKUENSI
#!/usr/bin/perl
# ---------------------------------------------
#
# The HMM-Based Speech Synthesis System (HTS):
version 1.1.1 #
# HTS Working Group
#
# Department of Computer Science
# Nagoya Institute of Technology
# and
# Interdisciplinary Graduate School of Science
and Engineering #
# Tokyo Institute of Technology
#
# Copyright (c) 2001-2003
# All Rights Reserved.
#
# Permission is hereby granted, free of charge,
to use and
# distribute this software and its
documentation without
# restriction, including without limitation the
rights to use,
# copy, modify, merge, publish, distribute,
sublicense, and/or
# sell copies of this work, and to permit
persons to whom this
# work is furnished to do so, subject to the
following conditions:
#
#
# 1. The code must retain the above copyright
notice, this list of conditions and the
following disclaimer.
#
#
# 2. Any modifications must be clearly marked
as such. #
#
#
# NAGOYA INSTITUTE OF TECHNOLOGY, TOKYO
INSITITUTE OF TECHNOLOGY, #
# HTS WORKING GROUP, AND THE CONTRIBUTORS TO
THIS WORK DISCLAIM #
# ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
INCLUDING ALL #
# IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS, IN NO EVENT #
# SHALL NAGOYA INSTITUTE OF TECHNOLOGY, TOKYO
INSITITUTE OF #
# TECHNOLOGY, HTS WORKING GROUP, NOR THE
CONTRIBUTORS BE LIABLE #
# FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
DAMAGES OR ANY #
# DAMAGES WHATSOEVER RESULTING FROM LOSS OF
USE, DATA OR PROFITS, #
# WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
OR OTHER TORTUOUS #
# ACTION, ARISING OUT OF OR IN CONNECTION WITH
THE USE OR #
# PERFORMANCE OF THIS SOFTWARE.
#
#
#
# -------------------------------------------
#
# freq2lfreq.pl : convert frequency to log
frequency
# for training data of HMM-based speech
synthesis
#
#
# 2003/12/26 by Heiga Zen
# --------------------------------------------
#
open(INPUT,"$ARGV[0]") || die "cannot open file
: $ARGV[0]";;
@STAT=stat(INPUT);
read(INPUT,$data,$STAT[7]);
close(INPUT);
$n = $STAT[7]/4;
@f0 = unpack("f$n",$data);
$data = pack("f$n",@lf0);
print $data;
# end of freq2lfreq.pl
3. freq2lfreq.pl DIGUNAKAN UNTUK MENKONVERSI
FREKUENSI KE LOG FREKUENSI
#!/usr/bin/perl
# --------------------------------------------
#
# The HMM-Based Speech Synthesis System (HTS):
version 1.1.1 #
# HTS Working Group
#
#
# Department of Computer Science
#
# Nagoya Institute of Technology
# and
# Interdisciplinary Graduate School of Science
and Engineering #
# Tokyo Institute of Technology
#
# Copyright (c) 2001-2003
#
# All Rights Reserved. #
# Permission is hereby granted, free of charge,
to use and #
# distribute this software and its
documentation without #
# restriction, including without limitation the
rights to use, #
# copy, modify, merge, publish, distribute,
sublicense, and/or #
# sell copies of this work, and to permit
persons to whom this #
# work is furnished to do so, subject to the
following conditions: #
#
#
# 1. The code must retain the above copyright
notice, this list #
# of conditions and the following
disclaimer. #
#
#
# 2. Any modifications must be clearly marked
as such. #
#
#
# NAGOYA INSTITUTE OF TECHNOLOGY, TOKYO
INSITITUTE OF TECHNOLOGY, #
# HTS WORKING GROUP, AND THE CONTRIBUTORS TO
THIS WORK DISCLAIM #
# ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
INCLUDING ALL #
# IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS, IN NO EVENT #
# SHALL NAGOYA INSTITUTE OF TECHNOLOGY, TOKYO
INSITITUTE OF #
# TECHNOLOGY, HTS WORKING GROUP, NOR THE
CONTRIBUTORS BE LIABLE #
# FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
DAMAGES OR ANY #
# DAMAGES WHATSOEVER RESULTING FROM LOSS OF
USE, DATA OR PROFITS, #
# WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
OR OTHER TORTUOUS #
# ACTION, ARISING OUT OF OR IN CONNECTION WITH
THE USE OR #
# PERFORMANCE OF THIS SOFTWARE.
#
#
#
# ---------------------------------------------
------------------- #
# delta.pl : load regression window and add
delta coefficients #
#
#
# 2003/12/26
by Heiga Zen #
# ---------------------------------------------
------------------- #
if (@ARGV<3) {
print "delta.pl dimensionality infile
winfile1 winfile2 ... \n";
exit(0);
}
$nwin = @ARGV-1;
# static coefficients
@static = unpack("f$n",$data); # unpack static
coefficients
for($i=2;$i<=$nwin;$i++) {
# load $i-th dynamic coefficients window
open(INPUT,"$ARGV[$i]") || die "cannot open
file : $ARGV[$i]";
@STAT=stat(INPUT);
read(INPUT,$data,$STAT[7]);
close(INPUT);
$w = $STAT[7]/4;
@win = unpack("f$w",$data);
$size = @win; # size of this window
if ($size % 2 != 1) {
die "Size of window must be 2*n + 1 and
float";
}
$nlr = ($size-1)/2;
$n = $n*$nwin;
$data = pack("f$n",@delta);
print $data;
# end of delta.pl
4. Training.pl DIGUNAKAN UNTUK MENGEKSEKUSI
PERINTAH HTK BERBASIS SPEECH SYNTHESIS
#!/usr/bin/perl
# -------------------------------------------
#
# The HMM-Based Speech Synthesis System (HTS):
version 1.1.1 #
# HTS Working Group
#
#
# Department of Computer Science
# Nagoya Institute of Technology
# and
# Interdisciplinary Graduate School of Science
and Engineering
# Tokyo Institute of Technology
# Copyright (c) 2001-2003
# All Rights Reserved.
#
#
#
# Training.pl : execute all HTK command for
HMM-based speech #
# synthesis system, and generate
speech from #
# trained HMMs.
#
#
#
# 2003/12/26 by Heiga Zen #
# ---------------------------------------------
----------- #
$|=1;
# Setting ==============================
$speaker = 'm001';
$cnd = 'nit_jp_ATR503';
$qnum = '001';
@HMMSET = ('cmp','dur');
@cmp = ('mcep','logF0');
@dur = ('dur');
$ref{'cmp'} = \@cmp;
$ref{'dur'} = \@dur;
# Switch ================================
$MAKEEMV = 1; # Make
environment for experiment
$COMPVAR = 1; # Compute
global variance for variance flooring
$INITREST = 1; # Parameter
initialization and re-estimation
$COPYM2F = 1; # Copy
monophone HMMs to context-dependent HMMs
$ERESTFL = 1; # Embedded re-
estimation for context-dependent HMMs
$TBCCEP = 1; # Tree-based
context clustering for spectrum
$TBCF0 = 1; # Tree-based
context clustering for f0
$ERESTTI = 1; # Embedded re-
estimation tied HMMs
$TBCDUR = 1; # Tree-based
context clustering for duration
$CONVERT = 1; # Convert MMF
files to hts_engine format
$MKUNSEN = 1; # Make unseen
models
$PARGEN = 1; # Generate
speech parameter sequences from HMMs
$WAVGEN = 1; # Synthesis
waveforms from generated mel-cepstrum and f0
# Discrimination ========================
$SPEAKER = "_${speaker}";
$CND = "_${cnd}";
$QNUM = "_qst${qnum}";
# prototype -----------------------------
$prtfile = "$projectdir/proto/";
# some setting
$lf0stream = @win_lf0+1;
%thr = ('mcep' => "000",
'logF0' => "000",
'dur' => "000");
%gam = ('mcep' => "000",
'logF0' => "000",
'dur' => "000");
%set = ('mcep' => "cmp",
'logF0' => "cmp",
'dur' => "dur");
%STREAM = ('mcep' => "1",
'logF0' => "2-$lf0stream",
'dur' => "1");
%FREQWARP = ('8000' => "0.31",
'10000' => "0.35",
'16000' => "0.42");
foreach $i (@HMMSET) {
foreach $j (@{$ref{$i}}) {
$mdl{$j} = "-m -a $lambda{$j}" if($thr{$j}
eq '000');
}
}
# ==============================================
# ============== Main Program ==================
#
================================================
# HCompV --------------------------------
# (compute global variance for variance
flooring)
if ($COMPVAR) {
print_time();
shell("$HCompV -f $vfloor{'cmp'} -S $datscp -
M $hmmsdir{cmp} $prtfile");
print_time();
}
open(SRCMAC,"$hrestdir/$MODELCOPY{$phone}") ||
die "Cannot open $!";
open(TGTMAC,">$hrestdir/$phone") || die
"Cannot open $!";
while (<SRCMAC>){
s/~h \"$MODELCOPY{$phone}\"/~h
\"$phone\"/;
print TGTMAC;
}
close(TGTMAC);
close(SRCMAC);
} else {
shell("$HInit -I $mlf -M $hinitdir -S
$scp -l $phone -o $phone $prtfile");
shell("$HRest -I $mlf -M $hrestdir -S
$scp -l $phone $hinitdir/$phone");
}
}
close(HMMLIST);
}
# HHEd (Convert Monophone to FullContext) -----
# (copy context-independent HMMs to context-
dependent HMMs)
if ($COPYM2F) {
print_time();
shell("$HHEd{'train'} -d $hrestdir -w
$fullmmf{'cmp'} $mon2fuled $monolst");
shell("gzip -c $fullmmf{'cmp'} >
${fullmmf{'cmp'}}.gz");
print_time();
}
system("mv $treesdir{'cmp'}/trees.1
$tree{'mcep'}");
system("mv $treesdir{'cmp'}/trees.2
$tree{'lf0'}");
system("mv $treesdir{'dur'}/trees.1
$tree{'dur'}");
system("mv $hmmsdir{'cmp'}/pdf.1
$pdf{'mcep'}");
system("mv $hmmsdir{'cmp'}/pdf.2
$pdf{'lf0'}");
system("mv $hmmsdir{'dur'}/pdf.1
$pdf{'dur'}");
}
# HHEd (generate unseen models)
# (generate unseen context-dependent HMMs from
decision trees)
if ($MKUNSEN) {
print_time();
foreach $i (@HMMSET) {
make_edfile_mkunseen($i);
shell("$HHEd{'train'} -H $clusmmf{$i} -w
$clalmmf{$i} $mkuhed{$i} $fulllst");
}
print_time();
}
$start = time;
$exit = system($command);
$end = time;
$h = int(($end-$start)/3600);
$m = int((($end-$start)-$h*3600)/60);
$s = $end-$start-$h*3600-$m*60;
print
"===========================================\n";
printf("Realtime %d:%2d.%2d\n",$h,$m,$s);
print
"===========================================\n";
if($exit/256 != 0){
die "Error in this command : $command\n"
}
}
sub print_time {
print "\n";
print
"===========================================\n";
print `date`;
print
"===========================================\n";
print "\n";
}
sub print_ls(@){
print "\n";
print
"===========================================\n";
print `ls -l @_`;
print
"===========================================\n";
print "\n";
}
# Vector size
$mcepvSize = @win_mcep*($mceporder+1);
$nlf0stream = @win_lf0;
$vSize = $mcepvSize+$nlf0stream;
$prtfile .=
"s${numstate}_m1_c${mcepvSize}_p${nlf0stream}.pr
t";
# generate proto type
open(PROTO,">$prtfile") || die "Cannot open
$!";
# output header
print PROTO "~o <VecSize> $vSize <USER> ";
print PROTO "<MSDINFO> $nstream 0 ";
for ($s=1;$s<=$nlf0stream;$s++) {
print PROTO "1 ";
}
print PROTO "<StreamInfo> $nstream
$mcepvSize ";
for ($s=1;$s<=$nlf0stream;$s++) {
print PROTO "1 ";
}
print PROTO "\n";
# output HMM
print PROTO "<BeginHMM>\n";
print PROTO " <NumStates> $nStates\n";
#
for ($i=2;$i<$nStates;$i++) {
for ($j=1;$j<=$nStates;$j++) {
print PROTO "6.000e-1 " if ($i==$j);
print PROTO "4.000e-1 " if ($i==$j-1);
print PROTO "0.000e+0 " if ($i!=$j &&
$i!=$j-1);
}
print PROTO "\n ";
}
close(PROTO);
}
$state = $numstate;
$setk = $set{$kind};
if($kind eq 'dur'){
$state = 1;
}
close(EDFILE);
}
close(EDFILE);
}
print "\n";
close(GENSCP);
}