Spaces:
Running
on
Zero
Running
on
Zero
import os | |
import glob | |
import subprocess | |
import time | |
import gc | |
import shutil | |
import sys | |
from datetime import datetime | |
import torch | |
import yaml | |
import gradio as gr | |
import threading | |
import random | |
import librosa | |
import soundfile as sf | |
import numpy as np | |
import requests | |
import json | |
import locale | |
import re | |
import psutil | |
import concurrent.futures | |
from tqdm import tqdm | |
from google.oauth2.credentials import Credentials | |
import tempfile | |
from urllib.parse import urlparse, quote | |
import warnings | |
warnings.filterwarnings("ignore") | |
# BASE_DIR'i dinamik olarak güncel dizine ayarla | |
BASE_DIR = os.path.dirname(os.path.abspath(__file__)) # processing.py'nin bulunduğu dizin | |
INFERENCE_PATH = os.path.join(BASE_DIR, "inference.py") # inference.py'nin tam yolu | |
OUTPUT_DIR = os.path.join(BASE_DIR, "output") # Çıkış dizini BASE_DIR/output olarak güncellendi | |
AUTO_ENSEMBLE_OUTPUT = os.path.join(BASE_DIR, "ensemble_output") # Ensemble çıkış dizini | |
def clean_model_name(model): | |
""" | |
Clean and standardize model names for filename | |
""" | |
model_name_mapping = { | |
'VOCALS-InstVocHQ': 'InstVocHQ', | |
'VOCALS-MelBand-Roformer (by KimberleyJSN)': 'KimberleyJSN', | |
'VOCALS-BS-Roformer_1297 (by viperx)': 'VOCALS_BS_Roformer1297', | |
'VOCALS-BS-Roformer_1296 (by viperx)': 'VOCALS-BS-Roformer_1296', | |
'VOCALS-BS-RoformerLargev1 (by unwa)': 'UnwaLargeV1', | |
'VOCALS-Mel-Roformer big beta 4 (by unwa)': 'UnwaBigBeta4', | |
'VOCALS-Melband-Roformer BigBeta5e (by unwa)': 'UnwaBigBeta5e', | |
'INST-Mel-Roformer v1 (by unwa)': 'UnwaInstV1', | |
'INST-Mel-Roformer v2 (by unwa)': 'UnwaInstV2', | |
'INST-VOC-Mel-Roformer a.k.a. duality (by unwa)': 'UnwaDualityV1', | |
'INST-VOC-Mel-Roformer a.k.a. duality v2 (by unwa)': 'UnwaDualityV2', | |
'KARAOKE-MelBand-Roformer (by aufr33 & viperx)': 'KaraokeMelBandRoformer', | |
'VOCALS-VitLarge23 (by ZFTurbo)': 'VitLarge23', | |
'VOCALS-MelBand-Roformer (by Becruily)': 'BecruilyVocals', | |
'INST-MelBand-Roformer (by Becruily)': 'BecruilyInst', | |
'VOCALS-MelBand-Roformer Kim FT (by Unwa)': 'KimFT', | |
'INST-MelBand-Roformer Kim FT (by Unwa)': 'KimFTInst', | |
'OTHER-BS-Roformer_1053 (by viperx)': 'OtherViperx1053', | |
'CROWD-REMOVAL-MelBand-Roformer (by aufr33)': 'CrowdRemovalRoformer', | |
'CINEMATIC-BandIt_Plus (by kwatcharasupat)': 'CinematicBandItPlus', | |
'DRUMSEP-MDX23C_DrumSep_6stem (by aufr33 & jarredou)': 'DrumSepMDX23C', | |
'4STEMS-SCNet_MUSDB18 (by starrytong)': 'FourStemsSCNet', | |
'DE-REVERB-MDX23C (by aufr33 & jarredou)': 'DeReverbMDX23C', | |
'DENOISE-MelBand-Roformer-1 (by aufr33)': 'DenoiseMelBand1', | |
'DENOISE-MelBand-Roformer-2 (by aufr33)': 'DenoiseMelBand2', | |
'INST-MelBand-Roformer (by Becruily)': 'BecruilyInst', | |
'4STEMS-SCNet_XL_MUSDB18 (by ZFTurbo)': 'FourStemsSCNetXL', | |
'4STEMS-SCNet_Large (by starrytong)': 'FourStemsSCNetLarge', | |
'4STEMS-BS-Roformer_MUSDB18 (by ZFTurbo)': 'FourStemsBSRoformer', | |
'DE-REVERB-MelBand-Roformer aggr./v2/19.1729 (by anvuew)': 'DeReverbMelBandAggr', | |
'DE-REVERB-Echo-MelBand-Roformer (by Sucial)': 'DeReverbEchoMelBand', | |
'bleed_suppressor_v1 (by unwa)': 'BleedSuppressorV1', | |
'inst_v1e (by unwa)': 'InstV1E', | |
'inst_gabox (by Gabox)': 'InstGabox', | |
'inst_gaboxBV1 (by Gabox)': 'InstGaboxBV1', | |
'inst_gaboxBV2 (by Gabox)': 'InstGaboxBV2', | |
'inst_gaboxBFV1 (by Gabox)': 'InstGaboxBFV1', | |
'inst_gaboxFV2 (by Gabox)': 'InstGaboxFV2', | |
'inst_gaboxFV1 (by Gabox)': 'InstGaboxFV1', | |
'dereverb_mel_band_roformer_less_aggressive_anvuew': 'DereverbMelBandRoformerLessAggressive', | |
'dereverb_mel_band_roformer_anvuew': 'DereverbMelBandRoformer', | |
'VOCALS-Male Female-BS-RoFormer Male Female Beta 7_2889 (by aufr33)': 'MaleFemale-BS-RoFormer-(by aufr33)', | |
'VOCALS-MelBand-Roformer (by Becruily)': 'Vocals-MelBand-Roformer-(by Becruily)', | |
'VOCALS-MelBand-Roformer Kim FT 2 (by Unwa)': 'Vocals-MelBand-Roformer-KİM-FT-2(by Unwa)', | |
'voc_gaboxMelRoformer (by Gabox)': 'voc_gaboxMelRoformer', | |
'voc_gaboxBSroformer (by Gabox)': 'voc_gaboxBSroformer', | |
'voc_gaboxMelRoformerFV1 (by Gabox)': 'voc_gaboxMelRoformerFV1', | |
'voc_gaboxMelRoformerFV2 (by Gabox)': 'voc_gaboxMelRoformerFV2', | |
'SYH99999/MelBandRoformerSYHFTB1(by Amane)': 'MelBandRoformerSYHFTB1', | |
'inst_V5 (by Gabox)': 'INSTV5-(by Gabox)', | |
'inst_Fv4Noise (by Gabox)': 'Inst_Fv4Noise-(by Gabox)', | |
'Intrumental_Gabox (by Gabox)': 'Intrumental_Gabox-(by Gabox)', | |
'inst_GaboxFv3 (by Gabox)': 'INST_GaboxFv3-(by Gabox)', | |
'SYH99999/MelBandRoformerSYHFTB1_Model1 (by Amane)': 'MelBandRoformerSYHFTB1_model1', | |
'SYH99999/MelBandRoformerSYHFTB1_Model2 (by Amane)': 'MelBandRoformerSYHFTB1_model2', | |
'SYH99999/MelBandRoformerSYHFTB1_Model3 (by Amane)': 'MelBandRoformerSYHFTB1_model3', | |
'VOCALS-MelBand-Roformer Kim FT 2 Blendless (by unwa)': 'VOCALS-MelBand-Roformer-Kim-FT-2-Blendless-(by unwa)', | |
'inst_gaboxFV6 (by Gabox)': 'inst_gaboxFV6-(by Gabox)', | |
'denoisedebleed (by Gabox)': 'denoisedebleed-(by Gabox)', | |
'INSTV5N (by Gabox)': 'INSTV5N_(by Gabox)', | |
'Voc_Fv3 (by Gabox)': 'Voc_Fv3_(by Gabox)', | |
'MelBandRoformer4StemFTLarge (SYH99999)': 'MelBandRoformer4StemFTLarge_(SYH99999)', | |
'dereverb_mel_band_roformer_mono (by anvuew)': 'dereverb_mel_band_roformer_mono_(by anvuew)', | |
'INSTV6N (by Gabox)': 'INSTV6N_(by Gabox)', | |
'KaraokeGabox': 'KaraokeGabox', | |
'FullnessVocalModel (by Amane)': 'FullnessVocalModel', | |
'Inst_GaboxV7 (by Gabox)': 'Inst_GaboxV7_(by Gabox)', | |
} | |
if model in model_name_mapping: | |
return model_name_mapping[model] | |
cleaned = re.sub(r'\s*\(.*?\)', '', model) # Remove parenthetical info | |
cleaned = cleaned.replace('-', '_') | |
cleaned = ''.join(char for char in cleaned if char.isalnum() or char == '_') | |
return cleaned | |
def shorten_filename(filename, max_length=30): | |
""" | |
Shortens a filename to a specified maximum length | |
""" | |
base, ext = os.path.splitext(filename) | |
if len(base) <= max_length: | |
return filename | |
shortened = base[:15] + "..." + base[-10:] + ext | |
return shortened | |
def clean_filename(filename): | |
""" | |
Temizlenmiş dosya adını döndürür | |
""" | |
cleanup_patterns = [ | |
r'_\d{8}_\d{6}_\d{6}$', # _20231215_123456_123456 | |
r'_\d{14}$', # _20231215123456 | |
r'_\d{10}$', # _1702658400 | |
r'_\d+$' # Herhangi bir sayı | |
] | |
base, ext = os.path.splitext(filename) | |
for pattern in cleanup_patterns: | |
base = re.sub(pattern, '', base) | |
file_types = ['vocals', 'instrumental', 'drum', 'bass', 'other', 'effects', 'speech', 'music', 'dry', 'male', 'female'] | |
for type_keyword in file_types: | |
base = base.replace(f'_{type_keyword}', '') | |
detected_type = None | |
for type_keyword in file_types: | |
if type_keyword in base.lower(): | |
detected_type = type_keyword | |
break | |
clean_base = base.strip('_- ') | |
return clean_base, detected_type, ext | |