Recombine audio
Add an option in the splitter to recombine stems at the end. Topic: recombine_audio
This commit is contained in:
parent
8e87c133c8
commit
a4784bb4dc
|
@ -39,7 +39,7 @@ def render_audio_to_audio() -> None:
|
||||||
|
|
||||||
audio_file = st.file_uploader(
|
audio_file = st.file_uploader(
|
||||||
"Upload audio",
|
"Upload audio",
|
||||||
type=["mp3", "m4a", "ogg", "wav", "flac"],
|
type=["mp3", "m4a", "ogg", "wav", "flac", "webm"],
|
||||||
label_visibility="collapsed",
|
label_visibility="collapsed",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import io
|
import io
|
||||||
|
|
||||||
|
import pydub
|
||||||
import streamlit as st
|
import streamlit as st
|
||||||
|
|
||||||
from riffusion.audio_splitter import split_audio
|
from riffusion.audio_splitter import split_audio
|
||||||
|
@ -37,8 +38,12 @@ def render_split_audio() -> None:
|
||||||
label_visibility="collapsed",
|
label_visibility="collapsed",
|
||||||
)
|
)
|
||||||
|
|
||||||
recombine = st.sidebar.checkbox(
|
stem_options = ["vocals", "drums", "bass", "guitar", "piano", "other"]
|
||||||
"Recombine", value=False, help="Show recombined audio at the end for comparison"
|
recombine = st.sidebar.multiselect(
|
||||||
|
"Recombine",
|
||||||
|
options=stem_options,
|
||||||
|
default=[],
|
||||||
|
help="Recombine these stems at the end",
|
||||||
)
|
)
|
||||||
|
|
||||||
if not audio_file:
|
if not audio_file:
|
||||||
|
@ -46,7 +51,8 @@ def render_split_audio() -> None:
|
||||||
return
|
return
|
||||||
|
|
||||||
st.write("#### original")
|
st.write("#### original")
|
||||||
st.audio(audio_file)
|
# TODO(hayk): This might be bogus, it can be other formats..
|
||||||
|
st.audio(audio_file, format="audio/mp3")
|
||||||
|
|
||||||
if not st.button("Split", type="primary"):
|
if not st.button("Split", type="primary"):
|
||||||
return
|
return
|
||||||
|
@ -61,19 +67,22 @@ def render_split_audio() -> None:
|
||||||
st.write(f"#### {name}")
|
st.write(f"#### {name}")
|
||||||
audio_bytes = io.BytesIO()
|
audio_bytes = io.BytesIO()
|
||||||
stem.export(audio_bytes, format="mp3")
|
stem.export(audio_bytes, format="mp3")
|
||||||
st.audio(audio_bytes)
|
st.audio(audio_bytes, format="audio/mp3")
|
||||||
|
|
||||||
if recombine:
|
if recombine:
|
||||||
stems_list = list(stems.values())
|
recombined: pydub.AudioSegment = None
|
||||||
recombined = stems_list[0]
|
for name, stem in stems.items():
|
||||||
for stem in stems_list[1:]:
|
if name in recombine:
|
||||||
recombined = recombined.overlay(stem)
|
if recombined is None:
|
||||||
|
recombined = stem
|
||||||
|
else:
|
||||||
|
recombined = recombined.overlay(stem)
|
||||||
|
|
||||||
# Display
|
# Display
|
||||||
st.write("#### recombined")
|
st.write("#### recombined")
|
||||||
audio_bytes = io.BytesIO()
|
audio_bytes = io.BytesIO()
|
||||||
recombined.export(audio_bytes, format="mp3")
|
recombined.export(audio_bytes, format="mp3")
|
||||||
st.audio(audio_bytes)
|
st.audio(audio_bytes, format="audio/mp3")
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|
Loading…
Reference in New Issue