Metode Penilaian Kemiripan Bacaan Al-Qur'an pada Pembelajaran DIROSA Menggunakan Representasi Audio WavLM dan Dynamic Time Warping
Repositori ini berisi implementasi dari penelitian skripsi berjudul "Metode Penilaian Kemiripan Bacaan Al-Qur'an pada Pembelajaran DIROSA Menggunakan Representasi Audio WavLM dan Dynamic Time Warping".
Metode yang diajukan mengukur seberapa mirip bacaan Al-Qur'an seorang peserta DIROSA terhadap bacaan referensi, melalui pendekatan berbasis deep audio representation learning. Fitur audio diekstraksi menggunakan model pretrained WavLM, kemudian dibandingkan secara sekuensial menggunakan Dynamic Time Warping (DTW) untuk menghasilkan skor kemiripan.
Metode ini membandingkan dua rekaman audio bacaan Al-Qur'an dan menghasilkan skor kemiripan pada skala 0--100. Pipeline pemrosesan meliputi empat tahap utama:
Pemuatan dan pra-pemrosesan audio -- resampling ke 16 kHz, konversi mono, VAD endpoint trimming, dan normalisasi amplitudo.
Ekstraksi fitur -- menggunakan model pretrained WavLM Base Plus (tersimpan lokal di folder wavlm-base-plus/) untuk menghasilkan representasi frame-level dari 12 layer transformer.
Pencocokan sekuens -- Dynamic Time Warping dengan jarak cosine dan batasan Sakoe-Chiba band.
Penilaian -- konversi jarak DTW ternormalisasi ke skor 0--100 melalui pemetaan logistik (sigmoid) yang telah dikalibrasi.
Dataset audio yang digunakan dalam penelitian ini terdiri dari 20 frasa bacaan DIROSA (Pertemuan 1--20) yang dibacakan oleh 5 peserta, masing-masing dibandingkan terhadap satu audio referensi per frasa.
Format audio: WAV, mono, 16-bit PCM. Audio akan di-resample ke 16 kHz secara otomatis jika diperlukan.
Penjelasan Modul
audio_loader.py -- AudioLoader
Bertanggung jawab atas seluruh tahap pra-pemrosesan audio:
Pemuatan audio: menggunakan soundfile sebagai loader utama (tanpa dependensi FFmpeg), dengan fallback ke torchaudio.
Resampling: konversi otomatis ke 16 kHz (target sample rate WavLM).
Konversi mono: audio stereo dirata-ratakan menjadi satu kanal.
VAD Endpoint Trimming: menggunakan WebRTC VAD dengan mekanisme hysteresis (onset/offset) untuk menghapus segmen hening di awal dan akhir tanpa memotong jeda internal.
Energy Refinement: pemangkasan berbasis RMS envelope untuk menghilangkan sisa noise atau napas yang lolos dari VAD.
Normalisasi amplitudo: penskalaan waveform ke rentang [-1, 1].
wavlm_encoder.py -- WavLMEncoder
Mengekstraksi fitur frame-level menggunakan model pretrained WavLM (frozen, tanpa fine-tuning):
Mendukung ekstraksi dari satu layer tertentu atau beberapa layer sekaligus.
Model berjalan di GPU secara otomatis jika CUDA tersedia.
Pipeline PyTorch-only (TensorFlow/Flax dinonaktifkan secara eksplisit).
dtw_similarity.py -- DTWSimilarity
Modul inti pencocokan sekuens:
Cost matrix: jarak cosine atau Euclidean (vectorised).
DTW dengan Sakoe-Chiba band: membatasi jalur warping untuk efisiensi dan menghindari alignment yang tidak realistis.
Backtracking: rekonstruksi optimal warping path.
Konversi skor: pemetaan logistik (sigmoid) dari jarak ternormalisasi ke skala 0--100.
Kalibrasi default (midpoint=0.3, steepness=10.0):
Jarak (d)
Skor
Interpretasi
~ 0.05
~ 92
Sangat mirip
~ 0.15
~ 82
Mirip
~ 0.30
= 50
Borderline
~ 0.35
~ 38
Kurang mirip
> 0.50
< 12
Sangat berbeda
scoring.py -- SimilarityScorer
Orchestrator yang menghubungkan seluruh komponen pipeline:
compute_similarity() -- mengembalikan jarak DTW mentah.
compute_detailed_similarity() -- mengembalikan hasil lengkap per layer termasuk warping path, cost matrix, diagnostik, dan waveform.
correlation_analysis.py
Modul analisis statistik untuk validasi metode:
Korelasi Spearman (monotonic) dan Pearson (linear) antara skor sistem dan rating Ustadz.
Visualisasi: bar chart, scatter plot, heatmap, dan diagram pasangan frasa.
create_dataset.py
Skrip utilitas untuk menggabungkan hasil batch processing (skor per layer) dengan rating manual Ustadz menjadi satu dataset (dataset_final.csv).
run_similarity.py
CLI entry point yang mendukung mode single (dua file) dan batch (dua folder), dengan output CSV/XLSX.
app.py
Antarmuka web berbasis Streamlit yang menyatukan seluruh fungsionalitas pipeline dalam tampilan interaktif.
Konfigurasi dan Parameter
Parameter utama pipeline dikonfigurasi melalui SimilarityScorer:
Parameter
Default
Keterangan
model_name
./wavlm-base-plus
Model WavLM (path lokal, sudah tersedia di repo)
distance_metric
cosine
Metrik jarak untuk DTW
sakoe_chiba_ratio
0.1
Lebar band Sakoe-Chiba (fraksi dari panjang sekuens)
normalize_dtw
True
Normalisasi jarak DTW berdasarkan panjang warping path
score_midpoint
0.3
Titik tengah sigmoid (jarak yang menghasilkan skor 50)
score_steepness
10.0
Ketajaman transisi sigmoid
Parameter VAD (dikonfigurasi melalui AudioLoader):
Parameter
Default
Keterangan
vad_mode
1
Agresivitas WebRTC VAD (0--3, 1--2 direkomendasikan)
vad_frame_ms
10
Panjang frame VAD dalam milidetik (10, 20, atau 30)
vad_onset_frames
2
Jumlah frame voiced berturut-turut untuk mendeteksi onset
vad_offset_frames
4
Jumlah frame unvoiced berturut-turut untuk mendeteksi offset
energy_trim_threshold
0.06
Threshold energi untuk pemangkasan tambahan pasca-VAD
Analisis Korelasi
File dataset_final.csv berisi 101 pasangan data (5 peserta x ~20 frasa) dengan kolom:
Kolom
Keterangan
ID_Pasangan
Identifier unik pasangan peserta-frasa
ID_Peserta
ID peserta (1--5)
ID_Frasa
Nama file frasa (Dirosa Pertemuan X.wav)
Score L1--Score L12
Skor kemiripan dari masing-masing layer WavLM
rating
Penilaian manual Ustadz (ground truth)
Analisis korelasi Spearman digunakan untuk mengidentifikasi layer WavLM yang paling berkorelasi dengan penilaian manusia, sehingga dapat dipilih representasi yang paling relevan secara perseptual.
Lisensi
Proyek ini dikembangkan untuk keperluan akademis (skripsi). Model WavLM Base Plus (wavlm-base-plus/) bersumber dari microsoft/wavlm-base-plus dan mengikuti lisensi yang ditetapkan oleh Microsoft Research.