Update app.py
Browse files
app.py
CHANGED
@@ -4,28 +4,43 @@ import replicate
|
|
4 |
from pydub import AudioSegment
|
5 |
from fpdf import FPDF
|
6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
def dividir_audio(audio_path, segment_duration_ms=5*60*1000):
|
8 |
audio = AudioSegment.from_file(audio_path)
|
9 |
segments = []
|
|
|
10 |
for i in range(0, len(audio), segment_duration_ms):
|
11 |
segment = audio[i:i + segment_duration_ms]
|
12 |
segment_path = f"segment_{i // (60 * 1000)}.wav"
|
13 |
segment.export(segment_path, format="wav")
|
14 |
segments.append(segment_path)
|
|
|
15 |
return segments
|
16 |
|
|
|
17 |
def crear_pdf(transcripcion, progress=gr.Progress()):
|
18 |
pdf = FPDF()
|
19 |
pdf.add_page()
|
|
|
20 |
pdf.set_font("Arial", size=12)
|
21 |
lines = transcripcion.split("\n")
|
|
|
|
|
22 |
for i, line in enumerate(lines):
|
23 |
pdf.multi_cell(0, 10, line)
|
24 |
-
progress(i / len(lines))
|
|
|
25 |
pdf_path = "/mnt/data/transcripcion_audio.pdf"
|
26 |
pdf.output(pdf_path)
|
27 |
return pdf_path
|
28 |
|
|
|
29 |
def transcribe_audio_y_pdf(audio_file, progress=gr.Progress()):
|
30 |
audio = AudioSegment.from_file(audio_file)
|
31 |
if len(audio) > 5 * 60 * 1000:
|
@@ -48,6 +63,15 @@ def transcribe_audio_y_pdf(audio_file, progress=gr.Progress()):
|
|
48 |
pdf_path = crear_pdf(full_transcription, progress)
|
49 |
yield full_transcription, pdf_path
|
50 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
51 |
with gr.Blocks() as demo:
|
52 |
gr.Markdown("# Transcriptor con Progreso y Scroll")
|
53 |
audio_input = gr.Audio(type="filepath", label="Sube tu archivo de audio")
|
@@ -57,7 +81,7 @@ with gr.Blocks() as demo:
|
|
57 |
transcribe_button = gr.Button("Transcribir y Crear PDF")
|
58 |
transcribe_button.click(fn=transcribe_audio_y_pdf, inputs=audio_input, outputs=[output_text, output_pdf])
|
59 |
|
60 |
-
# JavaScript para auto-scroll
|
61 |
demo.load(js=scroll_jscode)
|
62 |
|
63 |
demo.launch()
|
|
|
4 |
from pydub import AudioSegment
|
5 |
from fpdf import FPDF
|
6 |
|
7 |
+
# Aseg煤rate de que REPLICATE_API_TOKEN est茅 configurado en las variables de entorno
|
8 |
+
replicate_token = os.getenv("REPLICATE_API_TOKEN")
|
9 |
+
|
10 |
+
if not replicate_token:
|
11 |
+
raise ValueError("No se ha encontrado el token de API de Replicate.")
|
12 |
+
|
13 |
+
# Funci贸n para dividir el archivo de audio en segmentos de duraci贸n definida (en milisegundos)
|
14 |
def dividir_audio(audio_path, segment_duration_ms=5*60*1000):
|
15 |
audio = AudioSegment.from_file(audio_path)
|
16 |
segments = []
|
17 |
+
|
18 |
for i in range(0, len(audio), segment_duration_ms):
|
19 |
segment = audio[i:i + segment_duration_ms]
|
20 |
segment_path = f"segment_{i // (60 * 1000)}.wav"
|
21 |
segment.export(segment_path, format="wav")
|
22 |
segments.append(segment_path)
|
23 |
+
|
24 |
return segments
|
25 |
|
26 |
+
# Funci贸n para crear el PDF con barra de progreso
|
27 |
def crear_pdf(transcripcion, progress=gr.Progress()):
|
28 |
pdf = FPDF()
|
29 |
pdf.add_page()
|
30 |
+
|
31 |
pdf.set_font("Arial", size=12)
|
32 |
lines = transcripcion.split("\n")
|
33 |
+
|
34 |
+
# Agregar la transcripci贸n al PDF l铆nea por l铆nea con progreso
|
35 |
for i, line in enumerate(lines):
|
36 |
pdf.multi_cell(0, 10, line)
|
37 |
+
progress(i / len(lines)) # Actualiza la barra de progreso
|
38 |
+
|
39 |
pdf_path = "/mnt/data/transcripcion_audio.pdf"
|
40 |
pdf.output(pdf_path)
|
41 |
return pdf_path
|
42 |
|
43 |
+
# Funci贸n para transcribir los segmentos de audio y generar el PDF
|
44 |
def transcribe_audio_y_pdf(audio_file, progress=gr.Progress()):
|
45 |
audio = AudioSegment.from_file(audio_file)
|
46 |
if len(audio) > 5 * 60 * 1000:
|
|
|
63 |
pdf_path = crear_pdf(full_transcription, progress)
|
64 |
yield full_transcription, pdf_path
|
65 |
|
66 |
+
# Definir el script JavaScript para auto-scroll
|
67 |
+
scroll_jscode = """
|
68 |
+
function autoScroll() {
|
69 |
+
var textbox = document.getElementById('transcription');
|
70 |
+
textbox.scrollTop = textbox.scrollHeight;
|
71 |
+
}
|
72 |
+
"""
|
73 |
+
|
74 |
+
# Crea la interfaz de Gradio con scroll autom谩tico en el campo de texto
|
75 |
with gr.Blocks() as demo:
|
76 |
gr.Markdown("# Transcriptor con Progreso y Scroll")
|
77 |
audio_input = gr.Audio(type="filepath", label="Sube tu archivo de audio")
|
|
|
81 |
transcribe_button = gr.Button("Transcribir y Crear PDF")
|
82 |
transcribe_button.click(fn=transcribe_audio_y_pdf, inputs=audio_input, outputs=[output_text, output_pdf])
|
83 |
|
84 |
+
# JavaScript para auto-scroll al final de la caja de texto
|
85 |
demo.load(js=scroll_jscode)
|
86 |
|
87 |
demo.launch()
|