Merlintxu commited on
Commit
209a96c
1 Parent(s): fb49c03

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +35 -54
app.py CHANGED
@@ -1,67 +1,48 @@
1
  import gradio as gr
2
  from transformers import pipeline
3
- import torch
4
- import librosa
5
  import os
6
- import logging
7
- import warnings
8
-
9
- # Suprimir advertencias innecesarias
10
- logging.getLogger("transformers").setLevel(logging.ERROR)
11
- warnings.filterwarnings("ignore", category=FutureWarning)
12
-
13
- # Imprimir la versión de Gradio para depuración
14
- print(f"Gradio version: {gr.__version__}")
15
-
16
- # Configurar el dispositivo: GPU si está disponible, sino CPU
17
- device = "cuda" if torch.cuda.is_available() else "cpu"
18
-
19
- # Inicializar el pipeline de transcripción
20
- transcriber = pipeline(
21
- "automatic-speech-recognition",
22
- model="openai/whisper-base",
23
- device=0 if device == "cuda" else -1
24
- )
25
-
26
- def transcribe_audio(audio):
27
- """
28
- Transcribe el archivo de audio proporcionado a texto.
29
-
30
- Args:
31
- audio: Ruta al archivo de audio subido.
32
-
33
- Returns:
34
- Texto transcrito.
35
- """
36
- if audio is None:
37
- return "No se ha subido ningún archivo de audio."
38
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
  try:
40
- # Cargar el archivo de audio usando librosa
41
- speech, sr = librosa.load(audio, sr=16000) # Whisper requiere 16kHz
42
- except Exception as e:
43
- return f"Error al cargar el audio: {e}"
 
 
 
 
 
 
44
 
45
- # Realizar la transcripción
46
- try:
47
- transcription = transcriber(speech, sampling_rate=sr)
48
- return transcription['text']
49
  except Exception as e:
50
- return f"Error durante la transcripción: {e}"
51
 
52
- # Definir la interfaz de Gradio
53
  iface = gr.Interface(
54
  fn=transcribe_audio,
55
- inputs=gr.Audio(type="filepath", label="Subir Archivo de Audio (MP3/otros)"),
 
 
 
56
  outputs="text",
57
- title="Transcripción Multilingüe de Audio",
58
- description=(
59
- "Sube un archivo de audio en formato MP3 u otro compatible (inglés o español) y "
60
- "obtén el texto transcrito. Utiliza el modelo Whisper de OpenAI a través de Hugging Face."
61
- ),
62
- allow_flagging="never",
63
- theme="default"
64
  )
65
 
66
- # Lanzar la interfaz
67
- iface.launch(share=False, server_name="0.0.0.0", server_port=int(os.environ.get("PORT", 7860)))
 
1
  import gradio as gr
2
  from transformers import pipeline
3
+ import requests
 
4
  import os
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5
 
6
+ # Inicializa el pipeline de transcripción sin usar el parámetro `sampling_rate` fertert
7
+ asr_pipeline = pipeline("automatic-speech-recognition", model="facebook/wav2vec2-large-960h")
8
+
9
+ # Función para descargar el archivo si se provee una URL
10
+ def download_from_url(url):
11
+ local_filename = url.split('/')[-1]
12
+ with requests.get(url, stream=True) as r:
13
+ r.raise_for_status()
14
+ with open(local_filename, 'wb') as f:
15
+ for chunk in r.iter_content(chunk_size=8192):
16
+ f.write(chunk)
17
+ return local_filename
18
+
19
+ # Función para procesar el archivo o la URL
20
+ def transcribe_audio(file_or_url):
21
  try:
22
+ # Si el input es una URL, descargamos el archivo
23
+ if isinstance(file_or_url, str) and file_or_url.startswith("http"):
24
+ file_path = download_from_url(file_or_url)
25
+ else:
26
+ file_path = file_or_url
27
+
28
+ # Realiza la transcripción
29
+ result = asr_pipeline(file_path)
30
+ transcription = result['text']
31
+ return transcription
32
 
 
 
 
 
33
  except Exception as e:
34
+ return f"Error durante la transcripción: {str(e)}"
35
 
36
+ # Interfaz de Gradio
37
  iface = gr.Interface(
38
  fn=transcribe_audio,
39
+ inputs=[
40
+ gr.Audio(source="upload", type="filepath", label="Sube un archivo de audio o vídeo (mp3, mp4, wav, etc.)"),
41
+ gr.Textbox(lines=1, placeholder="O pega un enlace de audio/vídeo aquí", label="URL de audio o vídeo (opcional)")
42
+ ],
43
  outputs="text",
44
+ title="Transcriptor de Audio & Vídeo",
45
+ description="Sube un archivo de audio o vídeo o proporciona un enlace. Los archivos pueden estar en español o inglés."
 
 
 
 
 
46
  )
47
 
48
+ iface.launch()