Per anni clonare una voce ha significato affidarsi a servizi a pagamento come ElevenLabs, caricando il campione audio sui server di un’azienda e pagando un abbonamento mensile. VoxCPM2 porta la stessa funzione su un PC di casa, con pesi e codice rilasciati sotto licenza Apache 2.0, quindi utilizzabili anche in ambito commerciale.
Il progetto nasce da OpenBMB, la comunità open source legata alla società ModelBest e all’Università Tsinghua di Pechino, che sviluppa anche i modelli linguistici MiniCPM. Su GitHub ha raccolto circa 35.000 stelle, e la seconda versione, uscita ad aprile 2026, ne ha cambiato la portata. Le lingue passano da due a 30, italiano compreso, e arrivano due funzioni assenti nelle versioni precedenti.
La prima è il voice design, cioè la possibilità di creare una voce che non esiste descrivendola con una frase, del tipo “uomo anziano, voce calda, ritmo lento”. L’altra è la clonazione controllabile, che non solo copia il timbro da un breve campione ma ne lascia anche regolare emozione e velocità.
Il modello conta 2 miliardi di parametri e produce audio a 48 kHz, la frequenza di campionamento usata nei video professionali. Per verificare come si comporta l’ho installato su Windows con una GeForce GTX 1070 da 8 GB, una scheda del 2016, e gli ho fatto leggere testi in italiano con cinque configurazioni diverse. Qui trovi installazione, risultati della prova, codice pronto da copiare e limiti.
Perché VoxCPM2 non spezza l’audio in simboli
Gran parte dei sistemi di sintesi vocale recenti ragiona come un chatbot. Un tokenizer audio trasforma la voce in una sequenza di unità discrete, una specie di alfabeto sonoro, e un modello linguistico impara a prevedere quella successiva. Il metodo regge bene, però ogni conversione perde qualche sfumatura, un po’ come una foto salvata più volte in JPEG.
VoxCPM2 salta questo passaggio, motivo per cui gli autori lo definiscono tokenizer-free. La rete lavora direttamente su un segnale continuo, prodotto da AudioVAE V2, un autoencoder che comprime l’audio e poi lo ricostruisce.
L’architettura combina due tecniche. Un primo blocco autoregressivo, costruito sul modello linguistico MiniCPM-4, decide cosa dire e con quale intonazione. Un secondo componente a diffusione rifinisce poi i dettagli acustici partendo dal rumore, con lo stesso principio dei generatori di immagini.
Chi ha letto la guida a Kokoro TTS pubblicata su queste pagine ricorderà che proprio questa tecnica era stata evitata da quel modello per restare leggero. Le due scelte rispondono a esigenze opposte. Kokoro, che occupa appena 300 MB, legge velocemente anche senza scheda video ma offre solo voci predefinite. VoxCPM2 è circa venticinque volte più grande e chiede una GPU, in cambio di voci che si possono inventare o clonare.
L’addestramento ha usato oltre 2 milioni di ore di parlato in più lingue. AudioVAE V2 analizza il campione di riferimento a 16 kHz e restituisce direttamente audio a 48 kHz, grazie a una super-risoluzione integrata che evita di passare da un programma esterno per migliorare la qualità. Il modello ricava inoltre l’intonazione dal contenuto del testo. Una domanda suona come tale, un elenco riceve le giuste pause, senza dover inserire marcatori speciali né indicare la lingua, che viene riconosciuta in automatico.
VoxCPM2: tre modi per ottenere una voce
VoxCPM2 offre tre modalità, tutte richiamate dalla stessa funzione generate() della libreria Python.
- Voice design. Basta una descrizione tra parentesi tonde all’inizio del testo, con genere, età, tono, emozione e velocità. Non occorre alcun file audio.
- Clonazione controllabile. Si fornisce un campione della voce da copiare, idealmente tra 5 e 30 secondi e registrato senza rumore di fondo. Resta possibile aggiungere un’indicazione di stile, per esempio un tono più allegro.
- Clonazione completa. Oltre al campione serve la sua trascrizione esatta. Il modello prosegue l’audio come se la persona continuasse a parlare e conserva ritmo, respiro ed emozione, ma non accetta istruzioni aggiuntive.
Il codice Python seguente mostra le tre modalità in sequenza. Il parametro optimize=False disattiva la compilazione automatica di PyTorch, che su Windows richiede componenti aggiuntivi.
from voxcpm import VoxCPM
import soundfile as sf
model = VoxCPM.from_pretrained("openbmb/VoxCPM2", load_denoiser=False, optimize=False)
sr = model.tts_model.sample_rate
# Voice design: la descrizione va tra parentesi, prima del testo
wav = model.generate(
text="(An elderly man, warm deep voice, slow pace, reassuring tone)"
"C'era una volta, in un piccolo paese di montagna, un orologiaio che non sbagliava mai l'ora.",
cfg_value=2.0,
inference_timesteps=10,
)
sf.write("racconto.wav", wav, sr)
# Clonazione controllabile: timbro dal campione, stile dalle parentesi
wav = model.generate(
text="(cheerful tone)Questa voce è stata clonata da un breve campione audio.",
reference_wav_path="campione.wav",
)
sf.write("clone.wav", wav, sr)
# Clonazione completa: campione più trascrizione parola per parola
wav = model.generate(
text="Questo è il testo da far pronunciare con la voce clonata.",
prompt_wav_path="campione.wav",
prompt_text="Trascrizione esatta di quello che si sente nel campione.",
reference_wav_path="campione.wav",
)
sf.write("clone_fedele.wav", wav, sr)
Due parametri influenzano il risultato. cfg_value stabilisce quanto il modello debba attenersi al testo, con valori consigliati tra 1 e 3. Salendo la pronuncia diventa più fedele ma aumenta il rischio di artefatti, mentre scendendo la voce suona più rilassata. inference_timesteps indica invece quanti passaggi di diffusione eseguire. Il valore predefinito è 10, e alzarlo fino a 30 aggiunge dettaglio a scapito della velocità.
La documentazione dichiara il supporto alle istruzioni in inglese e in cinese, e conviene rispettare questa indicazione anche quando si lavora un testo in altre lingue come l’italiano. Per verificarlo ho fatto pronunciare la stessa frase due volte, cambiando solo la parte tra parentesi e lasciando invariati gli altri parametri (cfg_value=2.0, inference_timesteps=10).
Ecco il prompt con la descrizione in italiano.
(Un uomo anziano, voce calda e profonda, ritmo lento e tono rassicurante)
C'era una volta, in un piccolo paese di montagna, un orologio
che non sbagliava mai l'ora.Questa è invece la variante con la descrizione tradotta in inglese, mentre il testo da leggere resta in italiano.
(An elderly man, warm deep voice, slow pace, reassuring tone)
C'era una volta, in un piccolo paese di montagna, un orologio
che non sbagliava mai l'ora.La versione italiana ha generato il file it_design.wav, della durata di 7,2 secondi, l’altra il file it_design_en.wav, lungo 6,4. In entrambi i casi la descrizione non viene pronunciata e la lettura arriva completa e corretta. A cambiare è la voce.
prompt in italiano
prompt in inglese
Se ascolti i due file la differenza si sente subito. Con la descrizione in italiano il timbro esce decisamente alto e femminile, lontano dalla voce grave richiesta. La versione con prompt in inglese suona invece più fedele alla richiesta, con il tono basso e pacato del narratore descritto nel prompt.
Il modello capisce anche le istruzioni in italiano, ma le applica in modo più blando o forse di default. Lo stesso succede con la clonazione. Quindi se vuoi un risultato fedele al prompt, scrivi le descrizioni in inglese e lascia in italiano solo il testo da replicare.
Installazione su Windows con una scheda del 2016
I requisiti ufficiali sono Python dalla 3.10 alla 3.12, PyTorch 2.5 o successivo e CUDA 12. La release 3.14, già diffusa su molti PC, rischia di bloccare la procedura, perciò conviene isolare tutto in una cartella dedicata. Io ho usato uv, il gestore di dipendenze di Astral, che scarica da solo anche l’interprete corretto.
mkdir C:\voxcpm-test
cd C:\voxcpm-test
uv venv --python 3.11 .venv
.venv\Scripts\activate
# PyTorch con CUDA 12.6, che supporta anche le GeForce serie 10
uv pip install torch==2.7.1 torchaudio==2.7.1 --index-url https://download.pytorch.org/whl/cu126
# La libreria VoxCPM e le sue dipendenze
uv pip install voxcpm
La scelta della build cu126 serve a chi ha una scheda della generazione Pascal, come GTX 1060, 1070 o 1080, perché i pacchetti di PyTorch basati su CUDA 12.8 non includono più queste GPU. Con una RTX recente puoi installare il pacchetto standard indicato sul sito ufficiale.
Tutto l’ambiente occupa 5,7 GB. Al primo avvio la libreria scarica da Hugging Face altri 4,96 GB di pesi, salvati nella cartella .cache\huggingface del profilo Windows. Lo spazio complessivo supera quindi i 10 GB.
Durante la prova è emerso un intoppo. Gli esempi del README usano un parametro seed, utile per ottenere sempre la stessa voce, che però non esiste nella versione 2.0.3 distribuita tramite pip, l’ultima disponibile a ottobre 2026. Il risultato è un errore TypeError immediato. La soluzione più rapida è togliere quell’argomento.
Per chi preferisce evitare Python ci sono tre strade alternative.
- Riga di comando. Il pacchetto installa l’eseguibile
voxcpm, con le funzionidesign,cloneebatchper elaborare un file di testo riga per riga. - Interfaccia web. Clonando il repository si avvia una demo nel browser con
python app.py --port 8808, raggiungibile suhttp://localhost:8808. - ComfyUI. Diversi nodi sviluppati dalla comunità integrano il modello nell’editor visuale già usato per la generazione di immagini.
Cosa è uscito dalla GTX 1070
Il modello si è caricato in 16,6 secondi ed è partito in bfloat16, un formato numerico a precisione ridotta che la GTX 1070 non accelera in hardware ma che PyTorch gestisce senza errori. La memoria video occupata non ha mai superato 6,2 GB. L’RTF, acronimo di real-time factor, è il rapporto tra tempo di calcolo e durata dell’audio. Sotto 1 la sintesi procede più veloce della riproduzione, sopra 1 bisogna aspettare più a lungo di quanto duri la registrazione. La GTX 1070 richiede circa due minuti e mezzo per sessanta secondi di voce. Su una RTX 4090 la stessa elaborazione richiede meno di un terzo del tempo.
Per mettere alla prova la clonazione con una voce italiana riconoscibile ho scelto quella dello storico Alessandro Barbero. Da una sua conferenza pubblicata su YouTube ho estratto con yt-dlp, lo strumento da riga di comando a cui abbiamo dedicato un articolo, appena 12 secondi di parlato pulito, senza musica né rumori di sala. Ho poi trascritto lo spezzone a mano, parola per parola, perché la clonazione più fedele ha bisogno del testo esatto di ciò che si sente.
Il primo tentativo è avvenuto in modalità ultimate cloning, passando lo stesso file sia come prompt_wav_path sia come reference_wav_path, insieme alla trascrizione. Secondo il README è la combinazione che garantisce la somiglianza più alta. Come parametri ho usato device="cuda", load_denoiser=False, che evita di caricare il filtro antirumore e risparmia memoria video, cfg_value=2.0, inference_timesteps=10.
from voxcpm import VoxCPM
import soundfile as sf
model = VoxCPM.from_pretrained("openbmb/VoxCPM2", device="cuda", load_denoiser=False)
wav = model.generate(
text="Testo da sintetizzare.",
prompt_wav_path="ref12s.wav",
prompt_text="trascrizione esatta dello spezzone",
reference_wav_path="ref12s.wav",
cfg_value=2.0, inference_timesteps=10,
)
sf.write("out.wav", wav, model.tts_model.sample_rate) # 48 kHzCome testo da leggere ho scelto il primo paragrafo di questo articolo. Il risultato è stato buono fin da subito, ma la lettura correva troppo, con un ritmo molto più serrato di quello usuale di Barbero.
Rallentare ha richiesto qualche ritocco. In modalità ultimate cloning sono passato alla clonazione controllabile, che parte dallo stesso campione ma accetta indicazioni di stile. Inoltre in testa al testo ho aggiunto una descrizione in inglese.
(Extremely slow elderly narrator, very tired calm voice, plodding measured pace, with long pauses at every period, comma and paragraph break)Il risultato, che puoi ascoltare qui sotto, è abbastanza fedele al timbro del professor Alessandro Barbero. Non male considerando che si tratta di un progetto gratuito eseguibile in locale anche su una GPU datata.
Limiti, usi corretti e alternative
La clonazione vocale porta con sé un rischio evidente, e gli sviluppatori vietano esplicitamente l’uso del modello per truffare o diffondere disinformazione. Accanto ai rischi esistono però usi del tutto legittimi, alcuni già praticabili oggi e altri che sembrano usciti da un romanzo di fantascienza.
- Voce di riserva. Chi sa di dover perdere la voce per una malattia o un intervento può registrarne qualche minuto finché è in tempo, e continuare a parlare con il proprio timbro attraverso un comunicatore vocale.
- Doppiaggio personale. Un divulgatore o un creatore di contenuti può pubblicare lo stesso video in inglese o in spagnolo conservando il proprio stile, sfruttando le 30 lingue del modello.
- Audiolibri d’autore. Uno scrittore può far leggere i propri libri con la sua voce senza passare settimane in sala di registrazione, correggendo solo i passaggi venuti male.
- Memoria di famiglia. Dalle registrazioni domestiche di un parente scomparso si può ricostruire la sua voce per narrare ai nipoti la favola della buonanotte o per conservarne il ricordo, sempre con l’accordo di tutti i parenti.
- Musei con robot narranti. In futuro un umanoide potrebbe accogliere i visitatori con la voce di uno scienziato o di uno scrittore non più in vita, ricostruita dai documenti d’archivio, per illustrare di persona la sua opera.
- Assistenti con una voce propria. Grazie al voice design un dispositivo domestico o un’app vocale può avere un timbro creato da zero, riconoscibile e diverso da quello di qualsiasi individuo reale.
In tutti questi casi valgono due regole. Serve il consenso della persona o, se non c’è più, dei suoi eredi, e chi ascolta deve sapere che la voce è sintetica. Un automa che parla con la voce di un divulgatore scomparso può emozionare, ma solo se nessuno lo scambia per l’originale.
Per una voce sempre uguale, utile a un podcast o a un assistente, il progetto include un sistema di fine-tuning LoRA. Bastano dai 5 ai 10 minuti di registrazione per adattare il modello a una persona specifica. Chi vuole integrarlo in un servizio può invece usare vLLM-Omni, che espone un endpoint identico a quello vocale di OpenAI, oppure llama.cpp-omni, che lo esegue senza Python grazie ai pesi in formato GGUF.
Ci sono poi alcune alternative da valutare in base all’uso.
- Kokoro TTS. Resta lo strumento più comodo per far leggere libri e articoli su un portatile qualsiasi, ma non clona voci.
- Qwen3-TTS. Nei test pubblicati dal team di VoxCPM ottiene risultati migliori in italiano, ma copre un numero inferiore di idiomi.
- Fish Audio S2. Ha il tasso di errore più basso in molte lingue, ma con 4 miliardi di parametri chiede più memoria video.
Riproduzione e clonazioni in locale sono una realtà
La parte che convince di più è la qualità dell’italiano e della clonazione. Bastano 12 secondi di un parlato per avere una voce che ricorda da vicino quella di chi parla. Fino a poco tempo fa, per ottenere un italiano così pulito partendo da un campione, la strada più semplice passava da un servizio cloud a pagamento.
Se ti serve solo una voce che legga testi, Kokoro resta più pratico. Se invece vuoi una voce narrante su misura, doppiare un tuo video in un’altra lingua mantenendo il tuo timbro o dare un carattere preciso a un personaggio, VoxCPM2 è oggi il progetto open source più completo da provare. Se vuoi provarlo in remoto, puoi usare il link https://voxcpm2.org/













