C’è una categoria di software che negli ultimi due anni è cambiata più di quanto sembri, cioè la sintesi vocale. Fino a poco tempo fa, per ottenere una voce sintetica accettabile bisognava passare da un servizio cloud a consumo, con tanto di account, chiave API e testo spedito ai server di qualcun altro.
Kokoro-82M ribalta la situazione con un approccio diverso, ovvero un modello di text-to-speech con licenza Apache 2.0 che pesa poco più di 300 MB e gira senza problemi anche su un portatile privo di scheda grafica dedicata.
Il numero nel nome indica gli 82 milioni di parametri, una cifra minuscola se paragonata ai miliardi dei sistemi vocali commerciali. Eppure la qualità in uscita regge il confronto con soluzioni molto più pesanti, e la velocità è tale che su una GPU di fascia media un libro intero viene convertito in audio in pochi minuti. Le lingue supportate sono nove, tra cui l’italiano, con oltre cinquanta voci già pronte all’uso.
L’aspetto interessante non è però il modello in sé, quanto quello che ci puoi costruire attorno. Con due strumenti open source maturi, un server che espone API compatibili con quelle di OpenAI e un tool da riga di comando che digerisce EPUB e PDF, diventa possibile assemblare in mezz’ora una catena di lavoro che trasforma qualsiasi documento in un file audio da ascoltare ovunque, a casa, in palestra o in auto.
In questa guida vediamo come installarlo su Windows, Linux e macOS, quanto valgono le voci italiane e quali limiti conviene conoscere prima di iniziare.
Ottantadue milioni di parametri e nessuna GPU richiesta
L’architettura spiega bene perché Kokoro sia così leggero. Il modello si basa su StyleTTS 2, un sistema di sintesi vocale nato da un gruppo di ricerca della Columbia University, abbinato a ISTFTNet come vocoder, cioè il componente che traduce in onda sonora vera e propria i numeri prodotti dal modello.
La scelta tecnica decisiva è stata rinunciare alla diffusione, la stessa tecnica usata dai generatori di immagini. La diffusione produce risultati eccellenti, ma per ogni frammento di audio deve ripetere il calcolo decine di volte, partendo da un segnale casuale e ripulendolo poco alla volta. Kokoro salta tutto questo e genera l’onda sonora in un solo passaggio.
Il risultato è che la sintesi va molto più veloce del tempo reale anche senza acceleratore hardware, ovvero produrre un’ora di parlato richiede molto meno di un’ora. Sui test pubblicati dal progetto Kokoro-FastAPI, misurati su una RTX 4060 Ti, il rapporto va da 35x a 100x rispetto al tempo reale, con una media di circa 137 token al secondo.
Anche senza scheda video la cosa resta praticabile. Su un MacBook con chip M3 Pro l’attesa prima che parta la riproduzione resta sotto il secondo, mentre su un vecchio i7 desktop sale attorno ai tre secondi e mezzo, valore comunque accettabile per un ascolto non interattivo.
Il modello è stato addestrato esclusivamente su audio di pubblico dominio o con licenze permissive, più materiale sintetico generato da sistemi commerciali chiusi. Non ci sono cloni di voci di persone reali prese senza permesso, e le fonti sono elencate una per una nella scheda del modello.
L’intero addestramento è costato circa mille dollari di ore GPU, una cifra che dice molto su quanto sia diventato accessibile costruire modelli specializzati. La licenza Apache 2.0 copre i pesi, quindi il modello è utilizzabile anche in progetti commerciali senza vincoli particolari. Su Hugging Face viene scaricato oltre tredici milioni di volte al mese, numero che rende l’idea di quanto sia diventato popolare per la sintesi vocale in locale.
Kokoro e le due voci italiane
L’italiano in Kokoro esiste ed è utilizzabile, ma non è al livello dell’inglese. Le voci disponibili sono due, ovvero if_sara femminile e im_nicola maschile.
Entrambe ricevono dagli autori del progetto un voto complessivo C, contro il B- o l’A- delle migliori voci inglesi. La ragione è semplicemente la quantità di materiale usato per l’addestramento, che per l’italiano si misura in poche ore contro le decine di ore dell’inglese.
C’è poi una differenza tecnica che nell’uso quotidiano pesa parecchio. Prima di poter parlare, il modello deve convertire il testo scritto in fonemi, cioè nei singoli suoni che compongono le parole. Per l’inglese questo lavoro lo fa misaki, un motore sviluppato apposta dal progetto, con regole raffinate ed eccezioni gestite a mano.
Per l’italiano, invece, Kokoro si appoggia a espeak-ng, un sintetizzatore storico e affidabile ma basato su regole più rigide. La differenza la senti subito, perché le parole italiane comuni escono pronunciate bene, mentre i termini stranieri, gli acronimi e certi nomi propri possono uscire con bassa qualità.
Il problema si aggira con qualche accorgimento sul testo di partenza, e conviene prenderci la mano subito. Se un termine inglese ricorre spesso nel documento, sostituiscilo con una trascrizione fonetica italiana prima di dare il testo in pasto al modello.
Per le sigle vale un trucco diverso, cioè separare le lettere con dei punti o degli spazi (A.P.I. al posto di API), così il motore le scandisce una per una anziché tentare di leggerle come parola. Un banale sed o una ricerca-sostituzione nell’editor risolvono in pochi secondi.
sed -e 's/\bAPI\b/A.P.I./g' \
-e 's/\bsoftware\b/softuer/g' \
-e 's/\bcloud\b/claud/g' \
articolo.txt > articolo_pronuncia.txt
Il progetto Kokoro-FastAPI pubblica una verifica automatica interessante, in cui l’audio generato viene ritrascritto con Whisper e confrontato parola per parola con il testo di partenza. La voce if_sara ottiene un tasso di errore pari a zero su frasi brevi.
È un test limitato, e gli stessi autori lo dichiarano apertamente, ma dice almeno una cosa utile, cioè che l’italiano prodotto risulta pienamente comprensibile. Per ascoltare articoli tecnici, appunti e capitoli di libro il risultato è più che sufficiente; per un podcast destinato al pubblico, molto meno.
La via rapida, un container e un endpoint compatibile con OpenAI
Il modo più diretto per avere Kokoro funzionante è Kokoro-FastAPI, un progetto che impacchetta il modello dentro un server FastAPI e lo espone con lo stesso identico formato di API che OpenAI usa per la propria sintesi vocale.
Il vantaggio è immediato. Qualsiasi programma o script già scritto per dialogare con OpenAI funziona anche con Kokoro cambiando una sola riga, quella dell’indirizzo del server. Non serve imparare una nuova libreria e non serve riscrivere nulla.
Le immagini Docker sono già compilate per diverse architetture e contengono il modello al loro interno, quindi non c’è altro da scaricare oltre al container. Scegli quella adatta al tuo hardware.
| Hardware | Immagine |
|---|---|
| Nessuna GPU (portatile, VPS, server CPU) | kokoro-fastapi-cpu:latest |
| Apple Silicon M1/M2/M3 | kokoro-fastapi-cpu:latest |
| NVIDIA GTX 9xx fino a RTX 40xx | kokoro-fastapi-gpu:latest |
| NVIDIA RTX serie 50 (Blackwell) | kokoro-fastapi-gpu:latest-cu128 |
| AMD con ROCm (sperimentale) | kokoro-fastapi-rocm:latest |
L’avvio richiede una riga sola.
# Solo CPU
docker run -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-cpu:latest
# NVIDIA
docker run --gpus all -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-gpu:latest
# NVIDIA serie 50
docker run --gpus all -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-gpu:latest-cu128
A container avviato, all’indirizzo http://localhost:8880 trovi tre cose, ovvero l’API vera e propria, la documentazione interattiva su /docs e una piccola interfaccia web su /web da cui provare le voci senza scrivere una riga di codice.
Vale la pena partire proprio da lì per i primi test. Ascoltare if_sara e im_nicola mentre leggono un paio di paragrafi tuoi è il modo più rapido per capire se il risultato ti convince, e ti evita di perdere tempo a montare una catena di lavoro attorno a una voce che poi non sopporti.
Per generare un file audio dall’esterno bastano poche righe di Python. Il campo model va comunque valorizzato con kokoro, mentre la chiave API viene ignorata dato che il server gira in casa tua.
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8880/v1", api_key="non-serve")
with client.audio.speech.with_streaming_response.create(
model="kokoro",
voice="if_sara",
input="Questo testo viene sintetizzato interamente sul computer locale.",
response_format="mp3",
speed=1.0,
) as response:
response.stream_to_file("uscita.mp3")
Se preferisci restare su curl senza installare librerie, il risultato non cambia.
curl -X POST http://localhost:8880/v1/audio/speech \
-H "Content-Type: application/json" \
-d '{
"model": "kokoro",
"input": "Buongiorno, questa è una prova di sintesi vocale.",
"voice": "if_sara",
"response_format": "mp3",
"speed": 1.0
}' --output prova.mp3
I formati disponibili in uscita sono MP3, WAV, Opus, FLAC, M4A e PCM. Quest’ultimo serve per riprodurre l’audio mentre viene generato, senza attendere che il file sia completo, ed è la modalità da scegliere se stai costruendo qualcosa di interattivo.
Da EPUB ad audiolibro con un comando
Il server è la scelta giusta per integrare la sintesi dentro altri programmi, ma per convertire documenti esiste uno strumento più adatto, ovvero kokoro-tts. È un tool da riga di comando arrivato alla versione 2.3.1 ad aprile 2026 e distribuito con licenza MIT. Legge file TXT, EPUB e PDF, riconosce i capitoli e produce un file audio separato per ciascuno.
L’installazione passa da PyPI e conviene farla con uv, il gestore di pacchetti Python che sistema il tool in un ambiente isolato senza sporcare il resto del sistema.
Attenzione a un dettaglio che fa perdere tempo a molti, cioè la versione di Python richiesta. Al momento servono la 3.11 o la 3.12, mentre con la 3.13 l’installazione fallisce.
# Installazione con uv (consigliata)
uv tool install kokoro-tts
# In alternativa, con pip
pip install kokoro-tts
A differenza del container, qui il modello va scaricato a parte. Servono due file, ovvero il modello in formato ONNX e il pacchetto delle voci, ed entrambi devono trovarsi nella cartella da cui lanci il comando.
wget https://github.com/nazdridoy/kokoro-tts/releases/download/v1.0.0/kokoro-v1.0.onnx
wget https://github.com/nazdridoy/kokoro-tts/releases/download/v1.0.0/voices-v1.0.bin
Da qui in avanti va tutto liscio. Ecco come convertire un articolo salvato in testo semplice usando la voce italiana femminile.
kokoro-tts articolo.txt articolo.mp3 --lang it --voice if_sara --format mp3
Con un libro in formato EPUB la sintassi cambia poco, ma il comportamento sì. Il tool legge l’indice del file, individua i capitoli e genera un audio separato per ognuno dentro la cartella che gli indichi.
kokoro-tts libro.epub --split-output ./capitoli/ --lang it --voice im_nicola --format mp3
I PDF funzionano allo stesso modo, con un’avvertenza importante. La suddivisione in capitoli viene ricavata dal sommario se il file ne ha uno, altrimenti dal contenuto. Su documenti con impaginazione complessa, note a piè di pagina o testo su due colonne, il risultato rischia di uscire confuso, quindi conviene convertirli prima in testo pulito con uno strumento dedicato.
Ci sono poi due opzioni che nell’uso quotidiano fanno la differenza. La prima è --stream, che riproduce l’audio mentre viene prodotto anziché salvarlo su disco, comoda per ascoltare al volo qualcosa che ti hanno appena mandato.
# Legge subito il contenuto degli appunti (Linux, con xclip)
xclip -o | kokoro-tts - --stream --lang it --voice if_sara --speed 1.15
La seconda è --speed, che regola la velocità di lettura. Un valore attorno a 1,15 rende l’ascolto più scorrevole senza sacrificare la naturalezza, mentre sopra 1,3 la voce inizia a suonare affrettata.
Se hai già generato i capitoli separati e vuoi riunirli in un file unico, --merge-chunks fa il lavoro senza costringerti a passare da altri programmi.
Kokoro: mescolare le voci e domare i blocchi di testo
Una funzione poco pubblicizzata di Kokoro è la possibilità di fondere due voci in una terza. Le voci non sono registrazioni ma piccoli tensori, cioè insiemi di numeri che descrivono le caratteristiche del parlato, e la media pesata di due tensori produce una voce intermedia perfettamente utilizzabile.
Sul server i pesi si indicano tra parentesi e vengono poi riproporzionati in automatico fino a sommare 100%.
# Mix 67% / 33% tra due voci
curl -X POST http://localhost:8880/v1/audio/speech \
-H "Content-Type: application/json" \
-d '{"input": "Prova di voce mista.", "voice": "if_sara(2)+im_nicola(1)", "response_format": "mp3"}' \
--output mix.mp3
Con il tool da riga di comando la stessa cosa si scrive con i due punti e le percentuali, ad esempio --voice "if_sara:60,im_nicola:40". Il risultato non è sempre migliore delle voci originali, però su testi lunghi aiuta a ottenere un timbro meno riconoscibile e in qualche caso a compensare i difetti di una delle due.
Il secondo aspetto da conoscere riguarda la lunghezza del testo. Il modello elabora al massimo 510 token fonetici per volta, che corrispondono grosso modo a mezzo minuto di parlato, quindi qualsiasi documento più lungo va spezzato in pezzi.
Sia il server sia il tool da terminale lo fanno per conto loro, tagliando ai confini di frase e ricucendo l’audio, ma il punto esatto in cui tagliano influisce sul risultato finale. I blocchi troppo lunghi fanno accelerare la voce verso la fine, quelli troppo corti potrebbero introdurre pause innaturali e intonazioni sbagliate.
Sul server questi valori si controllano da variabili d’ambiente e partono da 175, 250 e 450 token.
docker run -p 8880:8880 \
-e TARGET_MIN_TOKENS=150 \
-e TARGET_MAX_TOKENS=220 \
-e ABSOLUTE_MAX_TOKENS=400 \
ghcr.io/remsky/kokoro-fastapi-cpu:latest
Se noti che la voce “corre” negli ultimi secondi di ogni frammento, abbassare TARGET_MAX_TOKENS è il primo intervento da provare.
C’è infine un endpoint che merita attenzione se lavori con i video, ovvero /dev/captioned_speech, che restituisce l’audio insieme ai tempi di inizio e fine di ogni singola parola. Da quelle informazioni ricavare un file di sottotitoli sincronizzato richiede poche righe di codice, e questo rende Kokoro utilizzabile anche come voce fuori campo per montaggi automatici.
Un’ultima nota riguarda un comportamento che genera parecchia confusione. Il server normalizza il testo in ingresso prima di sintetizzarlo, cioè espande numeri e simboli scrivendoli per esteso. Di solito è proprio quello che serve, ma se il tuo testo contiene notazioni particolari che vengono alterate puoi disattivare la funzione aggiungendo "normalization_options": {"normalize": false} alla richiesta.
I confini di Kokoro e le alternative da tenere presenti
Nessuno strumento va bene per tutto, e conviene chiarire i limiti prima di investirci tempo. Il più evidente è che Kokoro non clona voci. Puoi scegliere tra quelle incluse e mescolarle, ma non puoi dargli trenta secondi della tua voce e ottenere un modello che parla come te.
È una scelta di progetto, coerente con la posizione presa sui dati di addestramento, non una mancanza tecnica destinata a essere risolta.
Manca poi qualsiasi controllo esplicito sull’emozione o sull’enfasi. Il modello legge con un tono uniforme e piacevole, adatto alla narrazione, ma non c’è modo di chiedergli entusiasmo in una frase e gravità in quella successiva. Per leggere documenti va benissimo; per doppiare un dialogo con personaggi diversi, no.
Il panorama del 2026 offre molte alternative, e vale la pena sapere quali sono. Chatterbox, sviluppato da Resemble AI su una base Llama da mezzo miliardo di parametri e distribuito con licenza MIT, clona una voce partendo da una decina di secondi di registrazione e offre un controllo sull’espressività, con una variante multilingua che copre oltre venti lingue. Il prezzo da pagare è un modello più pesante e una dipendenza molto più marcata dalla GPU.
All’estremo opposto c’è Piper, che punta tutto sulla leggerezza. Gira in tempo reale persino su un Raspberry Pi 4 e copre più di trenta lingue con file per voce di pochi megabyte, però il timbro resta chiaramente sintetico e la differenza si sente.
La mia lettura è che Kokoro occupi il punto di equilibrio più utile per l’uso personale. Se ti serve ascoltare documenti mentre fai altro, la combinazione di dimensioni contenute, licenza permissiva e velocità su hardware qualsiasi ha per ora pochi veri concorrenti. Se invece cerchi la tua voce, o un controllo fine sull’interpretazione, Kokoro non è lo strumento giusto.
Mezz’ora ben spesa per chi accumula letture arretrate
Kokoro è uno di quei progetti che affrontano un problema circoscritto e lo risolvono bene, senza pretendere di diventare la piattaforma definitiva per qualcosa. Ottantadue milioni di parametri, trecento megabyte su disco, licenza Apache 2.0 e una velocità che rende irrilevante la questione della scheda video. Sono numeri che spostano la sintesi vocale dalla categoria dei servizi a pagamento a quella delle piccole utility che tieni installate e usi senza pensarci.
Per l’italiano il quadro è meno brillante con qualche compromesso accettabile per ascoltare un articolo o un capitolo mentre cammini; diventano un ostacolo se stai producendo qualcosa destinato ad altri.
Il consiglio operativo, se vuoi partire senza perdere tempo, è di installare prima il container di Kokoro-FastAPI per capire se il risultato ti convince, e passare al tool da riga di comando solo se deciderari di processare libri interi. Le due strade non si escludono e metterle in piedi entrambe costa pochi minuti.













