Una API REST desarrollada en Flask que permite transcribir archivos de audio en español y convertirlos a documentos PDF o DOCX utilizando OpenAI Whisper.
- Transcripción optimizada para español con modelo Whisper Medium
- Múltiples formatos de audio (MP3, WAV, FLAC, M4A, AAC, OGG, WMA, MP4, AVI, MOV, MKV, WEBM)
- Generación de PDF y DOCX con metadatos profesionales
- Archivos grandes - Soporte hasta 1GB
- Interfaz web moderna con drag & drop
- API REST completa fácil de integrar
transcribeAudio/
├── 🐍 app.py # API Flask principal con CORS
├── 🌐 index.html # Interfaz web profesional
├── 🧪 test_client.html # Cliente alternativo para testing
├── 📦 requirements.txt # Dependencias optimizadas
├── 📖 README.md # Documentación completa
├── 🚀 Procfile # Configuración para Render
├── 🐍 runtime.txt # Python 3.11.8 para Render
├── 🔧 start.bat/start.sh # Scripts de desarrollo local
├── ⚙️ .gitignore # Configuración Git
├── 📁 uploads/ # Temporal (se limpia automáticamente)
├── 📁 outputs/ # Temporal (se limpia automáticamente)
├── 🐍 venv/ # Entorno virtual para desarrollo
└── 📂 .git/ # Control de versiones
Windows:
start.bat
Linux/Mac:
chmod +x start.sh
./start.sh
Manual:
pip install -r requirements.txt
python app.py
- Interfaz principal:
http://localhost:5000
- Cliente de testing: Abrir
test_client.html
en el navegador
- Conecta tu repositorio a Render
- Render detectará automáticamente:
Procfile
→ Comando de iniciorequirements.txt
→ Dependenciasruntime.txt
→ Python 3.11.8
FLASK_ENV=production
(automático en Render)PORT
(automático en Render)
# Doble clic en cualquiera de estos archivos
setup_and_run.bat # Command Prompt
start_api.ps1 # PowerShell (requiere Set-ExecutionPolicy RemoteSigned)
start_api.sh # Git Bash/WSL
- Clonar o descargar el proyecto
cd transcribeAudio
- Crear entorno virtual (recomendado)
python -m venv venv
-
Activar entorno virtual
- Windows:
source venv/Scripts/activate
- Linux/Mac:
source venv/bin/activate
-
Instalar dependencias
pip install -r requirements.txt
-
Instalar FFmpeg (requerido para procesamiento de audio):
# En Windows con winget winget install --id=Gyan.FFmpeg -e
IMPORTANTE: Después de instalar FFmpeg, debe reiniciar el terminal para que esté disponible en el PATH.
Página principal con interfaz web
http://localhost:5000/
Estado de la API y modelo
curl http://localhost:5000/health
Respuesta:
{
"status": "OK",
"model": "medium",
"model_loaded": true,
"language": "Spanish",
"max_file_size": "1GB",
"supported_formats": ["mp3", "wav", "flac", ...]
}
Transcribir archivo de audio
Parámetros:
audio
(archivo): Archivo de audio/videoformat
(opcional):pdf
odocx
(default:pdf
)
Ejemplo cURL:
# Transcribir a PDF
curl -X POST \
-F "audio=@mi_audio.mp3" \
-F "format=pdf" \
http://localhost:5000/transcribe \
--output transcripcion.pdf
# Transcribir a DOCX
curl -X POST \
-F "audio=@mi_audio.mp3" \
-F "format=docx" \
http://localhost:5000/transcribe \
--output transcripcion.docx
Respuesta exitosa:
- Archivo PDF/DOCX listo para descarga
- Headers con nombre del archivo y tipo de contenido
- ✅ Drag & drop de archivos
- ✅ Validación automática de formatos
- ✅ Barra de progreso en tiempo real
- ✅ Descarga automática
- ✅ Estado de conexión con la API
- ✅ Testing rápido de la API
- ✅ Información detallada de respuestas
- ✅ Modo desarrollador
MP3, WAV, FLAC, M4A, AAC, OGG, WMA
MP4, AVI, MOV, MKV, WEBM (extrae audio automáticamente)
PDF (profesional) | DOCX (editable)
- Modelo:
medium
(769 MB) - Idioma: Español optimizado
- Precisión: Excelente para español
- Tamaño máximo: 1GB por archivo
- Tiempo de procesamiento: ~1-3 min por hora de audio
- Formatos automáticos: Conversión automática con FFmpeg
❌ "FFmpeg no encontrado"
# Windows
winget install ffmpeg
# Reiniciar terminal después de instalar
# Mac
brew install ffmpeg
# Linux
sudo apt install ffmpeg
❌ "API desconectada" en navegador
- Verificar que
python app.py
esté ejecutándose - Comprobar que no hay otro proceso en puerto 5000
- Revisar firewall/antivirus
❌ "Modelo no cargado"
- Esperar a que termine de descargar (~769 MB primera vez)
- Verificar conexión a internet
- Reiniciar la aplicación
❌ Error de memoria
- Archivos muy grandes: dividir el audio
- Cerrar otras aplicaciones pesadas
- Usar modelo
base
en lugar demedium
- 🌐 Website: taylorasprilla.dev
- 📧 Email: taylor.asprilla@gmail.com
- 📦 GitHub: AudioTranscript
Desarrollo local: start.bat
o ./start.sh
Deploy: Push a Render
Interfaz: http://localhost:5000
Por defecto se usa el modelo base
. Puedes cambiar a otros modelos editando la línea en app.py
:
model = whisper.load_model("base") # Opciones: tiny, base, small, medium, large
Modelos disponibles:
tiny
: Más rápido, menos preciso (~39 MB)base
: Balance entre velocidad y precisión (~74 MB)small
: Mejor precisión, más lento (~244 MB)medium
: Excelente precisión, considerablemente más lento (~769 MB) ACTUALlarge
: Máxima precisión, muy lento (~1550 MB)
Este proyecto está bajo la Licencia MIT.
Para reportar bugs o solicitar features, por favor crear un issue en el repositorio del proyecto.