File size: 2,590 Bytes
e539326
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
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.")