Spaces:
Paused
Paused
update interface
Browse files
src/gyraudio/audio_separation/visualization/interactive_audio.py
CHANGED
|
@@ -21,8 +21,7 @@ import numpy as np
|
|
| 21 |
import logging
|
| 22 |
from interactive_pipe.data_objects.curves import Curve, SingleCurve
|
| 23 |
from interactive_pipe import interactive, KeyboardControl, Control
|
| 24 |
-
from interactive_pipe
|
| 25 |
-
from interactive_pipe.graphical.gradio_gui import InteractivePipeGradio
|
| 26 |
|
| 27 |
from gyraudio.audio_separation.visualization.audio_player import audio_selector, audio_trim, audio_player
|
| 28 |
|
|
@@ -30,7 +29,6 @@ default_device = "cuda" if torch.cuda.is_available() else "cpu"
|
|
| 30 |
LEARNT_SAMPLING_RATE = 8000
|
| 31 |
|
| 32 |
|
| 33 |
-
|
| 34 |
@interactive(
|
| 35 |
snr=(0., [-10., 10.], "SNR [dB]")
|
| 36 |
)
|
|
@@ -43,7 +41,6 @@ def remix(signals, snr=0., global_params={}):
|
|
| 43 |
return mixed_signal
|
| 44 |
|
| 45 |
|
| 46 |
-
|
| 47 |
@interactive(std_dev=Control(0., value_range=[0., 0.1], name="extra noise std", step=0.0001),
|
| 48 |
amplify=(1., [0., 10.], "amplification of everything"))
|
| 49 |
def augment(signals, mixed, std_dev=0., amplify=1.):
|
|
@@ -65,7 +62,16 @@ def select_device(device=default_device, global_params={}):
|
|
| 65 |
# model=KeyboardControl(value_default=0, value_range=[
|
| 66 |
# 0, 99], keyup="pagedown", keydown="pageup")
|
| 67 |
# )
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 68 |
def audio_sep_inference(mixed, models, configs, model: int = 0, global_params={}):
|
|
|
|
|
|
|
|
|
|
| 69 |
selected_model = models[model % len(models)]
|
| 70 |
config = configs[model % len(models)]
|
| 71 |
short_name = config.get(SHORT_NAME, "")
|
|
@@ -114,7 +120,7 @@ def zin(sig, zoom, center, num_samples=300):
|
|
| 114 |
@interactive(
|
| 115 |
center=KeyboardControl(value_default=0.5, value_range=[
|
| 116 |
0., 1.], step=0.01, keyup="6", keydown="4", name="Trim (center)"),
|
| 117 |
-
zoom=KeyboardControl(value_default=
|
| 118 |
0., 15.], step=1, keyup="+", keydown="-", name="Trim (zoom)"),
|
| 119 |
# zoomy=KeyboardControl(
|
| 120 |
# value_default=0., value_range=[-15., 15.], step=1, keyup="up", keydown="down")
|
|
@@ -161,7 +167,8 @@ def visualize_audio(signal: dict, mixed_signal, pred, zoom=1, zoomy=0., center=0
|
|
| 161 |
|
| 162 |
|
| 163 |
@interactive(
|
| 164 |
-
idx=("Voice 1", ["Voice 1", "Voice 2",
|
|
|
|
| 165 |
# idx=KeyboardControl(value_default=0, value_range=[
|
| 166 |
# 0, 1000], modulo=True, keyup="8", keydown="2", name="clean signal index"),
|
| 167 |
# idn=KeyboardControl(value_default=0, value_range=[
|
|
@@ -230,23 +237,14 @@ def interactive_audio_separation_visualization(
|
|
| 230 |
all_signals: List[dict],
|
| 231 |
model_list: List[torch.nn.Module],
|
| 232 |
config_list: List[dict],
|
| 233 |
-
gui="
|
| 234 |
):
|
| 235 |
-
|
| 236 |
-
|
| 237 |
-
|
| 238 |
-
|
| 239 |
-
|
| 240 |
-
|
| 241 |
-
from interactive_pipe.graphical.qt_gui import InteractivePipeQT
|
| 242 |
-
app = InteractivePipeQT(
|
| 243 |
-
pipeline=pip, name="audio separation", size=(1000, 1000), audio=True)
|
| 244 |
-
else:
|
| 245 |
-
from interactive_pipe.graphical.mpl_gui import InteractivePipeMatplotlib
|
| 246 |
-
logging.warning("No support for audio player with Matplotlib")
|
| 247 |
-
app = InteractivePipeMatplotlib(
|
| 248 |
-
pipeline=pip, name="audio separation", size=None, audio=False)
|
| 249 |
-
app(all_signals, model_list, config_list)
|
| 250 |
|
| 251 |
|
| 252 |
def visualization(
|
|
@@ -285,7 +283,7 @@ def parse_command_line_gradio(parser: Batch = None, gradio_demo=True) -> argpars
|
|
| 285 |
parser = parse_command_line_audio_load()
|
| 286 |
default_device = "cuda" if torch.cuda.is_available() else "cpu"
|
| 287 |
iparse = parser.add_argument_group("Audio separation visualization")
|
| 288 |
-
iparse.add_argument("-e", "--experiments", type=int, nargs="+", default=[3001,],
|
| 289 |
help="Experiment ids to be inferred sequentially")
|
| 290 |
iparse.add_argument("-p", "--interactive", default=True,
|
| 291 |
action="store_true", help="Play = Interactive mode")
|
|
|
|
| 21 |
import logging
|
| 22 |
from interactive_pipe.data_objects.curves import Curve, SingleCurve
|
| 23 |
from interactive_pipe import interactive, KeyboardControl, Control
|
| 24 |
+
from interactive_pipe import interactive_pipeline
|
|
|
|
| 25 |
|
| 26 |
from gyraudio.audio_separation.visualization.audio_player import audio_selector, audio_trim, audio_player
|
| 27 |
|
|
|
|
| 29 |
LEARNT_SAMPLING_RATE = 8000
|
| 30 |
|
| 31 |
|
|
|
|
| 32 |
@interactive(
|
| 33 |
snr=(0., [-10., 10.], "SNR [dB]")
|
| 34 |
)
|
|
|
|
| 41 |
return mixed_signal
|
| 42 |
|
| 43 |
|
|
|
|
| 44 |
@interactive(std_dev=Control(0., value_range=[0., 0.1], name="extra noise std", step=0.0001),
|
| 45 |
amplify=(1., [0., 10.], "amplification of everything"))
|
| 46 |
def augment(signals, mixed, std_dev=0., amplify=1.):
|
|
|
|
| 62 |
# model=KeyboardControl(value_default=0, value_range=[
|
| 63 |
# 0, 99], keyup="pagedown", keydown="pageup")
|
| 64 |
# )
|
| 65 |
+
ALL_MODELS = ["Tiny UNET", "Large UNET", "Large UNET (Bias Free)"]
|
| 66 |
+
|
| 67 |
+
|
| 68 |
+
@interactive(
|
| 69 |
+
model=(ALL_MODELS[-1], ALL_MODELS, "Model selection")
|
| 70 |
+
)
|
| 71 |
def audio_sep_inference(mixed, models, configs, model: int = 0, global_params={}):
|
| 72 |
+
if isinstance(model, str):
|
| 73 |
+
model = ALL_MODELS.index(model)
|
| 74 |
+
assert isinstance(model, int)
|
| 75 |
selected_model = models[model % len(models)]
|
| 76 |
config = configs[model % len(models)]
|
| 77 |
short_name = config.get(SHORT_NAME, "")
|
|
|
|
| 120 |
@interactive(
|
| 121 |
center=KeyboardControl(value_default=0.5, value_range=[
|
| 122 |
0., 1.], step=0.01, keyup="6", keydown="4", name="Trim (center)"),
|
| 123 |
+
zoom=KeyboardControl(value_default=0., value_range=[
|
| 124 |
0., 15.], step=1, keyup="+", keydown="-", name="Trim (zoom)"),
|
| 125 |
# zoomy=KeyboardControl(
|
| 126 |
# value_default=0., value_range=[-15., 15.], step=1, keyup="up", keydown="down")
|
|
|
|
| 167 |
|
| 168 |
|
| 169 |
@interactive(
|
| 170 |
+
idx=("Voice 1", ["Voice 1", "Voice 2",
|
| 171 |
+
"Voice 3", "Voice 4"], "Clean signal"),
|
| 172 |
# idx=KeyboardControl(value_default=0, value_range=[
|
| 173 |
# 0, 1000], modulo=True, keyup="8", keydown="2", name="clean signal index"),
|
| 174 |
# idn=KeyboardControl(value_default=0, value_range=[
|
|
|
|
| 237 |
all_signals: List[dict],
|
| 238 |
model_list: List[torch.nn.Module],
|
| 239 |
config_list: List[dict],
|
| 240 |
+
gui="gradio"
|
| 241 |
):
|
| 242 |
+
|
| 243 |
+
interactive_pipeline(gui=gui, cache=True, audio=True)(
|
| 244 |
+
interactive_audio_separation_processing
|
| 245 |
+
)(
|
| 246 |
+
all_signals, model_list, config_list
|
| 247 |
+
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 248 |
|
| 249 |
|
| 250 |
def visualization(
|
|
|
|
| 283 |
parser = parse_command_line_audio_load()
|
| 284 |
default_device = "cuda" if torch.cuda.is_available() else "cpu"
|
| 285 |
iparse = parser.add_argument_group("Audio separation visualization")
|
| 286 |
+
iparse.add_argument("-e", "--experiments", type=int, nargs="+", default=[4, 1004, 3001,],
|
| 287 |
help="Experiment ids to be inferred sequentially")
|
| 288 |
iparse.add_argument("-p", "--interactive", default=True,
|
| 289 |
action="store_true", help="Play = Interactive mode")
|