File size: 6,095 Bytes
73b906e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9dba6bb
51cca5c
 
 
9dba6bb
51cca5c
 
 
db096e5
 
 
 
 
 
51cca5c
db096e5
 
 
 
 
51cca5c
db096e5
 
51cca5c
 
db096e5
 
 
51cca5c
 
 
 
 
 
 
 
 
9dba6bb
 
 
 
51cca5c
 
 
db096e5
51cca5c
 
db096e5
9dba6bb
51cca5c
 
 
 
 
9471b7a
51cca5c
db096e5
9471b7a
9dba6bb
51cca5c
 
 
9dba6bb
 
 
 
8bc597c
51cca5c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e9cf21b
51cca5c
 
e9cf21b
 
 
 
 
 
 
 
51cca5c
 
 
 
 
 
 
db096e5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
331d9f9
db096e5
 
 
 
 
 
 
 
 
 
 
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
import datetime

def guardar_en_archivo(lista_strings):
    # Formateamos la fecha
    fecha_actual = datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
    nombre_archivo = f"transcription_{fecha_actual}.txt"
    
    # Escribimos la lista en el archivo
    with open(nombre_archivo, 'w') as archivo:
        for linea in lista_strings:
            archivo.write(linea + '\n')

    return nombre_archivo

def leer_del_archivo(nombre_archivo):
    with open(nombre_archivo, 'r') as archivo:
        # Leemos las l铆neas y eliminamos el salto de l铆nea al final
        contenido = [linea.strip() for linea in archivo.readlines()]
    return contenido

def guardar_dataframe_en_csv(df):
    # Obtener la fecha y hora actual y formatearla
    fecha_actual = datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
    
    # Generar el nombre del archivo
    nombre_archivo = f"transcription_{fecha_actual}.csv"
    
    # Guardar el DataFrame en el archivo CSV
    df.to_csv(nombre_archivo, index=False)

    return nombre_archivo

def dataframe_a_lista(df):
    # Convertimos todas las columnas a string
    df_str = df.astype(str)
    
    # Concatenamos las columnas fila por fila
    lista_strings = df_str.apply(lambda row: ' '.join(row), axis=1).tolist()
    
    return lista_strings

# def generar_transcripcion(diccionario):
#     # Obtenemos la lista de segmentos del diccionario
#     segmentos = diccionario['segments']
    
#     # Creamos una lista para almacenar las l铆neas de la transcripci贸n
#     lineas_transcripcion = []
    
#     # Iteramos sobre los segmentos del diccionario
#     i = 0
#     while i < len(segmentos):
#         # Obtenemos el speaker y el texto del segmento actual
#         speaker_actual = segmentos[i]['speaker']
#         texto_actual = segmentos[i]['text']
        
#         # Buscamos el siguiente segmento con un speaker diferente
#         j = i + 1
#         while j < len(segmentos) and segmentos[j]['speaker'] == speaker_actual:
#             texto_actual += ' ' + segmentos[j]['text']
#             j += 1
        
#         # Agregamos el texto del speaker actual a la transcripci贸n
#         parrafo_con_speaker = f"{speaker_actual}: {texto_actual}"
#         linea = parrafo_con_speaker
#         lineas_transcripcion.append(linea)
        
#         # Actualizamos el 铆ndice para el siguiente speaker
#         i = j
    
#     # Guardamos la transcripci贸n en un archivo de texto
#     nombre_archivo = guardar_en_archivo(lineas_transcripcion)
    
#     return lineas_transcripcion, nombre_archivo

def generar_transcripcion(diccionario):
    # Obtenemos la lista de segmentos del diccionario
    segmentos = diccionario['segments']
    
    # Creamos una lista para almacenar las l铆neas de la transcripci贸n
    lineas_transcripcion = []
    
    # Iteramos sobre los segmentos del diccionario
    i = 0
    while i < len(segmentos):
        # Obtenemos el speaker, el texto y el start time del segmento actual
        speaker_actual = segmentos[i]['speaker']
        texto_actual = segmentos[i]['text']
        start_time = segmentos[i]['start']
        
        # Buscamos el siguiente segmento con un speaker diferente
        j = i + 1
        while j < len(segmentos) and segmentos[j]['speaker'] == speaker_actual:
            texto_actual += ' ' + segmentos[j]['text']
            j += 1
        
        # Agregamos el texto del speaker actual a la transcripci贸n
        parrafo_con_speaker = f"{speaker_actual} ({start_time}): {texto_actual}"
        linea = parrafo_con_speaker
        lineas_transcripcion.append(linea)
        
        # Actualizamos el 铆ndice para el siguiente speaker
        i = j
    
    # Guardamos la transcripci贸n en un archivo de texto
    nombre_archivo = guardar_en_archivo(lineas_transcripcion)
    
    return lineas_transcripcion, nombre_archivo


def crear_diccionario(json_data):
    # Obtenemos la lista de segmentos del JSON
    segmentos = json_data['segments']
    
    # Creamos los diccionarios para almacenar los datos
    diccionario = {'start_time': [], 'speaker': [], 'word': [], 'score': []}
    
    # Iteramos sobre los segmentos del JSON
    for segmento in segmentos:
        # Obtenemos los valores del segmento
        start_time = segmento['start']
        speaker = segmento['speaker']
        palabras = segmento['words']
        
        # Iteramos sobre las palabras del segmento
        for palabra in palabras:

            # Obtenemos los valores de la palabra
            word = palabra['word']
            if 'score'not in palabra.keys():
                print(segmento)
                print(palabra)
                # Agregamos el score por defecto
                palabra['score'] = 0.5
            else:
                score = palabra['score']

            
            # Agregamos los valores al diccionario
            diccionario['start_time'].append(start_time)
            diccionario['speaker'].append(speaker)
            diccionario['word'].append(word)
            diccionario['score'].append(score)
    
    return diccionario

def generar_html_palabras(palabras, scores):
    # Creamos una lista para almacenar los c贸digos HTML de cada palabra
    html_palabras = []
    
    # Iteramos sobre las palabras y sus scores
    for palabra, score in zip(palabras, scores):
        # Mapeamos el score a un color en rojo o verde
        if score < 0.5:
            color = f"rgb({int(255*score*2)}, {int(255*(1-score*2))}, 0)"
        else:
            color = f"rgb({int(255*(1-score)*2)}, {int(255*score*2)}, 0)"
        
        # Creamos el c贸digo HTML para la palabra con el color asociado
        html_palabra = f"<span style='background-color: {color}; color: black'>{palabra}</span>"
        
        # Agregamos el c贸digo HTML a la lista
        html_palabras.append(html_palabra)
    
    # Unimos los c贸digos HTML de las palabras en una sola cadena
    html_texto = ' '.join(html_palabras)
    
    # Creamos el c贸digo HTML completo con el texto resaltado
    html_completo = f"<p>{html_texto}</p>"
    
    return html_completo