Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -129,7 +129,7 @@ def apply_stage_mode(audio):
|
|
129 |
|
130 |
# === Genre Mastering Presets ===
|
131 |
genre_presets = {
|
132 |
-
"Soul": ["
|
133 |
"Funk": ["Treble Boost (+6dB)", "Compression", "Stereo Widening"],
|
134 |
"Rock": ["Distortion", "Punchy Mids", "Reverb"],
|
135 |
"Pop": ["Vocal Clarity", "Limiter", "Stereo Expansion"],
|
@@ -410,46 +410,13 @@ def mix_tracks(track1, track2, volume_offset=0):
|
|
410 |
# === Genre Mastering Tab ===
|
411 |
def apply_genre_preset(audio, genre):
|
412 |
global preset_choices
|
413 |
-
selected_preset =
|
414 |
-
return process_audio(audio, selected_preset, False, genre, "WAV")
|
415 |
-
|
416 |
-
with gr.Tab("π§ Genre Mastering"):
|
417 |
-
gr.Markdown("Apply pre-tuned mastering settings for different music genres.")
|
418 |
-
|
419 |
-
genre_dropdown = gr.Dropdown(
|
420 |
-
choices=list(genre_presets.keys()),
|
421 |
-
label="Select Genre",
|
422 |
-
value="Pop"
|
423 |
-
)
|
424 |
-
|
425 |
-
gr.Interface(
|
426 |
-
fn=lambda audio, genre: apply_genre_preset(audio, genre)[0],
|
427 |
-
inputs=[
|
428 |
-
gr.Audio(label="Upload Track", type="filepath"),
|
429 |
-
genre_dropdown
|
430 |
-
],
|
431 |
-
outputs=gr.Audio(label="Mastered Output", type="filepath"),
|
432 |
-
title="Genre-Specific Mastering",
|
433 |
-
description="Apply professionally tuned presets for popular music genres."
|
434 |
-
)
|
435 |
|
436 |
# === Dummy Voice Cloning Tab β Works Locally Only ===
|
437 |
def clone_voice(*args):
|
438 |
return "β οΈ Voice cloning requires local install β use Python 3.9 or below"
|
439 |
|
440 |
-
with gr.Tab("π Voice Cloning (Local Only)"):
|
441 |
-
gr.Interface(
|
442 |
-
fn=clone_voice,
|
443 |
-
inputs=[
|
444 |
-
gr.File(label="Source Voice Clip"),
|
445 |
-
gr.File(label="Target Voice Clip"),
|
446 |
-
gr.Textbox(label="Text to Clone", lines=5)
|
447 |
-
],
|
448 |
-
outputs=gr.Audio(label="Cloned Output", type="filepath"),
|
449 |
-
title="Replace One Voice With Another",
|
450 |
-
description="Clone voice from source to target speaker using AI"
|
451 |
-
)
|
452 |
-
|
453 |
# === Speaker Diarization ("Who Spoke When?") ===
|
454 |
try:
|
455 |
from pyannote.audio import Pipeline as DiarizationPipeline
|
@@ -473,6 +440,7 @@ def diarize_and_transcribe(audio_path):
|
|
473 |
audio.export(temp_wav, format="wav")
|
474 |
|
475 |
try:
|
|
|
476 |
diarization = diarize_pipeline(temp_wav)
|
477 |
|
478 |
result = whisper.transcribe(temp_wav)
|
@@ -549,7 +517,7 @@ with gr.Blocks(title="AI Audio Studio", css="style.css") as demo:
|
|
549 |
gr.File(label="Upload Multiple Files", file_count="multiple"),
|
550 |
gr.CheckboxGroup(choices=effect_options, label="Apply Effects in Order"),
|
551 |
gr.Checkbox(label="Isolate Vocals After Effects"),
|
552 |
-
gr.Dropdown(choices=preset_names, label="Select Preset", value=preset_names[0]),
|
553 |
gr.Dropdown(choices=["MP3", "WAV"], label="Export Format", value="MP3")
|
554 |
],
|
555 |
outputs=[
|
@@ -583,15 +551,14 @@ with gr.Blocks(title="AI Audio Studio", css="style.css") as demo:
|
|
583 |
# --- Genre Mastering Tab ===
|
584 |
with gr.Tab("π§ Genre Mastering"):
|
585 |
gr.Interface(
|
586 |
-
fn=lambda audio, genre: apply_genre_preset(audio, genre)
|
587 |
inputs=[
|
588 |
gr.Audio(label="Upload Track", type="filepath"),
|
589 |
gr.Dropdown(choices=list(genre_presets.keys()), label="Select Genre", value="Pop")
|
590 |
],
|
591 |
outputs=gr.Audio(label="Mastered Output", type="filepath"),
|
592 |
title="Genre-Specific Mastering",
|
593 |
-
description="Apply professionally tuned presets for popular music genres."
|
594 |
-
allow_flagging="never"
|
595 |
)
|
596 |
|
597 |
# --- Transcribe & Edit Tab ===
|
@@ -713,18 +680,4 @@ with gr.Blocks(title="AI Audio Studio", css="style.css") as demo:
|
|
713 |
description="Load your saved session"
|
714 |
)
|
715 |
|
716 |
-
# --- Mix Two Tracks ===
|
717 |
-
with gr.Tab(" remix mode"),
|
718 |
-
gr.Interface(
|
719 |
-
fn=mix_tracks,
|
720 |
-
inputs=[
|
721 |
-
gr.File(label="Main Track"),
|
722 |
-
gr.File(label="Background Track"),
|
723 |
-
gr.Slider(minimum=-10, maximum=10, value=0, label="Volume Offset (dB)")
|
724 |
-
],
|
725 |
-
outputs=gr.File(label="Mixed Output"),
|
726 |
-
title="Overlay Two Tracks",
|
727 |
-
description="Mix, blend, or subtract two audio files."
|
728 |
-
)
|
729 |
-
|
730 |
demo.launch()
|
|
|
129 |
|
130 |
# === Genre Mastering Presets ===
|
131 |
genre_presets = {
|
132 |
+
"Soul": ["Noise Reduction", "Bass Boost (+6dB)", "Mid Enhance"],
|
133 |
"Funk": ["Treble Boost (+6dB)", "Compression", "Stereo Widening"],
|
134 |
"Rock": ["Distortion", "Punchy Mids", "Reverb"],
|
135 |
"Pop": ["Vocal Clarity", "Limiter", "Stereo Expansion"],
|
|
|
410 |
# === Genre Mastering Tab ===
|
411 |
def apply_genre_preset(audio, genre):
|
412 |
global preset_choices
|
413 |
+
selected_preset = genre_presets.get(genre, [])
|
414 |
+
return process_audio(audio, selected_preset, False, genre, "WAV")[0]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
415 |
|
416 |
# === Dummy Voice Cloning Tab β Works Locally Only ===
|
417 |
def clone_voice(*args):
|
418 |
return "β οΈ Voice cloning requires local install β use Python 3.9 or below"
|
419 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
420 |
# === Speaker Diarization ("Who Spoke When?") ===
|
421 |
try:
|
422 |
from pyannote.audio import Pipeline as DiarizationPipeline
|
|
|
440 |
audio.export(temp_wav, format="wav")
|
441 |
|
442 |
try:
|
443 |
+
from pyannote.audio import Pipeline as DiarizationPipeline
|
444 |
diarization = diarize_pipeline(temp_wav)
|
445 |
|
446 |
result = whisper.transcribe(temp_wav)
|
|
|
517 |
gr.File(label="Upload Multiple Files", file_count="multiple"),
|
518 |
gr.CheckboxGroup(choices=effect_options, label="Apply Effects in Order"),
|
519 |
gr.Checkbox(label="Isolate Vocals After Effects"),
|
520 |
+
gr.Dropdown(choices=preset_names, label="Select Preset", value=preset_names[0] if preset_names else None),
|
521 |
gr.Dropdown(choices=["MP3", "WAV"], label="Export Format", value="MP3")
|
522 |
],
|
523 |
outputs=[
|
|
|
551 |
# --- Genre Mastering Tab ===
|
552 |
with gr.Tab("π§ Genre Mastering"):
|
553 |
gr.Interface(
|
554 |
+
fn=lambda audio, genre: apply_genre_preset(audio, genre),
|
555 |
inputs=[
|
556 |
gr.Audio(label="Upload Track", type="filepath"),
|
557 |
gr.Dropdown(choices=list(genre_presets.keys()), label="Select Genre", value="Pop")
|
558 |
],
|
559 |
outputs=gr.Audio(label="Mastered Output", type="filepath"),
|
560 |
title="Genre-Specific Mastering",
|
561 |
+
description="Apply professionally tuned presets for popular music genres."
|
|
|
562 |
)
|
563 |
|
564 |
# --- Transcribe & Edit Tab ===
|
|
|
680 |
description="Load your saved session"
|
681 |
)
|
682 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
683 |
demo.launch()
|