123 lines
2.3 KiB
Markdown
123 lines
2.3 KiB
Markdown
# ConfiVoice Mobile App
|
|
|
|
Folder `cv_app/` dipakai untuk aplikasi Flutter mobile.
|
|
|
|
Kode Flutter berada di:
|
|
|
|
```text
|
|
cv_app/mobile_app/
|
|
```
|
|
|
|
File lama Streamlit/API masih ada di folder ini untuk kompatibilitas, tetapi
|
|
struktur baru yang disarankan adalah:
|
|
|
|
```text
|
|
ml/ # API prediksi dan model machine learning
|
|
cv_web/ # Website admin
|
|
cv_app/ # Flutter mobile
|
|
```
|
|
|
|
## Menjalankan Flutter
|
|
|
|
```bash
|
|
cd cv_app/mobile_app
|
|
flutter pub get
|
|
flutter run
|
|
```
|
|
|
|
## Endpoint API
|
|
|
|
Jalankan API dari folder `ml/`:
|
|
|
|
```bash
|
|
cd ml
|
|
uvicorn api_app:app --host 0.0.0.0 --port 8000
|
|
```
|
|
|
|
Endpoint prediksi:
|
|
|
|
```text
|
|
POST /predict
|
|
```
|
|
|
|
Field multipart upload:
|
|
|
|
```text
|
|
file
|
|
student_name
|
|
```
|
|
|
|
Setiap prediksi dari Flutter akan disimpan ke database default:
|
|
|
|
```text
|
|
cv_web/data/confivoice.db
|
|
```
|
|
|
|
SQLite tetap database SQL, tetapi tidak perlu server database terpisah. Cocok
|
|
untuk menjalankan aplikasi lokal/TA.
|
|
|
|
Jika ingin melihat database lewat phpMyAdmin, gunakan mode MySQL/MariaDB:
|
|
|
|
1. Nyalakan MySQL dari XAMPP/MAMP/Laragon.
|
|
2. Buka phpMyAdmin.
|
|
3. Buat database bernama `confivoice`, atau biarkan API membuat database otomatis jika user MySQL punya izin `CREATE DATABASE`.
|
|
4. Install dependency:
|
|
|
|
```bash
|
|
cd cv_app
|
|
source .venv/bin/activate
|
|
pip install PyMySQL
|
|
```
|
|
|
|
5. Jalankan API dengan konfigurasi MySQL:
|
|
|
|
```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
|
|
python -m uvicorn api_app:app --host 0.0.0.0 --port 8000
|
|
```
|
|
|
|
Untuk MAMP, password root biasanya `root` dan port MySQL bisa `8889`:
|
|
|
|
```bash
|
|
export CONFIVOICE_MYSQL_PASSWORD=root
|
|
export CONFIVOICE_MYSQL_PORT=8889
|
|
```
|
|
|
|
Setelah prediksi dari Flutter, data akan masuk ke tabel:
|
|
|
|
```text
|
|
confivoice.prediction_results
|
|
```
|
|
|
|
Endpoint untuk melihat data:
|
|
|
|
```text
|
|
GET /predictions
|
|
GET /admin
|
|
```
|
|
|
|
Website admin dapat dibuka di:
|
|
|
|
```text
|
|
http://localhost:8001/admin
|
|
```
|
|
|
|
Jika memakai HP fisik, ganti `localhost` dengan IP komputer yang menjalankan API,
|
|
misalnya:
|
|
|
|
```text
|
|
http://192.168.1.6:8000/admin
|
|
```
|
|
|
|
## Catatan
|
|
|
|
- Folder `cv_app/` tidak berisi dataset utama.
|
|
- Folder `cv_app/` tidak berisi model utama.
|
|
- File upload diproses sebagai file sementara menggunakan `tempfile`.
|
|
- Audio non-WAV dikonversi otomatis ke WAV mono 22050 Hz menggunakan `pydub` dan `ffmpeg`.
|