Spaces:
Sleeping
Sleeping
Initial commit - Añadir aplicación de transcripción de audio
Browse files- README.md +35 -13
- app.py +71 -0
- requirements.txt +6 -0
README.md
CHANGED
@@ -1,13 +1,35 @@
|
|
1 |
-
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Aplicación de Transcripción de Audio Multilingüe
|
2 |
+
|
3 |
+
Esta aplicación permite transcribir archivos de audio en inglés y español a texto utilizando el modelo Whisper de OpenAI a través de Hugging Face y una interfaz web amigable creada con Gradio.
|
4 |
+
|
5 |
+
## Características
|
6 |
+
|
7 |
+
- Soporta múltiples formatos de audio (e.g., MP3, WAV).
|
8 |
+
- Detecta y transcribe automáticamente los idiomas inglés y español.
|
9 |
+
- Interfaz web sencilla para subir archivos y ver transcripciones.
|
10 |
+
- Incluye archivos de ejemplo para probar la funcionalidad.
|
11 |
+
|
12 |
+
## Cómo Usar
|
13 |
+
|
14 |
+
1. **Subir un Archivo de Audio:**
|
15 |
+
- Haz clic en el botón de carga y selecciona un archivo de audio en inglés o español (e.g., MP3, WAV).
|
16 |
+
|
17 |
+
2. **Esperar la Transcripción:**
|
18 |
+
- El modelo procesará el audio y mostrará el texto transcrito en la sección de salida.
|
19 |
+
|
20 |
+
3. **Ver y Copiar el Texto:**
|
21 |
+
- Una vez finalizada la transcripción, podrás ver el texto y copiarlo según sea necesario.
|
22 |
+
|
23 |
+
## Tecnologías Utilizadas
|
24 |
+
|
25 |
+
- [Gradio](https://gradio.app/) para la interfaz web.
|
26 |
+
- [Hugging Face Transformers](https://huggingface.co/docs/transformers/index) para el modelo de transcripción.
|
27 |
+
- [Librosa](https://librosa.org/) para el procesamiento de audio.
|
28 |
+
|
29 |
+
## Despliegue
|
30 |
+
|
31 |
+
Esta aplicación está desplegada en [Hugging Face Spaces](https://huggingface.co/spaces).
|
32 |
+
|
33 |
+
## Licencia
|
34 |
+
|
35 |
+
[MIT](LICENSE)
|
app.py
ADDED
@@ -0,0 +1,71 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
+
examples=[
|
63 |
+
["examples/sample_english.mp3"],
|
64 |
+
["examples/sample_spanish.mp3"]
|
65 |
+
],
|
66 |
+
allow_flagging="never",
|
67 |
+
theme="default"
|
68 |
+
)
|
69 |
+
|
70 |
+
# Lanzar la interfaz
|
71 |
+
iface.launch(share=False, server_name="0.0.0.0", server_port=int(os.environ.get("PORT", 7860)))
|
requirements.txt
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
gradio==4.44.1
|
2 |
+
transformers==4.30.0
|
3 |
+
torch==2.0.1
|
4 |
+
librosa==0.9.2
|
5 |
+
soundfile==0.12.1
|
6 |
+
huggingface-hub>=0.13.3
|