Webui #1
@@ -78,6 +78,23 @@ def _run(cmd: list[str], cwd: Path, env: dict | None = None) -> None:
|
|||||||
raise gr.Error(f"Command failed ({cmd[0]}):\n{tail}")
|
raise gr.Error(f"Command failed ({cmd[0]}):\n{tail}")
|
||||||
|
|
||||||
|
|
||||||
|
def _ensure_wav(path: str) -> str:
|
||||||
|
"""AuK's loader (librosa/soundfile) can't read compressed containers like
|
||||||
|
.m4a/.mp3 - only demucs's loader handles those. Normalize once, here, at
|
||||||
|
the point a reference is set, so everything downstream is always wav."""
|
||||||
|
if Path(path).suffix.lower() == ".wav":
|
||||||
|
return path
|
||||||
|
out_path = WORKDIR / f"converted_{int(time.time() * 1000)}.wav"
|
||||||
|
result = subprocess.run(
|
||||||
|
["ffmpeg", "-nostdin", "-y", "-i", path, "-ar", "44100", "-ac", "1", str(out_path)],
|
||||||
|
capture_output=True, text=True, timeout=120,
|
||||||
|
)
|
||||||
|
if result.returncode != 0:
|
||||||
|
tail = "\n".join(result.stderr.strip().splitlines()[-15:])
|
||||||
|
raise gr.Error(f"Could not convert '{path}' to wav:\n{tail}")
|
||||||
|
return str(out_path)
|
||||||
|
|
||||||
|
|
||||||
def _ld_library_path_for_venv(venv_dir: Path) -> str:
|
def _ld_library_path_for_venv(venv_dir: Path) -> str:
|
||||||
site_packages = next(venv_dir.glob(".venv/lib/python*/site-packages"))
|
site_packages = next(venv_dir.glob(".venv/lib/python*/site-packages"))
|
||||||
nvidia_dir = site_packages / "nvidia"
|
nvidia_dir = site_packages / "nvidia"
|
||||||
@@ -123,6 +140,7 @@ def strip_vocals(input_audio: str):
|
|||||||
def use_as_reference(audio_path: str, history: list):
|
def use_as_reference(audio_path: str, history: list):
|
||||||
if not audio_path:
|
if not audio_path:
|
||||||
raise gr.Error("No audio to use yet.")
|
raise gr.Error("No audio to use yet.")
|
||||||
|
audio_path = _ensure_wav(audio_path)
|
||||||
history = [audio_path]
|
history = [audio_path]
|
||||||
return audio_path, history, _history_label(history)
|
return audio_path, history, _history_label(history)
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user