diff --git a/detecta_jingles.py b/detecta_jingles.py new file mode 100644 index 0000000..91dbea7 --- /dev/null +++ b/detecta_jingles.py @@ -0,0 +1,45 @@ +from pydub import AudioSegment +from pydub.silence import split_on_silence +import os + +def dividir_audio_per_silenci(input_file, output_dir, min_silence_len=1000, silence_thresh=-40, min_segment_len=1000): + """ + Divideix un fitxer d'àudio en fragments basats en silencis. + + :param input_file: Ruta del fitxer d'àudio (mp3, wav, etc.) + :param output_dir: Directori on guardar els fragments + :param min_silence_len: Longitud mínima del silenci (en ms) + :param silence_thresh: Umbral per detectar silenci (en dBFS) + :param min_segment_len: Longitud mínima d'un fragment per guardar-lo (en ms) + """ + # Carregar l'àudio + audio = AudioSegment.from_file(input_file) + + # Dividir en fragments segons els silencis + fragments = split_on_silence( + audio, + min_silence_len=min_silence_len, # Silenci mínim (1 segon) + silence_thresh=silence_thresh # Umbral de silenci (-40 dBFS) + ) + + if not fragments: + print("No s'han detectat fragments.") + return + + # Assegura't que el directori existeix + os.makedirs(output_dir, exist_ok=True) + + # Guardar els fragments com a fitxers separats + for i, fragment in enumerate(fragments): + # Només guardar fragments més grans que el mínim + if len(fragment) >= min_segment_len: + fragment_path = os.path.join(output_dir, f"fragment_{i+1}.mp3") + fragment.export(fragment_path, format="mp3") + print(f"Fragment {i+1} guardat a: {fragment_path}") + +# Exemple d'ús +if __name__ == "__main__": + input_file = input("Introdueix el fitxer d'àudio (mp3, wav, etc.): ").strip() + output_dir = input("Introdueix el directori de sortida per als fragments: ").strip() + + dividir_audio_per_silenci(input_file, output_dir) \ No newline at end of file