|
import streamlit as st |
|
import torch |
|
import julius |
|
import soundfile as sf |
|
import io |
|
|
|
from model import load_model, invert_audio |
|
|
|
|
|
preloaded = {} |
|
preloaded["model"], preloaded["processor"] = load_model() |
|
model = preloaded["model"] |
|
processor = preloaded["processor"] |
|
|
|
st.title("Audio Inversion with HuggingFace & Streamlit") |
|
|
|
uploaded_file = st.file_uploader("Upload an audio file", type=["wav", "flac"]) |
|
|
|
if uploaded_file: |
|
|
|
st.audio(uploaded_file, format="audio/wav") |
|
|
|
|
|
audio, sr = sf.read(io.BytesIO(uploaded_file.getvalue())) |
|
|
|
|
|
audio_tensor = torch.tensor(audio).float() |
|
|
|
with st.spinner("Inverting audio..."): |
|
|
|
inverted_audio_tensor = invert_audio(model, processor, audio_tensor, sr) |
|
|
|
|
|
inverted_audio_np = inverted_audio_tensor.numpy() |
|
|
|
|
|
with io.BytesIO() as out_io: |
|
sf.write(out_io, inverted_audio_np, sr, format="wav") |
|
st.audio(out_io.getvalue(), format="audio/wav") |
|
|
|
|
|
if st.button("Download Inverted Audio"): |
|
with io.BytesIO() as out_io: |
|
sf.write(out_io, inverted_audio_np, sr, format="wav") |
|
st.download_button("Download Inverted Audio", data=out_io.getvalue(), file_name="inverted_output.wav", mime="audio/wav") |
|
|