streaming / DEPLOY_STEP_BY_STEP.md
rjzevallos's picture
Whisper Gradio
87071e6
# 🚀 Cómo Desplegar tu ASR en Hugging Face Spaces
## ✅ Estado actual
Todo está listo en: `/gpfs/projects/bsc88/speech/TTS/repos/Streaming_Mamba/SimulStreaming/space/`
**Archivos del Space:**
- `app.py` → FastAPI + Gradio UI
- `server_wrapper.py` → Wrapper de SimulWhisper + threading
- `requirements.txt` → Dependencias Python
- `Dockerfile` → Configuración del contenedor
- `.dockerignore` → Archivos a ignorar en Docker
- `space.yaml` → Configuración metadata del Space
- `README.md` → Documentación completa
- `DEPLOYMENT.md` → Guía rápida
---
## 📋 Requisitos previos (⏱️ 5 min)
Antes de empezar, necesitas:
### 1. Cuenta en Hugging Face
- Ve a https://huggingface.co y crea una cuenta (si no la tienes)
- Confirma tu email
### 2. Generar un token de acceso
- Accede a https://huggingface.co/settings/tokens
- Pulsa **"New token"** → Nombre: `simulstreaming-deploy`
- Tipo: **Write** (para poder crear Spaces)
- Crea el token y **cópialo** (no lo pierdes)
### 3. Instalar herramientas en tu máquina local
```bash
# Git (si no lo tienes: https://git-scm.com)
git --version
# Git LFS (para manejar archivos grandes)
git lfs install
# Hugging Face CLI (instala desde pip)
pip install --upgrade huggingface-hub
# Verificar
huggingface-cli --version
```
---
## 🎯 Pasos del despliegue (⏱️ 10 min)
### PASO 1: Login en Hugging Face desde tu máquina
```bash
huggingface-cli login
```
Cuando pida el token, pega el que copiaste arriba.
```
Token: [pega-tu-token-aquí]
```
✅ Verás: `Token is valid. Your credentials have been saved.`
### PASO 2: Crea un nuevo Space en Hugging Face
Abre https://huggingface.co/spaces en tu navegador:
1. Pulsa **"Create new Space"** (arriba a la derecha)
2. Rellena:
- **Space name**: `simulstreaming-asr` (o tu nombre favorito)
- **License**: MIT (cualquiera está bien)
- **SDK**: **Docker** (importante)
3. Pulsa **"Create Space"**
Espera 5 segundos a que se cree. Se abrirá una página con tu Space vacío.
### PASO 3: Clon el repositorio del Space a tu máquina
Reemplaza `<tu-usuario>` con tu nombre de usuario en HF:
```bash
git clone https://huggingface.co/spaces/<tu-usuario>/simulstreaming-asr
cd simulstreaming-asr
```
Ejemplo si tu usuario es `juan123`:
```bash
git clone https://huggingface.co/spaces/juan123/simulstreaming-asr
cd simulstreaming-asr
```
### PASO 4: Copia los archivos del proyecto
Ejecuta desde dentro del directorio del Space:
```bash
# Copiar todos los archivos de la carpeta space
cp /gpfs/projects/bsc88/speech/TTS/repos/Streaming_Mamba/SimulStreaming/space/* .
# Verificar que están todos
ls -la
```
Deberías ver:
```
.dockerignore
.gitattributes
.gitignore
Dockerfile
README.md
DEPLOYMENT.md
app.py
server_wrapper.py
requirements.txt
space.yaml
```
### PASO 5: Versionar en Git
```bash
# Dentro del directorio del Space
git add .
git commit -m "Initial commit: SimulStreaming ASR with Gradio UI"
git push
```
**Importante**: Si durante `git push` pide login, usa:
- Username: tu nombre de usuario en HF
- Password: el token que copiaste (pégalo aquí)
### PASO 6: ¡Esperar a que se despliegue!
Una vez hiciste push, el Space empieza a construirse:
1. Abre https://huggingface.co/spaces/<tu-usuario>/simulstreaming-asr en el navegador
2. Verás el estado:
- 🟡 **Building** → Construyendo Docker (~3 min)
- 🟡 **Running** → Descargando modelo y inicializando (~5-10 min la primera vez)
- 🟢 **Running** → ¡Listo! El Space está activo
**Monitorea los logs** si hay errores:
- En la página del Space, busca la sección **"Logs"** o **"Console"**
- Ahí verás qué está pasando
---
## ✨ ¡Prueba tu Space!
Cuando esté verde (**Running**), haz clic en el botón **"Share"** → copia la URL pública, o simplemente accede a:
```
https://huggingface.co/spaces/<tu-usuario>/simulstreaming-asr
```
### En la interfaz:
1. **"Start Recording"** → Pulsa para empezar a grabar
2. **Habla cerca del micrófono** (permite acceso al micro en tu navegador)
3. **Verás la transcripción en tiempo real** en el panel de abajo
4. **"Stop Recording"** → Pulsa para terminar
---
## 🔧 Personalización (Opcional)
### Cambiar idioma (p. ej., a Español)
Edita `space/server_wrapper.py` en tu máquina local:
Busca la línea:
```python
'lan': 'en',
```
Cambia a:
```python
'lan': 'es', # Español
```
Otros idiomas: `'en'` (inglés), `'de'` (alemán), `'fr'` (francés), `'pt'` (portugués), etc.
Luego:
```bash
git add server_wrapper.py
git commit -m "Change language to Spanish"
git push
```
El Space se actualizará automáticamente.
### Usar un modelo más pequeño
Si el Space se queda sin memoria, edita `space/server_wrapper.py`:
```python
model_path='./small.pt', # En vez de 'large-v3.pt'
```
**Tamaños:**
- `tiny.pt` → ~39 MB (rápido, menos precisión)
- `base.pt` → ~140 MB (buena balance)
- `small.pt` → ~461 MB (mejor)
- `medium.pt` → ~1.5 GB (muy bueno)
- `large-v3.pt` → ~3 GB (mejor, pero pesado)
---
## 🐛 Troubleshooting
| Problema | Solución |
|----------|----------|
| **"ImportError: No module named 'simul_whisper'"** | Asegúrate de que `server_wrapper.py` importa desde la ruta correcta. Si el código está en una carpeta diferente, actualiza el import. |
| **"Model download timeout"** | El modelo es grande (~3GB). Espera más o usa un modelo más pequeño (`small.pt`). |
| **"Out of memory"** | Usa `small.pt` o `tiny.pt` en vez de `large-v3.pt`. |
| **No se captura audio** | 1) Asegúrate HTTPS (HF Spaces usa HTTPS). 2) Permite acceso al micrófono en el navegador. 3) Revisa la consola del navegador (F12 → Console) para ver errores JS. |
| **"Connection refused"** | El Space está construyéndose o hay error en startup. Espera y revisa los Logs. |
| **Transcripción lenta** | Aumenta `min_chunk_size` en `server_wrapper.py` o reduce `audio_max_len`. |
---
## 📚 URLs útiles
- **Tu Space**: https://huggingface.co/spaces/<tu-usuario>/simulstreaming-asr
- **Docs de HF Spaces**: https://huggingface.co/docs/hub/spaces-overview
- **Docs de Gradio**: https://www.gradio.app
- **API referencia FastAPI**: https://fastapi.tiangolo.com
---
## 🎓 Próximas mejoras (opcional)
- Mostrar **timestamps** de cada palabra transcrita
- Selector de **idioma** dinámico en la UI
- Historial de transcripciones guardadas
- Exportar a **SRT** o **VTT**
- Soporte para **traducción** (no solo transcripción)
---
## 💬 Soporte
Si tienes problemas:
1. **Revisa los Logs** en la página del Space (sección Logs)
2. **Lee el archivo `README.md`** para más detalles técnicos
3. **Abre un issue** en el repo de `SimulStreaming` o `Whisper Streaming`
---
¡Éxito con tu ASR en Spaces! 🚀