Spaces:
Running
Running
silentDynamically
Browse files
app.py
CHANGED
@@ -27,16 +27,26 @@ def reduce_noise(audio, sr):
|
|
27 |
audio = np.where(np.abs(audio) > noise_threshold, audio, 0)
|
28 |
return audio
|
29 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
30 |
def diarize_audio(audio_path):
|
31 |
"""
|
32 |
Diarisation de l'audio : détecte qui parle et à quel moment.
|
33 |
Retourne une liste de (speaker, début, fin).
|
34 |
"""
|
|
|
|
|
|
|
|
|
35 |
diarization = diarization_pipeline(audio_path)
|
36 |
speaker_segments = {}
|
37 |
|
38 |
-
# Ajustement : fusionner les segments proches si le silence est trop court
|
39 |
-
min_silence_duration = 0.5 # Durée minimale du silence pour être considéré comme un changement de speaker
|
40 |
previous_speaker = None
|
41 |
last_end = 0
|
42 |
|
|
|
27 |
audio = np.where(np.abs(audio) > noise_threshold, audio, 0)
|
28 |
return audio
|
29 |
|
30 |
+
def calculate_min_silence_duration(audio_path):
|
31 |
+
# Charger l'audio pour obtenir sa durée
|
32 |
+
audio, sr = librosa.load(audio_path, sr=None)
|
33 |
+
total_duration = len(audio) / sr
|
34 |
+
dynamic_min_silence = total_duration * 0.05 # 5% de la durée totale de l'audio
|
35 |
+
return dynamic_min_silence
|
36 |
+
|
37 |
+
|
38 |
def diarize_audio(audio_path):
|
39 |
"""
|
40 |
Diarisation de l'audio : détecte qui parle et à quel moment.
|
41 |
Retourne une liste de (speaker, début, fin).
|
42 |
"""
|
43 |
+
# Calculer la durée minimale de silence en fonction de la durée de l'audio
|
44 |
+
min_silence_duration = calculate_min_silence_duration(audio_path)
|
45 |
+
print(f"Durée minimale de silence ajustée à : {min_silence_duration} secondes")
|
46 |
+
|
47 |
diarization = diarization_pipeline(audio_path)
|
48 |
speaker_segments = {}
|
49 |
|
|
|
|
|
50 |
previous_speaker = None
|
51 |
last_end = 0
|
52 |
|