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:
parent
20172cffcb
commit
44e0210d5e
1 changed files with 9 additions and 7 deletions
|
|
@ -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"
|
||||
)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue