Personalizzazione vocale AI: il Suo assistente La conosce finalmente
Un assistente vocale che non ti conosce è uno strumento. Un assistente che sa che hai tre figli, che gestisci una squadra sul campo e che "la cosa" significa l'ordine di materiale di martedì — è un partner. A due giorni dal lancio pubblico di TAMSIV, ho aggiunto la personalizzazione vocale: configura la tua IA con la voce, scegli la tua voce TTS tra 6 opzioni, e l'assistente si adatta al tuo contesto. 1800 righe di codice, un bug WebSocket memorabile, e una riflessione profonda su ciò che fa la differenza tra un assistente generico e un assistente personale.
Punti chiave da ricordare:
- La personalizzazione tramite contesto vocale trasforma un assistente generico in uno strumento personale — l'utente parla naturalmente, l'IA comprende i riferimenti impliciti.
- La scelta della voce TTS è intima: offrire 6 opzioni con anteprima in tempo reale aumenta l'attaccamento all'app.
- Quando due schermi condividono lo stesso WebSocket, un sistema di "proprietario attivo" evita i conflitti di callback.
- La personalizzazione dell'IA è una leva di monetizzazione naturale per un modello freemium (contesto base gratuito, completo in Pro).
Perché la personalizzazione cambia fondamentalmente l'esperienza di un assistente vocale?
Da ottobre, l'IA di TAMSIV capiva quello che dicevi. Creava attività, memo, eventi di agenda. Rispondeva educatamente. Ma non ti conosceva.
Potevi dirle "ricordami di comprare il latte" e lei lo faceva. Ma se le dicevi "ricordami la cosa per i bambini", lei non sapeva che avevi dei figli, né quanti, né cosa significasse "la cosa" nella tua quotidianità. Questa è la differenza fondamentale tra uno strumento di comando vocale e un assistente personale.
Le ricerche del Nielsen Norman Group sulla personalizzazione mostrano che le interfacce personalizzate aumentano l'engagement del 40% in media. Per un assistente vocale, l'impatto è ancora più forte: la personalizzazione elimina la necessità di esplicitare tutto ad ogni interazione.
È questa riflessione che mi ha spinto ad aggiungere questa funzionalità a J-2 dal lancio. Rischio? Sì. Ma senza di essa, TAMSIV sarebbe stato "un altro assistente vocale". Con essa, diventa il tuo assistente vocale.
Come funziona la configurazione dell'IA tramite la voce?
Un nuovo pulsante è apparso sullo schermo del dittafono: "Configura la mia IA". Premi, parli, e le spieghi chi sei.
"Sono genitore di 3 figli, gestisco una squadra di 4 persone in un'impresa di pulizie, e dimentico tutto quello che mi viene detto dopo 30 secondi."
L'IA ascolta tramite la pipeline vocale, trascrive, quindi riassume il tuo contesto in alcuni punti strutturati. Questo riassunto è memorizzato nel tuo profilo Supabase e iniettato nel system prompt ad ogni conversazione.
Il processo tecnico in dettaglio
- Acquisizione vocale: lo stesso STT nativo del dittafono principale (con fallback Deepgram se necessario).
- Estrazione del contesto: un LLM tramite OpenRouter analizza la trascrizione ed estrae le informazioni strutturate (situazione familiare, professione, abitudini, preferenze).
- Archiviazione: il contesto viene salvato nel profilo utente tramite Supabase, non in locale — segue l'utente su tutti i suoi dispositivi.
- Iniezione: ad ogni nuova conversazione WebSocket, il contesto viene aggiunto al system prompt del LLM. L'IA "sa" chi sei fin dalla prima parola.
Da lì, ogni risposta è adattata. Se parli di "il piccolo", sa che parli di tuo figlio. Se dici "il cantiere di martedì", sa che gestisci interventi sul campo. Questa è la differenza tra un assistente generico e un assistente che ti conosce.
Perché offrire 6 voci TTS e come scegliere quella giusta?
La voce è intima. Sentire la stessa voce robotica 50 volte al giorno, alla fine infastidisce. Peggio ancora: una voce che non ti piace crea un attrito inconscio ad ogni utilizzo. Eviti di usare l'app, senza sapere esattamente perché.
Ho aggiunto un selettore di voci TTS con 6 opzioni diverse — maschili, femminili, toni vari. Le 6 voci provengono da OpenAI TTS (modello Nova di default), che offre la migliore qualità naturale del mercato per la sintesi vocale.
L'esperienza di selezione
Premi su una voce, ascolti un'anteprima in tempo reale ("Ciao, sono il tuo assistente TAMSIV..."), e scegli. Viene memorizzata nel tuo profilo e utilizzata per tutte le risposte vocali. Il cambiamento è istantaneo — non è necessario riavviare l'app o riconnettere il WebSocket.
Questo dettaglio UX sembra minore, ma ha un impatto misurabile. Secondo le ricerche di Voicebot.ai, gli utenti che scelgono la loro voce assistente la usano il 60% più spesso di quelli che mantengono la voce predefinita. La scelta crea un senso di appropriazione.
Come risolvere un conflitto WebSocket tra due schermi che condividono lo stesso canale?
Il bug che è costato 3 ore. La schermata di configurazione IA e il dittafono condividono lo stesso canale WebSocket verso il backend. Quando testi la tua voce nel setup, il dittafono in background cercava anche di elaborare i callback audio. Risultato: i due schermi si sovrapponevano.
Concretamente, ecco cosa succedeva:
- L'utente apre la schermata di configurazione IA.
- Testa una voce TTS — il backend invia l'audio tramite WebSocket.
- Il dittafono in background riceve anche il callback audio.
- I due schermi cercano di riprodurre lo stesso suono contemporaneamente.
- Su alcuni modelli Android dove il garbage collector è aggressivo, l'AudioPlayerService si blocca silenziosamente.
La soluzione: sistema di "proprietario attivo"
Quando la schermata di setup è aperta, prende il controllo esclusivo del WebSocket. Il dittafono aspetta il suo turno. Il pattern è semplice:
- Un flag
activeOwner: 'dictaphone' | 'setup' | nullnello stato globale. - Ogni callback WebSocket verifica il proprietario prima di elaborare il messaggio.
- La transizione di proprietà è atomica — nessuna finestra in cui entrambi gli schermi ascoltano.
Semplice in teoria, 3 ore di debug in pratica. Il conflitto si manifestava solo su alcuni dispositivi, il che rendeva difficile la riproduzione. È il tipo di bug che trovi solo testando su dispositivi reali — non in un emulatore.
Come integrare la personalizzazione in un modello freemium?
La personalizzazione dell'IA fa ora parte delle funzionalità differenzianti nei piani di abbonamento RevenueCat:
- Piano gratuito: contesto base (nome, lingua). L'IA sa come ti chiami, è tutto.
- Piano Pro: contesto completo (situazione personale, professione, abitudini) + scelta della voce TTS. L'IA ti conosce davvero.
- Piano Team: tutto Pro + contesto di gruppo (squadra, progetti, terminologia aziendale). L'IA conosce la tua squadra.
È una leva di monetizzazione naturale. La personalizzazione è la funzionalità che crea il maggior attaccamento — una volta che la tua IA ti conosce, non vuoi più tornare a un assistente generico. È esattamente il tipo di feature gate che raccomanda la strategia freemium per le app di produttività.
Qual è l'impatto sull'architettura backend?
L'aggiunta della personalizzazione ha richiesto 1800 righe di codice distribuite su frontend e backend. Lato backend Node.js, le modifiche principali:
- System prompt dinamico: il contesto utente viene caricato da Supabase ad ogni connessione WebSocket e iniettato nel prompt. Cache in memoria per evitare una chiamata DB ad ogni messaggio.
- Endpoint di anteprima TTS: un nuovo endpoint WebSocket dedicato alle anteprime vocali, isolato dal flusso di conversazione principale.
- Validazione del contesto: il LLM che estrae il contesto filtra le informazioni sensibili (numeri, indirizzi) — vengono conservate solo le informazioni strutturali.
Il sistema di cronologia delle conversazioni è stato anche aggiornato per includere il contesto nei metadata — il che permette di vedere quando e come il contesto è stato modificato.
730+ commit, a J-2 dal lancio: era il momento giusto per questa funzionalità?
Era l'ultima funzionalità prima del lancio pubblico. L'app ora sa a chi sta parlando. Rimane il polish finale, gli ultimi test sui dispositivi dei beta-tester, e il grande salto.
Aggiungere una funzionalità importante a J-2 è rischioso. Ma la personalizzazione è il tipo di funzionalità che trasforma l'intera esperienza dell'app. Senza di essa, TAMSIV sarebbe stato un buon strumento vocale. Con essa, è un assistente che ti conosce. Ed è questo che farà la differenza rispetto alle alternative come Todoist.
Domande frequenti
I dati di personalizzazione sono sicuri?
Sì. Il contesto è memorizzato in Supabase con le stesse politiche RLS (Row Level Security) di tutti i dati utente. Solo l'utente autenticato può leggere o modificare il suo contesto. Il LLM che estrae il contesto filtra automaticamente le informazioni sensibili (numeri di telefono, indirizzi) — vengono conservate solo le informazioni strutturali.
È possibile modificare o eliminare il proprio contesto dopo averlo configurato?
Sì, in qualsiasi momento. Il pulsante "Configura la mia IA" permette di registrare un nuovo contesto che sostituisce il precedente. Un pulsante "Reimposta" elimina completamente il contesto e torna alla modalità assistente generico.
Perché OpenAI TTS piuttosto che Google o Azure per la sintesi vocale?
Dopo aver testato i tre, OpenAI TTS (modello Nova) offre la voce più naturale in francese. Google TTS è buono ma leggermente più robotico. Azure è eccellente in inglese ma meno convincente in francese. Il costo è paragonabile (~0.015 EUR/1000 caratteri per OpenAI).
Il conflitto WebSocket può riprodursi con altri schermi?
Il sistema di proprietario attivo è generico — protegge da qualsiasi conflitto tra schermi che condividono lo stesso canale. Se una futura schermata ha bisogno del WebSocket, è sufficiente aggiungere un valore al tipo activeOwner e rispettare il protocollo di acquisizione/rilascio.
La personalizzazione funziona in tutte le lingue supportate?
Sì. L'estrazione del contesto utilizza un LLM multilingue tramite OpenRouter. Puoi configurare la tua IA in francese, inglese, tedesco, spagnolo, italiano o portoghese — il contesto viene memorizzato nella lingua in cui l'hai dettato e utilizzato tale e quale nel system prompt.