Perbandingan Kinerja Model Hybrid GMM-TDNN dan TDNN dalam Pengenalan Bahasa Jawa
Pipeline Automatic Speech Recognition (ASR) untuk Bahasa Jawa menggunakan Gaussian Mixture Model (GMM) + Lexicon-HMM + N-Gram Language Model, dibangun dari scratch dengan optimasi cache MFCC dan early stopping.
| Keterangan | Detail |
|---|---|
| Sumber data | Yogyakarta, 2017 |
| Kolaborasi | Universitas Gadjah Mada × Google |
| Format audio | WAV / FLAC |
| Fitur akustik | MFCC 39-dimensi |
| Bahasa | Python 3.x |
FINAL_CODE/
├── .vscode/
├── data/
│ ├── Data/ # Dataset penuh ASR Bahasa Jawa (Google × UGM 2017)
│ │ └── [0-15]/asr_javanese/data/[sub-hash]/ # Audio WAV/FLAC per speaker hash
│ ├── sampled/ # Data hasil stratified sampling
│ │ └── [0-15]/[sub-hash]/
│ └── sampled_small/ # Subset kecil untuk eksperimen cepat
│ └── [0-15]/[sub-hash]/
├── skripsi/ # Virtual environment Python
│ └── Lib/site-packages/ # Dependensi terinstall
├── src/
│ ├── codeStat/
│ │ ├── Filecsv_pdf/ # Konversi dan ekspor hasil ke CSV/PDF
│ │ ├── modelimports/ # Helper import modul
│ │ ├── modelling/
│ │ │ ├── languageModelling/
│ │ │ │ └── srcLanguageModelling/ # N-Gram LM
│ │ │ └── voiceModelling/
│ │ │ └── srcVoiceModelling/
│ │ │ └── GMM_TDNN/
│ │ │ ├── out/GMM/ # Output hasil model GMM
│ │ │ ├── nonfix_out/GMM/ # Output iterasi awal (non-final)
│ │ │ └── src/
│ │ │ ├── GMM/ # Kode model GMM + test
│ │ │ └── TDNN/ # Kode model TDNN + test
│ │ ├── pastModelling/
│ │ │ └── wordErrorRate/src_WER/ # Evaluasi WER versi lama
│ │ └── preModelling/
│ │ ├── featureExtraction/ # Ekstraksi MFCC 39-dim
│ │ │ ├── out_featureExtraction/
│ │ │ └── src_featureExtraction/
│ │ ├── list_file/src_list_file/ # Utilitas listing file audio
│ │ ├── samplingStratified/ # Stratified sampling script
│ │ │ ├── out_samplingStratified/
│ │ │ └── src_StratifiedSampling/
│ │ ├── sampling_Quantization/ # Sampling & kuantisasi audio
│ │ │ ├── out_Sampling_Quantization/
│ │ │ ├── src_Sampling_Quantization/
│ │ │ └── visualizations/ # Plot waveform, VAD, sampling
│ │ └── voiceActivityDetection/ # VAD preprocessing
│ │ ├── hasilVAD_detail_pecahan/
│ │ ├── out_VoiceActivityDetection/
│ │ └── src_VoiceActivityDetection/
│ ├── src_testPart/ # Script pengujian parsial
│ └── connection/ # Utilitas koneksi/integrasi
└── README.md
Isolasi dependensi agar tidak konflik dengan proyek lain.
python -m venv venv
source venv/bin/activate # Linux / macOS
venv\Scripts\activate # WindowsJalankan sebelum melanjutkan ke langkah berikutnya.
pip install -r requirements.txt
# atau manual:
pip install numpy pandas librosa scipySesuaikan path ke direktori lokal Anda sebelum menjalankan pipeline.
SAMPLED_ROOT = r"path/ke/folder/audio" # folder WAV/FLAC
CSV_PATH = r"path/ke/dataSampledSmall.csv" # CSV transkrip
DIR_SAVE = r"path/ke/folder/output" # folder hasilpython main_gmm.py| Masalah Versi Lama | Solusi Versi Baru |
|---|---|
| Extract MFCC 3× per audio (tahap 1, kumpulkan frame, dekode) | 1× saja → cache dict |
| Hyperparameter tuning 24× full pipeline (extract + train + decode) | 24× hanya train + decode |
| GMM score semua vocab per segmen | Top-K saja |
| N-gram kandidat: referensi ikut sebagai kandidat (curang) | Hanya hipotesis GMM |
Konvergensi selalu sampai max_iter |
Early stopping otomatis |
| Tahap | Sebelum | Sesudah |
|---|---|---|
| Extract MFCC (500 audio) | ~60 menit (3×) | ~20 menit (1×) |
| Hyperparameter tuning | ~2.5 jam (24× full) | ~30 menit (24× train+decode) |
| Total | ~3+ jam | ~50 menit |
| Parameter | Default | Keterangan |
|---|---|---|
N_COMPONENTS |
16 | K komponen GMM per kata |
N_ITER |
100 | Maks iterasi EM |
TOL |
1e-4 | Toleransi konvergensi (early stopping) |
N_GRAM |
3 | Orde N-gram (trigram) |
TOP_K_DECODE |
10 | Kandidat kata per posisi dekode |
| File | Isi |
|---|---|
HasilLexicon.csv |
Pemetaan kata → fonem Bahasa Jawa |
HasilMFCC.csv |
Info frame MFCC tiap audio |
HasilGMMGlobal.csv |
Parameter GMM global (mean, covariance, weight) |
HasilGMMPerKata.csv |
Parameter GMM tiap kata dalam leksikon |
HasilWER_GMM.csv |
WER detail tiap audio (S, D, I, N) |
HasilRingkasanWER.csv |
Statistik WER keseluruhan (mean, min, max) |
HasilHyperparameterTuning_GMM.csv |
Grid search K, tol, iter — semua kombinasi |
| Sub-bab | Topik | Implementasi |
|---|---|---|
| 3.3.4 | Feature Extraction (MFCC) | feature_extraction.py |
| 3.3.5.1 | GMM + EM Algorithm | gmm_model.py |
| 3.3.6 | Lexicon fonem Bahasa Jawa | lexicon_ngram.py |
| 3.3.7 | N-Gram (Kneser-Ney) | lexicon_ngram.py |
| 3.3.9 | Word Error Rate (WER) | lexicon_ngram.py |
| Tabel 3.4.1 | Hyperparameter Tuning | gmm_pipeline.py |
Data: Bersumber dari proyek kolaborasi Google × Universitas Gadjah Mada (2017), dikumpulkan dari penutur asli Yogyakarta. Tersedia dalam format WAV dan dikompresi ke FLAC untuk efisiensi jaringan. Periksa dokumen lisensi resmi sebelum publikasi atau pengembangan lebih lanjut.
Path: Semua path direktori bersifat lokal. Pastikan
SAMPLED_ROOT,CSV_PATH, danDIR_SAVEdimain_gmm.pysudah disesuaikan sebelum menjalankan pipeline. Kode merupakan gabungan kode scraped dan personal — verifikasi kompatibilitas pustaka sebelum digunakan.
GMM-TDNN ASR · Bahasa Jawa · J.S