Skip to content

Repository files navigation

Demiset

Demiset genera datasets de voz a partir de audio remoto o local. Descarga o recibe el contenido, combina el audio, extrae la voz con HTDemucs, reduce ruido, elimina silencios, mejora la señal y divide el resultado en segmentos WAV listos para entrenamiento.

La versión actual incluye CLI + interfaz web local y está preparada para GPUs NVIDIA modernas, incluida la serie RTX 50.

Stack actual

  • Python 3.11
  • PyTorch 2.11 + CUDA 12.8
  • demucs-infer con htdemucs_ft
  • yt-dlp + Deno para YouTube
  • FFmpeg desde conda-forge
  • FastAPI + Uvicorn + Jinja2
  • Tailwind CSS v4 en la interfaz web

Entorno Conda recomendado

environment.yml usa únicamente conda-forge y excluye defaults con nodefaults. Esto evita mezclar DLL/binarios incompatibles en Windows, especialmente alrededor de FFmpeg.

conda env create -f environment.yml
conda activate demiset
python -m pip install --upgrade pip
python -m pip install -r requirements.txt

Para un entorno demiset existente y sano:

conda activate demiset
python -m pip install --upgrade -r requirements.txt

No es necesario reinstalar FFmpeg si ya responde correctamente a:

ffmpeg -version
ffprobe -version

Verificaciones

FFmpeg

python -c "from Utils.FFmpeg import require_ffmpeg; print(require_ffmpeg())"

CUDA / RTX

python -c "import torch; print('Torch:', torch.__version__); print('CUDA:', torch.version.cuda); print('Disponible:', torch.cuda.is_available()); print('GPU:', torch.cuda.get_device_name(0) if torch.cuda.is_available() else 'CPU')"

Demucs

python -c "from demucs_infer.api import Separator; import torch; Separator(model='htdemucs_ft', device='cuda' if torch.cuda.is_available() else 'cpu', segment=6); print('demucs-infer OK')"

Interfaz web

Inicia el servidor local y abre el navegador automáticamente:

python WebApp.py --open

O inicia manualmente:

python WebApp.py

Abre:

http://127.0.0.1:8000

La UI permite:

  • procesar una URL remota o subir un archivo local;
  • arrastrar y soltar audio/video/ZIP;
  • ajustar reducción de ruido;
  • elegir duración de los segmentos;
  • activar/desactivar la mejora final;
  • seguir el progreso del pipeline;
  • descargar el dataset.zip terminado;
  • ver GPU, CUDA, Torch y estado de FFmpeg.

Los trabajos web se guardan en workspace/jobs/ y están excluidos de Git. El servidor procesa un trabajo GPU a la vez y deja los siguientes en cola para evitar competir por VRAM.

Acceso desde otra PC de tu red

Por seguridad, Demiset escucha solo en localhost. Para exponerlo deliberadamente en la red local:

python WebApp.py --host 0.0.0.0 --port 8000

No hay autenticación incorporada, así que no se recomienda exponer ese puerto directamente a Internet.

Límite de subida

El límite por defecto es 10 GB. Puedes modificarlo antes de iniciar el servidor:

$env:DEMISET_MAX_UPLOAD_GB = "20"
python WebApp.py --open

Tailwind CSS

La interfaz usa Tailwind CSS v4 mediante Browser/Play CDN para no requerir Node.js, npm o un proceso frontend adicional en la instalación local. Para un despliegue público/producción se recomienda compilar Tailwind a un CSS estático con Tailwind CLI/Vite y servir ese archivo localmente.

CLI

La lógica del pipeline está centralizada en Applications/DemisetPipeline.py, por lo que CLI y web ejecutan exactamente el mismo procesamiento.

URL remota:

python Demiset.py --url "https://www.youtube.com/watch?v=..."

Archivo local:

python Demiset.py --input "C:\ruta\audio.wav"

Opciones:

--workspace PATH
--noise 0-100
--segment-seconds N
--no-enhance

Ejemplo:

python Demiset.py `
  --url "https://www.youtube.com/watch?v=..." `
  --noise 40 `
  --segment-seconds 15

Formatos de entrada

El combinador busca recursivamente archivos compatibles con FFmpeg, incluyendo:

.mp3 .wav .wma .m4a .aac .flac .ogg .opus
.webm .mp4 .mkv .mov .ts

También se aceptan ZIP; se extraen de forma segura dentro del workspace del trabajo.

API web

FastAPI expone además:

GET    /
GET    /api/system
POST   /api/jobs
GET    /api/jobs/{job_id}
GET    /api/jobs/{job_id}/download
DELETE /api/jobs/{job_id}

Documentación OpenAPI local:

http://127.0.0.1:8000/docs

Estructura principal

Demiset/
├── Applications/
│   ├── DemisetPipeline.py
│   ├── AudioProcessing.py
│   ├── VoiceExtractor.py
│   ├── RemoteFileDownloader.py
│   └── ...
├── Utils/
│   └── FFmpeg.py
├── templates/
│   └── index.html
├── static/
│   ├── app.js
│   └── styles.css
├── Demiset.py
├── WebApp.py
├── environment.yml
└── requirements.txt

Notas de dependencias

  • Pytube ya no se usa.
  • El paquete original facebookresearch/demucs ya no se usa.
  • demucs-infer evita las restricciones antiguas de torchaudio.
  • yt-dlp se instala desde su rama oficial actual para recibir con rapidez correcciones de YouTube.
  • Deno y FFmpeg se administran mediante Conda, no pip.
  • GoogleDriveManager.py sigue siendo una utilidad opcional orientada a Google Colab; no participa en el flujo principal de Windows/web.

About

Generador de datasets de audio en buena calidad, útil para la generación de modelos RVC (Retrieval-Based Voice Conversion)

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages