docs: move localized readmes to docs directory and update link paths
This commit is contained in:
@@ -0,0 +1,165 @@
|
||||
# 🎙️ ONNX VC - Standalone Real-Time Voice Changer
|
||||
|
||||
🌐 **Idiomas:** [English](../README.md) | [Bahasa Indonesia](README.id.md) | [Español](README.es.md) | [日本語](README.ja.md) | [简体中文](README.zh.md)
|
||||
|
||||
Un sistema de conversión de voz por IA en tiempo real, de alto rendimiento y baja latencia, impulsado por **ONNX Runtime** y **Retrieval-based Voice Conversion (RVC)**. Cuenta con un panel de control premium desarrollado con **Next.js App Router**, **TypeScript** y **Tailwind CSS**, con soporte para internacionalización completa.
|
||||
|
||||
---
|
||||
|
||||
## ✨ Características Clave
|
||||
* **🚀 Canal de Audio WebSocket (Audio Pipeline):** Transferencia de audio en tiempo real mediante conexiones WebSocket binarias (PCM float32 sin procesar) para una latencia mínima.
|
||||
* **⚡ Aceleración ONNX Multi-Backend:** Soporta proveedores de ejecución que incluyen NVIDIA `CUDA`, AMD/Intel `DirectML` y CPU como respaldo.
|
||||
* **🌐 Localización Universal:** Interfaz completamente traducible que soporta inglés, indonesio, japonés, chino y español.
|
||||
* **🎨 Panel de Control Premium:** Entorno de trabajo responsivo construido con React 19, Radix UI, Framer Motion y Tailwind CSS.
|
||||
* **🎼 Canal DSP de Alta Fidelidad:**
|
||||
* **Filtro de Corte Bajo (Low-Cut Filter):** Filtro de paso alto Butterworth activo de primer orden a 80 Hz para eliminar el zumbido de CA y los ruidos de fondo.
|
||||
* **Puerta de Ruido (Noise Gate):** Supresión de ruido basada en umbral para omitir la inferencia durante el silencio (ahorrando ciclos de CPU/GPU).
|
||||
* **Controles de Ganancia:** Control de ganancia digital independiente de entrada y salida.
|
||||
* **🧠 Extracción Avanzada de Tono:** Predicción de tono optimizada a 16 kHz utilizando el modelo RMVPE (Retrieval-based Minimum Vocal Pitch Estimation).
|
||||
* **🌐 Arquitectura de Enrutamiento Dual:** Permite enrutar el audio a través del navegador web (Web Audio API) o directamente mediante el hardware de audio local del servidor (utilizando `sounddevice`).
|
||||
|
||||
---
|
||||
|
||||
## 🛠️ Arquitectura del Sistema
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
A[Micrófono / Navegador Web] -->|Web Audio API| B(Conexión WebSocket)
|
||||
B -->|Fragmento de PCM Float32 sin procesar| C[Backend de server.py]
|
||||
C -->|1. Filtro de paso alto 80Hz| D[Tahap DSP]
|
||||
D -->|2. Ganancia y puerta de ruido| D
|
||||
D -->|3. Remuestreo a 16kHz| E[Hubert/ContentVec ONNX]
|
||||
D -->|4. Estimación de tono RMVPE| F[Predictor de tono]
|
||||
E --> G[Inferencia del modelo RVC ONNX]
|
||||
F --> G
|
||||
G -->|Fragmentos de audio de destino| H(Conexión WebSocket)
|
||||
H -->|Reproducir audio| I[Altavoces del navegador / Dispositivo de audio]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📁 Estructura del Repositorio
|
||||
* [server.py](file:///M:/Users/ahmad/project/onnx-voice-changer/server.py) — El servidor backend WebSocket principal que gestiona los bucles de conexión, el remuestreo de audio y la ejecución del modelo.
|
||||
* [start.bat](file:///M:/Users/ahmad/project/onnx-voice-changer/start.bat) — Archivo por lotes ejecutable para Windows que inicializa automáticamente el entorno virtual de Python y ejecuta el servidor.
|
||||
* [requirements.txt](file:///M:/Users/ahmad/project/onnx-voice-changer/requirements.txt) — Lista de dependencias de Python.
|
||||
* [frontend/](file:///M:/Users/ahmad/project/onnx-voice-changer/frontend) — El espacio de trabajo del cliente frontend construido con Next.js (TypeScript, Tailwind CSS).
|
||||
* [frontend-deprecated/](file:///M:/Users/ahmad/project/onnx-voice-changer/frontend-deprecated) — Código frontend antiguo ya en desuso.
|
||||
* [lib/](file:///M:/Users/ahmad/project/onnx-voice-changer/lib) — Paquete central que contiene los modelos de inferencia, scripts de conversión a ONNX y herramientas de predicción.
|
||||
* [weights/](file:///M:/Users/ahmad/project/onnx-voice-changer/weights) — Directorio para los archivos de peso de los modelos de voz de personajes (ej. `weights/HuTao/`).
|
||||
* [pretrained/](file:///M:/Users/ahmad/project/onnx-voice-changer/pretrained) — Directorio que contiene los modelos base preentrenados.
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Instalación y Configuración
|
||||
|
||||
### 📋 Requisitos Previos
|
||||
* **Python 3.10+**
|
||||
* **FFmpeg** instalado y agregado al PATH del sistema (necesario para las utilidades de procesamiento de audio).
|
||||
* **Node.js 18+** y **npm** (necesario para ejecutar el cliente frontend Next.js).
|
||||
* (Opcional) **NVIDIA CUDA Toolkit** (v11.x/12.x) y **cuDNN** para aceleración de ejecución en GPU.
|
||||
|
||||
---
|
||||
|
||||
### 📦 1. Instalación del Backend de Python
|
||||
1. Clone este repositorio en su directorio local.
|
||||
2. Inicialice y active un entorno virtual:
|
||||
```bash
|
||||
python -m venv venv
|
||||
# En Windows:
|
||||
.\venv\Scripts\activate
|
||||
# En Linux/macOS:
|
||||
source venv/bin/activate
|
||||
```
|
||||
3. Instale las dependencias requeridas:
|
||||
```bash
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 📥 2. Descargar ContentVec Preentrenado (Requerido)
|
||||
El modelo requiere un modelo base ContentVec para generar las características del hablante a partir de los fragmentos de voz.
|
||||
1. Descargue el modelo `vec-768-layer-12.onnx` desde Hugging Face:
|
||||
👉 **[Descargar vec-768-layer-12.onnx](https://huggingface.co/DogManTC/test-rvc-onnx/blob/main/vec-768-layer-12.onnx)**
|
||||
2. Guarde el archivo descargado dentro del directorio `pretrained/`:
|
||||
```
|
||||
pretrained/
|
||||
└── vec-768-layer-12.onnx
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 🔄 3. Configuración y Exportación de Modelos RVC a ONNX
|
||||
Para ejecutar modelos de personajes en ONNX Runtime, debe colocar sus modelos RVC estándar de PyTorch (`.pth`) bajo el directorio `weights/` y convertirlos.
|
||||
|
||||
1. Cree una subcarpeta bajo `weights/` con el nombre de su personaje (ej. `HuTao`):
|
||||
```
|
||||
weights/
|
||||
└── HuTao/
|
||||
└── HuTao.pth
|
||||
```
|
||||
2. Ejecute el script de conversión a ONNX pasando el nombre de la carpeta del modelo:
|
||||
```bash
|
||||
python lib/export_onnx.py --model_name HuTao
|
||||
```
|
||||
3. El script buscará automáticamente el archivo `.pth` dentro de `weights/HuTao/` y exportará el archivo `HuTao.onnx` correspondiente en el mismo directorio:
|
||||
```
|
||||
weights/
|
||||
└── HuTao/
|
||||
├── HuTao.pth
|
||||
└── HuTao.onnx
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 🖥️ 4. Ejecución del Cliente Frontend
|
||||
El cliente frontend se ejecuta como un servidor de desarrollo independiente de Next.js o como un servidor de producción compilado.
|
||||
|
||||
1. Navegue al directorio frontend:
|
||||
```bash
|
||||
cd frontend
|
||||
```
|
||||
2. Instale las dependencias de npm:
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
3. Inicie el servidor de desarrollo:
|
||||
```bash
|
||||
npm run dev
|
||||
```
|
||||
Abra su navegador y acceda a **`http://localhost:3000`**.
|
||||
|
||||
Alternativamente, para compilar y ejecutar el servidor de producción:
|
||||
```bash
|
||||
npm run build
|
||||
npm run start
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🏃 Funcionamiento del Cambiador de Voz
|
||||
|
||||
### Paso 1: Iniciar el Backend WebSocket de Python
|
||||
Ejecute el servidor desde su terminal (puerto predeterminado `8765`):
|
||||
```bash
|
||||
python server.py --host 127.0.0.1 --port 8765 --device cuda
|
||||
```
|
||||
|
||||
#### ⚙️ Argumentos de Línea de Comandos
|
||||
| Argumento | Descripción | Predeterminado |
|
||||
|---|---|---|
|
||||
| `--host` | La dirección a la que se enlaza el servidor WebSocket. | `127.0.0.1` |
|
||||
| `--port` | Puerto de comunicación WebSocket. | `8765` |
|
||||
| `--device` | El dispositivo de ejecución de ONNX Runtime (`cpu`, `cuda`, `dml`). | `cuda` |
|
||||
| `--model` | Nombre de la carpeta de destino en `weights/` para cargar directamente al inicio. | `None` |
|
||||
|
||||
### Paso 2: Abrir el Panel de Control Frontend
|
||||
Asegúrese de que su cliente frontend esté ejecutándose (a través de `npm run dev` o `npm run start` en `http://localhost:3000`), ábralo en su navegador y este se conectará automáticamente al backend de la API WebSocket.
|
||||
|
||||
---
|
||||
|
||||
## 🔊 Detalles de DSP de Audio
|
||||
Para lograr una latencia baja sin artefactos de salida, el procesamiento de audio utiliza:
|
||||
1. **Búfer de Contexto de Ventana Deslizante:** Mantiene un búfer histórico corto de audio para alimentar al modelo con los fragmentos de contexto necesarios, minimizando el retraso de la salida de audio.
|
||||
2. **Desvanecimiento por Relleno de Convolución:** Se añade temporalmente un relleno silencioso de 120 ms al final de los segmentos de entrada para evitar anomalías de desvanecimiento en los bordes, inherentes a los pasos de convolución RVC.
|
||||
3. **Remuestreo Lineal:** Interpolación lineal de bajo costo computacional para una rápida adaptación de la frecuencia de muestreo.
|
||||
Reference in New Issue
Block a user