Kamaranis commited on
Commit
b21e1b5
verified
1 Parent(s): f3adc3b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +22 -10
app.py CHANGED
@@ -1,9 +1,9 @@
1
  import gradio as gr
2
  from transformers import pipeline
3
  import numpy as np
 
4
 
5
- # 1. Cargamos el pipeline del modelo ASR (Automatic Speech Recognition)
6
- # Este modelo es grande y puede tardar en cargar la primera vez.
7
  print("Cargando el modelo de transcripci贸n...")
8
  modelo_transcriptor = pipeline(
9
  "automatic-speech-recognition",
@@ -11,33 +11,45 @@ modelo_transcriptor = pipeline(
11
  )
12
  print("Modelo cargado.")
13
 
 
 
 
14
  # 2. Definimos la funci贸n que procesar谩 el audio
15
  def transcribir_audio(audio):
16
  """
17
- Recibe los datos del audio desde Gradio y devuelve el texto transcrito.
 
18
  """
19
  if audio is None:
20
  return "Por favor, graba algo de audio primero."
21
 
 
 
 
 
 
 
 
 
 
 
 
 
22
 
23
- # La variable 'audio' es una tupla: (frecuencia_muestreo, datos_numpy)
24
- # El modelo solo quiere los datos_numpy, que es el segundo elemento.
25
- print("Recibido audio, iniciando transcripci贸n...")
26
- texto = modelo_transcriptor(audio[1])["text"] #solo el array de NumPy con la onda de sonido)
27
  print(f"Texto transcrito: {texto}")
28
  return texto
29
 
30
- # 3. Crear y lanzar la interfaz de Gradio
31
  demo = gr.Interface(
32
  fn=transcribir_audio,
33
  inputs=gr.Audio(
34
  sources=["microphone"],
35
- type="numpy", # Clave: Pedimos los datos crudos, no la ruta.
36
  label="Graba tu voz en espa帽ol"
37
  ),
38
  outputs=gr.Textbox(label="Transcripci贸n"),
39
  title="Transcripci贸n de Audio a Texto en Espa帽ol",
40
- description="Habla en el micr贸fono y el modelo Wav2Vec2 transcribir谩 tu voz a texto. Dale permiso al navegador para usar el micr贸fono."
41
  )
42
 
43
  demo.launch()
 
1
  import gradio as gr
2
  from transformers import pipeline
3
  import numpy as np
4
+ import librosa
5
 
6
+ # 1. Cargamos el pipeline del modelo ASR
 
7
  print("Cargando el modelo de transcripci贸n...")
8
  modelo_transcriptor = pipeline(
9
  "automatic-speech-recognition",
 
11
  )
12
  print("Modelo cargado.")
13
 
14
+ # Definimos la frecuencia de muestreo que el modelo espera
15
+ FRECUENCIA_OBJETIVO = 16000
16
+
17
  # 2. Definimos la funci贸n que procesar谩 el audio
18
  def transcribir_audio(audio):
19
  """
20
+ Recibe los datos del audio desde Gradio, los remuestrea a 16kHz
21
+ y devuelve el texto transcrito.
22
  """
23
  if audio is None:
24
  return "Por favor, graba algo de audio primero."
25
 
26
+ # La variable 'audio' es una tupla: (frecuencia_original, datos_numpy)
27
+ frecuencia_original, datos_audio = audio
28
+ print(f"Recibido audio. Frecuencia original: {frecuencia_original}, Forma de los datos: {datos_audio.shape}")
29
+
30
+ # Comprobamos si la frecuencia de muestreo es la correcta. Si no, la remuestreamos.
31
+ if frecuencia_original != FRECUENCIA_OBJETIVO:
32
+ print(f"Remuestreando de {frecuencia_original} Hz a {FRECUENCIA_OBJETIVO} Hz...")
33
+ datos_audio = librosa.resample(y=datos_audio, orig_sr=frecuencia_original, target_sr=FRECUENCIA_OBJETIVO)
34
+ print("Remuestreo completado.")
35
+
36
+ # Ahora le pasamos al modelo el audio a la velocidad correcta
37
+ texto = modelo_transcriptor(datos_audio)["text"]
38
 
 
 
 
 
39
  print(f"Texto transcrito: {texto}")
40
  return texto
41
 
42
+ # 3. Creamos y lanzar la interfaz de Gradio
43
  demo = gr.Interface(
44
  fn=transcribir_audio,
45
  inputs=gr.Audio(
46
  sources=["microphone"],
47
+ type="numpy",
48
  label="Graba tu voz en espa帽ol"
49
  ),
50
  outputs=gr.Textbox(label="Transcripci贸n"),
51
  title="Transcripci贸n de Audio a Texto en Espa帽ol",
52
+ description="Habla en el micr贸fono y el modelo Wav2Vec2 transcribir谩 tu voz a texto. El audio se remuestrear谩 a 16kHz autom谩ticamente."
53
  )
54
 
55
  demo.launch()