Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import subprocess | |
| import tempfile | |
| import os | |
| import soundfile as sf | |
| LORIS_ANALYZE = "/usr/local/bin/loris_analyze" | |
| LORIS_MORPH = "/usr/local/bin/loris_morph" | |
| LORIS_SYNTH = "/usr/local/bin/loris_synthesize" | |
| def run(cmd): | |
| subprocess.check_call(cmd, shell=True) | |
| def morph_audio(wav_a, wav_b, morph_amt): | |
| with tempfile.TemporaryDirectory() as d: | |
| a_wav = os.path.join(d, "a.wav") | |
| b_wav = os.path.join(d, "b.wav") | |
| a_sdif = os.path.join(d, "a.sdif") | |
| b_sdif = os.path.join(d, "b.sdif") | |
| m_sdif = os.path.join(d, "m.sdif") | |
| out_wav = os.path.join(d, "out.wav") | |
| sf.write(a_wav, wav_a[1], wav_a[0]) | |
| sf.write(b_wav, wav_b[1], wav_b[0]) | |
| run(f"{LORIS_ANALYZE} {a_wav} {a_sdif}") | |
| run(f"{LORIS_ANALYZE} {b_wav} {b_sdif}") | |
| run(f"{LORIS_MORPH} --alpha {morph_amt} {a_sdif} {b_sdif} {m_sdif}") | |
| run(f"{LORIS_SYNTH} {m_sdif} {out_wav}") | |
| data, sr = sf.read(out_wav) | |
| return sr, data | |
| ui = gr.Interface( | |
| fn=morph_audio, | |
| inputs=[ | |
| gr.Audio(label="Input A", type="numpy"), | |
| gr.Audio(label="Input B", type="numpy"), | |
| gr.Slider(0.0, 1.0, value=0.5, label="Morph Amount") | |
| ], | |
| outputs=gr.Audio(label="Morphed Output"), | |
| title="Loris Audio Morphing (SDIF)", | |
| ) | |
| ui.launch(server_name="0.0.0.0", server_port=7860) | |