Blandskron commited on
Commit
043abd9
verified
1 Parent(s): 0123ce7

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +14 -52
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
- # 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)
@@ -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
- # 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()
 
 
 
 
 
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()