Respuesta directa — ¿Cómo automatizar la transcripción de archivos en un Mac? Existen tres rutas. Montar un script de shell alrededor de whisper.cpp y ffmpeg, envolverlo en un Atajo y mantenerlo tú mismo. Enviar archivos a una API de transcripción en la nube y aceptar que el audio sale de tu Mac. O llamar a una API HTTP local dentro de una app de transcripción, que mantiene cada archivo en el equipo y no necesita ningún script que mantener.

Si quieres automatizar la transcripción en un Mac, la parte difícil casi nunca es el reconocimiento de voz — los modelos locales llevan años siendo suficientemente buenos. Es la fontanería: el disparador, la conversión de formato, la cola, la exportación y lo que se rompe después de una actualización de Homebrew.

Esta guía compara las tres rutas — scripts DIY, Atajos de macOS y una API de transcripción local en tu equipo — con el código que realmente ejecutarías en cada una.

¿Qué implica realmente automatizar la transcripción en un Mac?

Tres capas, y solo una de ellas es reconocimiento de voz. Confundirlas es la razón por la que la mayoría de los intentos de automatización se atascan a mitad de camino.

Una API en la nube reduce las tres capas a una sola llamada HTTP, al precio de subir el audio. Un script DIY te da control total y las tres capas que mantener. Una API local mantiene el motor y el audio en tu Mac mientras sigue reduciendo la llamada a una sola línea.

¿Pueden los Atajos de macOS transcribir archivos por sí solos?

No, no con un motor local. Atajos es excelente en disparadores y fontanería — Apple describe un atajo como «una forma rápida de completar una o varias tareas con tus apps» — pero no incluye ninguna acción de transcripción offline de propósito general que puedas apuntar a un MP4 cualquiera.

Los proyectos de la comunidad muestran la solución. Los repositorios compartidos de transcripción de audio con atajos de mac funcionan todos de la misma manera: el Atajo aporta el disparador y la ruta del archivo, y luego una acción Ejecutar Script de Shell entrega el trabajo a un motor externo.

Uno envuelve un script de zsh alrededor de la herramienta de línea de comandos de MacWhisper, recurriendo a whisper.cpp de Homebrew como alternativa. Otro importa un .shortcut que llama a un script de shell que combina whisper.cpp con ffmpeg. Ambos demuestran lo mismo: Atajos es el disparador, nunca el motor.

¿Qué implica la ruta DIY con whisper.cpp?

Configuración y mantenimiento. El motor es gratuito y excelente; el mantenimiento es el precio a pagar, y no es cero.

Una configuración mínima de script de automatización de transcripción en mac tiene este aspecto:

# 1. Install the engine and the converter
brew install ffmpeg
brew install whisper-cpp

# 2. Fetch a model file by hand (e.g. ggml-large-v3-turbo.bin)

# 3. Convert first — whisper.cpp's CLI reads 16-bit WAV only
ffmpeg -i input.mp3 -ar 16000 -ac 1 -c:a pcm_s16le output.wav

# 4. Then transcribe
whisper-cli -m ~/.cache/whisper.cpp/models/ggml-large-v3-turbo.bin -f output.wav

El paso 3 no es opcional. El README oficial de whisper.cpp es explícito: «el ejemplo whisper-cli actualmente solo funciona con archivos WAV de 16 bits, así que asegúrate de convertir tu entrada antes de ejecutar la herramienta», y publica el comando de ffmpeg mostrado arriba.

Esa restricción es donde se rompen la mayoría de las cadenas de automatización de whisper.cpp en mac: cada nuevo formato, entrevista en estéreo y contenedor de vídeo debe convertirse primero, y el fallo es silencioso hasta que lees una transcripción vacía.

Añade las demás piezas móviles — archivos de modelo renombrados, una actualización de Homebrew, sin cola de trabajos, sin progreso, sin historial — y el script de una tarde se convierte en una pequeña herramienta interna que ahora es responsabilidad tuya. Nuestra guía de instalación de whisper.cpp cubre esa ruta en detalle.

¿Qué es una API de transcripción local y por qué cambia el flujo de trabajo?

