extract audio to WAV before running voxsplit

voxsplit only accepts WAV input — use ffmpeg to extract/convert
audio from mp4/mp3/etc before splitting vocals/instrumentals.
This commit is contained in:
russell@unturf.com 2026-02-18 10:18:45 -05:00
parent 20172cffcb
commit 44e0210d5e

View file

@ -56,14 +56,18 @@ def process_karaoke(s3_client, bucket, s3_key, s3_path,
voxsplit_src = f.read()
voxsplit_b64 = base64.b64encode(voxsplit_src.encode()).decode()
# 3. Build execution script — produce both tracks
# 3. Build execution script — extract audio to WAV first, then split
extract_wav = (
"gcc -O2 -o /tmp/voxsplit /tmp/input/voxsplit.c -lm && "
"ffmpeg -y -i /tmp/input/media -vn -acodec pcm_s16le -ar 44100 -ac 2 /tmp/audio.wav && "
"/tmp/voxsplit /tmp/audio.wav -o /tmp/split && "
"mkdir -p /tmp/artifacts"
)
if is_video:
inst_name = f"instrumentals.{extension}"
vocals_name = f"vocals.{extension}"
script = (
"gcc -O2 -o /tmp/voxsplit /tmp/input/voxsplit.c -lm && "
"/tmp/voxsplit /tmp/input/media -o /tmp/split && "
"mkdir -p /tmp/artifacts && "
f"{extract_wav} && "
f"ffmpeg -y -i /tmp/input/media -i /tmp/split-instrumental.wav "
f"-c:v copy -map 0:v -map 1:a -shortest /tmp/artifacts/{inst_name} && "
f"ffmpeg -y -i /tmp/input/media -i /tmp/split-vocal.wav "
@ -73,9 +77,7 @@ def process_karaoke(s3_client, bucket, s3_key, s3_path,
inst_name = "instrumentals.wav"
vocals_name = "vocals.wav"
script = (
"gcc -O2 -o /tmp/voxsplit /tmp/input/voxsplit.c -lm && "
"/tmp/voxsplit /tmp/input/media -o /tmp/split && "
"mkdir -p /tmp/artifacts && "
f"{extract_wav} && "
"cp /tmp/split-instrumental.wav /tmp/artifacts/instrumentals.wav && "
"cp /tmp/split-vocal.wav /tmp/artifacts/vocals.wav"
)