Alojar Whisper por cuenta propia puede mantener las transcripciones en hardware que usted controla, pero «local» no es sinónimo de «automáticamente privado». Una configuración fiable consta de cuatro partes: una implementación adecuada de Whisper, los archivos del modelo descargados, un flujo de procesamiento de audio reproducible y un perímetro de seguridad que cubra los archivos temporales, los registros, las copias de seguridad y cualquier API local que exponga.
Esta guía presenta tres opciones actuales: el paquete de referencia de Python de OpenAI, faster-whisper para una inferencia optimizada en Python y whisper.cpp para un despliegue ligero en C/C++. Los comandos y las recomendaciones sobre los modelos que aparecen a continuación se comprobaron cotejándolos con la documentación oficial de los proyectos el 28 de agosto de 2026.
Recomendación rápida
- Comience con OpenAI Whisper si desea la implementación de referencia y la interfaz de línea de comandos oficial más sencilla.
- Elija faster-whisper si necesita un servicio en Python, procesamiento por lotes, cuantización o detección integrada de actividad de voz.
- Elija whisper.cpp si desea una compilación nativa compacta, compatibilidad con Apple Silicon, un despliegue centrado en la CPU, una imagen oficial de Docker o un pequeño servidor HTTP local.
Lo que significa—y no significa—alojar Whisper por cuenta propia
Whisper es un modelo de reconocimiento de voz y una base de código de código abierto. Cuando ejecuta una implementación en su propio ordenador, el paso de inferencia puede realizarse sin enviar la grabación a una API de transcripción alojada. Una vez que estén presentes los paquetes y los recursos del modelo necesarios, la transcripción también puede ejecutarse sin conexión activa a Internet.
Esa es una barrera de privacidad útil, no un programa de seguridad completo. La inferencia local no protege automáticamente los archivos temporales, el historial de comandos, los registros de la aplicación, las transcripciones exportadas, las copias de seguridad del sistema operativo, las carpetas compartidas ni un servicio que escuche en un puerto de red. Los instaladores de modelos también pueden descargar los pesos la primera vez que se solicita un nombre de modelo.
Antes de calificar un flujo de trabajo como «sin conexión», pruébelo con la red desactivada y confirme que:
- la aplicación se inicia sin intentar recuperar un paquete o modelo;
- el modelo seleccionado se carga desde una ruta local conocida;
- el audio de entrada y el texto generado permanecen en directorios aprobados;
- los archivos temporales se eliminan según su política de retención; y
- ningún servidor HTTP es accesible más allá de la interfaz que tenía previsto.
Elija la implementación antes de elegir un modelo
Las tres opciones ejecutan modelos de la familia Whisper, pero no tienen dependencias, nombres de comandos, formatos de modelo ni características de rendimiento idénticos. Elija el entorno de ejecución que se ajuste a su entorno operativo en lugar de copiar un comando escrito para otra implementación.
| Implementación | Mejor opción | Modelo de dependencia principal | Perímetro de seguridad importante |
|---|---|---|---|
| OpenAI Whisper | CLI y API de Python de referencia | Python, PyTorch, FFmpeg | Elija la compilación correcta de PyTorch para CPU/CUDA |
| faster-whisper | Servicios optimizados en Python, procesamiento por lotes, INT8, VAD | Python y CTranslate2 | Los requisitos de la biblioteca de GPU varían según la versión instalada |
| whisper.cpp | Compilaciones nativas para CPU/Apple, cuantización, Docker, servidor local | CMake y un compilador compatible | Utiliza archivos de modelo GGML convertidos y nombres de CLI diferentes |
Elija un modelo y dimensione el hardware
OpenAI enumera actualmente seis tamaños de modelo. Su README indica las necesidades aproximadas de VRAM y la velocidad relativa medida en una GPU de referencia específica. Esas cifras son útiles para realizar una selección inicial, no son garantías: la memoria y la velocidad reales dependen de la implementación, la precisión, el tamaño del lote, el tamaño del haz, el idioma, la duración del audio y el hardware.
| Nombre oficial del modelo | Parámetros | Aprox. VRAM en la tabla de OpenAI | Punto de partida práctico |
|---|---|---|---|
| tiny | 39 M | ~1 GB | Prueba rápida o dispositivo con recursos limitados |
| base | 74 M | ~1 GB | Transcripción ligera en inglés o multilingüe |
| small | 244 M | ~2 GB | Prueba equilibrada con CPU o GPU modesta |
| medium | 769 M | ~5 GB | Trabajo multilingüe de mayor precisión |
| large | 1.550 M | ~10 GB | Capacidad máxima del modelo de referencia cuando el hardware lo permite |
| turbo | 809 M | ~6 GB | Transcripción rápida, pero no traducción |
La tabla de OpenAI describe turbo como aproximadamente ocho veces la velocidad de referencia de large en su comparación de pruebas. No convierta eso en una promesa de «ocho veces más rápido en todos los ordenadores». Turbo no está entrenado para la traducción. Si el trabajo consiste en traducir voz no inglesa al inglés, OpenAI recomienda un modelo multilingüe como medium o large en su lugar.
Para grabaciones solo en inglés, puede valer la pena probar las variantes .en de tiny, base, small y medium. Para dimensionar para producción, ejecute el mismo archivo representativo en dos modelos candidatos y registre la memoria máxima, el tiempo real, los errores de transcripción y el tiempo de corrección.
Prepare el sistema y un archivo de prueba limpio
Cree un directorio de proyecto y un entorno virtual dedicados para que las versiones de los paquetes sean visibles y reversibles. Si utiliza la implementación de Python de OpenAI con una GPU, seleccione el comando actual de PyTorch para su sistema operativo y configuración de CUDA desde el instalador oficial de PyTorch. Evite copiar una URL antigua de rueda de CUDA de un tutorial.
OpenAI Whisper requiere la herramienta de línea de comandos FFmpeg. Instálela a través de un gestor de paquetes compatible o desde la página de descarga oficial de FFmpeg, y luego verifique:
ffmpeg -version
python --version
FFmpeg no es una dependencia obligatoria universal para todas las implementaciones de Whisper. Por ejemplo, whisper.cpp puede decodificar la entrada compatible mediante sus propias herramientas de ejemplo, mientras que la integración opcional de FFmpeg amplía el soporte de formatos. Para crear un archivo de prueba WAV mono de 16 kHz y 16 bits predecible para whisper.cpp, utilice:
ffmpeg -i input.mp3 -ar 16000 -ac 1 -c:a pcm_s16le output.wav
Utilice una muestra corta y consentida que contenga un nombre, un número, dos hablantes, una pausa silenciosa y un término específico del dominio. Ese único recurso revelará más problemas de despliegue que un clip de demostración perfectamente limpio.
Opción 1: Instalar OpenAI Whisper
Abra una terminal dentro de su directorio de proyecto, cree un entorno virtual, actívelo e instale el paquete actual:
python -m venv .venv
# Windows PowerShell
.\.venv\Scripts\Activate.ps1
# macOS o Linux
source .venv/bin/activate
pip install -U openai-whisper
Ejecute la primera transcripción con la CLI oficial:
whisper audio.mp3 --model turbo
La primera ejecución puede descargar el modelo seleccionado. Una vez que termine, compruebe que se hayan creado los archivos de salida esperados y coteje varias marcas de tiempo con el audio original. Para la transcripción en el mismo idioma que no sea inglés, especifique el idioma si la detección automática no es fiable:
whisper japanese.wav --language Japanese --model turbo
Para la traducción al inglés, no utilice turbo:
whisper japanese.wav --model medium --language Japanese --task translate
Una llamada mínima de Python es igualmente directa:
import whisper
model = whisper.load_model("turbo")
result = model.transcribe("audio.mp3")
print(result["text"])
Opción 2: Instalar faster-whisper
faster-whisper ejecuta los modelos Whisper a través de CTranslate2. Es útil cuando desea una integración de Python con precisión configurable, procesamiento por lotes, marcas de tiempo de palabras o filtrado VAD integrado.
python -m venv .venv
source .venv/bin/activate # Windows: .\.venv\Scripts\Activate.ps1
pip install faster-whisper
Comience con un dispositivo y un tipo de cómputo explícitos en lugar de asumir una ruta de GPU:
from faster_whisper import WhisperModel
model = WhisperModel("small", device="cpu", compute_type="int8")
segments, info = model.transcribe(
"audio.mp3",
beam_size=5,
vad_filter=True,
)
print("Idioma detectado:", info.language)
for segment in segments:
print(f"[{segment.start:.2f} - {segment.end:.2f}] {segment.text}")
Los segmentos devueltos se generan de forma perezosa, así que itere sobre ellos para realizar la transcripción. En un despliegue de NVIDIA, siga los requisitos de la biblioteca de GPU del repositorio actual de faster-whisper y verifique las versiones instaladas en lugar de depender de una combinación antigua de CUDA/CUDNN de una publicación de blog.
Las pruebas de rendimiento necesitan sus condiciones. El proyecto faster-whisper informa actualmente de un ejemplo en el que large-v2 con INT8 utilizó 2.926 MB en una RTX 3070 Ti de 8 GB, con un tamaño de haz de 5 y el conjunto de software indicado por el repositorio. Ese resultado demuestra una configuración probada; no es una promesa de que cada modelo, GPU, tamaño de lote o archivo de audio utilizará la misma memoria.
Opción 3: Compilar whisper.cpp
El proyecto actual se encuentra en ggml-org/whisper.cpp y utiliza CMake en su guía de inicio rápido documentada. Clone el repositorio, descargue un modelo convertido y compile la CLI:
git clone https://github.com/ggml-org/whisper.cpp.git
cd whisper.cpp
sh ./models/download-ggml-model.sh base.en
cmake -B build
cmake --build build -j --config Release
Ejecute una transcripción con una ruta de modelo explícita:
./build/bin/whisper-cli \
--model models/ggml-base.en.bin \
--file output.wav
En Windows, el ejecutable puede estar dentro de una carpeta específica de la configuración, como build\bin\Release. Utilice whisper-cli --help desde la salida de compilación real para confirmar los indicadores de su versión.
whisper.cpp también admite modelos GGML cuantizados, que pueden reducir el uso de memoria y disco. La cuantización puede cambiar la calidad y la velocidad, así que compare un candidato cuantizado con su contraparte no cuantizada en su propio recurso antes de estandarizarlo.
Preparar un despliegue aislado de la red
Un sistema aislado de la red no puede obtener ruedas de Python, bibliotecas de GPU, pesos de modelos, recursos de VAD o capas de contenedor faltantes. Cree primero un manifiesto completo en una máquina de pruebas conectada.
- Registre el sistema operativo, la arquitectura de la CPU, el modelo de la GPU, la versión del controlador y la versión de Python.
- Descargue los paquetes exactos, los archivos de modelo, el modelo VAD opcional y sus sumas de verificación.
- Transfiera los recursos a través del proceso aprobado de su organización.
- Instale desde rutas locales y configure un directorio de modelo local explícito.
- Desconecte la red antes de la prueba de aceptación.
- Transcriba el recurso, confirme los resultados y supervise los intentos de conexión fallidos.
No asuma que una primera ejecución en línea exitosa demuestra un despliegue sin conexión. Puede haber llenado una caché específica del usuario que no existirá bajo una cuenta de servicio o en un contenedor nuevo. Pruebe utilizando la misma identidad, directorios y método de lanzamiento que utilizará la producción.
Ejecutar una API local o un servicio Docker de forma segura
whisper.cpp incluye whisper-server, un servidor HTTP con una ruta de transcripción similar a la de OpenAI. Compile el proyecto primero y luego inspeccione las opciones actuales del servidor:
./build/bin/whisper-server --help
./build/bin/whisper-server \
--host 127.0.0.1 \
--port 8080 \
--model models/ggml-base.en.bin
Asocie el servicio a localhost a menos que otro ordenador realmente necesite acceso. La documentación de Docker advierte que los puertos publicados pueden ser accesibles fuera del host cuando se asocian ampliamente. Si expone intencionalmente la transcripción en una LAN, añada autenticación, TLS, límites de tamaño de solicitud, tiempos de espera, aislamiento de carga y una política de retención; un proceso local no es una capa de control de acceso.
El proyecto whisper.cpp también publica imágenes Docker del proyecto. Persista el directorio del modelo para que un contenedor recreado no vuelva a descargar los recursos:
docker run --rm \
-v /absolute/path/models:/models \
-v /absolute/path/audio:/audios \
ghcr.io/ggml-org/whisper.cpp:main \
"whisper-cli -m /models/ggml-base.en.bin -f /audios/output.wav"
Fija un digest de imagen o una versión probada para producción. Trata los wrappers de la comunidad como proyectos independientes: verifica su repositorio, esquema de API, editor de imágenes, licencia, frecuencia de actualización y la configuración de red predeterminada en lugar de presentarlos como servicios oficiales de OpenAI.
Usa VAD sin ocultar el habla real
Las secciones largas sin habla pueden producir resultados no deseados en la transcripción automatizada. La detección de actividad de voz puede omitir las regiones clasificadas como silencio o sin habla antes de la decodificación, reduciendo el trabajo innecesario y algunos errores relacionados con el silencio. No puede garantizar que desaparezcan todas las alucinaciones, y los umbrales agresivos pueden eliminar palabras en voz baja.
faster-whisper expone Silero VAD mediante vad_filter=True. Comienza con los valores predeterminados del proyecto y luego prueba las pausas, los hablantes con voz suave, la música y las grabaciones ruidosas antes de cambiar los parámetros.
La documentación actual de whisper.cpp proporciona un modelo Silero descargable y flags de VAD explícitos:
./models/download-vad-model.sh silero-v6.2.0
./build/bin/whisper-cli \
--file output.wav \
--model models/ggml-base.en.bin \
--vad \
--vad-model models/ggml-silero-v6.2.0.bin
Revisa los puntos de corte comparándolos con la forma de onda. Si la primera sílaba después de una pausa desaparece, reduce la agresividad o añade margen alrededor del habla detectada en lugar de aceptar una transcripción con aspecto más limpio pero incompleta.
Valida los resultados, las marcas de tiempo y la calidad
Que un comando finalice con éxito no es suficiente. Conserva el audio fuente sin procesar y revisa la transcripción con una pequeña lista de verificación de aceptación:
- Completitud: ¿Están presentes las primeras y últimas palabras? ¿Se cortaron frases en voz baja?
- Nombres y números: Revisa personas, productos, fechas, medidas y cantidades.
- Idioma: Confirma el idioma detectado y si la tarea era transcribir o traducir.
- Marcas de tiempo: Busca en varios límites de segmentos y verifica la alineación.
- Comportamiento del silencio: Inspecciona las pausas largas en busca de frases repetidas o inventadas.
- Reproducibilidad: Registra la versión de la implementación, el modelo, la precisión, los flags, el hardware y el entorno de ejecución.
Para subtítulos, establece una política de longitud de línea e inspecciona el SRT o VTT final en un reproductor. Para notas buscables, conserva las marcas de tiempo o los IDs de segmento para que un revisor pueda volver al audio. Para material sensible, separa la grabación fuente inmutable del texto generado y aplica un período de retención definido a ambos.
Si estás construyendo un flujo de trabajo de captura a transcripción sin conexión, también consulta cómo funciona el procesamiento de IA en el borde sin conexión y la comparación de grabadoras de voz con IA sin conexión.
Soluciona problemas comunes
| Síntoma | Comprobación probable | Siguiente acción |
|---|---|---|
| FFmpeg no encontrado | El ejecutable falta o no está en el PATH | Ejecuta ffmpeg -version en la misma shell y corrige el PATH |
| CUDA no está disponible | PyTorch solo para CPU o bibliotecas de GPU incompatibles | Usa el selector de PyTorch en vivo y los requisitos de GPU específicos del proyecto |
| Error de falta de memoria | El modelo, la precisión, el tamaño del lote o los trabajos concurrentes exceden la memoria | Prueba un modelo más pequeño, un tamaño de lote menor o un tipo de computación cuantizado compatible |
| whisper.cpp rechaza el audio | Formato no compatible para el ejemplo compilado | Conviértelo a WAV mono de 16 kHz y 16 bits o compila un soporte de decodificación más amplio |
| Texto repetido en el silencio | El audio sin habla llegó al decodificador | Prueba VAD, revisa los puntos de corte y compara los ajustes del modelo/decodificación |
| La traducción devuelve el idioma fuente | Se usó Turbo para una tarea de traducción | Usa un modelo multilingüe como medium o large con --task translate
|
| El inicio sin conexión intenta descargar | Falta un modelo, wheel, activo de VAD o capa de contenedor | Completa el manifiesto de activos y pruébalo bajo la identidad de producción |
Preguntas frecuentes
¿Puede Whisper ejecutarse completamente sin conexión?
Sí, la inferencia puede ejecutarse sin conexión a internet después de almacenar localmente el software y los activos del modelo requeridos. Prueba el límite desactivando la red y verificando si faltan descargas, archivos temporales, registros y servicios expuestos.
¿Qué implementación de Whisper debo alojar yo mismo?
Usa OpenAI Whisper para la CLI de Python de referencia, faster-whisper para un servicio de Python optimizado con cuantización o VAD, y whisper.cpp para una compilación nativa, modelos GGML cuantizados, despliegue en Apple/CPU, Docker o su servidor local incluido.
¿Requiere Whisper FFmpeg?
La implementación de Python de OpenAI requiere la herramienta de línea de comandos FFmpeg. Eso no hace que FFmpeg sea obligatorio para cada implementación: whisper.cpp tiene su propia ruta de decodificación compatible y una integración opcional de FFmpeg para formatos más amplios.
¿Cuánta VRAM necesita el modelo turbo?
La tabla de modelos de OpenAI indica aproximadamente 6 GB para turbo. Trata esto como una estimación de planificación para la implementación de referencia; el uso real cambia con el entorno de ejecución, la precisión, el tamaño del lote, el hardware y las cargas de trabajo concurrentes.
¿Puede el modelo turbo traducir el habla al inglés?
No. OpenAI afirma que turbo no está entrenado para traducción. Usa un modelo multilingüe como medium o large al traducir el habla no inglesa al inglés.
¿VAD evita todas las alucinaciones de Whisper?
No. VAD puede reducir el audio sin habla enviado al modelo y puede reducir la salida relacionada con el silencio, pero también puede eliminar el habla en voz baja si se configura de forma demasiado agresiva. Valida los umbrales y los límites de segmento en audio representativo.
¿Una API local de Whisper es privada por defecto?
No. El procesamiento local evita una API de transcripción alojada, pero el servicio aún necesita vinculación de interfaz, autenticación cuando se comparte, transporte cifrado cuando sea apropiado, aislamiento de carga, controles de registro y una política de retención.
Fuentes oficiales verificadas el 28 de agosto de 2026

0 comentarios