Blog
AI/Voice
8 gennaio 202610 min

Dittafono voice-first: push-to-talk e PendingCreation

La promessa di TAMSIV si riassume in una frase: creare un'attività parlando, più velocemente che digitando. Non un gadget vocale innestato su una classica app di gestione delle attività. La voce è l'interfaccia principale, la tastiera è il fallback. Tutta l'UX del Dictaphone deriva da questa promessa.

Ecco le decisioni di design, i compromessi tecnici e i pattern che fanno funzionare il Dictaphone di TAMSIV quotidianamente.

Persona che parla al suo smartphone mentre cammina in una strada cittadina all'alba
Il caso d'uso principale: dettare un'attività camminando, senza togliere le mani dalle tasche.

Perché scegliere il push-to-talk piuttosto che l'ascolto continuo?

Questa è la prima decisione di design, e la più importante. Avevo due opzioni: l'ascolto continuo (come Alexa o Google Home) o il push-to-talk (premere per parlare).

Ho scelto il push-to-talk per tre ragioni:

  • La batteria: l'ascolto continuo mantiene il microfono attivo permanentemente. Su uno smartphone, è un enorme consumo di energia. Lo STT (Speech-to-Text) continuo consuma dal 10 al 15% della batteria all'ora, secondo i benchmark Android. Inaccettabile per un'app di produttività che deve rimanere aperta in background.
  • La privacy: un microfono sempre aperto fa paura. Gli utenti non si fidano — e hanno ragione. Il push-to-talk è esplicito. Tu premi, tu parli, tu rilasci. Nessuna ambiguità su ciò che viene registrato.
  • Il rumore ambientale: in un caffè, per strada, sui mezzi pubblici — l'ascolto continuo cattura tutto. Il Voice Activity Detection (VAD) non è perfetto. Il push-to-talk elimina il problema: l'app ascolta solo quando l'utente lo decide.

Il VAD di Deepgram gestisce automaticamente la fine della frase in modalità cloud. In modalità nativa, è lo STT del dispositivo che rileva il silenzio. In entrambi i casi, l'utente non ha bisogno di cronometrare il rilascio — il sistema sa quando la frase è terminata.

Come funziona il pattern PendingCreation?

Questo è il pattern più importante di TAMSIV. E probabilmente il meno intuitivo per chi non ha lavorato su un'app vocale.

Il problema: il riconoscimento vocale non è perfetto. L'IA può interpretare male. "Comprare il pane" potrebbe diventare "A chetare del pino". Se si salva direttamente nel database, l'utente si ritrova con dati corrotti senza accorgersene.

La soluzione: il PendingCreation.

  1. L'utente detta: "Aggiungi un'attività per domani: chiamare il dentista, priorità alta"
  2. Lo STT trascrive l'audio in testo
  3. Il testo viene inviato al LLM tramite WebSocket
  4. Il LLM analizza e chiama la funzione create_task con i parametri estratti (titolo, data, priorità)
  5. Il backend restituisce un function_result con un'anteprima
  6. L'utente vede la proposta sullo schermo: titolo, data, priorità
  7. Può modificare, validare o annullare
  8. Solo dopo la validazione, l'attività viene salvata nel database (Supabase)

Il principio: la voce accelera l'inserimento, ma l'essere umano decide. Nulla viene salvato senza validazione esplicita. Sembra aggiungere un passaggio, ma in pratica, la validazione richiede mezzo secondo (un tocco) e dà un senso di controllo che gli utenti apprezzano enormemente.

Questo pattern è particolarmente importante per gli eventi del calendario, dove un errore di data può avere conseguenze reali (perdere un appuntamento).

Qual è la differenza tra STT nativo e STT cloud?

TAMSIV offre due modalità di riconoscimento vocale, configurabili dall'amministratore:

Modalità nativa (predefinita)

  • Gratuita: utilizza il motore STT integrato nel dispositivo (Google Speech-to-Text su Android, Apple Speech su iOS)
  • Locale: nessun dato audio viene inviato a un server esterno (con i modelli offline)
  • Qualità variabile: dipende dal dispositivo, dalla lingua e dal modello scaricato
  • Utilizzata per: il piano Free

Modalità cloud (Deepgram)

  • A pagamento: fatturazione in base al numero di secondi di audio elaborati
  • Coerente: qualità uniforme indipendentemente dal dispositivo
  • Precisa: migliore gestione degli accenti, del rumore ambientale e del vocabolario tecnico
  • Utilizzata per: i piani Pro e Team

