Risposta diretta — Come si automatizza la trascrizione dei file su Mac? Esistono tre strade. Costruire uno script shell attorno a whisper.cpp e ffmpeg, racchiuderlo in una Shortcut e mantenerlo da soli. Inviare i file a un’API di trascrizione cloud e accettare che l’audio lasci il tuo Mac. Oppure richiamare un’API HTTP locale all’interno di un’app di trascrizione, che mantiene ogni file sulla macchina e non richiede alcuno scripting da mantenere.
Se vuoi automatizzare la trascrizione su Mac, la parte difficile raramente è il riconoscimento vocale — i modelli locali sono abbastanza buoni da anni. È la parte di collegamento: il trigger, la conversione del formato, la coda, l’esportazione e quella cosa che si rompe dopo un aggiornamento Homebrew.
Questa guida confronta le tre strade — script fai-da-te, Shortcuts di macOS e un’API di trascrizione locale alla tua macchina — con il codice che utilizzeresti davvero per ciascuna.
Cosa comporta davvero automatizzare la trascrizione su Mac?
Tre livelli, e solo uno di questi è riconoscimento vocale. Confonderli è il motivo per cui la maggior parte dei tentativi di automazione si arena a metà strada.
- Il trigger — un’Azione rapida del Finder, una cartella monitorata, un cron job o un nodo in un orchestratore.
- Il motore — il modello che trasforma l’audio in testo, più qualsiasi preparazione richieda.
- L’output — un file, gli appunti, una riga di database, una traccia sottotitoli, una nota Markdown.
Un’API cloud riduce tutti e tre a un’unica chiamata HTTP, al costo di caricare l’audio. Uno script fai-da-te ti dà il controllo totale e tutti e tre i livelli da mantenere. Un’API locale mantiene motore e audio sul tuo Mac pur riducendo comunque la chiamata a una sola riga.
Le Shortcuts di macOS possono trascrivere i file da sole?
Non con un motore locale, no. Shortcuts è eccellente per trigger e collegamenti — Apple descrive una shortcut come «un modo rapido per portare a termine una o più attività con le tue app» — ma non include alcuna azione di trascrizione offline generica che tu possa puntare su un MP4 qualsiasi.
I progetti della community mostrano la soluzione alternativa. I repository condivisi di trascrizione audio con Shortcuts su Mac funzionano tutti allo stesso modo: la Shortcut fornisce il trigger e il percorso del file, poi un’azione Run Shell Script passa il lavoro a un motore esterno.
Uno racchiude uno script zsh attorno allo strumento da riga di comando di MacWhisper, con ripiego su whisper.cpp installato via Homebrew. Un altro importa uno .shortcut che richiama uno script shell che combina whisper.cpp con ffmpeg. Entrambi dimostrano lo stesso punto: Shortcuts è il trigger, mai il motore.
Cosa comporta la strada fai-da-te con whisper.cpp?
Configurazione e manutenzione continua. Il motore è gratuito ed eccellente; la manutenzione è il prezzo da pagare, e non è pari a zero.
Una configurazione minima di script di automazione della trascrizione su Mac si presenta così:
# 1. Installa il motore e il convertitore
brew install ffmpeg
brew install whisper-cpp
# 2. Scarica un file modello a mano (es. ggml-large-v3-turbo.bin)
# 3. Converti prima — la CLI di whisper.cpp legge solo WAV a 16 bit
ffmpeg -i input.mp3 -ar 16000 -ac 1 -c:a pcm_s16le output.wav
# 4. Poi trascrivi
whisper-cli -m ~/.cache/whisper.cpp/models/ggml-large-v3-turbo.bin -f output.wav
Il passaggio 3 non è opzionale. Il README ufficiale di whisper.cpp è esplicito: «l’esempio whisper-cli al momento funziona solo con file WAV a 16 bit, quindi assicurati di convertire il tuo input prima di eseguire lo strumento», e pubblica il comando ffmpeg riportato sopra.
È proprio questo vincolo il punto in cui la maggior parte delle catene di automazione whisper.cpp su Mac si rompono: ogni nuovo formato, intervista stereo e contenitore video deve essere convertito prima, e il fallimento è silenzioso finché non leggi una trascrizione vuota.
Aggiungi le altre parti mobili — file modello rinominati, un aggiornamento Homebrew, nessuna coda di lavoro, nessun avanzamento, nessuna cronologia — e lo script di un pomeriggio diventa un piccolo strumento interno che ora è tuo. La nostra guida all’installazione di whisper.cpp copre questo percorso in dettaglio.
Cos’è un’API di trascrizione locale, e perché cambia il flusso di lavoro?
Un’API di trascrizione locale è un server HTTP in esecuzione all’interno di un’app desktop sulla tua macchina, così altri programmi possono inviarle un file e ricevere il testo senza che nessun audio lasci il Mac. Stessa struttura di richiesta di un’API cloud, senza alcun caricamento.
Weesper Transcribe ne include una come funzione Pro opzionale. Si associa all’indirizzo di loopback 127.0.0.1 — irraggiungibile dalla tua rete — su una porta configurabile (8765 per impostazione predefinita), è disattivata per impostazione predefinita, e ogni endpoint tranne l’health check richiede un token Authorization: Bearer mostrato in Impostazioni → Automazione.
Due dettagli di design contano per l’automazione:
- Chi chiama carica i byte audio, non un percorso file. La build del Mac App Store è sandboxata e non può leggere percorsi arbitrari da un altro processo, quindi i byte viaggiano tramite loopback.
- Sincrono e asincrono in un solo endpoint. Una clip breve blocca fino al completamento; una registrazione lunga restituisce subito un identificatore di job e tu esegui il polling per l’avanzamento.
Gli endpoint
| Endpoint | Auth | Cosa fa |
|---|---|---|
GET /v1/health | No | Probe di liveness — stato e versione |
GET /v1/models | Sì | Elenca gli id dei modelli e quali sono installati |
POST /v1/transcribe | Sì | Invia i byte audio, ricevi testo e segmenti con timestamp |
GET /v1/jobs/<id> | Sì | Stato, avanzamento, poi testo e percorso di esportazione |
Le opzioni viaggiano come parametri di query e tutto ciò che ometti ricade sulle impostazioni salvate dell’app: model, language, task (transcribe o translate), format, name, export, async.
Una chiamata, dall’inizio alla fine
TOKEN=… # copiato da Impostazioni → Automazione
# Sincrono: trascrivi e scrivi un SRT nella cartella di esportazione automatica
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
# Asincrono: file lungo, polling per il risultato
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
Nessun passaggio di conversione, nessuna gestione dei modelli, nessuna coda da scrivere. La risposta porta testo e segmenti con timestamp, e l’app genera un file nel formato richiesto — uno tra nove, inclusi SRT e VTT quando i sottotitoli sono il risultato finale.
Come si confrontano le tre strade?
Fai corrispondere la strada a ciò che stai ottimizzando: controllo, privacy o parti mobili da gestire in proprio.
| Criterio | Script fai-da-te (whisper.cpp) | API locale (Weesper Transcribe) | API di trascrizione cloud |
|---|---|---|---|
| L’audio lascia il tuo Mac | ❌ Mai | ❌ Mai | ✅ Ogni file caricato |
| Sforzo di configurazione | Alto — Homebrew, modelli, conversione | Basso — attiva l’opzione, copia il token | Basso — chiave API |
| Conversione formato | Manuale (ffmpeg, WAV a 16 bit) | Gestita dall’app | Gestita dal servizio |
| Coda dei job e avanzamento | La costruisci tu | Integrata, sincrona o asincrona | Integrata |
| Funziona offline | ✅ | ✅ | ❌ |
| Costo ricorrente | Nessuno | Upgrade Pro una tantum | A minuto o a licenza |
| Chi la mantiene | Tu | L’app | Il fornitore |
| Cronologia e ricerca | La costruisci tu | Integrata, per parola chiave e semantica | Ospitata dal fornitore |
In sintesi: il fai-da-te vince sul controllo e costa solo il tuo tempo, il cloud vince sulla scala e perde sulla riservatezza, e un’API locale è la via di mezzo quando l’audio non deve lasciare la macchina.
Tre ricette di automazione che vale la pena copiare
Parti dal trigger che usi già. Il passaggio di trascrizione è una sola riga in ciascuna.
- Azione rapida del Finder — costruisci una Shortcut che accetta file come input, aggiungi un’azione Run Shell Script con la chiamata
curlqui sopra e--data-binary @"$1", poi clicca con il tasto destro su qualsiasi registrazione per trascriverla. Tieni il token nello script o in una voce del Keychain, mai in un parametro URL. - Cartella monitorata — punta un’Azione cartella o un piccolo ciclo
fswatchsulla tua directory delle registrazioni e lancia la stessa chiamata per ogni nuovo file. Impostaexport=truee la trascrizione atterra nella tua cartella di esportazione. - Passaggio nell’orchestratore — in n8n, un nodo Execute Command richiama
curl. La sua documentazione è esplicita nel dire che il nodo esegue comandi «sulla macchina host che fa girare n8n», «non è disponibile su n8n Cloud», ed è disattivato per impostazione predefinita a partire da n8n 2.0. Un passaggio di trascrizione locale con n8n richiede quindi un’istanza self-hosted sullo stesso Mac — che è proprio il senso di un’API di loopback.
Per un workflow di automazione della trascrizione in batch, potresti non aver bisogno di alcun orchestratore: metti in coda una cartella dentro l’app e usa l’API solo per ciò che è pilotato dai tuoi strumenti.
Quale strada dovresti scegliere?
Scegli in base al vincolo che non cambierà.
- Scegli gli script fai-da-te se vuoi il pieno controllo sul modello e non ti dispiace gestire in proprio una pipeline di conversione. Più economico in denaro, più costoso in attenzione.
- Scegli un’API locale se l’audio è riservato — interviste con clienti, registrazioni mediche, lavori non ancora pubblicati — e vuoi automazione senza manutenzione.
- Scegli un’API cloud se trascrivi a una scala che nessun portatile può assorbire e il materiale non è sensibile.
Stai ancora valutando le app piuttosto che le strade? Il nostro confronto tra TranscribeNext e Weesper Transcribe copre il lato della cattura riunioni di questa decisione.
Domande frequenti
Come posso automatizzare la trascrizione su Mac senza scrivere script?
Usa un’app che espone un’API di trascrizione locale, poi richiamala da qualsiasi cosa già gestisca il tuo lavoro: una Shortcut, un’Azione cartella, un job pianificato o un workflow n8n. Weesper Transcribe include un server HTTP opzionale associato a 127.0.0.1 e protetto da un bearer token. Una sola chiamata curl invia i byte audio e restituisce il testo, oltre a un file generato nella tua cartella di esportazione automatica.
Le Shortcuts di macOS possono trascrivere un file audio da sole?
Non per file arbitrari con un motore locale. Shortcuts è ottima per il trigger e la parte di collegamento: un’Azione rapida nel Finder, un’Azione cartella, una voce nel pannello di condivisione. La trascrizione deve arrivare da qualche parte, ed è per questo che le shortcut della community su GitHub racchiudono un’azione Run Shell Script attorno a whisper.cpp o a uno strumento da riga di comando di terze parti.
Quanto costa davvero la strada fai-da-te dell’automazione con whisper.cpp?
Configurazione e manutenzione, più che denaro. Gli script della community pubblicati installano ffmpeg e whisper.cpp tramite Homebrew, scaricano i file modello a mano e convertono ogni input prima di procedere, perché lo strumento da riga di comando di whisper.cpp funziona solo con file WAV a 16 bit. Un aggiornamento Homebrew, un file modello rinominato o un formato di input non gestito romperanno la catena silenziosamente.
È sicuro lasciare accesa un’API di trascrizione locale?
Dipende da come è associata e autenticata. L’API di Weesper Transcribe è disattivata per impostazione predefinita, ascolta solo su 127.0.0.1 quindi è irraggiungibile dalla tua rete, e richiede un bearer token su ogni endpoint tranne l’health check. Le richieste che portano un header Origin da browser vengono rifiutate, così una pagina web non può chiamarla a tua insaputa.
Posso usare un’API di trascrizione locale da n8n o un altro strumento di automazione?
Sì, quando lo strumento gira sullo stesso Mac. La documentazione di n8n afferma che il suo nodo Execute Command esegue comandi shell sulla macchina host che fa girare n8n e non è disponibile su n8n Cloud — quindi un’istanza self-hosted può richiamare curl, mentre un’istanza cloud non può raggiungere 127.0.0.1 sul tuo portatile.
Conclusione
Automatizzare la trascrizione su Mac è possibile da anni, ma finora solo tramite script che dovevi costruire e mantenere in vita. I progetti della community dimostrano la domanda ed espongono il costo: dipendenze Homebrew, file modello manuali, un passaggio di conversione prima di ogni file.
Un’API di loopback sposta quel lavoro dentro l’app — stessa chiamata a una riga di un servizio cloud, stessa superficie di automazione per Shortcuts, watcher di cartelle e orchestratori self-hosted, e l’audio non lascia mai la macchina.
Pronto a rendere la trascrizione un passaggio della pipeline? Scopri come Weesper Transcribe gestisce batch, esportazioni e l’API di automazione locale, oppure scaricalo dal Mac App Store — gratuito da scaricare, macOS 13 o successivo, upgrade Pro una tantum, nessun abbonamento. Le domande sulla configurazione trovano risposta nella documentazione di supporto.