Vosk: reconocimiento de voz en directo, sin ligne
Vosk (alphacep/vosk-api, licencia Apache 2.0, desarrollado por Alpha Cephei) es un motor de reconocimiento de voz sin conexión que transcribe en flujo continuo, con modelos portátiles de aproximadamente 50 MB por idioma; el modelo francés ligero vosk-model-small-fr-0.22 pesa 41 MB. Cubre 20 idiomas o más y funciona en Raspberry Pi o en un smartphone, pero sigue siendo menos preciso que Whisper con audio difícil: reservarlo para comandos de voz y usos en directo.
Vosk es un motor de reconocimiento de voz sin conexión, desarrollado por la empresa Alpha Cephei y basado en el motor Kaldi. Es muy ligero y funciona en flujo continuo: transcribe a medida que se habla, en un procesador modesto, con modelos de unas pocas decenas de megabytes. No rivaliza con los grandes modelos en cuanto a la calidad del texto: hace otra cosa, y lo que hace no se puede sustituir fácilmente. Esta guía detalla las cifras publicadas por el proyecto, incluidas las de los dos modelos oficiales para francés, antes de compararlo honestamente con Whisper.
#Lo que Vosk hace de forma distinta
Los modelos de transcripción de referencia procesan archivos: se les proporciona una grabación completa y devuelven un texto una vez terminado el procesamiento. Vosk procesa un flujo: recibe el audio en pequeños fragmentos y produce resultados parciales y luego definitivos a medida que se habla, con una latencia cercana a cero gracias a su API de streaming. Es la ficha oficial del proyecto la que describe esta « zero-latency response with streaming API » como una característica central, al igual que el tamaño de sus modelos.
Esta diferencia de arquitectura explica todo lo demás: modelos diminutos, ejecución en CPU sin esfuerzo, un consumo de memoria compatible con una Raspberry Pi o un teléfono de gama baja, y una calidad del texto inferior a la de los grandes modelos cuando el audio es difícil o ruidoso.
#Vosk en cifras, también en francés
Tu ChatGPT privado y gratuito en tu máquina en 1 hora — LM Studio, Ollama, Open WebUI, tus documentos, sin nube.
- Espacio en línea de por vida
- PDF + archivos
- Reembolsado 30 j
El proyecto es preciso sobre lo que ofrece. El repositorio oficial anuncia reconocimiento para «20+ languages and dialects», enlaces para Python, Java, Node.js, C#, C++, Rust y Go, y modelos «portátiles» de 50 MB, con modelos de servidor considerablemente más grandes para quienes quieran mayor precisión. Todo ello se publica bajo licencia Apache 2.0, una garantía útil cuando un proyecto debe justificar sus dependencias de código abierto ante un departamento jurídico.
| Modelo | Tamaño | Tasa de error por palabra (menor = mejor) | Uso previsto |
|---|---|---|---|
| vosk-model-small-fr-0.22 | 41 MB | 23,95 (Common Voice) · 19,30 (MTEDX) · 27,25 (podcasts) | Android, iOS, Raspberry Pi |
| vosk-model-fr-0.22 | 1,4 GB | 14,72 (Common Voice) · 11,64 (MLS) · 13,10 (MTEDX) | Servidor, mayor precisión |
La diferencia de tamaño (41 MB frente a 1,4 GB) se traduce en una diferencia clara de precisión, con una tasa de error por palabra que casi se duplica según el conjunto de prueba. Es el compromiso central de Vosk, cuantificado en lugar de supuesto: cuanto más ligero es el modelo, más a menudo se equivoca; esto es aceptable para un comando de voz con vocabulario restringido, pero mucho menos para transcribir una entrevista. Más allá de los modelos oficiales, el proyecto LinTO, impulsado por la empresa francesa de software Linagora, publica sus propios modelos en francés compatibles con Vosk: una referencia útil para un proyecto francófono que quiera comparar varias fuentes antes de elegir.
El detalle de los cuatro conjuntos de pruebas (Common Voice, MTEDX, podcasts, MLS) también merece leerse como una advertencia metodológica, más que como una simple clasificación que deba retenerse tal cual: la tasa de error por palabra puede llegar a duplicarse de un conjunto a otro para un mismo modelo, con valores entre 19,30 en MTEDX y 27,25 en los podcasts para la versión ligera. Un audio de estudio limpio y una conversación grabada con ruido ambiental no ofrecen la misma calidad, sea cual sea el modelo elegido: una razón más para hacer pruebas con grabaciones representativas del uso real en lugar de confiar en un único valor medio publicado en una ficha de producto.
#El directo, su verdadera especialidad
- Latencia
- El texto aparece mientras se habla, lo que permite comandos vocales y subtítulos en directo.
- Resultados parciales
- La aplicación puede reaccionar antes de que termine la frase: indispensable para una palabra de activación o una orden corta.
- Tamaño
- 41 MB para el modelo ligero en francés, frente a 1,4 GB para la versión de servidor y, a menudo, varios gigabytes para un modelo generalista grande.
- Vocabulario reducido
- Se puede limitar el reconocimiento a una lista de palabras esperadas, lo que aumenta considerablemente la precisión al reconocer comandos.
Este último punto suele subestimarse. Para controlar una aplicación por voz, restringir el vocabulario a cincuenta comandos posibles convierte un motor mediocre en uno muy fiable, mientras que un gran modelo generalista seguirá dudando entre homófonos similares. Esto también lo confirma la ficha oficial al citar «reconfigurable vocabulary» entre las funciones nativas del motor, junto con la identificación del hablante: dos capacidades que pocos motores de este tamaño ofrecen de forma nativa.
#Vosk o Whisper
| Criterio | Vosk | Whisper y sus derivados |
|---|---|---|
| Modo | Flujo continuo | Archivo |
| Latencia | Casi nula (API de streaming) | Después del procesamiento |
| Tamaño de los modelos | 41 MB a 1,4 GB según la variante | De cientos de MB a varios GB |
| Hardware | Procesador modesto, embebido | Procesador adecuado, GPU deseable |
| Calidad en audio difícil | Correcta, medida (WER ≈ 15–28 según el modelo y el test) | Significativamente mejor |
| Puntuación y formato | Limitada | Buena |
| Recomendado para | Comandos de voz, procesamiento en directo, sistemas embebidos | Transcripción de reuniones, entrevistas, videos |
No hay un ganador absoluto. Un flujo de trabajo bien planteado suele usar ambos: Vosk para detectar una orden o mostrar una respuesta inmediata mientras el usuario habla, y un modelo más pesado como Faster-Whisper para producir la transcripción definitiva, más fiel, una vez terminada la grabación y disponibles los recursos de cálculo.
#Los casos en los que gana
- 01Control por voz de una aplicaciónVocabulario reducido, latencia mínima, ninguna dependencia de red.
- 02Subtitulación en directoReunión interna, conferencia, accesibilidad en tiempo real.
- 03Hardware embebidoUn nanoordenador o un dispositivo autónomo, allí donde un gran modelo no cabe — el proyecto menciona explícitamente Raspberry Pi y Android como objetivos.
- 04Confidencialidad estricta sin GPUUn equipo corriente que no debe enviar nada y no tiene tarjeta gráfica.
Estos cuatro casos tienen algo en común: toleran una calidad de texto correcta en lugar de excelente, a cambio de una latencia casi nula y un consumo de recursos compatible con hardware modesto. En cuanto se impone la restricción inversa —máxima calidad exigida y una latencia tolerable de unos pocos segundos—, un modelo que procesa archivos como Faster-Whisper vuelve a tener ventaja, lo que explica por qué las dos herramientas suelen coexistir en lugar de sustituirse mutuamente en una cadena de procesamiento de voz completa y bien diseñada.
#Formatos de audio y exportación de texto
En la práctica, un proyecto de transcripción nunca se limita a una llamada al motor: hay que leer el formato de entrada recibido, convertirlo si es necesario y después escribir el resultado en un formato que pueda utilizarse en las etapas posteriores; a menudo también hay que gestionar varios proveedores de grabaciones a la vez. El pipeline documentado en el estudio citado anteriormente ilustra este proceso completo: lectura de varios formatos de audio habituales (WAV, MP3, FLAC, OGG) mediante módulos de preprocesamiento en Python, reconocimiento mediante el KaldiRecognizer de Vosk y exportación del texto obtenido a un documento estructurado listo para revisar o archivar.
Este detalle importa porque el propio Vosk espera recibir un flujo de audio en un formato específico (PCM mono, generalmente a 16 kHz), no cualquier archivo tal cual. Por tanto, un proyecto que recibe audio heterogéneo —grabaciones de teléfonos, exportaciones de videoconferencias, archivos comprimidos de diversas procedencias— casi siempre necesita una etapa de conversión antes de pasar el audio al motor. Y suele ser ahí, más que en el propio motor, donde se esconden los fallos que degradan el reconocimiento sin generar un error explícito, mencionados más arriba en esta guía.
#Personalizar el modelo de lenguaje
A nivel interno, el reconocimiento de Vosk se basa en su propio KaldiRecognizer, derivado del motor de reconocimiento de voz Kaldi: un detalle que explica por qué el proyecto hereda todo el ecosistema de herramientas de personalización de Kaldi en lugar de empezar desde cero con cada nueva lengua o dominio. Un estudio reciente sobre el tema, realizado con un pipeline de Vosk personalizado, midió el efecto concreto de un modelo de lenguaje adaptado: los modelos personalizados reducen la tasa de error de palabras, especialmente con vocabulario técnico, acentos marcados o audio con ruido.
Para un proyecto francófono, esto abre una posibilidad concreta más allá de la elección entre el modelo ligero y el modelo para servidor: introducir un léxico profesional (nombres de productos, jerga interna, acrónimos, nombres propios locales) en el modelo de lenguaje en lugar de limitarse al vocabulario genérico. Requiere más trabajo que una simple descarga, pero es el mecanismo que más acerca un despliegue de Vosk a la calidad de un gran modelo en un dominio específico, sin asumir su coste en cálculo ni en latencia.
#Implementación
El funcionamiento es simple: se instala el paquete (pip install vosk en Python), se descarga un modelo para el idioma deseado, se abre un flujo de audio, se envían fragmentos al motor y se leen primero los resultados parciales y después los definitivos. Existen bindings para Python, Java, Node.js, C#, C++, Rust y Go, y un servidor WebSocket permite conectar una página web o una aplicación móvil a un motor que funciona en tu máquina.
Dos aspectos que debes tener en cuenta antes de ponerlo en producción: la calidad depende mucho del modelo de lenguaje elegido —la tabla anterior da un orden de magnitud, pero haz pruebas con tus propias grabaciones antes de construir una solución sobre esa base— y la frecuencia de muestreo del audio debe coincidir con la que espera el modelo; de lo contrario, el reconocimiento empeora sin que aparezca un mensaje de error explícito.
- Asistente de voz local: la cadena completa
- Transcribir archivos rápidamente en local
- Hacer que el asistente responda en voz alta con Kokoro
- Whisper + Ollama : transcripción 100 % offline
- Fuente: repositorio oficial de GitHub de Vosk
- Fuente: catálogo de modelos Vosk, con tamaños y puntuaciones
- Fuente: estudio sobre personalización del modelo de lenguaje Vosk
#FAQ
¿Es Vosk gratuito?+
¿Se necesita una tarjeta gráfica?+
¿Vosk o Whisper?+
¿Funciona en francés y con qué calidad?+
¿Se puede limitar el vocabulario reconocido?+
¿Qué tamaño de modelo elegir para un proyecto de sistemas embebidos?+
¿Se puede mejorar la precisión sin cambiar de modelo?+
¿Un comentario, un error, una precisión? Avísanos, eso mejora la guía para todos.