Kamaranis commited on
Commit
d5adb33
verified
1 Parent(s): ef28ba0

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +14 -6
app.py CHANGED
@@ -3,19 +3,19 @@ from transformers import pipeline
3
  import numpy as np
4
  import librosa
5
 
6
- # El modelo es Whisper. Usamos la versi贸n "medium" que es un buen balance.
7
- # "large-v3" es el mejor, pero puede ser muy lento sin una GPU potente.
8
- MODEL_ID = "openai/whisper-medium"
9
 
10
  # 1. Cargamos el pipeline del modelo ASR
11
  print(f"Cargando el modelo de transcripci贸n: {MODEL_ID}...")
 
12
  modelo_transcriptor = pipeline(
13
  "automatic-speech-recognition",
14
- model=MODEL_ID
 
15
  )
16
  print("Modelo cargado.")
17
 
18
- # El resto del c贸digo es EXACTAMENTE IGUAL para otros modelos
19
  FRECUENCIA_OBJETIVO = 16000
20
 
21
  def transcribir_audio(audio):
@@ -23,12 +23,20 @@ def transcribir_audio(audio):
23
  return "Por favor, graba algo de audio primero."
24
 
25
  frecuencia_original, datos_audio = audio
 
 
26
  datos_audio = datos_audio.astype(np.float32)
27
 
 
 
 
 
 
 
28
  if frecuencia_original != FRECUENCIA_OBJETIVO:
29
  datos_audio = librosa.resample(y=datos_audio, orig_sr=frecuencia_original, target_sr=FRECUENCIA_OBJETIVO)
30
 
31
- # Whisper puede detectar el idioma, pero vamos a forzarlo a espa帽ol para m谩s precisi贸n
32
  resultado = modelo_transcriptor(datos_audio, generate_kwargs={"language": "spanish"})
33
  texto = resultado["text"]
34
 
 
3
  import numpy as np
4
  import librosa
5
 
6
+ # Usamos el modelo Whisper "base" que es m谩s r谩pido para depurar.
7
+ MODEL_ID = "openai/whisper-base"
 
8
 
9
  # 1. Cargamos el pipeline del modelo ASR
10
  print(f"Cargando el modelo de transcripci贸n: {MODEL_ID}...")
11
+ # Especificamos el dispositivo para asegurarnos de que usa CPU o GPU de forma consistente
12
  modelo_transcriptor = pipeline(
13
  "automatic-speech-recognition",
14
+ model=MODEL_ID,
15
+ device=0 # 0 para la primera GPU, "cpu" si no hay GPU
16
  )
17
  print("Modelo cargado.")
18
 
 
19
  FRECUENCIA_OBJETIVO = 16000
20
 
21
  def transcribir_audio(audio):
 
23
  return "Por favor, graba algo de audio primero."
24
 
25
  frecuencia_original, datos_audio = audio
26
+
27
+ # Convertimos a float32
28
  datos_audio = datos_audio.astype(np.float32)
29
 
30
+ # Normalizamos el audio al rango [-1.0, 1.0]
31
+ # Esto es crucial para que Whisper genere el espectrograma correctamente.
32
+ datos_audio /= np.max(np.abs(datos_audio))
33
+ print(f"Audio normalizado. Max value: {np.max(np.abs(datos_audio))}")
34
+
35
+ # Remuestreamos si es necesario
36
  if frecuencia_original != FRECUENCIA_OBJETIVO:
37
  datos_audio = librosa.resample(y=datos_audio, orig_sr=frecuencia_original, target_sr=FRECUENCIA_OBJETIVO)
38
 
39
+ # El pipeline recibe un audio limpio, normalizado y a la frecuencia correcta.
40
  resultado = modelo_transcriptor(datos_audio, generate_kwargs={"language": "spanish"})
41
  texto = resultado["text"]
42