La scelta tra nativo e cloud è una decisione di segmentazione del prodotto, non solo una decisione tecnica. Il piano Free offre un'esperienza vocale funzionale. Il piano Pro offre un'esperienza vocale affidabile. Questo è un chiaro argomento di vendita per l'upgrade, dettagliato nei piani di abbonamento RevenueCat.

Dietro le quinte, il passaggio tra le due modalità è trasparente. Il confronto STT nativo vs Deepgram dettaglia le differenze tecniche in profondità.

Microfono professionale da studio con onde sonore visualizzate come anelli di luce blu
Dal suono grezzo al testo strutturato: lo STT è il primo passo della pipeline vocale.

Perché il Dictaphone è la prima scheda dell'app?

Nella navigazione di TAMSIV, il Dictaphone è la prima scheda. Non le attività. Non i memo. Non il calendario. Il microfono.

È una scelta deliberata. Nella maggior parte delle app di produttività, la voce è una funzionalità secondaria — un piccolo pulsante microfono nascosto in un angolo. In TAMSIV, è il contrario: la voce è IL prodotto. Lo schermo touch è il complemento.

L'ordine delle schede (personalizzabile dall'utente, salvato nel database) segue questa gerarchia predefinita:

  1. Dictaphone — l'azione principale (creare con la voce)
  2. Feed — vedere la propria attività recente
  3. Agenda — organizzare il proprio tempo
  4. Groups — collaborare
  5. Social — scoprire
  6. Profile — impostazioni

Se apri TAMSIV, ti trovi di fronte al microfono. Un solo gesto per iniziare a dettare. Questa è la filosofia "voice-first" spinta al massimo.

Come il feedback aptico migliora l'esperienza vocale?

Il feedback aptico è un dettaglio sottile ma cruciale. Ad ogni cambio di stato del Dictaphone, il telefono vibra leggermente:

  • Inizio registrazione: vibrazione breve (50ms) — "ti ascolto"
  • Fine registrazione: doppia vibrazione — "ho capito, elaboro"
  • Anteprima ricevuta: vibrazione lunga (100ms) — "ecco la mia proposta"
  • Validazione riuscita: vibrazione di conferma — "è salvato"

L'utente sente fisicamente quando l'app ascolta, quando elabora e quando ha finito. Questo è particolarmente importante quando si detta senza guardare lo schermo — guidando, cucinando, camminando.

Questo principio di feedback multimodale (visivo + aptico + sonoro opzionale) è una raccomandazione classica del Nielsen Norman Group per le interfacce in tempo reale.

Come l'IA interpreta la dettatura?

Il testo trascritto dallo STT viene inviato al LLM (tramite OpenRouter) con un prompt di sistema specifico. L'IA ha accesso a 7 strumenti di funzione:

  • create_task — creare un'attività con titolo, data, priorità, ricorrenza
  • update_task — modificare un'attività esistente
  • create_memo — creare un memo vocale strutturato
  • update_memo — modificare un memo
  • create_calendar_event — creare un evento del calendario
  • ask_clarification — chiedere una precisazione se la richiesta è ambigua
  • end_conversation — terminare correttamente la conversazione

L'IA non si limita a trascrivere — comprende l'intenzione. "Ricordami di comprare il pane domani mattina" diventa un create_task con un promemoria configurato per il giorno successivo alle 9. "Nota per dopo: idea di funzionalità per il feed" diventa un create_memo con il tag "idea".

La cronologia delle conversazioni permette di concatenare: "Aggiungi un'attività" → "In realtà, mettila per venerdì" → "E aggiungi un memo su di essa". L'IA comprende il filo del discorso.

Quali sono i limiti del voice-first?

Essere onesti sui limiti è essenziale. Il voice-first non è adatto a tutto:

  • Ambienti rumorosi: anche con un buon STT, dettare in un bar è faticoso. La tastiera rimane disponibile come fallback.
  • Contenuto complesso: dettare un memo di 3 paragrafi con elenchi puntati e formattazione è noioso. L'editor di testo ricco prende il sopravvento.
  • Privacy in pubblico: dettare "Appuntamento oncologo mercoledì" in metropolitana, nessuno vuole farlo.
  • Precisione delle date: "La prossima settimana" è ambiguo. Il pattern PendingCreation permette di correggere, ma la tastiera rimane più precisa per le date complesse.

