← Diario
Tecnica·12 mag 2026

Quando l'assistente dice «ok, guardo» prima di rispondere

Uno smartphone appoggiato su una scrivania di legno scuro, lo schermo spento tranne un piccolo punto di luce blu, una tazza di ceramica e un quaderno aperto accanto, luce morbida di tarda mattinata

Fino al 12 maggio, tra il momento in cui si lasciava il pulsante e quello in cui la voce rispondeva, lo schermo non mostrava nulla. Cinque, dieci, a volte quindici secondi senza un segno, e l'applicazione sembrava bloccata. Quella giornata è stata dedicata a quei silenzi: aloni che reagiscono alla voce, uno stato «sto pensando» che tiene accesa la sfera, una bolla tolta, e una frase breve, «ok, guardo», che l'assistente dice subito quando la risposta richiederà tempo.

Uno schermo che non ha altro da fare che rassicurare

L'applicazione ha un solo schermo, e su quello schermo, una sfera. Quando abbiamo progettato questa interfaccia perché non si vedesse, abbiamo accettato una contropartita: tutto ciò che l'applicazione fa deve potersi leggere su quella sfera, o da nessuna parte. Un'applicazione comune dispone di una rotella che gira, di una barra di avanzamento, di un pulsante in grigio. Qui c'è solo il movimento di una forma e una voce.

Finché la conversazione stava in uno scambio breve, bastava. Si tiene il pulsante, si parla, si lascia, la risposta arriva uno o due secondi dopo. Ma appena la richiesta esigeva una ricerca, una ricetta, un luogo, un guasto da diagnosticare, la risposta impiegava da cinque a sette secondi a partire. E quando trascrizione, modello e sintesi vocale si sommavano, si poteva aspettare quindici secondi senza che un pixel si muovesse. Lo schermo tornava a riposo nell'istante in cui il dito lasciava il pulsante, esattamente come se nessuno avesse sentito nulla.

La domanda posta dalle prime prove stava in una frase: «è bloccato o sta lavorando?» Si toccava lo schermo, si chiudeva una scheda, si ripeteva la richiesta. E a volte la risposta arrivava mentre la si stava ripetendo.

Quel 12 maggio, tra due prove di fotografie per le schede, è stato quindi dedicato a quei silenzi. Quattro cambiamenti, due sullo schermo, due nella voce, e un quinto per il caso in cui non c'è davvero nulla da dire.

Tarda mattinata: bordi che si accendono con la voce

Il primo segno mancante era il più semplice. Mentre si parla, nulla mostrava che il microfono stesse sentendo. La sfera pulsava al suo ritmo, lo stesso del riposo.

In tarda mattinata sono comparse due bande di luce lungo i bordi sinistro e destro dello schermo. Sono blu mentre l'utente parla, e la loro intensità non è un'animazione: viene dal livello sonoro misurato dal microfono più volte al secondo, convertito da una misura in decibel a un valore tra zero e uno, poi smussato perché l'alone respiri invece di lampeggiare. Quando si alza la voce, i bordi si accendono. Quando si tace cercando una parola, si calmano senza spegnersi. Il pulsante tenuto e i bordi che seguono la voce dicono la stessa cosa: ti sento, continua.

Per la voce dell'assistente non disponiamo dello stesso dato. Il lettore audio che riproduce la risposta non restituisce l'ampiezza in tempo reale. Invece di inventare un livello falso, gli aloni adottano un'oscillazione stilizzata, un ritmo vicino al parlato, circa tre cicli al secondo, in un altro colore. Il risultato dice «sta parlando» senza pretendere di misurare il volume. È un compromesso dichiarato: un alone che battesse al ritmo di una voce vera sarebbe più esatto, ma un alone che batte a un ritmo di voce è già onesto.

Un dettaglio di idraulica contava perché l'effetto reggesse. La misura del microfono non attraversa il codice dell'applicazione a ogni lettura: viene depositata in un valore condiviso che il motore di animazione legge direttamente sul thread di disegno. Senza quella scorciatoia, ogni lettura avrebbe fatto un viaggio in più, e un alone che segue la voce con ritardo non segue più nulla.

Mezzogiorno: rettangoli blu al posto degli aloni

La prima prova sul telefono ha mostrato altro che aloni. Due rettangoli blu, pieni, opachi, che si sovrapponevano al centro dello schermo. La conversazione dietro era illeggibile.

