MIF_E31231708/ml/README.md

87 lines
1.8 KiB
Markdown

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