Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -8,16 +8,25 @@ def visualize_audio(file):
|
|
| 8 |
# Charger l'audio
|
| 9 |
y, sr = librosa.load(file, sr=None)
|
| 10 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 11 |
# Transformer le signal en spectre de fréquences
|
| 12 |
-
D = librosa.stft(
|
| 13 |
magnitude, phase = np.abs(D), np.angle(D)
|
| 14 |
|
| 15 |
# Créer les figures pour affichage
|
| 16 |
fig, ax = plt.subplots(3, 1, figsize=(10, 12))
|
| 17 |
|
| 18 |
# 1. Affichage de la forme d'onde
|
| 19 |
-
ax[0].plot(
|
| 20 |
-
ax[0].set_title("Forme d'onde")
|
| 21 |
ax[0].set_xlabel("Temps (échantillons)")
|
| 22 |
ax[0].set_ylabel("Amplitude")
|
| 23 |
|
|
|
|
| 8 |
# Charger l'audio
|
| 9 |
y, sr = librosa.load(file, sr=None)
|
| 10 |
|
| 11 |
+
# Détecter les segments actifs (éviter les silences)
|
| 12 |
+
intervals = librosa.effects.split(y, top_db=20) # Seuil de silence (en dB)
|
| 13 |
+
|
| 14 |
+
if len(intervals) == 0: # Si pas de segment actif, on garde tout
|
| 15 |
+
y_active = y
|
| 16 |
+
else:
|
| 17 |
+
start, end = intervals[0][0], intervals[-1][1] # Début et fin du segment actif
|
| 18 |
+
y_active = y[start:end]
|
| 19 |
+
|
| 20 |
# Transformer le signal en spectre de fréquences
|
| 21 |
+
D = librosa.stft(y_active) # Transformée de Fourier
|
| 22 |
magnitude, phase = np.abs(D), np.angle(D)
|
| 23 |
|
| 24 |
# Créer les figures pour affichage
|
| 25 |
fig, ax = plt.subplots(3, 1, figsize=(10, 12))
|
| 26 |
|
| 27 |
# 1. Affichage de la forme d'onde
|
| 28 |
+
ax[0].plot(y_active, color="blue")
|
| 29 |
+
ax[0].set_title("Forme d'onde (intervalle actif)")
|
| 30 |
ax[0].set_xlabel("Temps (échantillons)")
|
| 31 |
ax[0].set_ylabel("Amplitude")
|
| 32 |
|