Proyek ini bertujuan untuk membangun sistem Automatic Speech Recognition (ASR) yang mampu mengenali dan mentranskripsikan ucapan dalam Bahasa Jawa ke dalam bentuk teks. Fokus utama dari eksperimen ini adalah eksplorasi arsitektur berbasis Deep Neural Network (DNN), khususnya menggunakan pendekatan Transformer.
Proyek ini mencakup pembuatan korpus data suara Bahasa Jawa (formal/sehari-hari), preprocessing data audio dan teks, serta pelatihan model menggunakan dua skenario: Training from Scratch dan Fine-tuning Pretrained Model.
Sesuai dengan spesifikasi tugas, tujuan utama dari proyek ini adalah:
- Pembuatan Korpus: Mengumpulkan dataset ucapan Bahasa Jawa yang valid dan terstruktur.
- Eksplorasi Arsitektur: Memahami dan mengimplementasikan teknik pemodelan berbasis DNN/Transformer.
- Eksperimen Model: Membandingkan performa antara model yang dilatih dari awal (scratch) dan model pretrained.
- Evaluasi: Mengukur kinerja model secara kuantitatif menggunakan metrik Word Error Rate (WER) dan Phoneme/Character Error Rate (PER/CER), serta melakukan analisis kualitatif terhadap kesalahan prediksi.
Sebelum data dimasukkan ke dalam model, dilakukan serangkaian tahapan preprocessing untuk menjamin kualitas dan konsistensi data. Skrip preprocessing (preprocess.py) melakukan langkah-langkah berikut:
Transkrip kalimat dibersihkan agar konsisten dengan spesifikasi:
- Lowercase: Semua huruf diubah menjadi huruf kecil.
- Punctuation Removal: Menghapus semua tanda baca kecuali apostrof (
'). - Character Normalization: Mengubah karakter aksen seperti
é(e-pepet) atauèmenjadiebiasa untuk menyederhanakan vocabulary. - Alphabet Only: Memastikan tidak ada angka atau simbol numerik; hanya huruf
a-zyang diizinkan.
Setiap file rekaman diproses menggunakan library librosa dan soundfile:
- Resampling: Mengubah sample rate audio menjadi 16.000 Hz (16 kHz) sesuai standar model ASR.
- Mono Channel: Mengonversi audio menjadi satu kanal (mono).
- Bit-Depth: Memastikan format audio adalah PCM 16-bit.
- Silence Trimming: Memotong bagian hening (silence) di awal dan akhir rekaman dengan ambang batas (threshold) 20dB untuk efisiensi pelatihan.
Pembagian data dilakukan dengan strategi Speaker-Disjoint untuk mencegah kebocoran data (data leakage):
- Test Set (20% Speaker): Diambil dari 10% speaker native dan 10% speaker non-native secara acak. Suara speaker ini tidak pernah dilihat oleh model saat training.
- Train Set (70% Data): Digunakan untuk melatih bobot model.
- Validation Set (10% Data): Digunakan untuk evaluasi saat training (per-utterance split).
- Run preprocess.py untuk generate dataset train, validation, dan test.
- Run EDA.ipynb dan EDAbeforePreproc.ipynb jika ingin melihat analisis dataset
-
Preprocessing Data
- Jalankan
preprocess.pyuntuk menghasilkan dataset yang akan digunakan untuk finetuning (train, validation, test di folderprocessed_data/). - Contoh perintah:
python preprocess.py
- Jalankan
-
Eksplorasi Data (Opsional)
- Jalankan notebook
EDA.ipynbdan/atauEDAbeforePreproc.ipynbuntuk analisis data.
- Jalankan notebook
-
Upload Data ke Colab (Opsional)
- Jika menggunakan Google Colab, upload file
processed_data.zipke Google Drive Anda. - Pastikan path di notebook sudah sesuai dengan lokasi file di Drive.
- Jika menggunakan Google Colab, upload file
-
Finetuning Model
- Terdapat 2 finetuning model, Transformer dengan CTC dan Transformer Encoder Decoder.
- Buka dan jalankan salah satu notebook
Finetuned_Transformer_CTC.ipynbatauFinetuned_Transformer_Encoder_Decoder.ipynb. - Ikuti instruksi di notebook untuk memulai proses training dan inferensi.
- Notebook akan melakukan loading model pretrained, training (finetuning), dan evaluasi.
-
Evaluasi & Inferensi
- Setelah training selesai, notebook akan melakukan evaluasi pada data test dan menampilkan hasil prediksi.
- Hasil prediksi dapat dibandingkan dengan ground truth untuk menghitung WER/CER.
- Pastikan semua dependensi Python sudah terinstall sesuai kebutuhan (lihat requirements atau install manual:
librosa,soundfile,torch, dll). - Untuk menjalankan di Colab, pastikan runtime sudah menggunakan GPU untuk mempercepat proses training. Pastikan juga zip processed_data dan cache_npy sudah terupload di drive
-
Preprocessing Data
- Jalankan
preprocess.pyuntuk menghasilkan dataset train, validation, dan test di folderprocessed_data/. - Contoh perintah:
python preprocess.py
- Jalankan
-
Eksplorasi Data (Opsional)
- Jalankan notebook
EDA.ipynbdan/atauEDAbeforePreproc.ipynbuntuk analisis data.
- Jalankan notebook
-
Training Model dari Awal
- Masuk ke folder
from_scratch/. - Jalankan script training:
python train.py
- Model dan log training akan tersimpan di folder
from_scratch/checkpoints/.
- Masuk ke folder
-
Evaluasi & Inferensi
- Setelah training selesai, gunakan script atau notebook yang tersedia untuk melakukan evaluasi dan inferensi pada data test.
- Hasil prediksi dapat dibandingkan dengan ground truth untuk menghitung WER/CER.