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"{palabra}" # 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"
{html_texto}
" return html_completo