Una API de transcripción local es un servidor HTTP que se ejecuta dentro de una app de escritorio en tu propio equipo, de modo que otros programas pueden enviarle un archivo y recibir el texto de vuelta sin que ningún audio salga del Mac. La misma forma de solicitud que una API en la nube, sin ninguna subida.

Weesper Transcribe incluye una como función Pro opcional. Se vincula a la dirección de loopback 127.0.0.1 — inaccesible desde tu red — en un puerto configurable (8765 por defecto), está desactivada por defecto, y cada endpoint excepto la comprobación de estado requiere un token Authorization: Bearer que se muestra en Ajustes → Automatización.

Dos detalles de diseño importan para la automatización:

Los endpoints

EndpointAutenticaciónQué hace
GET /v1/healthNoComprobación de actividad — estado y versión
GET /v1/modelsLista los ids de modelos y cuáles están instalados
POST /v1/transcribeEnvía bytes de audio, recibe texto y segmentos con marca de tiempo
GET /v1/jobs/<id>Estado, progreso, y luego texto y ruta de exportación

Las opciones viajan como parámetros de consulta, y todo lo que omitas recurre a los ajustes guardados de la app: model, language, task (transcribe o translate), format, name, export, async.

Una llamada, de principio a fin

TOKEN=   # copied from Settings → Automation

# Synchronous: transcribe and write an SRT into the auto-export folder
curl -s -X POST "http://127.0.0.1:8765/v1/transcribe?format=srt&name=meeting" \
     -H "Authorization: Bearer $TOKEN" \
     --data-binary @meeting.m4a | jq .text

# Asynchronous: long file, poll for the result
JOB=$(curl -s -X POST "http://127.0.0.1:8765/v1/transcribe?async=true&name=lecture" \
      -H "Authorization: Bearer $TOKEN" --data-binary @lecture.mp4 | jq -r .job_id)
curl -s "http://127.0.0.1:8765/v1/jobs/$JOB" -H "Authorization: Bearer $TOKEN" | jq

Sin paso de conversión, sin gestión de modelos, sin cola que programar. La respuesta lleva el texto y los segmentos con marca de tiempo, y la app renderiza un archivo en el formato que pediste — uno de nueve, incluidos SRT y VTT, cuando los subtítulos son el entregable.

¿Cómo se comparan las tres rutas?

Elige la ruta según lo que quieras optimizar: control, privacidad o piezas móviles que quieras tener bajo tu responsabilidad.

CriterioScripts DIY (whisper.cpp)API local (Weesper Transcribe)API de transcripción en la nube
El audio sale de tu Mac❌ Nunca❌ Nunca✅ Cada archivo se sube
Esfuerzo de configuraciónAlto — Homebrew, modelos, conversiónBajo — activar, copiar tokenBajo — clave de API
Conversión de formatoManual (ffmpeg, WAV de 16 bits)Gestionada por la appGestionada por el servicio
Cola de trabajos y progresoLo construyes túIncluido, síncrono o asíncronoIncluido
Funciona offline
Coste recurrenteNingunoMejora Pro de pago únicoPor minuto o por puesto
Quién lo mantieneLa appEl proveedor
Historial y búsquedaLo construyes túIncluido, por palabra clave y semánticoAlojado por el proveedor

En resumen: el DIY gana en control y solo cuesta tu tiempo, la nube gana en escala y pierde en confidencialidad, y una API local es el término medio cuando el audio no debe salir del equipo.

Tres recetas de automatización que merece la pena copiar

Empieza por el disparador que ya usas. El paso de transcripción es una sola línea en cada caso.

  1. Acción Rápida de Finder — crea un Atajo que reciba archivos como entrada, añade una acción Ejecutar Script de Shell con la llamada curl de arriba y --data-binary @"$1", y luego haz clic derecho en cualquier grabación para transcribirla. Guarda el token en el script o en un elemento del Llavero (Keychain), nunca en un parámetro de URL.
  2. Carpeta vigilada — apunta una Acción de Carpeta o un pequeño bucle de fswatch a tu directorio de grabaciones y lanza la misma llamada por cada archivo nuevo. Define export=true y la transcripción llega a tu carpeta de exportación.
  3. Paso de orquestador — en n8n, un nodo Execute Command invoca curl. Su documentación es explícita al decir que el nodo ejecuta comandos «en la máquina host que ejecuta n8n», «no está disponible en n8n Cloud», y está desactivado por defecto desde n8n 2.0. Un paso de transcripción local con n8n necesita, por tanto, una instancia autoalojada en el mismo Mac — que es precisamente el sentido de una API de loopback.

