Vosk vs Whisper local: guía 2026 para reconocimiento de voz (STT) en tu propio servidor

Vosk vs Whisper local: guía 2026 para reconocimiento de voz (STT) en tu propio servidor

Hace un tiempo, un cliente me pidió una mejora en su sistema para que su Asterisk pudiera pedir mediante la voz ciertos datos personales y realizar algunas tareas críticas en base a los datos introducidos. Lo primero es saber que los datos introducidos son importantes, no puede equivocarse al reconocer un apellido, un DNI o un número de tarjeta de crédito. Cierto es que tanto el DNI como el número de la tarjeta de crédito tiene sus sistemas de verificación que confirman si ha ocurrido un error reconociendo algún dígito, pero tener que repetir el número entero porque el hombre no ha vocalizado correctamente, o porque hay tanto ruido de fondo que no se entiende bien, puede llegar a ser un problema. Por suerte, el sistema de control del DNI, del código IBAN o de una tarjeta de crédito no valida si hay un número erróneo.

Ante tal necesidad, antes o después llegas a la pregunta del millón: ¿Vosk o Whisper local? Ambos son motores de reconocimiento de voz (STT, Speech-to-Text) que puedes ejecutar en tu propio servidor, sin enviar el audio a Google, OpenAI o Amazon. Los dos son libres. Y los dos resuelven problemas distintos.

Esta guía es el resultado de unos cuantos meses metiendo Vosk y Whisper en producción dentro de proyectos de telefonía, agentes con LLM y transcripción en tiempo real. Si vienes con la idea de «siempre Whisper porque es lo nuevo», después de leer esto, igual consigo que te lo plantees un poco mejor.

Qué es Vosk y Whisper

Vosk es un motor de reconocimiento de voz offline, ligero y en tiempo real, basado en Kaldi. Funciona en CPU, en Raspberry Pi, en móviles e incluso en dispositivos embebidos. Tiene modelos para más de 20 idiomas (por supuesto, español incluido) y latencia muy baja. (ya explicamos Qué es Vosk)

Whisper es el modelo de reconocimiento de voz multilingüe que OpenAI liberó como open source (licencia MIT) en 2022. Está basado en transformers, es enormemente más preciso que Vosk en condiciones difíciles, soporta 99 idiomas y traducción a inglés. La pega: necesita GPU si quieres velocidad razonable y los modelos grandes ocupan varios GB. (ya explicamos Qué es Whisper)

Vosk vs Whisper local: comparativa rápida

AspectoVoskWhisper local
Hardware mínimoCPU modesta, 500 MB RAMGPU recomendada (CPU posible pero lento)
Tamaño del modelo40 MB – 1,8 GB según idioma/precisión75 MB (tiny) a 3 GB (large-v3)
Streaming en tiempo realSí, nativoNo nativo (hay forks: faster-whisper, whisper.cpp, whisper-streaming)
Precisión en audio limpioBuenaExcelente
Precisión con ruido / acentosRegularNotablemente superior
Idiomas soportados~20 incluido español99 idiomas
Puntuación automáticaNo
Diarización (separar hablantes)No (requiere herramienta externa)No nativa (combinar con pyannote)
LicenciaApache 2.0MIT
Caso de uso típicoVoIP en tiempo real, IoT, comandos de vozTranscripción de grabaciones, subtítulos, podcasts

Cuándo elegir Vosk

Vosk es la opción correcta cuando lo que necesitas es STT en tiempo real y de bajo consumo. Casos donde encaja como un guante:

  • Transcripción en directo de llamadas VoIP dentro de una centralita Asterisk, FreeSWITCH o Kamailio. La latencia importa más que la precisión absoluta.
  • Agentes de voz embebidos en dispositivos sin GPU (Raspberry Pi, mini-PCs).
  • Comandos de voz en aplicaciones donde el vocabulario es limitado y conocido.
  • IoT y dispositivos offline: domótica, kioscos, vehículos.
  • Navegadores: Vosk tiene un build en WebAssembly que funciona dentro del browser.

Si necesitas reconocer algo por teléfono con una gramática cerrada (una lista de palabras clave), Vosk es prácticamente tu solución salvo que tengas una GPU dedicada y uses faster-whisper bien optimizado.

He probado algunos «flavors» de Whisper para esto y con CPU tarda demasiado (más aún si tienes que grabar el audio, detectar el silencio del final, pasarla al transcriptor y reconocer lo que ha dicho).

Cuándo elegir Whisper local

Whisper brilla cuando la precisión es lo primero y puedes permitirte algo de latencia o tienes GPU disponible:

  • Transcripción de grabaciones de reuniones, podcasts, entrevistas, llamadas finalizadas.
  • Subtitulado automático de vídeo.
  • Audios con ruido, acentos fuertes o multilingües (mezcla de inglés y español, por ejemplo).
  • Análisis post-llamada donde el audio ya está completo y la latencia no importa.
  • Traducción automática a inglés integrada en la transcripción.

