Cómo entrenar un modelo de voz con Whisper en Pi

Transcribir voz con Whisper en Raspberry Pi: qué modelo funciona y cuál se queda corto

¿Necesitas transcribir reuniones, notas de voz o comandos de audio en español sin enviar nada a servidores externos?

El modelo Whisper de OpenAI permite hacer reconocimiento de voz (ASR) completamente local. Pero hay una confusión común: no se entrena en una Raspberry Pi. El entrenamiento de estos modelos requiere GPUs de datacenter y datasets de miles de horas. Lo que sí puedes hacer en una Pi es inferencia: cargar el modelo pre-entrenado y transcribir audio propio.

A continuación te mostramos qué variantes de Whisper corren en una Raspberry Pi 4, cuánta RAM necesitan, cuánto tardan en transcribir y cómo instalarlas paso a paso.

Entrenar vs inferir: la diferencia que importa

Entrenamiento (training): ajustar los millones de parámetros del modelo con datos de audio etiquetados. Requiere GPU NVIDIA A100 o similar, semanas de computación y datasets masivos. No es viable en Raspberry Pi.

Inferencia (inference): usar el modelo ya entrenado para transcribir un archivo de audio nuevo. Es solo multiplicación de matrices. En una Raspberry Pi 4 con whisper.cpp (versión C++ optimizada para CPU ARM) esto es perfectamente viable con los modelos pequeños.

⚠️ Dato que nadie te cuenta: el repositorio oficial de OpenAI en Python (pip install openai-whisper) es lentísimo en Raspberry Pi porque usa PyTorch sin optimizaciones ARM. La versión que funciona es whisper.cpp, una reimplementación en C++ que usa instrucciones ARM NEON y es 5-10 veces más rápida en la misma hardware.

Comparativa de modelos Whisper en Raspberry Pi 4

Modelo Parámetros Archivo GGML RAM usada Tiempo en Pi 4 (100s audio) Velocidad vs tiempo real Uso recomendado
tiny 39 M 75 MB ~273 MB ~35 segundos 2,85× (más rápido) Comandos de voz, notas cortas. Precisión baja.
base 74 M 142 MB ~388 MB ~53 segundos 1,88× (más rápido) Transcripción en tiempo real. Buen equilibrio.
small 244 M 466 MB ~852 MB ~2 min 16 s 0,73× (más lento) Batch nocturno. Precisión notablemente mejor.
medium 769 M 1,5 GB ~2,1 GB ~5 min 52 s 0,28× (mucho más lento) Requiere Pi 4 de 4-8 GB. Batch únicamente.
large-v3 1.550 M 2,9 GB ~3,9 GB ~10 min 51 s 0,15× (impracticable) Solo Pi 4 8GB o Pi 5. No usable en tiempo real.

Los tiempos son para whisper.cpp en Raspberry Pi 4 (4 núcleos ARM Cortex-A72 @ 1,5 GHz), sin GUI, usando los 4 threads disponibles. El modelo base es el punto dulce para la mayoría de proyectos en español.

Instalación paso a paso de whisper.cpp en Raspberry Pi

Estos comandos funcionan en Raspberry Pi OS (Bookworm o Bullseye) y asumen que ya tienes acceso SSH o terminal.

Paso 1: Instalar dependencias.

sudo apt update
sudo apt install -y git build-essential libsdl2-dev

Paso 2: Clonar whisper.cpp y compilar.

git clone https://github.com/ggerganov/whisper.cpp.git
cd whisper.cpp
make -j4

Paso 3: Descargar el modelo base (u otro).

bash models/download-ggml-model.sh base

Paso 4: Convertir tu audio a WAV 16 kHz mono. Whisper solo acepta este formato.

ffmpeg -i tu_audio.mp3 -ar 16000 -ac 1 -c:a pcm_s16le tu_audio.wav

Paso 5: Transcribir en español.

./main -m models/ggml-base.bin -f tu_audio.wav -l es -t 4 -otxt

El parámetro -l es fuerza el idioma español. -t 4 usa los 4 núcleos de la Pi 4. -otxt genera un archivo de texto plano con la transcripción.

5 errores costosos al usar Whisper en Raspberry Pi

1. Instalar el paquete Python openai-whisper en la Pi. Ese paquete depende de PyTorch, que ocupa más de 600 MB y no está optimizado para ARM. La inferencia es 5-10 veces más lenta que whisper.cpp. Usa siempre whisper.cpp en Raspberry Pi.

2. Intentar cargar medium o large en una Pi 4 de 2 GB. El modelo medium requiere 2,1 GB de RAM. En una Pi 4 de 2 GB el sistema operativo ya consume 800 MB. El modelo no carga y el proceso es killado por el kernel (OOM). Usa tiny o base en Pis de 2-4 GB.