La causa stava nel gradiente. La prima versione disegnava gli aloni con un gradiente radiale vettoriale, i cui raggi orizzontale e verticale erano dati in percentuale dell'area. Su Android, quel modo di scrivere i raggi non viene compreso: la libreria rinuncia al gradiente e riempie tutto il rettangolo con il colore di partenza. Lo stesso codice, e il risultato era una lastra.

Gli aloni sono stati rifatti nel motore di disegno che già rende la sfera. Conosce solo gradienti radiali circolari; per ottenere un'ellisse, si applica al gradiente stesso una trasformazione che lo stira in verticale, senza toccare la geometria del rettangolo che lo porta. Ne esce una dissolvenza ellittica, affidabile sui telefoni provati, con le dimensioni del mockup: ogni alone occupa poco più della metà della larghezza dello schermo e deborda sopra e sotto, perché il bagliore sembri venire da dietro il bordo e non da un oggetto appoggiato sopra. Il volume non cambia la dimensione dell'alone, solo la sua opacità: ingrandire una forma a ogni lettura sarebbe costato caro in calcolo e avrebbe dato uno sgradevole effetto pompa.

La palette è stata rivista nel frattempo. Il blu resta quello dell'utente. Per l'assistente, il ciano iniziale ha ceduto il posto a un bagliore più caldo, lo stesso dell'alone della sfera quando parla, così che sfera e bordi raccontino insieme la stessa fase.

Lo stato che non esisteva: «sto pensando»

Il silenzio più lungo non era durante il parlato. Cominciava al rilascio del pulsante.

Lo schermo conosceva quattro stati: il riposo, l'ascolto, il parlato dell'assistente e la scrittura da tastiera. Tra l'ascolto e il parlato, nulla. Il dito lascia il pulsante, la registrazione parte, la trascrizione torna, il modello ragiona, chiama i suoi strumenti, la sintesi vocale fabbrica l'audio, e per tutto quel tempo lo stato era «riposo». La sfera risaliva al centro e pulsava tranquilla, come prima che le si parlasse. Da cinque a quindici secondi di calma perfetta, proprio quando l'applicazione lavorava di più.

È stato aggiunto un quinto stato: «pensa». Scatta nell'istante in cui il messaggio dell'utente si posa nel filo, che venga dalla voce o dalla tastiera. La sfera scende in fondo allo schermo, al posto che occupa quando l'assistente parla, con una didascalia sotto: «sto pensando…». Gli aloni laterali restano accesi, nella tinta calda dell'assistente, e continuano a respirare lentamente. La tastiera si ritira se era aperta, perché la sfera resti visibile. E un tocco sulla sfera interrompe, lo stesso gesto di metà di una risposta parlata, perché l'utente mantenga il controllo in ogni momento.

Due dettagli di transizione contavano. Primo, si entra in «pensa» solo dal riposo o dall'ascolto: se una trascrizione tardiva arriva quando l'assistente sta già parlando, non deve travolgere quella fase. Secondo, se ne esce appena arriva il testo della risposta, e non quando parte l'audio. Se il suono è attivo, la riproduzione prende subito il comando e la sfera passa a «parla» senza che si veda la cucitura. Se il suono è disattivato, non c'è riproduzione, e senza quell'uscita la sfera sarebbe rimasta in basso a pensare per sempre.

Pomeriggio: una bolla di troppo

Il primo pomeriggio è stato occupato dalle schede e dalle loro immagini. Tornando alla conversazione, una cosa è saltata all'occhio: durante la dettatura, una piccola bolla sotto la sfera diceva «ti ascolto». Era stata messa lì quando era l'unico segno che il microfono girava. Dalla mattina, i bordi dello schermo dicevano la stessa cosa, e meglio, perché seguivano la voce.

Due segnali per una sola informazione sono uno di troppo. La bolla è stata tolta. La trascrizione parziale che la alimentava viene ancora calcolata, nel caso un giorno serva altrove, ma non viene più mostrata. È la lezione inversa del resto della giornata: dire quello che si fa non vuol dire dirlo due volte.

«Ok, guardo»: la parola d'attesa

Restava il silenzio più fastidioso, quello che lo schermo da solo non poteva colmare.

