Spaces:
Runtime error
Runtime error
File size: 7,277 Bytes
f4275b5 87071e6 ac1c7b9 87071e6 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 |
---
title: SimulStreaming ASR
emoji: 🎙️
colorFrom: blue
colorTo: green
sdk: docker
app_file: app.py
pinned: false
---
# SimulStreaming ASR — Hugging Face Space
Interfaz de transcripción en tiempo real (Streaming ASR) basada en SimulWhisper, desplegada como Hugging Face Space.
## Características
- **Grabación en tiempo real**: Captura audio desde el navegador (micrófono).
- **Transcripción incremental**: Cada fragmento (chunk) se procesa y devuelve texto a medida que hablas.
- **Baja latencia**: Envío de chunks cada ~1 segundo mediante HTTP POST.
- **UI sencilla**: Interfaz Gradio con botones Start/Stop.
## Estructura de archivos
```
space/
├── app.py # FastAPI + Gradio UI
├── server_wrapper.py # Wrapper para SimulWhisper + threading safety
├── requirements.txt # Dependencias
└── README.md # Este archivo
```
## Requisitos para despliegue en HF Spaces
1. **Cuenta en Hugging Face** con acceso a Spaces.
2. **Git LFS** para manejar modelos grandes (el archivo `large-v3.pt` es ~3GB).
3. **Credenciales HF** configuradas localmente.
## Pasos para desplegar
### 1. Crear un repositorio nuevo en Hugging Face Spaces
Accede a https://huggingface.co/spaces y crea un nuevo Space:
- **Nombre**: `simulstreaming-asr` (o el que prefieras)
- **Licencia**: Selecciona una (ej. `mit`)
- **Type**: Docker o Python (recomendamos **Docker** para control total)
### 2. Clonar el repositorio del Space localmente
```bash
huggingface-cli repo create simulstreaming-asr --type space --space-sdk docker
git clone https://huggingface.co/spaces/<tu-usuario>/simulstreaming-asr
cd simulstreaming-asr
```
Reemplaza `<tu-usuario>` con tu nombre de usuario en HF.
### 3. Preparar archivos
Copia los archivos del proyecto al repositorio del Space:
```bash
# Desde la raíz del repositorio HF Space
cp -r /gpfs/projects/bsc88/speech/TTS/repos/Streaming_Mamba/SimulStreaming/space/* .
# Si usas Docker, copia también estos archivos:
cp Dockerfile .
cp .dockerignore .
```
### 4. Descargar y versionar el modelo
El modelo `large-v3.pt` es muy grande (~3GB). Tienes dos opciones:
#### Opción A: Descargar el modelo en el Space (recomendado para iteración rápida)
Si el Space está en **Docker** o **Gradio Lite**, puedes usar un `startup_script`:
```bash
# Crea un archivo startup_script.sh en la raíz del Space
cat > startup_script.sh << 'EOF'
#!/bin/bash
# Descargar modelo si no existe
if [ ! -f "/app/large-v3.pt" ]; then
echo "Descargando modelo Whisper large-v3..."
cd /app
python -c "
import torch
model = torch.hub.load('openai/whisper', 'large-v3')
# O descargar directamente:
# import urllib.request
# urllib.request.urlretrieve('https://openaipublic.blob.core.windows.net/main/models/gpt-2/python/models/model_117M.json', 'large-v3.pt')
"
fi
echo "Modelo listo."
EOF
chmod +x startup_script.sh
```
#### Opción B: Usar un modelo más pequeño
Si `large-v3.pt` es demasiado grande para el Space, usa `medium.pt` (~1.5GB) o `small.pt` (~461MB). Edita `server_wrapper.py`:
```python
model_path='./small.pt' # o 'medium.pt'
```
### 5. Git LFS para archivos grandes (si es necesario)
```bash
# Instala Git LFS si aún no lo tienes
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
sudo apt-get install git-lfs
# Dentro del repositorio del Space
git lfs install
git lfs track "*.pt"
echo "*.pt" >> .gitattributes
# Si tienes el modelo localmente
cp /ruta/al/large-v3.pt .
git add large-v3.pt .gitattributes
```
### 6. Configuración del Space (si es Docker)
Crea un `Dockerfile`:
```dockerfile
FROM python:3.10-slim
WORKDIR /app
# Instala dependencias del sistema
RUN apt-get update && apt-get install -y \
libsndfile1 \
ffmpeg \
&& rm -rf /var/lib/apt/lists/*
# Copia archivos
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
# Descarga modelo Whisper (opcional, comentar si está en git-lfs)
# RUN python -c "import torch; torch.hub.load('openai/whisper', 'large-v3')"
EXPOSE 7860
CMD ["python", "app.py"]
```
Crea un `.dockerignore`:
```
.git
.gitignore
__pycache__
*.pyc
.pytest_cache
.env
```
### 7. Push al Space
```bash
git add .
git commit -m "Initial commit: SimulStreaming ASR with Gradio UI"
git push
```
HF Spaces compilará el Docker (o instalará dependencias si es Gradio) y desplegará la app.
### 8. Monitorear el despliegue
- Ve a https://huggingface.co/spaces/<tu-usuario>/simulstreaming-asr
- Verifica que el Space esté en estado "Running" (espera ~5-10 min).
- Si hay errores, revisa los **Logs** en la UI del Space.
## Prueba del Space
1. Una vez que el Space esté corriendo, abre la URL en tu navegador.
2. Pulsa **"Start Recording"**.
3. Habla en el micrófono.
4. Verás la transcripción aparecer en tiempo real.
5. Pulsa **"Stop Recording"** para finalizar.
## Troubleshooting
### El modelo tarda mucho en cargar
- **Causa**: El modelo se descarga / compila la primera vez.
- **Solución**: Espera. Si es muy lenta, usa un modelo más pequeño (`small.pt` o `medium.pt`).
### "No se puede acceder al micrófono"
- **Causa**: HTTPS requerido en navegador.
- **Solución**: Hugging Face Spaces sirve HTTPS por defecto. Si usas local, accede a `https://localhost:7860`.
### Transcripción lenta o truncada
- **Causa**: Latencia de red o procesamiento.
- **Solución**: Aumenta `audio_min_len` y `audio_max_len` en `server_wrapper.py`, o reduce `min_chunk_size`.
### "Model not initialized"
- **Causa**: La startup no completó.
- **Solución**: Mira los logs del Space, aumenta el timeout o revisa `requirements.txt`.
## Desarrollo local
Para probar antes de subir a HF Spaces:
```bash
cd /gpfs/projects/bsc88/speech/TTS/repos/Streaming_Mamba/SimulStreaming/space
# Instalar dependencias
pip install -r requirements.txt
# Ejecutar app localmente
python app.py
```
Abre `http://localhost:7860` (o `https://localhost:7860` si HTTPS).
## Configuración personalizada
Edita `server_wrapper.py` para cambiar:
- `model_path`: Ruta al modelo Whisper.
- `lan`: Idioma (e.g., `'es'` para español).
- `task`: `'transcribe'` o `'translate'`.
- `min_chunk_size`: Duración mínima del chunk (segundos).
## Límites y consideraciones
- **GPU**: HF Spaces proporciona GPU limitada (si la seleccionas). Verifica espacio en disco.
- **Almacenamiento**: Modelos grandes requieren >5GB. Asegúrate de usar Git LFS.
- **Tiempo de ejecución**: HF Spaces tiene límites de tiempo; si el modelo es muy grande, podría timeout.
## API HTTP
Si prefieres un cliente diferente (no el JS de Gradio), puedes llamar los endpoints directamente:
```bash
# Reset
curl -X POST http://localhost:7860/api/reset
# Enviar chunk (archivo WAV 16kHz)
curl -X POST -F "file=@chunk.wav" http://localhost:7860/api/chunk
# Finalizar transcripción
curl -X POST http://localhost:7860/api/finish
```
## Referencias
- [Hugging Face Spaces Docs](https://huggingface.co/docs/hub/spaces-overview)
- [Gradio Docs](https://www.gradio.app)
- [SimulWhisper GitHub](https://github.com/backspacetg/simul_whisper)
- [Whisper Streaming GitHub](https://github.com/ufal/whisper_streaming)
---
¿Preguntas? Abre un issue o contacta con el equipo de desarrollo.
|