87 lines
1.8 KiB
Markdown
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.
|