Para un flujo de automatización de transcripción por lotes, puede que no necesites ningún orquestador: pon una carpeta en cola dentro de la app y usa la API solo para lo que tus propias herramientas manejen.

¿Qué ruta deberías elegir?

Elige según la restricción que no vaya a cambiar.

¿Todavía estás sopesando apps en lugar de rutas? Nuestra comparativa entre TranscribeNext y Weesper Transcribe cubre el lado de la captura de reuniones de esa decisión.

Preguntas frecuentes

¿Cómo puedo automatizar la transcripción en un Mac sin escribir scripts?

Usa una app que exponga una API de transcripción local y llámala desde lo que ya gestiona tu trabajo: un Atajo, una Acción de Carpeta, una tarea programada o un flujo de n8n. Weesper Transcribe incluye un servidor HTTP opcional vinculado a 127.0.0.1 y protegido por un token bearer. Una sola llamada curl envía los bytes de audio y devuelve el texto, además de un archivo renderizado en tu carpeta de auto-exportación.

¿Pueden los Atajos de macOS transcribir un archivo de audio por sí solos?

No, para archivos arbitrarios con un motor local. Atajos es muy bueno en el disparador y la fontanería: una Acción Rápida en Finder, una Acción de Carpeta, una entrada en la hoja de compartir. La transcripción tiene que venir de algún sitio, por eso los atajos de la comunidad en GitHub envuelven una acción Ejecutar Script de Shell alrededor de whisper.cpp o una herramienta de línea de comandos de terceros.

¿Cuánto cuesta realmente la ruta de automatización DIY con whisper.cpp?

Configuración y mantenimiento, no dinero. Los scripts de la comunidad publicados instalan ffmpeg y whisper.cpp mediante Homebrew, descargan archivos de modelo a mano y convierten cada entrada primero, porque la herramienta de línea de comandos de whisper.cpp solo funciona con archivos WAV de 16 bits. Una actualización de Homebrew, un archivo de modelo renombrado o un formato de entrada no contemplado romperán la cadena en silencio.

¿Es seguro dejar activada una API de transcripción local?

Depende de cómo esté vinculada y autenticada. La API de Weesper Transcribe está desactivada por defecto, escucha solo en 127.0.0.1, por lo que es inaccesible desde tu red, y requiere un token bearer en cada endpoint excepto la comprobación de estado. Las solicitudes que llevan una cabecera Origin de navegador son rechazadas, así que una página web no puede llamarla a tus espaldas.

¿Puedo ejecutar una API de transcripción local desde n8n u otra herramienta de automatización?

Sí, cuando la herramienta se ejecuta en el mismo Mac. La documentación de n8n indica que su nodo Execute Command ejecuta comandos de shell en la máquina host que ejecuta n8n y que no está disponible en n8n Cloud — así que una instancia autoalojada puede invocar curl, mientras que una instancia en la nube no puede alcanzar 127.0.0.1 en tu portátil.

Conclusión

Automatizar la transcripción en un Mac ha sido posible durante años, pero solo mediante scripts que tenías que construir y mantener con vida. Los proyectos de la comunidad demuestran la demanda y exponen el coste: dependencias de Homebrew, archivos de modelo manuales, un paso de conversión antes de cada archivo.

Una API de loopback traslada ese trabajo dentro de la app — la misma llamada de una línea que un servicio en la nube, la misma superficie de automatización para Atajos, vigilantes de carpetas y orquestadores autoalojados, y el audio nunca sale del equipo.

¿Listo para convertir la transcripción en un paso de tu pipeline? Descubre cómo Weesper Transcribe gestiona lotes, exportaciones y la API de automatización local, o consíguela en la Mac App Store — descarga gratuita, macOS 13 o posterior, mejora Pro de pago único, sin suscripción. Las preguntas de configuración se responden en la documentación de soporte.