> For the complete documentation index, see [llms.txt](https://sponta.gitbook.io/jarvis/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://sponta.gitbook.io/jarvis/readme.md).

# Introduzione a Jarvis

Per interagire con un programma usiamo spesso pulsanti, menu e campi di testo. Un assistente vocale propone una possibilità diversa: formulare una richiesta parlando, con le parole che useremmo in una conversazione. Possiamo chiedere, per esempio, «Perché il cielo è blu?» e ricevere una spiegazione pronunciata ad alta voce.

Un **assistente vocale** è un sistema software che riceve richieste attraverso la voce e fornisce risposte o svolge le operazioni per cui è stato progettato. Non è semplicemente un registratore: deve ricavare dal suono una richiesta utilizzabile, elaborarla e restituire un risultato. Le sue capacità dipendono dai componenti e dai servizi che mette a disposizione.

## Che cos'è Jarvis

Jarvis è un assistente vocale conversazionale: il suo compito è rispondere a domande e permettere di proseguire lo scambio con chiarimenti e approfondimenti. È un'applicazione web, quindi la sua interfaccia si trova nel browser. La domanda può essere pronunciata al microfono oppure scritta; la risposta può essere letta sullo schermo e ascoltata attraverso una voce sintetica, cioè prodotta da un sistema informatico.

Lo scopo del progetto è mostrare come si costruisce questa interazione. Dietro un gesto apparentemente semplice — fare una domanda e ascoltare la risposta — collaborano componenti diversi. Uno acquisisce la voce, un altro la trasforma in testo, un altro ancora genera la risposta e un ultimo la rende udibile.

Jarvis è dedicato alla conversazione: non controlla il dispositivo e non effettua ricerche sul web. La capacità di produrre una risposta plausibile non garantisce che sia corretta; le informazioni importanti devono essere verificate.

## Dalla voce alla risposta

Immaginiamo di chiedere a Jarvis: «Perché il cielo è blu?». Per rispondere, il sistema deve affrontare quattro compiti:

1. **Acquisire il suono.** Il microfono raccoglie la voce e la rende disponibile al software come segnale audio.
2. **Trascrivere la domanda.** Un sistema di riconoscimento vocale trasforma quel segnale nelle parole «Perché il cielo è blu?».
3. **Generare una risposta.** Un modello linguistico, cioè un sistema di intelligenza artificiale che elabora e genera testo, riceve la domanda e costruisce una spiegazione.
4. **Dare voce al testo.** Un sintetizzatore vocale trasforma la spiegazione scritta in audio da riprodurre.

Questa distinzione è fondamentale: riconoscere le parole, formulare una risposta e pronunciarla sono problemi differenti. In Jarvis il modello linguistico lavora sul testo; non riceve direttamente la voce dal microfono. Anche la voce che ascoltiamo è prodotta da un componente distinto dal modello.

## Che cosa rende possibile una conversazione

Rispondere a una domanda isolata non basta. Dopo la spiegazione sul cielo potremmo chiedere «E perché al tramonto diventa rosso?». Per collegare le due domande, Jarvis conserva i messaggi dello scambio e li include nelle richieste successive al modello. Questo è il contesto della conversazione.

Il sistema deve anche gestire l'alternanza fra chi parla e chi ascolta. Deve riconoscere quando viene chiamato, stabilire quando la domanda è terminata, attendere la fine della propria risposta e offrire uno spazio per la replica. Deve inoltre permettere all'utente di interrompere una lettura e cambiare domanda. Il coordinamento di questi passaggi conta quanto la qualità della risposta: un assistente che parla sopra l'utente o rimane bloccato in ascolto rende difficile conversare.

## Rendere visibile ciò che accade

La voce da sola non spiega sempre che cosa stia facendo il programma. Jarvis affianca perciò alla conversazione un elemento grafico animato, chiamato **reattore**, che segnala le fasi di attesa, ascolto, elaborazione e risposta. Una vista chat mostra anche i messaggi scritti.

Il reattore e la chat non sono due assistenti: sono due modi di rappresentare la stessa conversazione. Il primo ne comunica soprattutto lo stato, la seconda permette di leggerne il contenuto.

## Dai concetti alle scelte tecniche

Nei capitoli successivi passeremo da questa visione d'insieme all'[architettura dell'applicazione](/jarvis/architettura.md), seguendo il percorso dei dati e le responsabilità dei diversi componenti. Ogni tecnologia verrà collegata al problema che risolve: come portare l'audio nel browser, come ottenere una risposta progressiva, come coordinare operazioni che terminano in momenti diversi.

La lettura procede dai concetti al funzionamento dei [moduli](/jarvis/moduli.md), fino alle scelte implementative e ai loro compromessi. Non interessa soltanto sapere quali strumenti usa Jarvis, ma capire perché sono stati separati, come comunicano e quali limiti comportano. Il [glossario](/jarvis/glossario.md) accompagna i termini tecnici; la [mappa del codice](/jarvis/riferimenti-codice.md) e il [laboratorio](/jarvis/laboratorio.md) permettono di approfondire e verificare le spiegazioni.
