Aplikasi desktop macOS untuk menghilangkan kebisingan suara latar belakang (*background noise*) secara real-time menggunakan kecerdasan buatan (AI), mirip Krisp.ai.
- Fitur Utama
- Cara Kerja & Arsitektur
- Panduan Pengguna (Instalasi Instan)
- Cara Menggunakan di Google Meet, Zoom, dan Discord
- Penggunaan Menu Bar & Background Mode
- Panduan Pengembang (Build dari Source Code)
- Struktur Proyek
- Lisensi
- π§ AI Denoising Real-Time: Menggunakan model Deep Recurrent Neural Network (RNNoise murni Rust) dengan latensi sangat rendah (< 15ms).
- π Intelligent VAD Gate & Transient Suppression: Memotong secara cerdas suara ketikan keyboard mekanikal, keresekan plastik/kertas, klik mouse, dan nafas saat tidak sedang berbicara.
- ποΈ High-Pass Filter 80Hz: Menghilangkan getaran mekanikal meja dan getaran sub-bass sebelum diproses AI.
- π Virtual Audio Driver Native macOS ("NoisyBoy Audio"): Terpasang langsung di CoreAudio HAL macOS sehingga terdeteksi secara otomatis di semua aplikasi konferensi (Google Meet, Zoom, Discord, Slack, MS Teams, OBS, dll).
- π macOS MenuBar Tray Integration: Ikon di status bar untuk kontrol cepat (pilih mic, toggle AI, ubah mode) dan aplikasi tetap berjalan lancar saat window ditutup (background running).
- π Live Dual VU Meter: Visualisasi sinyal suara Input Microphone vs Clean Output dengan animasi halo glow dinamis yang berpendar mengikuti volume suara.
- π Dua Mode Operasi:
- Meeting Mode: Mengalirkan suara bersih langsung ke Virtual Mic (tanpa feedback ke speaker lokal).
- Speaker Test Mode: Memutar suara bersih ke speaker/headphone untuk mendengar hasil filter secara lokal (loopback).
flowchart TD
A[Microphone Fisik] -->|Audio PCM| B[Rust Audio Engine - cpal]
B -->|Filter 80Hz| C[High-Pass Filter]
C -->|Frame 480 samples| D[RNNoise Neural Engine]
D -->|Voice Activity Score| E[Intelligent VAD Gate]
E -->|Clean Audio Stream| F{Pilihan Mode}
F -->|Meeting Mode| G[NoisyBoy Audio - Virtual HAL Driver]
F -->|Speaker Test Mode| H[Speaker / Headphone Lokal]
G -->|Pilih NoisyBoy Audio| I[Google Meet / Zoom / Discord]
B -.Stream Level Events (30 FPS).-> J[Flutter UI - Bloc]
J -.Kontrol Device & Toggle.-> B
| Komponen | Teknologi | Deskripsi |
|---|---|---|
| UI & State | Flutter Desktop (macOS) + BLoC | Antarmuka dark glassmorphism modern, kontrol audio, visualizer. |
| Bridge | flutter_rust_bridge |
Jembatan binding type-safe berkecepatan tinggi antara Flutter dan Rust. |
| Audio I/O | Rust (cpal, ringbuf) |
Penangkapan dan pemutaran audio real-time tanpa jeda GC. |
| AI Denoise | Rust (nnnoiseless) + DSP C++ |
Neural network RNNoise + High-Pass Filter + Smooth VAD Gating. |
| Virtual Driver | C (CoreAudio AudioServerPlugIn HAL) | Driver virtual audio macOS universal (arm64 + x86_64). |
Jika Anda hanya ingin menggunakan aplikasi tanpa perlu compile dari source code:
Buka file installer yang tersedia di folder dist/:
dist/NoisyBoy-Installer.dmgataudist/NoisyBoy-Installer.pkg
- Buka file
NoisyBoy-Installer.dmg. - Klik ganda pada
NoisyBoy-Installer.pkgdan ikuti panduan wizard instalasi:- Installer akan memasang aplikasi ke
/Applications/NoisyBoy.app. - Installer akan memasang virtual audio driver ke
/Library/Audio/Plug-Ins/HAL/NoisyBoyAudio.driver. - Driver audio akan langsung diaktifkan secara otomatis.
- Installer akan memasang aplikasi ke
- Buka NoisyBoy dari Launchpad atau folder
/Applications.
Setelah NoisyBoy terpasang, ikuti 3 langkah mudah berikut:
- Buka aplikasi NoisyBoy.
- Pastikan mode berada pada Meeting Mode (tab kiri).
- Pilih Input Microphone fisik yang Anda gunakan (contoh: MacBook Air Microphone atau headset bluetooth Anda).
- Pastikan toggle AI Noise Suppression dalam keadaan aktif (berwarna ungu).
- Tekan tombol bulat besar di tengah hingga berstatus ACTIVE.
- Buka Google Meet
$\rightarrow$ Klik icon Settings (roda gigi)$\rightarrow$ Audio. - Pada bagian Microphone, pilih NoisyBoy Audio.
- Matikan fitur bawaan "Noise cancellation" di Google Meet agar suara tidak terproses ganda.
- Buka Zoom
$\rightarrow$ Settings$\rightarrow$ Audio. - Pada bagian Microphone, pilih NoisyBoy Audio.
- (Opsional) Set "Noise suppression" di Zoom ke Low / Auto.
- Buka Discord
$\rightarrow$ User Settings (icon gerigi)$\rightarrow$ Voice & Video. - Pada bagian Input Device, pilih NoisyBoy Audio.
- Matikan "Krisp / Noise Suppression" bawaan Discord untuk efisiensi CPU maksimal.
NoisyBoy dirancang agar tidak mengganggu aktivitas kerja Anda di Mac:
- Tetap Aktif di Background: Saat Anda menutup window utama menggunakan tombol merah Close (X), aplikasi tidak akan mati. Suara meeting Anda akan tetap jernih dan disaring di background.
- Ikon Status Bar: Klik ikon mikrofon di menu bar atas macOS untuk:
- Melihat status aktif NoisyBoy.
- Membuka kembali window utama ("Buka Window NoisyBoy").
- Menyalakan/mematikan NoisyBoy secara instan.
- Mengganti input mic atau output speaker tanpa membuka window.
- Keluar Sepenuhnya: Untuk menutup aplikasi total, pilih "Keluar NoisyBoy (Quit)" dari menu bar atau tekan
Cmd + Q.
- macOS 12.0 (Monterey) atau yang lebih baru.
- Xcode & Command Line Tools (
xcode-select --install). - Flutter SDK (versi 3.24+).
- Rust Toolchain & Cargo (
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh). - flutter_rust_bridge_codegen (
cargo install flutter_rust_bridge_codegen --version 2.12.0).
# Clone repositori
git clone https://github.com/yudisetiawan/noisyboy.git
cd noisyboy
# Install Flutter packages
flutter pub get# Compile dan pasang driver ke /Library/Audio/Plug-Ins/HAL/
sudo bash driver/install_driver.shflutter run -d macosflutter_rust_bridge_codegen generateUntuk membuat paket installer release siap pakai:
./packaging/build_installer.shFile installer hasil build akan tersedia di direktori dist/:
dist/NoisyBoy-Installer.pkgdist/NoisyBoy-Installer.dmg
noisyboy/
βββ assets/ # Aset ikon dan logo (tray_icon.png)
βββ driver/ # Source code Driver Virtual Audio macOS
β βββ NoisyBoyAudio.c # CoreAudio AudioServerPlugIn HAL Driver (C)
β βββ Info.plist # Bundle metadata driver
β βββ build_driver.sh # Skrip build universal driver (arm64 + x86_64)
β βββ install_driver.sh # Skrip instalasi driver ke macOS HAL
β βββ uninstall_driver.sh # Skrip uninstal driver
βββ lib/ # Flutter UI Layer
β βββ bloc/ # BLoC State Management (LoopbackBloc)
β βββ src/rust/ # Auto-generated Flutter-Rust bridge bindings
β βββ main.dart # UI Utama, MenuBar Tray & Window Manager
βββ macos/ # Konfigurasi project macOS Flutter Runner
βββ packaging/ # Toolchain Packaging macOS
β βββ scripts/postinstall # Skrip aktivasi otomatis CoreAudio saat install
β βββ build_installer.sh # Skrip pembuat installer PKG & DMG universal
βββ rust/ # Core Audio & AI Denoising Engine (Rust)
β βββ Cargo.toml # Dependensi Rust (cpal, nnnoiseless, ringbuf)
β βββ src/api/audio.rs # Pipeline audio, resampler, HighPassFilter, VAD Gate
βββ dist/ # Output installer (.dmg & .pkg)
βββ PRD.md # Product Requirement Document
βββ README.md # Dokumentasi & Panduan Proyek
Proyek ini dibangun untuk penggunaan pribadi dan didistribusikan di bawah lisensi open-source. Driver virtual CoreAudio berbasis pada arsitektur open-source Audio Server Plugin.