Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -1,21 +1,13 @@
|
|
|
|
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 |
-
#
|
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)
|
@@ -23,56 +15,26 @@ def dividir_audio(input_path, output_dir, chunk_length_ms=30000):
|
|
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 |
-
|
42 |
-
def procesar_audio(input_audio):
|
43 |
output_dir = "chunks"
|
44 |
-
|
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 |
-
|
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 |
-
|
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 |
-
|
77 |
-
|
78 |
-
|
|
|
|
|
|
|
|
|
|
1 |
+
import gradio as gr
|
2 |
from transformers import pipeline
|
3 |
from pydub import AudioSegment
|
4 |
from pydub.utils import make_chunks
|
5 |
import os
|
|
|
6 |
|
7 |
+
# Modelo ASR
|
8 |
modelo = pipeline("automatic-speech-recognition", model="facebook/wav2vec2-large-xlsr-53-spanish")
|
9 |
|
|
|
10 |
def dividir_audio(input_path, output_dir, chunk_length_ms=30000):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11 |
audio = AudioSegment.from_file(input_path)
|
12 |
chunks = make_chunks(audio, chunk_length_ms)
|
13 |
os.makedirs(output_dir, exist_ok=True)
|
|
|
15 |
for i, chunk in enumerate(chunks):
|
16 |
chunk_name = os.path.join(output_dir, f"chunk_{i}.wav")
|
17 |
chunk.export(chunk_name, format="wav")
|
|
|
18 |
|
|
|
19 |
def transcribir_audio(audio_path):
|
20 |
+
return modelo(audio_path)["text"]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
21 |
|
22 |
+
def transcribir(audio_file):
|
|
|
23 |
output_dir = "chunks"
|
24 |
+
dividir_audio(audio_file, output_dir)
|
|
|
|
|
|
|
|
|
25 |
|
|
|
|
|
|
|
|
|
26 |
transcripcion_final = []
|
27 |
for filename in sorted(os.listdir(output_dir)):
|
28 |
if filename.endswith(".wav"):
|
29 |
filepath = os.path.join(output_dir, filename)
|
30 |
+
transcripcion_final.append(transcribir_audio(filepath))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
|
32 |
+
return " ".join(transcripcion_final)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
33 |
|
34 |
+
with gr.Interface(
|
35 |
+
fn=transcribir,
|
36 |
+
inputs=gr.Audio(type="file", label="Sube tu archivo de audio"),
|
37 |
+
outputs="text",
|
38 |
+
title="Transcriptor de Audio"
|
39 |
+
) as interfaz:
|
40 |
+
interfaz.launch()
|