Nebula adalah asisten suara yang berjalan sepenuhnya secara offline. Dibangun menggunakan C++ dan ditenagai oleh Vosk API serta ONNX Runtime, Nebula dirancang khusus untuk pengguna Linux (dioptimalkan untuk Hyprland) yang mengutamakan privasi, efisiensi daya, dan performa tinggi tanpa ketergantungan pada koneksi internet.
- Offline Recognition: Pemrosesan suara 100% lokal tanpa mengirim data ke cloud.
- C++ Performance: Arsitektur yang ringan dengan manajemen memori yang dioptimalkan untuk penggunaan sistem jangka panjang.
- Hyprland Integration: Kontrol penuh terhadap window manager melalui perintah suara (pindah workspace, buka aplikasi, tutup jendela, dll).
- Custom Command Mapping: Pemetaan perintah suara ke shell script atau perintah terminal dengan mudah.
- Engine & Stream Optimization (Bug Fix):
- Memperbaiki isu deadlock (sistem terjebak di listening tanpa timeout) via Waybar dengan me-reset signal SIGPIPE ke SIG_DFL pada inisialisasi NebulaEngine
- Menambahkan argumen --buffer 1024 pada pipeline SoX untuk mencegah audio buffering pada OS, memastikan aliran suara ke Vosk stabil dan tidak terpotong saat stream switching
- Wake Word False Positive Fix (NN Reliability):
- Memperbaiki stride akumulator inferensi di
WakeWordDetector:accumulated_samples_ -= INFER_STRIDE_SAMPLES(bukan= 0) agar periodisitas inferensi NN terjaga walau ukuran chunk stream bukan kelipatan 8000 sampel — sebelumnya inferensi berjalan terlalu sering sehingga noise ambient punya banyak kesempatan tembus threshold - Memanggil
wakeword_.reset_buffer()setiap kalistream.switch_to(...)berhasil agar ring buffer wake word tidak tercampur audio dari domain berbeda (audio SoX-filtered vs raw PCM) saat transisi IDLE↔LISTENING - Menaikkan
SILENCE_THRESHOLD_SQdari1e-4fke1e-3funtuk menolak noise ambient ruang berisik (kipas, AC, lalu lintas) sebelum inferensi NN dieksekusi - Menyetel
DETECT_THRESHOLDke0.70fsesuai analisis threshold optimal dari validation set training (F1 score terbaik)
- Memperbaiki stride akumulator inferensi di
- Language: C++ (Standard 17/20)
- Speech Engine: Vosk API
- Neural Network Runtime: ONNX Runtime (single merged session: MFCC preprocessor + CRNN wake word, INT8 quantized)
- Audio Pipeline: SoX (Sound eXchange)
- Audio Server: PipeWire / PulseAudio
- System Control: Shell integration (execv/system calls)
- OS Target: Linux Mint Hyprland (Full Feature), ZorinOs (Partial Feature)
Pastikan sistem Anda memiliki dependensi berikut sebelum melakukan kompilasi:
- Compiler: GCC atau Clang yang mendukung C++17+.
- Vosk SDK: Library pengembangan Vosk.
- ONNX Runtime: Library
libonnxruntime.soterinstal di sistem (misal di/usr/local/lib). - PortAudio: Untuk menangkap input mikrofon secara real-time.
- Hyprland: (Opsional) Untuk fitur integrasi window manager.
git clone [https://github.com/hammPa/nebula.git](https://github.com/hammPa/nebula.git)
cd nebulamkdir model
# Download model bahasa Inggris (Vosk Small)
wget [https://alphacephei.com/vosk/models/vosk-model-small-en-us-0.15.zip](https://alphacephei.com/vosk/models/vosk-model-small-en-us-0.15.zip)
unzip vosk-model-small-en-us-0.15.zip -d model/Pastikan file model nebula_wake_word.onnx sudah berada di direktori root proyek agar sistem tidak memicu mode fallback.
Model `nebula_full.onnx` adalah hasil penggabungan dua graph ONNX:
- `mfcc_preprocessor.onnx` — preprocessing audio ke fitur MFCC
- `nebula_wake_word_int8.onnx` — CRNN classifier (INT8 quantized)
Atau gunakan `nebula_full.onnx` yang sudah tersedia di repositori.mkdir build
cd build
cmake ..
make# Pastikan berada di direktori yang terdapat config dan model (disarankan root)
./nebula commands.json