xtts-castellano / finetune_xtts_hf.py
sob111's picture
Update finetune_xtts_hf.py
54638f8 verified
raw
history blame
2.1 kB
import os
import subprocess
from huggingface_hub import HfApi, HfFolder, upload_folder, snapshot_download
# === Configuración ===
HF_MODEL_ID = "tu_usuario/xtts-v2-finetuned" # <--- cambia con tu repo en HF
HF_TOKEN = os.environ.get("HF_TOKEN") # Debe estar definido en tu Space/entorno
DATASET_PATH = "/home/user/app/dataset" # Ruta a tu dataset
OUTPUT_PATH = "/tmp/output_model"
BASE_MODEL = "coqui/XTTS-v2"
os.makedirs("./xtts_model", exist_ok=True)
os.makedirs("./output", exist_ok=True)
local_cache = "/tmp/hf_cache"
os.makedirs(local_cache, exist_ok=True)
print("=== Descargando modelo base desde Hugging Face ===")
model_dir = snapshot_download(
repo_id="coqui/XTTS-v2",
local_dir="xtts_model",
cache_dir=local_cache, # 👈 Forzamos el caché aquí
local_dir_use_symlinks=False,
resume_download=True
)
print(f"Modelo descargado en: {model_dir}")
CONFIG_PATH = "./xtts_model/config.json"
RESTORE_PATH = "./xtts_model/model.pth"
# === 2. Editar configuración para tu dataset VoxPopuli ===
print("=== Editando configuración para fine-tuning con VoxPopuli ===")
import json
with open(CONFIG_PATH, "r") as f:
config = json.load(f)
config["output_path"] = OUTPUT_PATH
config["datasets"] = [
{
"formatter": "voxpopuli",
"path": DATASET_PATH,
"meta_file_train": "metadata.json"
}
]
config["run_name"] = "xtts-finetune-voxpopuli"
config["lr"] = 1e-5 # más bajo para fine-tuning
with open(CONFIG_PATH, "w") as f:
json.dump(config, f, indent=2)
# === 3. Lanzar entrenamiento ===
print("=== Iniciando fine-tuning de XTTS-v2 ===")
subprocess.run([
"python", "TTS/bin/train_tts.py",
"--config_path", CONFIG_PATH,
"--restore_path", RESTORE_PATH
], check=True)
# === 4. Subir modelo resultante a HF ===
print("=== Subiendo modelo fine-tuneado a Hugging Face Hub ===")
api = HfApi()
HfFolder.save_token(HF_TOKEN)
upload_folder(
repo_id=HF_MODEL_ID,
repo_type="model",
folder_path=OUTPUT_PATH,
token=HF_TOKEN
)
print("✅ Fine-tuning completado y modelo subido a Hugging Face.")