import os import streamlit as st from utils_hf import download_youtube_audio, diarize_full_audio, process_transcripts, summarize_speaker_transcripts, transcribir_segmentos st.title("Transcripción y Diarización de YouTube") url = st.text_input("URL de YouTube:") if st.button("Transcribir y Diarizar"): if url: progress_bar = st.progress(0) with st.spinner("Descargando ..."): try: audio_path = download_youtube_audio(url, progress_bar) if os.path.exists(audio_path): st.success("Video descargado con éxito.") else: st.error(f"Error al descargar el video de YouTube:") st.stop() except Exception as e: st.error(f"Error al procesar el video de YouTube: {e}") st.stop() with st.spinner("Realizando diarización..."): try: diarization_segments, diarization_text, speakers = diarize_full_audio(audio_path) if diarization_text: st.text_area("Diarización", diarization_text, height=200) st.success(f"Diarización completada. Número de hablantes detectados: {len(speakers)}") else: st.error("No se pudo realizar la diarización.") except Exception as e: st.error(f"Error al realizar la diarización: {e}") with st.spinner("Transcribiendo segmentos de audio..."): try: trancription_text = transcribir_segmentos(diarization_segments, audio_path) st.success("Transcripción completada.") st.text_area("Diarización y Transcripción:", trancription_text) st.success("Diarización y transcripción guardadas en diarization_transcription.txt") except Exception as e: st.error(f"Error al transcribir los segmentos de audio: {e}") with st.spinner("Resumiendo hablantes..."): try: speaker_transcripts = process_transcripts(trancription_text, speakers) summaries = summarize_speaker_transcripts(speaker_transcripts) for speaker, summary in summaries.items(): st.text_area(f"Resumen del Hablante {speaker}", summary, height=200) except Exception as e: st.error(f"Error al resumir por hablante: {e}") else: st.warning("Por favor, ingresa una URL de YouTube.")