Quando una richiesta esige una ricerca sul web, il modello concatena più strumenti prima di scrivere: interroga prima la memoria, lancia la ricerca, spesso salva il risultato in una scheda, e solo allora scrive la sua risposta, che passa poi alla sintesi vocale. Da cinque a sette secondi tra la fine della frase dell'utente e la prima parola dell'assistente. Lo stato «pensa» mostra che qualcosa gira, ma in una conversazione sette secondi di silenzio restano lunghi. Tra persone, nessuno tace sette secondi prima di rispondere: si dice «aspetta, guardo».

È quello che fa l'assistente da quel pomeriggio. Il direttore d'orchestra lato server, quello che fa girare il modello ed esegue i suoi strumenti, osserva la prima decisione del modello. Se quella prima decisione include una ricerca web, l'unico strumento della catena che impiega sistematicamente più di un secondo, fa partire subito una frase breve: «Ok, guardo, dammi un attimo.» Esistono cinque varianti, estratte a sorte ogni volta, «Un secondo, cerco», «Me ne occupo, due secondi», perché non si senta la stessa formula a ogni ricerca. Sono corte apposta: all'utente basta sapere che si va avanti.

Il punto importante è che questa frase non costa tempo. Il server non la aspetta: avvia la sintesi della frase e, in parallelo, esegue gli strumenti. Il testo parte verso il telefono immediatamente, l'audio segue mezzo secondo dopo, e nel frattempo la ricerca è già in corso. Quando arriva la risposta vera, arriva nello stesso momento di prima; semplicemente, il silenzio che la precedeva è stato riempito. Per restare scattante, la frase d'attesa usa la voce richiesta dal telefono senza andare a rileggere le preferenze nel database, al contrario della risposta finale. E se l'utente ha disattivato il suono, vede la frase nel filo senza che venga fabbricato alcun audio per niente.

Avremmo potuto far partire questa parola d'attesa su tutte le richieste. Non l'abbiamo fatto: uno strumento da solo risponde in meno di mezzo secondo, e una frase d'attesa davanti a una risposta immediata avrebbe reso l'assistente chiacchierone. La parola d'attesa è riservata al caso in cui l'attesa esiste.

E quando non c'è davvero nulla da dire

Un ultimo silenzio è stato trattato la stessa mattina, qualche minuto prima degli aloni, perché apparteneva alla stessa famiglia: quello in cui il modello non risponde affatto.

Tre situazioni lo producevano. Il modello va in crash a metà strada, un errore di rete o un server remoto che rifiuta. Il modello gira in tondo, chiama strumenti ancora e ancora e raggiunge il limite di iterazioni senza mai concludere con del testo. Oppure il modello restituisce una stringa vuota, cosa che capita più spesso di quanto si creda. In tutti e tre i casi la sfera restava muta, e l'utente non aveva modo di distinguere un guasto da un'attesa.

Ora ciascuno di questi casi produce una frase parlata, diversa a seconda della causa: un problema tecnico dalla nostra parte, un errore nel tentativo di fare quanto chiesto, o una risposta che non si è potuta completare, ogni volta con l'invito a riprovare o a riformulare. Se uno strumento è fallito ma il modello ha spiegato lui stesso il problema, teniamo la sua spiegazione, sempre più precisa di una formula preconfezionata. La risposta di riserva non è lì per fare bella figura: è lì perché la sfera non taccia mai senza un motivo detto.

Cosa ha insegnato la giornata

Un'applicazione senza schermo di navigazione non può permettersi il silenzio. Ogni secondo in cui nulla si muove è un secondo in cui l'utente si chiede se debba ricominciare, e ricominciare è il peggiore degli scenari: due richieste in volo, due risposte, una scheda doppia.

Quel 12 maggio ha ripartito la risposta tra lo schermo e la voce. Lo schermo dice la fase: ti ascolto, con bordi che seguono la voce; sto pensando, con una sfera che resta accesa; parlo, con un bagliore caldo. La voce dice l'attesa quando sarà lunga, e dice il fallimento quando avviene. Nessuno di questi segnali aggiunge latenza, e nessuno mente: l'alone dell'assistente non pretende di misurare la sua voce, la frase d'attesa non promette nulla più di una ricerca in corso.

È la regola che abbiamo tenuto da allora per tutto ciò che riguarda voce e conversazione: un assistente che lavora deve mostrarlo, un assistente che aspetta deve dirlo, e un assistente che fallisce deve dirlo anche lui. Il resto, la memoria, le schede, le ricerche, vale qualcosa solo se nel frattempo non si è chiusa l'applicazione credendola morta.

Da leggere dopo
XNeuronal è disponibile su AndroidUna memoria che deduce sta per arrivare