File size: 1,127 Bytes
083bd61
 
 
 
 
 
 
2116ab2
083bd61
 
 
 
 
 
 
 
 
 
 
30618f3
083bd61
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import torch # Para crear redes neuronales
from transformers import pipeline # Para el procesamiento del lenguaje
import numpy as np # Porque la transcripción de audio a texto se hace mediante arrays
import gradio as gr # Para la interfaz


# Si disponemos de una GPU con el parámetro device=0 le estamos diciendo que la use
pipe = pipeline("automatic-speech-recognition", model="openai/whisper-medium", device=-1)

def transcribe(audio): # Recibe un único parámetro de entrada (un audio)  
    sr, y = audio
    # Pasamos el array de muestras a tipo NumPy de 32 bits porque el método pipeline espera que le pasemos un array
    y = y.astype(np.float32)
    y /= np.max(np.abs(y)) # Normalizamos el audio para evitar problemas de distorsión o saturación. Para ello encontramos el valor máximo del array "y" y dividimos todos los valores de "y" por ese valor para que estén en un rago entre -1 y 1 

    return pipe({"sampling_rate": sr, "raw": y})["text"] # El pipe procesa el audio y devuelve el texto transcrito

demo = gr.Interface(
    transcribe,
    gr.Audio(sources=["microphone"]),
    "text",
)

demo.launch()