Skip to content

pandaandsushi/java-transformer-automatic-speech-recognition

Repository files navigation

Pengembangan Model Pengenal Ucapan (ASR) Bahasa Jawa Berbasis Transformer

📝 Deskripsi Proyek

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.

🎯 Tujuan

Sesuai dengan spesifikasi tugas, tujuan utama dari proyek ini adalah:

  1. Pembuatan Korpus: Mengumpulkan dataset ucapan Bahasa Jawa yang valid dan terstruktur.
  2. Eksplorasi Arsitektur: Memahami dan mengimplementasikan teknik pemodelan berbasis DNN/Transformer.
  3. Eksperimen Model: Membandingkan performa antara model yang dilatih dari awal (scratch) dan model pretrained.
  4. 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.

⚙️ Tahap Preprocessing Data

Sebelum data dimasukkan ke dalam model, dilakukan serangkaian tahapan preprocessing untuk menjamin kualitas dan konsistensi data. Skrip preprocessing (preprocess.py) melakukan langkah-langkah berikut:

1. Normalisasi Teks (Text Cleaning)

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 è menjadi e biasa untuk menyederhanakan vocabulary.
  • Alphabet Only: Memastikan tidak ada angka atau simbol numerik; hanya huruf a-z yang diizinkan.

2. Pemrosesan Audio

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.

3. Pembagian Dataset (Data Splitting)

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).

Cara Run

  • Run preprocess.py untuk generate dataset train, validation, dan test.
  • Run EDA.ipynb dan EDAbeforePreproc.ipynb jika ingin melihat analisis dataset

Finetune Model

Langkah Menjalankan Model Finetuned

  1. Preprocessing Data

    • Jalankan preprocess.py untuk menghasilkan dataset yang akan digunakan untuk finetuning (train, validation, test di folder processed_data/).
    • Contoh perintah:
      python preprocess.py
  2. Eksplorasi Data (Opsional)

    • Jalankan notebook EDA.ipynb dan/atau EDAbeforePreproc.ipynb untuk analisis data.
  3. Upload Data ke Colab (Opsional)

    • Jika menggunakan Google Colab, upload file processed_data.zip ke Google Drive Anda.
    • Pastikan path di notebook sudah sesuai dengan lokasi file di Drive.
  4. Finetuning Model

    • Terdapat 2 finetuning model, Transformer dengan CTC dan Transformer Encoder Decoder.
    • Buka dan jalankan salah satu notebook Finetuned_Transformer_CTC.ipynb atau Finetuned_Transformer_Encoder_Decoder.ipynb.
    • Ikuti instruksi di notebook untuk memulai proses training dan inferensi.
    • Notebook akan melakukan loading model pretrained, training (finetuning), dan evaluasi.
  5. 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.

Catatan

  • 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

From Scratch Model

  1. Preprocessing Data

    • Jalankan preprocess.py untuk menghasilkan dataset train, validation, dan test di folder processed_data/.
    • Contoh perintah:
      python preprocess.py
  2. Eksplorasi Data (Opsional)

    • Jalankan notebook EDA.ipynb dan/atau EDAbeforePreproc.ipynb untuk analisis data.
  3. 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/.
  4. 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.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •