Spaces:
Paused
Paused
Update app.py
Browse files
app.py
CHANGED
|
@@ -56,6 +56,23 @@ except FileNotFoundError:
|
|
| 56 |
print(f"Directory not found: {inference_dir}")
|
| 57 |
exit(1)
|
| 58 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 59 |
# Function to create a temporary file with string content
|
| 60 |
def create_temp_file(content, prefix, suffix=".txt"):
|
| 61 |
temp_file = tempfile.NamedTemporaryFile(delete=False, mode="w", prefix=prefix, suffix=suffix)
|
|
@@ -72,6 +89,26 @@ def create_temp_file(content, prefix, suffix=".txt"):
|
|
| 72 |
|
| 73 |
return temp_file.name
|
| 74 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 75 |
def infer(genre_txt_content, lyrics_txt_content):
|
| 76 |
# Create temporary files
|
| 77 |
genre_txt_path = create_temp_file(genre_txt_content, prefix="genre_")
|
|
@@ -85,7 +122,8 @@ def infer(genre_txt_content, lyrics_txt_content):
|
|
| 85 |
os.makedirs(output_dir, exist_ok=True)
|
| 86 |
print(f"Output folder ensured at: {output_dir}")
|
| 87 |
|
| 88 |
-
|
|
|
|
| 89 |
# Command and arguments
|
| 90 |
command = [
|
| 91 |
"python", "infer.py",
|
|
@@ -105,7 +143,6 @@ def infer(genre_txt_content, lyrics_txt_content):
|
|
| 105 |
env = os.environ.copy() # Copy current environment
|
| 106 |
env.update({
|
| 107 |
"CUDA_VISIBLE_DEVICES": "0",
|
| 108 |
-
"PYTORCH_CUDA_ALLOC_CONF": "max_split_size_mb:512",
|
| 109 |
"CUDA_HOME": "/usr/local/cuda",
|
| 110 |
"PATH": f"/usr/local/cuda/bin:{env.get('PATH', '')}",
|
| 111 |
"LD_LIBRARY_PATH": f"/usr/local/cuda/lib64:{env.get('LD_LIBRARY_PATH', '')}"
|
|
@@ -122,9 +159,17 @@ def infer(genre_txt_content, lyrics_txt_content):
|
|
| 122 |
print("Output folder contents:")
|
| 123 |
for file in output_files:
|
| 124 |
print(f"- {file}")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 125 |
else:
|
| 126 |
print("Output folder is empty.")
|
| 127 |
-
|
| 128 |
except subprocess.CalledProcessError as e:
|
| 129 |
print(f"Error occurred: {e}")
|
| 130 |
return None
|
|
|
|
| 56 |
print(f"Directory not found: {inference_dir}")
|
| 57 |
exit(1)
|
| 58 |
|
| 59 |
+
def empty_output_folder(output_dir):
|
| 60 |
+
# List all files in the output directory
|
| 61 |
+
files = os.listdir(output_dir)
|
| 62 |
+
|
| 63 |
+
# Iterate over the files and remove them
|
| 64 |
+
for file in files:
|
| 65 |
+
file_path = os.path.join(output_dir, file)
|
| 66 |
+
try:
|
| 67 |
+
if os.path.isdir(file_path):
|
| 68 |
+
# If it's a directory, remove it recursively
|
| 69 |
+
shutil.rmtree(file_path)
|
| 70 |
+
else:
|
| 71 |
+
# If it's a file, delete it
|
| 72 |
+
os.remove(file_path)
|
| 73 |
+
except Exception as e:
|
| 74 |
+
print(f"Error deleting file {file_path}: {e}")
|
| 75 |
+
|
| 76 |
# Function to create a temporary file with string content
|
| 77 |
def create_temp_file(content, prefix, suffix=".txt"):
|
| 78 |
temp_file = tempfile.NamedTemporaryFile(delete=False, mode="w", prefix=prefix, suffix=suffix)
|
|
|
|
| 89 |
|
| 90 |
return temp_file.name
|
| 91 |
|
| 92 |
+
def get_last_mp3_file(output_dir):
|
| 93 |
+
# List all files in the output directory
|
| 94 |
+
files = os.listdir(output_dir)
|
| 95 |
+
|
| 96 |
+
# Filter only .mp3 files
|
| 97 |
+
mp3_files = [file for file in files if file.endswith('.mp3')]
|
| 98 |
+
|
| 99 |
+
if not mp3_files:
|
| 100 |
+
print("No .mp3 files found in the output folder.")
|
| 101 |
+
return None
|
| 102 |
+
|
| 103 |
+
# Get the full path for the mp3 files
|
| 104 |
+
mp3_files_with_path = [os.path.join(output_dir, file) for file in mp3_files]
|
| 105 |
+
|
| 106 |
+
# Sort the files based on the modification time (most recent first)
|
| 107 |
+
mp3_files_with_path.sort(key=lambda x: os.path.getmtime(x), reverse=True)
|
| 108 |
+
|
| 109 |
+
# Return the most recent .mp3 file
|
| 110 |
+
return mp3_files_with_path[0]
|
| 111 |
+
|
| 112 |
def infer(genre_txt_content, lyrics_txt_content):
|
| 113 |
# Create temporary files
|
| 114 |
genre_txt_path = create_temp_file(genre_txt_content, prefix="genre_")
|
|
|
|
| 122 |
os.makedirs(output_dir, exist_ok=True)
|
| 123 |
print(f"Output folder ensured at: {output_dir}")
|
| 124 |
|
| 125 |
+
empty_output_folder(output_dir)
|
| 126 |
+
|
| 127 |
# Command and arguments
|
| 128 |
command = [
|
| 129 |
"python", "infer.py",
|
|
|
|
| 143 |
env = os.environ.copy() # Copy current environment
|
| 144 |
env.update({
|
| 145 |
"CUDA_VISIBLE_DEVICES": "0",
|
|
|
|
| 146 |
"CUDA_HOME": "/usr/local/cuda",
|
| 147 |
"PATH": f"/usr/local/cuda/bin:{env.get('PATH', '')}",
|
| 148 |
"LD_LIBRARY_PATH": f"/usr/local/cuda/lib64:{env.get('LD_LIBRARY_PATH', '')}"
|
|
|
|
| 159 |
print("Output folder contents:")
|
| 160 |
for file in output_files:
|
| 161 |
print(f"- {file}")
|
| 162 |
+
|
| 163 |
+
last_mp3 = get_last_mp3_file(output_dir)
|
| 164 |
+
|
| 165 |
+
if last_mp3:
|
| 166 |
+
print("Last .mp3 file:", last_mp3)
|
| 167 |
+
return last_mp3
|
| 168 |
+
else:
|
| 169 |
+
return None
|
| 170 |
else:
|
| 171 |
print("Output folder is empty.")
|
| 172 |
+
return None
|
| 173 |
except subprocess.CalledProcessError as e:
|
| 174 |
print(f"Error occurred: {e}")
|
| 175 |
return None
|