@@ -329,8 +329,10 @@ def update_progress():
329329 progress_thread .start ()
330330
331331 # Attende i risultati con barra di progresso
332- chunk1_text = future1 .result (timeout = 600 ) # 10 minuti timeout
333- chunk2_text = future2 .result (timeout = 600 )
332+ # Timeout aumentato per audio lunghi: 20 minuti per chunk
333+ chunk_timeout = max (1200 , audio_duration // 2 + 300 ) # Minimo 20 minuti o metà durata + 5 minuti
334+ chunk1_text = future1 .result (timeout = chunk_timeout )
335+ chunk2_text = future2 .result (timeout = chunk_timeout )
334336
335337 # Unisce i risultati
336338 full_transcription = chunk1_text .strip () + " " + chunk2_text .strip ()
@@ -552,6 +554,7 @@ def main(podcast_dir, model_name='medium', language='it', parallel=False):
552554
553555 processed_files = 0
554556 start_time = time .time ()
557+ processed_file_list = [] # Lista per tracciare file già elaborati
555558
556559 # Barra di progresso principale per tutti i file
557560 with tqdm (total = total_files ,
@@ -571,8 +574,16 @@ def main(podcast_dir, model_name='medium', language='it', parallel=False):
571574 output_file_name = base_name + '.txt'
572575 output_path = os .path .join (root , output_file_name )
573576
574- # Verifica se la trascrizione esiste già
577+ # Verifica se la trascrizione esiste già o se è già stata elaborata in questa sessione
575578 if os .path .exists (output_path ) and os .path .getsize (output_path ) > 1 :
579+ print (f" ⏭️ Trascrizione già esistente per: { file_name } " )
580+ main_pbar .update (1 )
581+ continue
582+
583+ # Verifica se il file è già stato elaborato in questa sessione
584+ if file_path in processed_file_list :
585+ print (f" ⏭️ File già elaborato in questa sessione: { file_name } " )
586+ main_pbar .update (1 )
576587 continue
577588
578589 # File WAV da utilizzare per la trascrizione (originale o convertito)
@@ -604,6 +615,8 @@ def main(podcast_dir, model_name='medium', language='it', parallel=False):
604615 transcription = transcribe_podcast_with_progress (wav_file_path , model_name , language , parallel )
605616 save_transcription (transcription , output_path )
606617
618+ # Aggiungi il file alla lista dei processati
619+ processed_file_list .append (file_path )
607620 processed_files += 1
608621 elapsed_total = time .time () - start_time
609622 file_elapsed = time .time () - file_start_time
@@ -642,8 +655,14 @@ def main(podcast_dir, model_name='medium', language='it', parallel=False):
642655 print (f" Attenzione: impossibile rimuovere il file convertito: { e } " )
643656
644657 total_elapsed = time .time () - start_time
658+ # Conta file saltati
659+ skipped_files = total_files - processed_files
660+
645661 print (f"\n 🎉 Trascrizione completata!" )
646- print (f"📊 File elaborati: { processed_files } /{ total_files } " )
662+ print (f"📊 File elaborati: { processed_files } " )
663+ if skipped_files > 0 :
664+ print (f"⏭️ File saltati (già esistenti): { skipped_files } " )
665+ print (f"📁 Totale file trovati: { total_files } " )
647666 print (f"⏱️ Tempo totale: { format_time (total_elapsed )} " )
648667 if processed_files > 0 :
649668 print (f"📈 Tempo medio per file: { total_elapsed / processed_files :.1f} secondi" )
@@ -681,14 +700,11 @@ def main(podcast_dir, model_name='medium', language='it', parallel=False):
681700 continue
682701
683702 while True :
684- scelta = input ("\n Utilizza di nuovo lo script digitando 1 o premi 0 per uscire : " ).strip ()
703+ scelta = input ("\n 🔄 Utilizzare di nuovo lo script con una nuova cartella? (1=sì, 0=no) : " ).strip ()
685704 if scelta == '1' :
686705 break
687706 elif scelta == '0' :
688- print ("Arrivederci!" )
707+ print ("👋 Arrivederci!" )
689708 sys .exit (0 )
690709 else :
691- print ("Scelta non valida. Inserire 1 o 0." )
692-
693- if scelta == '0' :
694- break
710+ print ("❌ Scelta non valida. Inserire 1 o 0." )
0 commit comments