Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -2,44 +2,51 @@ import gradio as gr
|
|
| 2 |
import librosa
|
| 3 |
import numpy as np
|
| 4 |
from pydub import AudioSegment
|
| 5 |
-
import os
|
| 6 |
|
| 7 |
-
def
|
| 8 |
if tu_track is None:
|
| 9 |
-
return None, "Sube
|
| 10 |
-
|
| 11 |
try:
|
| 12 |
-
# 1. ANALISIS
|
| 13 |
-
y, sr = librosa.load(tu_track, duration=
|
| 14 |
chroma = librosa.feature.chroma_cqt(y=y, sr=sr)
|
| 15 |
-
key_idx = np.argmax(np.mean(chroma, axis=1))
|
| 16 |
notas = ["C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B"]
|
| 17 |
-
key_det = notas[
|
| 18 |
-
|
| 19 |
rms_tu = np.mean(librosa.feature.rms(y=y))
|
| 20 |
-
|
| 21 |
-
|
| 22 |
# 2. COMPARADOR
|
| 23 |
-
|
| 24 |
if track_ref is not None:
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 29 |
|
| 30 |
-
|
| 31 |
-
|
| 32 |
-
|
| 33 |
-
|
| 34 |
-
|
| 35 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 36 |
|
| 37 |
-
|
| 38 |
-
info = "TONALIDAD: " + key_det + "\n"
|
| 39 |
-
info += "ESTILO: " + estilo + "\n\n"
|
| 40 |
-
info += "COMPARATIVA: " + comp_txt + "\n\n"
|
| 41 |
-
info += "CONSEJO: En " + key_det + " el sub debe ser afinado."
|
| 42 |
-
|
| 43 |
-
prompt = "Cyberpunk DnB Art, Neon, " + estilo + " vibes, " + key_det + " mood."
|
| 44 |
|
| 45 |
-
|
|
|
|
| 2 |
import librosa
|
| 3 |
import numpy as np
|
| 4 |
from pydub import AudioSegment
|
|
|
|
| 5 |
|
| 6 |
+
def ghost_fix(tu_track, track_ref, intensidad):
|
| 7 |
if tu_track is None:
|
| 8 |
+
return None, "Sube un audio.", "...", "https://images.unsplash.com/photo-1614613535308-eb5fbd3d2c17?q=80&w=500", "..."
|
|
|
|
| 9 |
try:
|
| 10 |
+
# 1. ANALISIS RAPIDO
|
| 11 |
+
y, sr = librosa.load(tu_track, duration=20)
|
| 12 |
chroma = librosa.feature.chroma_cqt(y=y, sr=sr)
|
|
|
|
| 13 |
notas = ["C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B"]
|
| 14 |
+
key_det = notas[np.argmax(np.mean(chroma, axis=1))]
|
|
|
|
| 15 |
rms_tu = np.mean(librosa.feature.rms(y=y))
|
| 16 |
+
|
|
|
|
| 17 |
# 2. COMPARADOR
|
| 18 |
+
info = "TONALIDAD: " + key_det + "\n"
|
| 19 |
if track_ref is not None:
|
| 20 |
+
y_r, _ = librosa.load(track_ref, duration=20)
|
| 21 |
+
diff = 20 * np.log10(np.mean(librosa.feature.rms(y=y_r)) / rms_tu)
|
| 22 |
+
info += "DIF. VOLUMEN: " + str(round(diff, 1)) + " dB\n"
|
| 23 |
+
|
| 24 |
+
# 3. MASTER
|
| 25 |
+
audio = AudioSegment.from_file(tu_track)
|
| 26 |
+
audio = audio.apply_gain((intensidad / 10) - 5)
|
| 27 |
+
audio.export("final.wav", format="wav")
|
| 28 |
+
|
| 29 |
+
prompt = "Cyberpunk Art, Neon, DnB style, Key: " + key_det
|
| 30 |
+
return "final.wav", info + "\nCONSEJO: Ajusta tu Kick a " + key_det, key_det, "https://images.unsplash.com/photo-1550684848-fac1c5b4e853?q=80&w=500", prompt
|
| 31 |
+
except Exception as e:
|
| 32 |
+
return None, "Error: " + str(e), "!", None, "..."
|
| 33 |
|
| 34 |
+
with gr.Blocks(theme=gr.themes.Monochrome(primary_hue="orange")) as demo:
|
| 35 |
+
gr.Markdown("# 💀 DNB GHOST v7.2")
|
| 36 |
+
with gr.Row():
|
| 37 |
+
with gr.Column():
|
| 38 |
+
in_t = gr.Audio(label="TU TRACK", type="filepath")
|
| 39 |
+
in_r = gr.Audio(label="REFERENCIA", type="filepath")
|
| 40 |
+
in_s = gr.Slider(0, 100, label="MASTER", value=80)
|
| 41 |
+
btn = gr.Button("🚀 PROCESAR", variant="primary")
|
| 42 |
+
with gr.Column():
|
| 43 |
+
out_a = gr.Audio(label="MASTER")
|
| 44 |
+
out_i = gr.Textbox(label="INFORME")
|
| 45 |
+
out_k = gr.Label(label="KEY")
|
| 46 |
+
with gr.Column():
|
| 47 |
+
out_m = gr.Image(label="VIBE")
|
| 48 |
+
out_p = gr.Textbox(label="PROMPT ARTE")
|
| 49 |
|
| 50 |
+
btn.click(ghost_fix, [in_t, in_r, in_s], [out_a, out_i, out_k, out_m, out_p])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 51 |
|
| 52 |
+
demo.launch()
|