Studio professionale di sintesi vocale utilizzando Chatterbox con interfaccia web Gradio e gestione completa di voci e testi.
- 🌐 Interfaccia Web Gradio - Interfaccia grafica moderna e professionale
- ✨ Sintesi vocale multilingue - Supporto per 23 lingue
- 🎙️ Gestione voci - Crea, modifica ed elimina voci direttamente dall'interfaccia
- 📝 Gestione testi - Upload, modifica ed elimina file di testo
- ⚡ Batch processing - Genera audio per più testi contemporaneamente
- 📊 Cronologia e statistiche - Traccia tutte le generazioni con statistiche dettagliate
- 📜 Scripts per registrazione - Guide complete per clonazione vocale
- 📁 Riferimenti audio multipli - Concatena automaticamente più file audio per voce
- 🎵 Export multiplo - Output in formato WAV e MP3
- ⚙️ Configurazione centralizzata - Tutte le impostazioni in un unico file
- 🎛️ Preset audio - Configurazioni predefinite (Espressivo, Neutro, Conservativo)
chatterbox_demo/
├── main-web.py # 🌐 Interfaccia Web Gradio (NUOVO!)
├── start_web.bat # 🚀 Avvio rapido interfaccia web
├── main.py # Script da riga di comando
├── config.py # Configurazioni
├── utils/
│ ├── web_handlers.py # Handler logica web
│ ├── web_ui.py # Costruzione UI Gradio
│ ├── gradio_helpers.py # Helper per Gradio
│ ├── audio_generator.py # Generazione audio
│ ├── audio_utils.py # Utility audio
│ ├── text_utils.py # Utility testo
│ ├── text_splitter.py # Divisione testi lunghi
│ ├── voice_manager.py # Gestione voci
│ ├── output_manager.py # Gestione output
│ ├── history_manager.py # Cronologia generazioni
│ └── setup_utils.py # Setup e configurazione
├── input/
│ ├── voice/ # Cartelle delle voci
│ │ ├── voce1/ # Voce esempio 1
│ │ │ ├── sample1.wav
│ │ │ └── sample2.wav
│ │ └── voce2/ # Voce esempio 2
│ │ ├── sample1.ogg
│ │ └── sample2.ogg
│ └── textToGenerate/ # File di testo
│ ├── text1.txt
│ └── text2.txt
├── output/ # File generati
│ ├── wav/ # Audio WAV
│ ├── mp3/ # Audio MP3
│ └── history/ # Cronologia generazioni
├── script_clonazione_vocale.md # Script registrazione (100 frasi)
├── script_medio_clonazione_vocale.md # Script medio (50 frasi)
└── script_base_clonazione_vocale.md # Script base (25 frasi)
Vuoi iniziare subito? Segui questi passi:
# Clona o scarica il progetto
cd chatterbox_demo
# Crea ambiente virtuale
python -m venv venv
# Attiva ambiente
venv\Scripts\activate # Windows
source venv/bin/activate # Linux/Mac
# Installa dipendenze
pip install -r requirements.txt
pip install -e ./chatterbox# Crea cartella voce
mkdir input/voice/test
# Copia 3-5 file audio (WAV, MP3, OGG) nella cartella
# Oppure registra clip audio di 5-10 secondi della tua voce# Windows
start_web.bat
# Linux/Mac
python main-web.pyApri il browser su: http://localhost:7860
- Tab 🎬 Generate
- Seleziona voce "test"
- Scrivi un testo o selezionane uno esistente
- Click Generate
- Ascolta il risultato!
- Python 3.8 - 3.11 (
⚠️ Python 3.13 non è ancora supportato) - PyTorch con supporto CUDA (per GPU) o CPU
- 4GB RAM minimo (8GB+ consigliati)
- 3GB spazio disco per modelli
- ffmpeg (opzionale, per export MP3)
-
Clona o scarica il progetto
git clone <repository-url> cd chatterbox_demo
-
Crea un ambiente virtuale
# Python 3.11 consigliato python -m venv venv # Attiva ambiente venv\Scripts\activate # Windows source venv/bin/activate # Linux/Mac
-
Installa PyTorch con CUDA (per GPU NVIDIA)
# Per CUDA 12.4 pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124 # Oppure solo CPU pip install torch torchvision torchaudio
-
Installa le altre dipendenze
pip install -r requirements.txt
-
Installa Chatterbox
pip install -e ./chatterbox
-
Installa ffmpeg (opzionale, per export MP3)
# Windows winget install ffmpeg # Mac brew install ffmpeg # Linux sudo apt install ffmpeg
-
Verifica installazione
python -c "import torch; print(f'PyTorch: {torch.__version__}'); print(f'CUDA available: {torch.cuda.is_available()}')"
L'interfaccia web Gradio è il modo più semplice e completo per usare Chatterbox TTS Studio!
Windows:
# Doppio click su:
start_web.batLinux/Mac:
python main-web.pyApri il browser su: http://localhost:7860
L'interfaccia web include 6 tab principali:
- Seleziona voce e testo dai dropdown
- Configura parametri di generazione (temperatura, esagerazione, ecc.)
- Usa preset predefiniti: Espressivo, Neutro, Conservativo
- Genera audio WAV e MP3 con un click
- Ascolta e scarica direttamente dall'interfaccia
- Visualizza tutte le voci disponibili con dettagli
- Crea nuove voci caricando file audio
- Aggiungi file audio a voci esistenti
- Elimina voci non più necessarie
- Vedi numero di file audio per ogni voce
- Visualizza tutti i file di testo disponibili
- Scrivi nuovi testi direttamente nell'editor
- Upload file .txt dal computer
- Elimina testi non più necessari
- Contatore caratteri in tempo reale
- Genera audio per più testi contemporaneamente
- Seleziona una voce e più file di testo
- Configura parametri una volta sola
- Genera tutto con un singolo click
- Perfetto per automatizzare la produzione
- Vedi tutte le generazioni precedenti
- Statistiche: totale generazioni, durata, dimensione file
- Voci e testi più usati
- Cancella cronologia quando necessario
- Accedi agli script per clonazione vocale
- 3 livelli: Base (25 frasi), Medio (50 frasi), Completo (100 frasi)
- Script con frasi foneticamente bilanciate
- Checklist tecnica per registrazione professionale
- Leggi e copia direttamente dall'interfaccia
Se preferisci usare gli script da terminale:
-
Prepara le voci
Crea una cartella per ogni voce in
input/voice/:input/voice/miaVoce/ ├── sample1.wav ├── sample2.wav └── sample3.ogg- Formati supportati:
.wav,.mp3,.ogg,.flac,.m4a,.opus - Raccomandazione: audio puliti, senza rumore di fondo
- Durata consigliata: almeno 3-5 secondi per file
- Più file = migliore qualità
- Formati supportati:
-
Elenca le voci disponibili
python list_voices.py
Output:
🎤 [SELEZIONATA] joeDoe Percorso: input/voice/joeDoe File audio: 5 Campioni: - sample1.ogg - sample2.ogg ... janeDoe Percorso: input/voice/janeDoe File audio: 3 -
Prepara i file di testo
Aggiungi file
.txtininput/textToGenerate/:echo "Ciao, questo è un test." > input/textToGenerate/test1.txt
-
Elenca i testi disponibili
python list_texts.py
Output:
📄 [SELEZIONATO] text_to_generate.txt Caratteri: 58 Anteprima: Ciao, questo è un test di sintesi vocale... canto1DC.txt Caratteri: 1234 Anteprima: Nel mezzo del cammin di nostra vita... -
Seleziona voce e testo
Modifica
config.py:SELECTED_VOICE = "joeDoe" # Voce da usare SELECTED_TEXT_FILE = "canto1DC.txt" # Testo da sintetizzare
-
Esegui lo script
python main.py
-
Trova i file generati
I file saranno nella cartella
output/:output/wav/joeDoe_canto1DC.wav- Sintesi vocale (WAV)output/mp3/joeDoe_canto1DC.mp3- Sintesi vocale (MP3)output/joeDoe_combined_voice.wav- Audio di riferimento combinato
Formato nome:
{voce}_{testo}.{estensione}
-
Crea una cartella in
input/voice/:mkdir input/voice/nuovaVoce
-
Aggiungi file audio nella cartella:
input/voice/nuovaVoce/ ├── recording1.wav ├── recording2.mp3 └── recording3.ogg -
Verifica che sia stata rilevata:
python list_voices.py
-
Selezionala in
config.py:SELECTED_VOICE = "nuovaVoce"
Modifica semplicemente SELECTED_VOICE in config.py:
# In config.py
SELECTED_VOICE = "janeDoe" # Cambia la voce quiPoi riesegui:
python main.py-
Crea un file
.txtininput/textToGenerate/:echo "Il tuo testo qui" > input/textToGenerate/nuovo_testo.txt
-
Verifica che sia stato rilevato:
python list_texts.py
-
Selezionalo in
config.py:SELECTED_TEXT_FILE = "nuovo_testo.txt"
Modifica SELECTED_TEXT_FILE in config.py:
# In config.py
SELECTED_TEXT_FILE = "canto1DC.txt" # Cambia il testo quiPoi riesegui:
python main.pyPer ottenere i migliori risultati nella clonazione vocale, segui gli script di registrazione professionali!
Il progetto include 3 script per registrare campioni vocali di alta qualità:
-
script_base_clonazione_vocale.md - 25 frasi (5-7 minuti)
- Ideale per test rapidi
- Copre i fonemi principali
-
script_medio_clonazione_vocale.md - 50 frasi (10-12 minuti)
- Bilanciamento fonemi migliorato
- Buona qualità generale
-
script_clonazione_vocale.md - 100 frasi (15-20 minuti) ⭐ CONSIGLIATO
- Copertura completa di tutti i fonemi italiani
- Include: domande, esclamazioni, numeri, emozioni
- Checklist tecnica dettagliata
- Risultati professionali
Con Interfaccia Web (Più Facile):
- Avvia l'interfaccia:
start_web.bat - Vai al tab 📜 Scripts
- Seleziona lo script desiderato dal dropdown
- Leggi e registra le frasi seguendo le istruzioni
- Salva i file nella cartella della voce
Da File:
- Apri uno degli script
.mdcon un editor - Segui le istruzioni di registrazione
- Salva ogni frase come
frase_001.wav,frase_002.wav, ecc. - Copia tutti i file in
input/voice/tuaVoce/
- ✅ Ambiente silenzioso (nessun rumore di fondo)
- ✅ Microfono di qualità (condensatore USB consigliato)
- ✅ Distanza costante: 15-20cm dalla bocca
- ✅ Formato: WAV, 44.1kHz, 16-bit, mono
- ✅ Durata: Almeno 3-5 secondi per file
- ✅ Quantità: Minimo 20 file, consigliati 50-100
- ✅ Idratazione: Bevi acqua, voce pulita
- ✅ Lettura naturale: Conversazionale, non robotica
Con Interfaccia Web:
- Vai al tab 🎬 Generate
- Usa i Preset: Espressivo, Neutro, Conservativo
- Oppure regola manualmente i parametri
Da Riga di Comando - Modifica config.py:
# Selezione voce e testo
SELECTED_VOICE = "miaVoce"
SELECTED_TEXT_FILE = "mio_testo.txt"
# Lingua (codici ISO 639-1)
LANGUAGE_ID = "it" # Italiano
# Qualità audio
SAMPLE_RATE = 24000
MP3_BITRATE = "192k"
# Parametri di generazione
TEMPERATURE = 0.8 # Variabilità (0.0-1.0)
CFG_WEIGHT = 0.5 # Peso del conditioning
EXAGGERATION = 0.5 # Espressività (0.0-1.0)
REPETITION_PENALTY = 2.0 # Penalità ripetizioni
MIN_P = 0.05 # Probabilità minima token
TOP_P = 1.0 # Top-p sampling| Parametro | Intervallo | Descrizione | Quando Usarlo |
|---|---|---|---|
| TEMPERATURE | 0.0-1.0 | Variabilità della sintesi | Basso (0.5-0.7) per voce stabile, Alto (0.8-1.0) per variabilità |
| CFG_WEIGHT | 0.0-1.0 | Fedeltà all'audio di riferimento | Alto (0.5-0.8) per somiglianza, Basso (0.2-0.4) per creatività |
| EXAGGERATION | 0.0-1.0 | Espressività emotiva | Basso (0.2-0.4) per voce neutra, Alto (0.7-0.9) per narrazione espressiva |
| REPETITION_PENALTY | 1.0-3.0 | Evita ripetizioni | Standard: 2.0, Aumenta se noti parole ripetute |
| MIN_P | 0.0-1.0 | Filtra token improbabili | Standard: 0.05 |
| TOP_P | 0.0-1.0 | Nucleus sampling | Standard: 1.0, Riduci (0.7-0.9) per più coerenza |
Il modello supporta 23 lingue:
| Codice | Lingua | Codice | Lingua |
|---|---|---|---|
ar |
Arabo | it |
Italiano |
da |
Danese | ja |
Giapponese |
de |
Tedesco | ko |
Coreano |
el |
Greco | ms |
Malese |
en |
Inglese | nl |
Olandese |
es |
Spagnolo | no |
Norvegese |
fi |
Finlandese | pl |
Polacco |
fr |
Francese | pt |
Portoghese |
he |
Ebraico | sv |
Svedese |
hi |
Hindi | sw |
Swahili |
tr |
Turco | zh |
Cinese |
Scenario: Creare un audiolibro con la tua voce
-
Registra campioni vocali
- Vai al tab 📜 Scripts
- Seleziona "Script Completo Clonazione Vocale"
- Registra le 100 frasi seguendo le indicazioni
- Salva come
frase_001.wav,frase_002.wav, etc.
-
Crea la voce
- Vai al tab 🎤 Voices
- Inserisci nome: "La_Mia_Voce"
- Carica tutti i file audio registrati
- Click su "Create Voice"
-
Prepara i testi
- Vai al tab 📝 Texts
- Scrivi o carica i capitoli del libro
- Salva come:
capitolo_1.txt,capitolo_2.txt, etc.
-
Genera l'audiolibro (Batch)
- Vai al tab ⚡ Batch
- Seleziona voce: "La_Mia_Voce"
- Seleziona tutti i capitoli
- Usa preset "Espressivo"
- Click "Generate All"
-
Verifica risultati
- Vai al tab 📊 History
- Vedi tutte le generazioni
- Scarica i file WAV/MP3
- Controlla statistiche
# config.py
SELECTED_VOICE = "narrator"
SELECTED_TEXT_FILE = "racconto.txt"
LANGUAGE_ID = "it"
EXAGGERATION = 0.9 # Voce molto espressiva
TEMPERATURE = 0.8 # Buona variabilità
CFG_WEIGHT = 0.6 # Fedele all'audio di riferimento# Testo in input/textToGenerate/racconto.txt
Wow! Non ci posso credere, è fantastico!
Il mio cuore batteva forte mentre aprivo la porta...python main.pyOutput: output/wav/narrator_racconto.wav
# config.py
SELECTED_VOICE = "assistant"
SELECTED_TEXT_FILE = "messaggi_sistema.txt"
LANGUAGE_ID = "it"
EXAGGERATION = 0.2 # Voce neutra
TEMPERATURE = 0.6 # Stabile e ripetibile
CFG_WEIGHT = 0.7 # Molto fedele# Testo
Benvenuto nel sistema. Seleziona un'opzione dal menu.Interfaccia Web - Tab Batch:
- Voce: "polyglot"
- Testi:
welcome_it.txt(italiano)welcome_en.txt(inglese)welcome_fr.txt(francese)
Nota: Cambia LANGUAGE_ID in config.py prima di ogni generazione, oppure usa più sessioni batch separate.
Interfaccia web completa con Gradio
# Windows
start_web.bat
# Linux/Mac
python main-web.pyFunzionalità:
- Gestione completa voci e testi
- Generazione batch
- Cronologia e statistiche
- Scripts per clonazione vocale
- Interfaccia user-friendly
Script da riga di comando - Genera sintesi vocale per testi brevi/medi e lunghi
python main.pyCaratteristiche:
- Auto-detect lunghezza testo (<500 caratteri: single-pass, >500 caratteri: chunked)
- Concatena automaticamente più file audio di riferimento
- Output WAV e MP3
- Nomi file intelligenti:
{voce}_{testo}.wav
Configurazione in config.py:
SELECTED_VOICE = "miaVoce"
SELECTED_TEXT_FILE = "mio_testo.txt"Soluzione:
- Verifica che tutte le dipendenze siano installate:
pip install -r requirements.txt
pip install -e ./chatterbox- Verifica che la porta 7860 sia libera:
# Windows
netstat -ano | findstr :7860
# Linux/Mac
lsof -i :7860- Prova a cambiare porta in
main-web.py(linea 376-380)
Soluzione: Il modello viene caricato all'avvio. Attendi 30-60 secondi. Se persiste:
- Verifica connessione internet (download modello da Hugging Face)
- Controlla spazio su disco (modello ~2GB)
- Verifica memoria GPU/RAM disponibile
Soluzione: Assicurati di aver creato almeno una cartella in input/voice/ con file audio.
mkdir input/voice/miaVoce
# Copia file audio in input/voice/miaVoce/Oppure usa l'interfaccia web (Tab Voices) per creare voci facilmente!
Soluzione: Verifica che il nome in SELECTED_VOICE corrisponda esattamente al nome della cartella.
Con interfaccia web: Vai al tab Generate e seleziona la voce dal dropdown.
Da riga di comando: Aggiorna config.py con il nome corretto della cartella.
Soluzione: La cartella della voce è vuota. Aggiungi file audio (.wav, .mp3, .ogg, .flac, .m4a, .opus).
Con interfaccia web: Usa il tab Voices > Add Audio Files per aggiungere file.
Soluzione: L'export MP3 è opzionale. Il file WAV viene comunque generato. Per abilitare MP3:
# Windows
winget install ffmpeg
# Linux
sudo apt install ffmpeg
# Mac
brew install ffmpegSoluzioni:
- Usa più file audio di riferimento (almeno 3-5 file da 5-10 secondi)
- Assicurati che gli audio siano puliti e senza rumore di fondo
- Aumenta il parametro EXAGGERATION (0.7-0.9 per voci più espressive)
- Usa audio della stessa persona/voce
- Registra seguendo gli script di clonazione vocale (tab Scripts nell'interfaccia web)
Nell'interfaccia web:
- Vai al tab Generate
- Usa il preset "Espressivo" per voci più caratterizzate
- Regola il parametro Exaggeration manualmente
Soluzione: Forza l'uso della CPU modificando config.py:
DEVICE = "cpu"Nota: La generazione sarà più lenta ma funzionerà anche senza GPU.
Causa: Il testo supera i 500 caratteri e la GPU va in errore.
Soluzione: Lo script main.py ora gestisce automaticamente i testi lunghi dividendoli in chunk!
Se usi l'interfaccia web, la gestione è automatica in tutti i tab.
-
Qualità dei Campioni Vocali
- Usa microfono condensatore (es. Blue Yeti, Audio-Technica AT2020)
- Ambiente silenzioso con poco riverbero
- Nessun rumore di fondo (ventole, traffico, ecc.)
- Distanza costante dal microfono (15-20cm)
-
Quantità Campioni
- Minimo: 20 file (test rapidi)
- Raccomandato: 50-100 file (qualità professionale)
- Usa gli script di clonazione vocale forniti
-
Formato Audio
- Formato: WAV (non MP3 compresso)
- Sample rate: 44.1kHz o 48kHz
- Bit depth: 16-bit o 24-bit
- Canali: Mono (non stereo)
-
Contenuto Vocale
- Variabilità: domande, esclamazioni, affermazioni
- Copertura fonetica completa (usa gli script!)
- Emozioni diverse (neutro, felice, serio)
- Evita: tosse, schiocchi di labbra, respiri pesanti
Per Narrazione/Audiolibri:
EXAGGERATION = 0.7-0.9
TEMPERATURE = 0.7-0.8
CFG_WEIGHT = 0.5-0.6Per Assistente Virtuale/Sistema:
EXAGGERATION = 0.2-0.3
TEMPERATURE = 0.6
CFG_WEIGHT = 0.7Per Podcast/Interviste:
EXAGGERATION = 0.5-0.6
TEMPERATURE = 0.7
CFG_WEIGHT = 0.6- GPU NVIDIA: 5-10x più veloce della CPU
- Testi lunghi: Usa chunking automatico (già implementato)
- Batch processing: Usa tab Batch nell'interfaccia web
- Memoria: Se OOM su GPU, usa
DEVICE = "cpu"in config.py
input/voice/
├── personaggio_1/ # Voce protagonista
├── personaggio_2/ # Voce antagonista
├── narratore/ # Voce neutrale
└── backup_registrazioni/ # Backup originali
input/textToGenerate/
├── progetto_A/
│ ├── capitolo_1.txt
│ └── capitolo_2.txt
└── progetto_B/
└── script.txt
Q: Quanti file audio servono per clonare una voce? A: Minimo 20, ma 50-100 file danno risultati molto migliori. Usa gli script di registrazione forniti.
Q: Quanto tempo serve per generare 1 minuto di audio? A: Con GPU: 10-30 secondi. Con CPU: 1-3 minuti. Dipende dalla lunghezza del testo.
Q: Posso usare file MP3 come campioni vocali? A: Sì, ma WAV non compresso è fortemente raccomandato per migliore qualità.
Q: Supporta lingue italiane/dialetti? A: Il modello è addestrato su italiano standard. Dialetti funzionano se presenti nei campioni audio.
Q: Posso commercializzare audio generati? A: Verifica la licenza di Chatterbox. Assicurati di avere i diritti sulla voce clonata.
Q: Come miglioro la somiglianza alla voce originale? A: 1) Più campioni audio (50+), 2) Audio di alta qualità, 3) Aumenta CFG_WEIGHT, 4) Usa script di registrazione.
Q: L'interfaccia web funziona su tablet/smartphone? A: Sì, ma le prestazioni dipendono dall'hardware. Raccomandato PC/laptop con GPU.
- ✨ NUOVO: Interfaccia web completa con 6 tab
- ✨ NUOVO: Gestione voci e testi dall'interfaccia
- ✨ NUOVO: Batch processing per più testi
- ✨ NUOVO: Cronologia e statistiche generazioni
- ✨ NUOVO: Scripts di clonazione vocale integrati
- ✨ NUOVO: Preset audio (Espressivo, Neutro, Conservativo)
- 🔧 Migliorato: Gestione automatica testi lunghi
- 🔧 Migliorato: Nomenclatura file output intelligente
- 📚 Documentazione completamente riscritta
Questo progetto è un demo di Chatterbox by Resemble AI.
Verifica i termini di licenza di Chatterbox per uso commerciale.
- Chatterbox - Resemble AI
- Modello: Chatterbox Multilingual TTS
- Interfaccia: Gradio
- Sviluppato con Python, PyTorch, librosa
Per problemi, domande o suggerimenti:
- Consulta la sezione Risoluzione Problemi sopra
- Controlla le FAQ
- Verifica la documentazione Chatterbox
Buona sintesi vocale! 🎙️✨