1.8 KiB
1.8 KiB
Project SVM Suara
Project ini mengklasifikasikan tingkat percaya diri dari file audio .wav
menggunakan ekstraksi fitur suara dengan librosa dan model SVM.
Folder ml/ sekarang juga menjadi lokasi API prediksi untuk Flutter.
Gunakan Python 3.10 agar dependency audio seperti librosa, numba, dan
llvmlite lebih mudah terpasang.
Struktur
project_svm_suara/
├── data/
├── models/
├── features.py
├── audio_utils.py
├── train_model.py
├── predict.py
├── app.py
└── requirements.txt
Format Dataset
Letakkan file .wav di folder data/.
- Nama file mengandung
_pduntuk kelasPDatau Percaya Diri. - Nama file mengandung
_tpduntuk kelasTPDatau Tidak Percaya Diri.
Contoh:
a_pd.wav
a_tpd.wav
Cara Menjalankan
python3.10 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python train_model.py
python predict.py data/a_pd.wav
streamlit run app.py
Menjalankan API untuk Flutter
cd ml
../cv_app/.venv/bin/python -m uvicorn api_app:app --host 0.0.0.0 --port 8000
Endpoint:
POST /predict
GET /predictions
GET /model
Hasil prediksi disimpan ke MySQL/MariaDB agar bisa dilihat lewat phpMyAdmin:
database: confivoice
table: prediction_results
Jika MySQL memakai port/user/password berbeda, atur environment sebelum menjalankan API:
export CONFIVOICE_DB_DRIVER=mysql
export CONFIVOICE_MYSQL_HOST=127.0.0.1
export CONFIVOICE_MYSQL_PORT=3306
export CONFIVOICE_MYSQL_USER=root
export CONFIVOICE_MYSQL_PASSWORD=
export CONFIVOICE_MYSQL_DATABASE=confivoice
Aplikasi Streamlit menerima upload audio WAV, MP3, M4A, OGG, FLAC,
WEBM, dan AAC. File akan disiapkan menjadi WAV mono 22050 Hz sebelum fitur
suara diekstraksi.