File size: 2,096 Bytes
3c6303c
5a079b3
907d0bc
 
 
 
 
3c6303c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
907d0bc
 
3c6303c
5a079b3
3c6303c
 
 
 
 
 
 
 
 
 
 
5a079b3
3c6303c
5a079b3
 
907d0bc
3c6303c
 
907d0bc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import os, io, requests, gradio as gr
from huggingface_hub import HfApi

TOKEN = os.environ.get("HF_TOKEN", "")
DEST_REPO = "Joker5514/models"
DEST_TYPE = "dataset"

MODELS = [
    {"filename": "rnnoise_suppressor.onnx",
     "url": "https://huggingface.co/niobures/RNNoise/resolve/main/models/rnnoise.onnx",
     "min_bytes": 100_000},
    {"filename": "demucs_v4_quantized.onnx",
     "url": "https://huggingface.co/MrCitron/demucs-v4-onnx/resolve/main/htdemucs.onnx",
     "fallback": "https://huggingface.co/timcsy/demucs-web-onnx/resolve/main/demucs.onnx",
     "min_bytes": 10_000_000},
    {"filename": "bsrnn_vocals.onnx",
     "url": "https://huggingface.co/facebook/bsrnn/resolve/main/bsrnn_vocals.onnx",
     "fallback": "https://huggingface.co/Randell/bsrnn-onnx/resolve/main/bsrnn_vocals.onnx",
     "min_bytes": 5_000_000},
]

def upload_models():
    if not TOKEN: return "ERROR: HF_TOKEN not set"
    api = HfApi(token=TOKEN)
    results = []
    for m in MODELS:
        try:
            try:
                r = requests.get(m["url"], timeout=300); r.raise_for_status(); data = r.content
                if len(data) < m["min_bytes"]: raise ValueError("too small")
                src = m["url"]
            except:
                r = requests.get(m.get("fallback", m["url"]), timeout=300); r.raise_for_status(); data = r.content
                src = m.get("fallback", m["url"])
            api.upload_file(path_or_fileobj=io.BytesIO(data), path_in_repo=m["filename"],
                repo_id=DEST_REPO, repo_type=DEST_TYPE,
                commit_message=f"Upload real ONNX: {m['filename']} ({len(data):,} bytes)")
            results.append(f"SUCCESS {m['filename']} ({len(data)/1e6:.1f} MB) from {src}")
        except Exception as e:
            results.append(f"FAILED {m['filename']}: {e}")
    return "\n\n".join(results)

with gr.Blocks() as demo:
    gr.Markdown("# ONNX Model Uploader\nDownloads real models and uploads to Joker5514/models")
    gr.Button("Upload Real ONNX Models", variant="primary").click(upload_models, outputs=gr.Textbox(lines=15))
demo.launch()