3. Pasar audio en formato MP3 o estéreo directamente. Whisper.cpp no decodifica MP3 ni acepta estéreo. Si le pasas un MP3 directamente, el resultado es basura o error de segmentación. Convierte siempre a WAV 16 kHz mono con ffmpeg.

4. No especificar el idioma. Si omites -l es, Whisper intenta detectar el idioma automáticamente en los primeros 30 segundos. En audio corto o con acentos regionales chilenos, a veces detecta incorrectamente portugués o catalán. Fuerza -l es para español.

5. Correr la transcripción con la GUI de Raspberry Pi activa. El escritorio gráfico consume 300-500 MB de RAM y ciclos de CPU. Para transcripción batch, ejecuta en modo headless (sin monitor) o desde la terminal (Ctrl+Alt+F1) para liberar recursos.

Raspberry Pi 4 vs Pi 5 vs PC: dónde transcribir

Hardware Precio aprox. CLP Modelo viable Uso recomendado
Raspberry Pi 4 (2 GB) $90.000 – $120.000 tiny, base Comandos de voz, transcripción batch pequeña.
Raspberry Pi 4 (4-8 GB) $108.000 – $240.000 tiny, base, small Transcripción de reuniones, podcasts, notas de voz.
Raspberry Pi 5 (8 GB) $150.000 – $280.000 tiny, base, small, medium Proyectos de voz en tiempo real con mejor precisión.
PC con GPU NVIDIA $400.000+ Todos (large, turbo) Transcripción masiva, fine-tuning, producción.
💡 Conclusión práctica: si tu objetivo es transcribir notas de voz o crear un asistente de comandos en español con una Raspberry Pi 4, usa el modelo base con whisper.cpp. Es 1,88 veces más rápido que el audio de entrada, ocupa menos de 400 MB de RAM y la precisión es suficiente para la mayoría de aplicaciones domésticas. Si necesitas transcribir textos técnicos o legales con mínimo error, salta a una PC con GPU.

Caso práctico: transcribir notas de voz de 10 minutos

Imagina que grabaste una reunión de 10 minutos en tu celular en formato AAC. El flujo de trabajo en Raspberry Pi 4 sería:

  1. Transferir el archivo a la Pi vía SCP o pendrive USB.
  2. Convertir: ffmpeg -i reunion.m4a -ar 16000 -ac 1 reunion.wav (toma 5 segundos).
  3. Transcribir con base: ./main -m models/ggml-base.bin -f reunion.wav -l es -t 4 -otxt (toma ~5 minutos).
  4. Revisar el archivo reunion.wav.txt generado automáticamente.

El resultado es un archivo de texto con la transcripción completa, timestamps incluidos si agregas -osrt en lugar de -otxt.

También te puede interesar

Raspberry Pi 4 4GB |
Raspberry Pi 5 8GB |
Micro SD 64GB |
Cámara Raspberry Pi HQ |
Guías técnicas Raspberry Pi

Preguntas frecuentes sobre Whisper en Raspberry Pi

¿Se puede entrenar Whisper en una Raspberry Pi?

No. El entrenamiento o fine-tuning de Whisper requiere GPUs potentes (NVIDIA A100 o similar) y datasets de miles de horas. En una Raspberry Pi solo puedes ejecutar inferencia: usar el modelo ya entrenado para transcribir audio.

¿Qué modelo de Raspberry Pi necesito como mínimo?

Una Raspberry Pi 4 de 2 GB es suficiente para los modelos tiny y base. Para small necesitas al menos 4 GB. Para medium, mínimo 4 GB pero recomendado 8 GB. El modelo large-v3 solo es viable en Pi 4 8GB o Pi 5, aunque muy lento.

¿Whisper funciona bien con el español de Chile?

Sí. Whisper fue entrenado con datos multilingües que incluyen español de Latinoamérica. El modelo base transcribe correctamente modismos chilenos comunes. Para términos técnicos muy específicos, el modelo small reduce errores. Siempre fuerza el idioma con -l es.

¿Puedo hacer transcripción en tiempo real (streaming)?

Con el modelo tiny o base en whisper.cpp usando el flag --stream, sí. La latencia es de 0,5 a 2 segundos respecto al habla. Requiere un micrófono USB de buena calidad y una Pi 4 de 4 GB o superior.

¿Cuánto consume de electricidad una Pi 4 transcribiendo con Whisper?

Una Raspberry Pi 4 en carga completa consume aproximadamente 7,5 W (1,5 A a 5V). Transcribir 10 minutos de audio con el modelo base consume menos de 1 Wh de energía. En términos de costo eléctrico en Chile, es insignificante frente a enviar el audio a un servicio en la nube.

Deja un comentario