TAMSIV non obbliga nessuno a usare la voce. Ogni schermata ha un modulo classico come alternativa. La voce è più veloce nell'80% dei casi — il restante 20% ha la tastiera.

Mano che preme un pulsante luminoso su uno schermo di smartphone, interazione tattile
Push-to-talk: un gesto, un'azione. La semplicità come filosofia di design.

Come ottimizzare la latenza della pipeline vocale?

La latenza percepita è il fattore numero uno dell'esperienza vocale. Se l'utente parla e aspetta 5 secondi prima di vedere l'anteprima, torna alla tastiera. La pipeline completa:

Audio → STT → Testo → WebSocket → LLM → Function calling → Risposta → TTS → Audio

Ogni fase ha la sua latenza:

  • STT nativo: ~200-500ms (locale, veloce)
  • STT Deepgram: ~300-800ms (rete, più preciso)
  • LLM tramite OpenRouter: ~1-3 secondi (il collo di bottiglia)
  • TTS OpenAI: ~500ms-1s (streaming audio)

Totale: da 2 a 5 secondi dal momento in cui l'utente finisce di parlare al momento in cui sente la risposta. Questo è accettabile per un'interazione conversazionale (paragonabile a un essere umano che riflette), ma richiede un feedback visivo continuo — il pulsante animato Nebula mostra un'animazione mentre l'IA elabora.

Come costruire un'esperienza voice-first nella tua app?

Se vuoi integrare la voce come interfaccia principale nella tua applicazione, ecco le lezioni apprese da TAMSIV:

  1. Push-to-talk, non ascolto continuo: risparmio batteria, rispetto della privacy, affidabilità.
  2. Anteprima prima del salvataggio: il pattern PendingCreation non è negoziabile. L'utente deve sempre poter correggere.
  3. Feedback multimodale: visivo + aptico + sonoro. L'utente deve sapere in ogni momento cosa sta facendo l'app.
  4. Fallback tastiera: la voce non sostituisce la tastiera — la completa. Offri sempre un'alternativa manuale.
  5. Segmenta lo STT: nativo per il gratuito, cloud per il premium. È una leva di monetizzazione naturale.

Il percorso di oltre 650 commit di TAMSIV mostra che un'esperienza vocale solida richiede decine di iterazioni. Il primo prototipo funzionava — ma la versione attuale è 10 volte più fluida grazie ai feedback degli utenti e all'integrazione continua dell'IA.

FAQ

Il Dictaphone funziona offline?

Parzialmente. Lo STT nativo funziona offline (se il modello linguistico è scaricato sul dispositivo). Ma il LLM e il TTS richiedono una connessione internet. In modalità offline, l'utente può dettare testo grezzo, ma l'IA non può interpretare o strutturare l'attività.

Quali lingue sono supportate dal Dictaphone?

Lo STT nativo supporta tutte le lingue installate sul dispositivo (generalmente più di 50). Lo STT Deepgram supporta le principali lingue europee. L'IA comprende le 6 lingue di TAMSIV (FR, EN, DE, ES, IT, PT) grazie all'internazionalizzazione completa.

Come gestisce il Dictaphone gli accenti e i dialetti?

Lo STT nativo dipende dal modello linguistico del dispositivo — gli accenti regionali sono generalmente ben gestiti per le lingue principali. Deepgram eccelle sugli accenti grazie a modelli addestrati su corpus diversificati. L'IA (LLM) comprende le formulazioni regionali senza problemi.

Si possono dettare attività mentre si guida?

Sì, è un caso d'uso previsto. Il push-to-talk richiede un gesto iniziale, ma il feedback aptico e la risposta TTS permettono di dettare e confermare senza guardare lo schermo. Attenzione: la validazione finale (tocco su "Conferma") richiede uno sguardo — una futura versione potrebbe aggiungere la conferma vocale.

Il Dictaphone consuma molta batteria?

No. Il push-to-talk attiva il microfono solo durante la dettatura (pochi secondi). La connessione WebSocket è leggera e persistente. Il consumo principale deriva dal LLM e dal TTS, che sono chiamate di rete occasionali. In uso normale (5-10 dettature al giorno), l'impatto sulla batteria è trascurabile.