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