Si solo necesitas transcribir audios sueltos o tienes una GPU, ni te plantees Vosk: Whisper te va a dar resultados claramente mejores.

Importante: Whisper local = faster-whisper, whisper.cpp y compañía

Cuando hablamos de Whisper local, en 2026 nadie usa el Whisper original de OpenAI tal cual. Se utilizan distintas versiones mejoradas (más rápidas, más completas, con diarización, con…)

Las implementaciones que de verdad se usan en producción son:

faster-whisper

Reimplementación en CTranslate2. Es entre 4 y 5 veces más rápida que el Whisper original y consume menos memoria. Soporta cuantización (int8, int8_float16) que permite correr el modelo large en GPUs modestas o incluso en CPU con tiempos razonables. Es la opción por defecto para servidores con GPU.

whisper.cpp

Port a C/C++ con cero dependencias de Python. Compila en cualquier sitio (Linux, macOS, Windows, embebidos), aprovecha Metal en Apple Silicon, CUDA en NVIDIA y Vulkan/OpenCL en otros. Si quieres Whisper en CPU pura o en un Mac sin instalar Python, whisper.cpp es la respuesta.

whisper-streaming / WhisperLive

Forks que implementan streaming real sobre Whisper, partiendo el audio en ventanas y reaplicando para mantener contexto. La latencia sigue siendo peor que Vosk pero ya está en el rango usable (1–2 segundos) para muchos casos. Aún así, 1 o 2 segundos para un reconocimiento en un IVR, sigue siendo demasiado.

Distil-Whisper

Versión destilada por Hugging Face: 6 veces más rápida que whisper-large-v3 con una pérdida de precisión mínima en inglés. Para transcripción masiva en inglés es difícil de superar. Para español, ni idea, no lo he probado.

Hay otras versiones interesantes que animo a probar, incluso hay otros software que no son basados en Whisper que tienen muy buena publicidad, pero sin tarjeta GPU, todo lo que he encontrado es inviable.

Algo de código: Cómo instalar Vosk paso a paso (Linux)

Probablemente la instalación más simple del ecosistema STT:

pip install vosk
# Descargar modelo en español pequeño (~40 MB)
wget https://alphacephei.com/vosk/models/vosk-model-small-es-0.42.zip
unzip vosk-model-small-es-0.42.zip

Y un ejemplo mínimo de transcripción de un fichero WAV:

import wave, json
from vosk import Model, KaldiRecognizer

model = Model("vosk-model-small-es-0.42")
wf = wave.open("audio.wav", "rb")
rec = KaldiRecognizer(model, wf.getframerate())

while True:
    data = wf.readframes(4000)
    if not data: break
    if rec.AcceptWaveform(data):
        print(json.loads(rec.Result())["text"])
print(json.loads(rec.FinalResult())["text"])

El audio debe ser WAV mono a 16 kHz. Para integración con Asterisk, el formato nativo SLIN16 ya es justo eso, así que se conecta de forma trivial.

Cómo instalar Whisper local con faster-whisper

La forma más recomendable de correr Whisper en 2026:

pip install faster-whisper

Ejemplo de transcripción con cuantización int8 (corre incluso en CPU decente):

from faster_whisper import WhisperModel

model = WhisperModel("large-v3", device="cuda", compute_type="float16")
# Para CPU: device="cpu", compute_type="int8"

segments, info = model.transcribe("audio.wav", language="es")
for s in segments:
    print(f"[{s.start:.2f}s -> {s.end:.2f}s] {s.text}")

El modelo se descarga automáticamente en la primera ejecución. Tamaños de referencia: tiny 75 MB, base 145 MB, small 480 MB, medium 1,5 GB, large-v3 3 GB.

Speech To Text STT en VoIP: integrar Vosk o Whisper con Asterisk

Lo más interesante es conectar un ASR (STT) a un Asterisk para transcribir llamadas en tiempo real. Hoy día, según la versión de Asterisk, hay tres posibilidades:

Opción 1: ARI + audio externo

Asterisk envía el audio por una conexión externa (UDP, WebSocket o un fork mediante chan_external_media via ARI) hacia un servicio que ejecuta el modelo STT. Es la opción más limpia y la que mejor escala. La pega: requiere bastante código Python o Go en el medio.

Hay mucha documentación en Internet sobre esta forma, y es que durante mucho tiempo, esta fue la «mejor forma» de hacerlo.

Opción 2: AGI con grabación + transcripción asíncrona

Grabas la llamada y, al colgar (h extension), lanzas un AGI que transcribe el WAV con Whisper. No es tiempo real pero es trivial de montar y suficiente para análisis post-llamada y resumen automático.

Esta es la más compatible, funciona en cualquier versión de Asterisk, aunque la transcripción vía CPU consume muchos recursos, así que cuidado porque si tienes recursos limitados, transcribir un audio puede afectar a la calidad de las llamadas en curso.

Opción 3: AudioFork + WebSocket

Desde Asterisk 18, AudioFork permite enviar el audio en directo por WebSocket a un servidor que lo procesa con Vosk o Whisper streaming.

