Spaces:
Sleeping
Sleeping
| import subprocess | |
| import os | |
| def separate_audio(file_path, output_dir = "separated"): | |
| """ | |
| Runs Demucs htdemucs on the given audio file. | |
| Returns the path to the output stem folder, or None on failure. | |
| Called by app.py via run_demucs() — kept here as a standalone | |
| utility for testing separation independently. | |
| """ | |
| print(f"Separating: {file_path}") | |
| command = [ | |
| "python3", "-m", "demucs.separate", | |
| "-n", "htdemucs", | |
| "--out", output_dir, | |
| file_path | |
| ] | |
| result = subprocess.run(command, capture_output = True, text = True) | |
| if result.returncode == 0: | |
| base_name = os.path.splitext(os.path.basename(file_path))[0] | |
| output_path = os.path.join(output_dir, "htdemucs", base_name) | |
| print(f"Success — stems at: {output_path}") | |
| return output_path | |
| else: | |
| print(f"Demucs failed:\n{result.stderr}") | |
| return None | |
| if __name__ == "__main__": | |
| target = "test-audio.mp3" | |
| if os.path.exists(target): | |
| separate_audio(target) | |
| else: | |
| print(f"File not found: {target}") |