Spaces:
Runtime error
Runtime error
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 |