Esta es, seguramente la mejor forma de hacerlo, o al menos la más moderna. Hoy día hasta ChatGPT soporta conexión directa por WebSocket desde Asterisk mediante este sistema.

Limpieza de audio: DeepFilterNet antes del STT

El gran problema suele ser el ruido, y es que mucha gente utiliza el SpeechToText desde un móvil, en la calle, con el manos libres… esto incorpora una cantidad de ruido brutal y afecta al reconocimiento de lo que sea. No hay nada peor que hacer una demo en estas condiciones para que la demo salga fatal.

Un truco que mejora dramáticamente la precisión de cualquier STT, especialmente Vosk en entornos ruidosos: pasar el audio por DeepFilterNet antes. Es un denoiser neural en tiempo real que limpia el audio (ruido de fondo, eco, viento) sin tocar la voz. Combinado con Vosk, se acerca bastante a la precisión de Whisper en condiciones reales de telefonía.

Privacidad: por qué importa hacer STT local

Como andamos liados con certificados de seguridad, el tema de la privacidad es algo que me tomo bastante en serio, y hay tres razones por las que es necesario evitar que el audio salga de Europa o evitar depender de terceros, así que correr el STT en tu propio servidor es una opción cien veces mejor:

  • RGPD y LOPD-GDD: enviar audio de llamadas de tus clientes a un proveedor extranjero te obliga a depender de otros, transferencia de datos internacionales, encargados de tratamiento, etc. STT local lo evita por completo.
  • Coste: a partir de cierto volumen, las APIs cloud salen carísimas. (y cuando digo carísimas, es realmente carísimo). Un Whisper local en una GPU dedicada amortiza el hardware en pocos meses si transcribes miles de minutos al día.
  • Latencia: el ida y vuelta a un servidor externo añade fácilmente 200-500 ms. Ahora que todo el mundo quiere crear agentes de voz conversacionales eso destroza la experiencia.
Preguntas frecuentes sobre Vosk y Whisper

¿Whisper se puede usar offline gratis?

Sí. Los modelos Whisper son open source (MIT), se descargan una vez y a partir de ahí funcionan offline sin enviar nada a OpenAI ni a ningún servidor. La API de OpenAI (de pago) es independiente y opcional.

¿Vosk es mejor que Whisper?

Mejor para casos distintos. Vosk es mejor en latencia, hardware modesto y streaming. Whisper es mejor en precisión, idiomas y robustez al ruido. La elección depende del caso de uso, no de cuál es «mejor» en abstracto.

¿Cuál es el modelo Whisper más rápido?

Si hablas de Whisper original: el tiny (75 MB). Si lo que quieres es velocidad práctica con buena precisión, faster-whisper en cuantización int8 sobre el modelo medium o large-v3 es el mejor compromiso en GPU modesta.

¿Vosk soporta español?

Sí. Hay modelos en español de varios tamaños desde 40 MB (vosk-model-small-es-0.42) hasta 1,4 GB para máxima precisión. Funciona razonablemente bien con español de España y de Latinoamérica.

¿Whisper puede transcribir en tiempo real?

El Whisper original no fue diseñado para streaming, pero hay forks (whisper-streaming, WhisperLive) que lo permiten con latencia de 1–2 segundos. Para latencias por debajo de 500 ms es mejor Vosk.

¿Cuánta GPU necesito para Whisper large?

Con faster-whisper en float16, una GPU con 6 GB de VRAM (RTX 3060, RTX 4060) ya corre large-v3 de sobra. Con cuantización int8 baja a unos 3 GB y entra hasta en GPUs antiguas o portátiles.

¿Se puede combinar Vosk y Whisper?

Sí, y a veces es lo más práctico. Vosk en streaming para mostrar texto en directo durante la llamada, y Whisper al final sobre la grabación completa para producir la transcripción definitiva con puntuación. Lo mejor de los dos mundos.

 

¿Tienes un caso de uso de STT que no encaja en lo anterior? Cuéntalo en los comentarios. Cada caso real es una oportunidad de aprender algo nuevo sobre estos modelos.

1 comentario
Abierto

Respondiendo a obello-dev

Si tienes una cuenta en Sinologic, no necesitas rellenar estos campos. Regístrate gratis · Iniciar sesión

Comunidad abierta

Únete a la comunidad Sinologic

Crea tu cuenta gratuita y participa en las conversaciones sobre VoIP, Asterisk, Kamailio y telecomunicaciones IP.

Nombre verificado Tu nombre aparece con insignia de miembro en cada comentario.
🔔
Notificaciones Recibe avisos cuando alguien responda a tus comentarios.
👍
Reacciones Reacciona con emojis a los comentarios de otros usuarios.
👤
Perfil personalizable Avatar, bio, enlaces a tu Twitter, GitHub y Telegram.
📬
Newsletter exclusivaPróximamente Contenido técnico y novedades directamente en tu bandeja.
🧪
Acceso anticipadoPróximamente Prueba herramientas y funciones antes que nadie.