Add detecta_jingles.py
This commit is contained in:
parent
8b96acebf9
commit
92c983be7b
45
detecta_jingles.py
Normal file
45
detecta_jingles.py
Normal file
@ -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)
|
Loading…
Reference in New Issue
Block a user