deeplearning commited on
Commit
39562c5
·
verified ·
1 Parent(s): e8be5dc

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +51 -0
app.py ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import subprocess
3
+ import tempfile
4
+ import os
5
+ import soundfile as sf
6
+
7
+ def run(cmd):
8
+ subprocess.check_call(cmd, shell=True)
9
+
10
+ def morph_audio(wav_a, wav_b, morph_amt):
11
+ with tempfile.TemporaryDirectory() as d:
12
+ a_wav = os.path.join(d, "a.wav")
13
+ b_wav = os.path.join(d, "b.wav")
14
+ a_sdif = os.path.join(d, "a.sdif")
15
+ b_sdif = os.path.join(d, "b.sdif")
16
+ m_sdif = os.path.join(d, "m.sdif")
17
+ out_wav = os.path.join(d, "out.wav")
18
+
19
+ sf.write(a_wav, wav_a[1], wav_a[0])
20
+ sf.write(b_wav, wav_b[1], wav_b[0])
21
+
22
+ # Analyze → SDIF
23
+ run(f"loris_analyze {a_wav} {a_sdif}")
24
+ run(f"loris_analyze {b_wav} {b_sdif}")
25
+
26
+ # Morph (linear interpolation)
27
+ run(
28
+ f"loris_morph "
29
+ f"--alpha {morph_amt} "
30
+ f"{a_sdif} {b_sdif} {m_sdif}"
31
+ )
32
+
33
+ # Synthesize
34
+ run(f"loris_synthesize {m_sdif} {out_wav}")
35
+
36
+ data, sr = sf.read(out_wav)
37
+ return sr, data
38
+
39
+ ui = gr.Interface(
40
+ fn=morph_audio,
41
+ inputs=[
42
+ gr.Audio(label="Input A", type="numpy"),
43
+ gr.Audio(label="Input B", type="numpy"),
44
+ gr.Slider(0.0, 1.0, value=0.5, label="Morph Amount")
45
+ ],
46
+ outputs=gr.Audio(label="Morphed Output"),
47
+ title="Loris Audio Morphing (SDIF)",
48
+ description="Deterministisk sinusoidal morphing med Loris + SDIF"
49
+ )
50
+
51
+ ui.launch(server_name="0.0.0.0", server_port=7860)