Informativa sui cookie
Utilizziamo i cookie per analizzare il traffico del nostro sito e migliorare la Sua esperienza. Può accettare o rifiutare i cookie analitici.
Da freelance, le idee migliori arrivano in auto o in cantiere, proprio quando non si può scrivere. Per questo BillableMe ha ora le note vocali: si detta un’attività, un promemoria o una nota e mezzo minuto dopo il testo è lì, ricercabile. Ecco come ho affrontato la cosa.
L’app registra con il package record in AAC (m4a), chiede il permesso per il microfono e permette di scegliere subito una categoria, un contrassegno e un titolo. Il file viene inviato come upload multipart all’API NestJS. Da quel momento la nota compare nell’elenco, con lo stato «in elaborazione».
L’API salva il file audio su un volume condiviso, crea un record in PostgreSQL e inserisce un job in una coda Bull su Redis. La chiamata HTTP si conclude così in una frazione di secondo. Un worker prende in carico il job, chiama il servizio di trascrizione e, in caso di errore, riprova fino a tre volte con un tempo di attesa crescente. Lo stato passa da pending a processing, poi a completed o failed.
La trascrizione vera e propria avviene in un piccolo servizio FastAPI con OpenAI Whisper. Ho scelto il modello base: 74 MB, circa 30 secondi per minuto di audio su una CPU, più che sufficiente per note parlate in olandese e in inglese. La dimensione del modello è una variabile d’ambiente, così posso passare a small o medium se l’hardware lo consente. ffmpeg è incluso nel container per decodificare gli m4a.
Appena il testo è nel database, l’app lo mostra sotto la nota. Si può riprodurre la registrazione a una velocità da 0,75 a 1,5 volte, modificare la nota, filtrare per categoria o periodo e cercare nelle trascrizioni.
small è tre volte più lento di base; per brevi note parlate base era più che sufficiente.Vuole una funzione di IA simile nella Sua app? Mi contatti.