Blandskron commited on
Commit
4b85c56
verified
1 Parent(s): 448ee6d

Create app.py

Browse files

Este c贸digo utiliza Gradio para crear una interfaz web interactiva.

Files changed (1) hide show
  1. app.py +78 -0
app.py ADDED
@@ -0,0 +1,78 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from transformers import pipeline
2
+ from pydub import AudioSegment
3
+ from pydub.utils import make_chunks
4
+ import os
5
+ import gradio as gr
6
+
7
+ # Inicializar el modelo de Hugging Face
8
+ modelo = pipeline("automatic-speech-recognition", model="facebook/wav2vec2-large-xlsr-53-spanish")
9
+
10
+ # Funci贸n para dividir audios largos en fragmentos
11
+ def dividir_audio(input_path, output_dir, chunk_length_ms=30000):
12
+ """
13
+ Divide un archivo de audio en fragmentos m谩s peque帽os.
14
+ Args:
15
+ input_path (str): Ruta al archivo de audio original.
16
+ output_dir (str): Carpeta donde se guardar谩n los fragmentos.
17
+ chunk_length_ms (int): Duraci贸n de cada fragmento en milisegundos.
18
+ """
19
+ audio = AudioSegment.from_file(input_path)
20
+ chunks = make_chunks(audio, chunk_length_ms)
21
+ os.makedirs(output_dir, exist_ok=True)
22
+
23
+ for i, chunk in enumerate(chunks):
24
+ chunk_name = os.path.join(output_dir, f"chunk_{i}.wav")
25
+ chunk.export(chunk_name, format="wav")
26
+ print(f"Guardado: {chunk_name}")
27
+
28
+ # Funci贸n para transcribir audios
29
+ def transcribir_audio(audio_path):
30
+ """
31
+ Transcribe un archivo de audio usando Hugging Face.
32
+ Args:
33
+ audio_path (str): Ruta al archivo de audio.
34
+ Returns:
35
+ str: Texto transcrito.
36
+ """
37
+ print(f"Procesando: {audio_path}")
38
+ result = modelo(audio_path)
39
+ return result["text"]
40
+
41
+ # Funci贸n principal para manejar la transcripci贸n desde la interfaz
42
+ def procesar_audio(input_audio):
43
+ output_dir = "chunks"
44
+ chunk_length_ms = 30000 # Dividir en fragmentos de 30 segundos
45
+
46
+ # Guardar el archivo cargado temporalmente
47
+ input_audio_path = "input_audio.wav"
48
+ input_audio.export(input_audio_path, format="wav")
49
+
50
+ print("Dividiendo audio...")
51
+ dividir_audio(input_audio_path, output_dir, chunk_length_ms)
52
+
53
+ print("Transcribiendo fragmentos...")
54
+ transcripcion_final = []
55
+ for filename in sorted(os.listdir(output_dir)):
56
+ if filename.endswith(".wav"):
57
+ filepath = os.path.join(output_dir, filename)
58
+ texto = transcribir_audio(filepath)
59
+ transcripcion_final.append(texto)
60
+
61
+ # Concatenar la transcripci贸n final
62
+ transcripcion_completa = " ".join(transcripcion_final)
63
+
64
+ # Devolver la transcripci贸n completa
65
+ return transcripcion_completa
66
+
67
+ # Crear la interfaz de usuario con Gradio
68
+ interface = gr.Interface(
69
+ fn=procesar_audio,
70
+ inputs=gr.Audio(source="upload", type="file", label="Sube tu archivo de audio"),
71
+ outputs=gr.Textbox(label="Transcripci贸n"),
72
+ title="Transcriptor de Audio",
73
+ description="Sube un archivo de audio de una reuni贸n y obt茅n la transcripci贸n completa."
74
+ )
75
+
76
+ # Ejecutar la aplicaci贸n
77
+ if __name__ == "__main__":
78
+ interface.launch()