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.
- Python 3.11
- PyTorch 2.11 + CUDA 12.8
demucs-inferconhtdemucs_ftyt-dlp+ Deno para YouTube- FFmpeg desde conda-forge
- FastAPI + Uvicorn + Jinja2
- Tailwind CSS v4 en la interfaz web
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.txtPara un entorno demiset existente y sano:
conda activate demiset
python -m pip install --upgrade -r requirements.txtNo es necesario reinstalar FFmpeg si ya responde correctamente a:
ffmpeg -version
ffprobe -versionpython -c "from Utils.FFmpeg import require_ffmpeg; print(require_ffmpeg())"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')"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')"Inicia el servidor local y abre el navegador automáticamente:
python WebApp.py --openO inicia manualmente:
python WebApp.pyAbre:
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.zipterminado; - 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.
Por seguridad, Demiset escucha solo en localhost. Para exponerlo deliberadamente en la red local:
python WebApp.py --host 0.0.0.0 --port 8000No hay autenticación incorporada, así que no se recomienda exponer ese puerto directamente a Internet.
El límite por defecto es 10 GB. Puedes modificarlo antes de iniciar el servidor:
$env:DEMISET_MAX_UPLOAD_GB = "20"
python WebApp.py --openLa 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.
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 15El 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.
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
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
Pytubeya no se usa.- El paquete original
facebookresearch/demucsya no se usa. demucs-inferevita las restricciones antiguas detorchaudio.yt-dlpse instala desde su rama oficial actual para recibir con rapidez correcciones de YouTube.- Deno y FFmpeg se administran mediante Conda, no pip.
GoogleDriveManager.pysigue siendo una utilidad opcional orientada a Google Colab; no participa en el flujo principal de Windows/web.