Questo è un tutorial breve e intelligente per utilizzare Piper TTS per addestrare una rete neurale con la tua voce.
Introduzione
Piper TTS è un motore di sintesi vocale (text-to-speech) neurale open source, focalizzato su progetti self-hosted (ospitati localmente). È sviluppato dalla Open Home Foundation.
Link al repository GitHub
Caratteristiche Principali
- Completamente Offline: Nessun dato lascia la tua macchina. Una volta scaricati i modelli vocali, non hai bisogno di una connessione internet.
- Velocità Incredibile: Utilizza il runtime ONNX (Open Neural Network Exchange), rendendolo molto più veloce di molti altri sistemi TTS basati su AI come Tortoise o XTTS.
- Requisiti Bassi: È ottimizzato per dispositivi ARM a basso consumo (come Raspberry Pi o Jetson Nano) ma funziona benissimo anche su Windows, Linux e macOS.
- Ampio Supporto Linguistico: Supporta oltre 40 lingue e centinaia di voci, spaziando dall’inglese e lo spagnolo a inclusioni più rare come Swahili, Kazako e Gallese.
Livelli di Qualità della Voce
Piper offre voci in quattro livelli per bilanciare qualità e prestazioni:
- x_low: Modelli minuscoli (5-7M parametri), estremamente veloci, audio a 16kHz.
- low: Piccoli e veloci con una qualità decente.
- medium: Il punto di equilibrio (“sweet spot”) per la maggior parte degli utenti; audio a 22kHz con intonazione naturale.
- high: I modelli più grandi (28-32M parametri) con la migliore chiarezza, ma richiedono più potenza della CPU.
Casi d’Uso
Grazie alla sua velocità e privacy, è il motore principale utilizzato in:
- Home Assistant: È l’impostazione predefinita per il progetto di assistente vocale locale “Year of the Voice”.
- Strumenti di Accessibilità: Screen reader o plugin (come l’estensione Piper per VS Code) che necessitano di feedback istantaneo.
- E-book Reader: Le persone lo usano spesso per trasformare localmente gli EPUB in audiolibri senza pagare per i crediti delle API cloud.
Addestrare la Tua Voce
Basandosi sulla documentazione ufficiale per addestrare la propria voce, devi prima installare le dipendenze su Linux o Windows (via WSL).
Installazione & Configurazione dell’Ambiente
Installa le dipendenze di sistema:
| |
Clona e installa Piper:
| |
| |
Troubleshooting
Errore su build_monotonic_align.sh
Se ricevete il seguente errore quando eseguite lo script sh
| |
è necessario modificare il file /piper1-gpl/src/piper/train/vits/monotonic_align/core.pyx
| |
Allo snippet di codice
| |
aggiungere
| |
e allo snippet
| |
aggiungere
| |
Il codice finale dovrebbe essere questo:
| |
Preparare il Tuo Dataset (Esempio Dataset Italiano)
A. File Audio (.wav)
- Registra te stesso mentre parli in una stanza silenziosa (senza eco/rumore).
- Salva i file come WAV.
- Idealmente, convertili in 22050 Hz, 16-bit, Mono (Piper può processarne altri, ma questo è il formato target).
- Mettili tutti in una cartella, es.
/home/user/my-voice-dataset/wavs/.
B. I Metadati (metadata.csv)
Crea un file chiamato metadata.csv. Deve usare il simbolo pipe | come separatore.
- Formato:
nomefile.wav|Testo italiano qui
C. Esempio di Dataset
(Vedi la sezione originale per l’elenco delle frasi in italiano, sono già perfette).
Consigli di Registrazione per la Migliore Qualità:
- Coerenza: Cerca di registrare tutto in un’unica sessione in modo che il tono della voce e la distanza dal microfono rimangano gli stessi.
- Silenzio: Lascia 0,5 secondi di silenzio all’inizio e alla fine di ogni registrazione.
- Formato: Se possibile, imposta il tuo software di registrazione (come Audacity) per salvare come Mono, 22050Hz, 16-bit WAV.
- Performance: Leggi in modo naturale! Se leggi come un robot, l’AI suonerà come un robot. Se leggi con emozione, l’AI imparerà quell’emozione.
Scaricare un Checkpoint Base
La documentazione raccomanda vivamente di usare un checkpoint esistente (“finetuning”) piuttosto che addestrare da zero. Questo rende il processo molto più veloce e richiede meno dati (15-30 minuti di audio sono spesso sufficienti per un risultato decente).
Scarica un checkpoint di qualità
medium(*.ckpt).- Suggerimento: Se riesci a trovare un checkpoint italiano (come
it_IT-riccardo-medium.ckpt), è l’ideale. - Se no, uno inglese (come
en_US-sam-medium.ckpt) funzionerà comunque; il modello “imparerà” l’accento italiano dai tuoi dati.
- Suggerimento: Se riesci a trovare un checkpoint italiano (come
Posizionalo in un luogo accessibile, es.
/home/user/piper-checkpoints/epoch=2000.ckpt.
Consiglio non richiesto: Scegliete preferibilmente modelli più recenti rispetto a quelli più vecchi, se non volete avere problemi con la configurazione.
Workaround Versioni vecchie di Piper
In accordo alla documentazione ufficiale Only medium quality checkpoints are supported without tweaking other settings., significa che solo i checkpoints Medium quality funzionano con l’ultima versione di Piper. Infatti molti checkpoints presenti nel repository huggingface non funzioneranno con l’attuale versione di piper e richiedono questa configurazione https://github.com/rhasspy/piper/blob/9b1c6397698b1da11ad6cca2b318026b628328ec/src/python/piper_train/vits/config.py#L20
Eseguire il Comando di Training
Questo è il comando personalizzato per la tua voce Italiana.
--data.espeak_voice "it": Questo dice al sistema di pronunciare il testo usando le regole italiane.- Percorsi: Aggiorna i segnaposto
/path/to/...con le posizioni reali dei tuoi file.
| |
Workaround
Hardware Warning
Hardware Warning: Se hai una GPU con meno di 24GB di VRAM (come una RTX 3060 o 4070), potresti ricevere un errore “Out of Memory”. Se succede, abbassa la dimensione del batch: Cambia --data.batch_size 32 in 16 o 8.
ImportError: cannot import name ’espeakbridge
Significa che manca il file compilato espeakbridge.so
| |
Compila il modulo mancante:
| |
Monitorare l’avanzamento:
Apri un altro terminale linux, attiva l’ambiente (venv di python nel piper folder) e lancia TensorBoard:
| |
Apri il browser su Windows e vai all’indirizzo che appare (di solito localhost:6006) per vedere i grafici e ascoltare le anteprime audio.
Esportare il modello finale (.onnx):
Una volta soddisfatto (quando la “loss” nel grafico smette di scendere e l’audio suona bene), devi convertire il checkpoint .ckpt in un file .onnx utilizzabile.
Trova il file .ckpt più recente in /mnt/c/piper_training/output_model/lightning_logs/version_0/checkpoints/.
| |
Questo creerà final_model.onnx e final_model.onnx.json pronti per essere usati con Piper TTS.
Esportare la Tua Voce
Una volta terminato l’addestramento (o quando lo fermi perché la “loss” è abbastanza bassa), esporta il modello in formato ONNX per utilizzarlo.
| |
Passaggi Finali:
Rinomina il tuo file config:
cp /home/user/my-voice-dataset/config.json my_italian_voice.onnx.jsonOra hai la coppia necessaria per usare la voce:
my_italian_voice.onnxmy_italian_voice.onnx.json
