# 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 ```text 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 `_pd` untuk kelas `PD` atau Percaya Diri. - Nama file mengandung `_tpd` untuk kelas `TPD` atau Tidak Percaya Diri. Contoh: ```text a_pd.wav a_tpd.wav ``` ## Cara Menjalankan ```bash 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 ```bash cd ml ../cv_app/.venv/bin/python -m uvicorn api_app:app --host 0.0.0.0 --port 8000 ``` Endpoint: ```text POST /predict GET /predictions GET /model ``` Hasil prediksi disimpan ke MySQL/MariaDB agar bisa dilihat lewat phpMyAdmin: ```text database: confivoice table: prediction_results ``` Jika MySQL memakai port/user/password berbeda, atur environment sebelum menjalankan API: ```bash 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.