7.7 KiB
🎙️ ONNX VC - Standalone Real-Time Voice Changer
🌐 Bahasa: English | Bahasa Indonesia | Español | 日本語 | 简体中文
Sistem konversi suara AI real-time berkinerja tinggi dan latensi rendah yang ditenagai oleh ONNX Runtime dan Retrieval-based Voice Conversion (RVC). Dilengkapi dengan dashboard premium yang dibuat menggunakan Next.js App Router, TypeScript, dan Tailwind CSS, serta mendukung internasionalisasi penuh.
✨ Fitur Utama
- 🚀 WebSocket Audio Pipeline: Pengiriman audio streaming menggunakan koneksi WebSocket biner (raw PCM float32) untuk overhead minimal.
- ⚡ Akselerasi ONNX Multi-Backend: Mendukung execution providers termasuk NVIDIA
CUDA, AMD/IntelDirectML, dan fallbackCPU. - 🌐 Universal Localisation: Antarmuka yang dapat diterjemahkan sepenuhnya, mendukung Bahasa Inggris, Indonesia, Jepang, Mandarin, dan Spanyol.
- 🎨 Dashboard Premium: Halaman kerja responsif yang dibangun menggunakan React 19, Radix UI, Framer Motion, dan Tailwind CSS.
- 🎼 DSP Pipeline dengan Kualitas Tinggi:
- Low-Cut Filter: Butterworth high-pass filter orde pertama aktif pada frekuensi 80Hz untuk menghilangkan hum AC dan gemuruh.
- Noise Gate: Penekanan derau berbasis ambang batas (threshold) untuk melewati inferensi saat hening (menghemat siklus CPU/GPU).
- Gain Controls: Pengaturan gain digital input/output independen.
- 🧠 Ekstraksi Pitch Canggih: Prediksi pitch 16kHz yang dioptimalkan menggunakan model RMVPE (Retrieval-based Minimum Vocal Pitch Estimation).
- 🌐 Arsitektur Dual Routing: Mendukung perutean audio melalui browser web (Web Audio API) atau langsung melalui perangkat keras audio lokal server (menggunakan
sounddevice).
🛠️ Arsitektur Sistem
graph TD
A[Mikrofon / Browser Web] -->|Web Audio API| B(Koneksi WebSocket)
B -->|Chunk PCM Float32 Mentah| C[Backend server.py]
C -->|1. High-Pass Filter 80Hz| D[Tahap DSP]
D -->|2. Gain & Noise Gate| D
D -->|3. Resample ke 16kHz| E[Hubert/ContentVec ONNX]
D -->|4. Estimasi Pitch RMVPE| F[Prediktor Pitch]
E --> G[Inferensi Model ONNX RVC]
F --> G
G -->|Chunk Audio Target| H(Koneksi WebSocket)
H -->|Putar Audio| I[Speaker Browser / Perangkat Audio]
📁 Struktur Repositori
- server.py — Server backend WebSocket utama yang mengelola loop koneksi, resampling audio, dan eksekusi model.
- start.bat — File batch peluncur Windows yang secara otomatis menyiapkan environment virtual Python dan menjalankan server.
- requirements.txt — Daftar dependensi Python.
- frontend/ — Ruang kerja klien frontend yang dibangun dengan Next.js (TypeScript, Tailwind CSS).
- frontend-deprecated/ — Kode frontend lama yang sudah usang.
- lib/ — Paket inti yang berisi model inferensi, skrip konversi ONNX, dan alat prediksi.
- weights/ — Direktori untuk bobot model suara karakter (contoh:
weights/HuTao/). - pretrained/ — Direktori yang berisi model dasar pra-terlatih.
🚀 Instalasi & Pengaturan
📋 Prasyarat
- Python 3.10+
- FFmpeg terinstal dan ditambahkan ke PATH sistem (Diperlukan untuk pemrosesan audio).
- Node.js 18+ & npm (Diperlukan untuk menjalankan klien frontend Next.js).
- (Opsional) NVIDIA CUDA Toolkit (v11.x/12.x) dan cuDNN untuk akselerasi eksekusi GPU.
📦 1. Instalasi Backend Python
- Klon repositori ini ke direktori lokal Anda.
- Inisialisasi dan aktifkan virtual environment:
python -m venv venv # Di Windows: .\venv\Scripts\activate # Di Linux/macOS: source venv/bin/activate - Instal dependensi yang diperlukan:
pip install -r requirements.txt
📥 2. Unduh Pre-trained ContentVec (Diperlukan)
Model ini memerlukan model dasar ContentVec untuk menghasilkan fitur pembicara dari potongan suara.
- Unduh model
vec-768-layer-12.onnxdari Hugging Face: 👉 Unduh vec-768-layer-12.onnx - Simpan file yang diunduh di dalam direktori
pretrained/:pretrained/ └── vec-768-layer-12.onnx
🔄 3. Siapkan & Ekspor Model RVC ke ONNX
Untuk menjalankan model karakter pada ONNX Runtime, Anda harus menempatkan model RVC PyTorch standar Anda (.pth) di bawah direktori weights/ dan mengonversinya.
- Buat sub-folder di bawah
weights/yang dinamai sesuai karakter Anda (contoh:HuTao):weights/ └── HuTao/ └── HuTao.pth - Jalankan skrip konversi ONNX dengan memasukkan nama folder model:
python lib/export_onnx.py --model_name HuTao - Skrip akan secara otomatis mencari file
.pthdi dalamweights/HuTao/dan mengekspor fileHuTao.onnxyang sesuai di dalam direktori yang sama:weights/ └── HuTao/ ├── HuTao.pth └── HuTao.onnx
🖥️ 4. Menjalankan Klien Frontend
Klien frontend berjalan sebagai server pengembangan Next.js mandiri atau server produksi yang telah di-build.
- Navigasi ke direktori frontend:
cd frontend - Instal dependensi npm:
npm install - Jalankan server pengembangan:
Buka browser Anda dan arahkan ke
npm run devhttp://localhost:3000.
Atau, untuk membuat build dan menjalankan server produksi:
npm run build
npm run start
🏃 Menjalankan Pengubah Suara
Langkah 1: Mulai Backend WebSocket Python
Jalankan server menggunakan terminal Anda (default ke port 8765):
python server.py --host 127.0.0.1 --port 8765 --device cuda
⚙️ Argumen Baris Perintah
| Argumen | Deskripsi | Default |
|---|---|---|
--host |
Alamat yang diikat oleh server WebSocket. | 127.0.0.1 |
--port |
Port komunikasi WebSocket. | 8765 |
--device |
Perangkat eksekusi ONNX Runtime (cpu, cuda, dml). |
cuda |
--model |
Nama folder target di weights/ untuk dimuat langsung saat memulai. |
None |
Langkah 2: Buka Dashboard Frontend
Pastikan klien frontend Anda berjalan (via npm run dev atau npm run start pada http://localhost:3000), buka di browser Anda, dan klien akan terhubung secara otomatis ke backend WebSocket API.
🔊 Detail DSP Audio
Untuk mencapai latensi rendah tanpa artifak output, pemrosesan audio menggunakan:
- Buffer Konteks Sliding Window: Mempertahankan buffer historis pendek dari audio untuk memberikan frame konteks yang diperlukan ke model sambil meminimalkan penundaan audio output.
- Fadeout Padding Konvolusi: Padding senyap trailing sebesar 120ms ditambahkan sementara ke segmen input untuk menghindari anomali memudar di tepi yang melekat pada langkah konvolusional RVC.
- Resampling Linear: Penggunaan overhead rendah resampling linear untuk adaptasi laju sampel yang cepat.
🤝 Kredit & Penghargaan
- Dibuat dengan ❤️ oleh Kanara Technology
- Ditenagai oleh ONNX Runtime dan Retrieval-based Voice Conversion (RVC)