Web Analytics

ZipVoice

⭐ 661 stars Italian by k2-fsa

🌐 Lingua

ZipVoice⚡

Sintesi Vocale Testo-a-Voce Rapida e di Alta Qualità Zero-Shot con Flow Matching

Panoramica

ZipVoice è una serie di modelli TTS zero-shot rapidi e di alta qualità basati su flow matching.

1. Caratteristiche principali

2. Varianti del modello

Nome Modello Descrizione Articolo Demo
ZipVoice Il modello base che supporta TTS zero-shot a singolo parlante sia in cinese che in inglese.
ZipVoice-Distill La versione distillata di ZipVoice, con velocità migliorata e degrado minimo delle prestazioni.
ZipVoice-Dialog Un modello di generazione di dialoghi basato su ZipVoice, capace di generare dialoghi parlati a due parti su singolo canale.
ZipVoice-Dialog-Stereo La variante stereo di ZipVoice-Dialog, che consente la generazione di dialoghi a due canali con ogni speaker assegnato a un canale distinto.

Novità

14/07/2025: ZipVoice-Dialog e ZipVoice-Dialog-Stereo, due modelli di generazione di dialoghi vocali, sono stati rilasciati. arXiv demo page

14/07/2025: Il dataset OpenDialog, un dataset di dialoghi vocali di 6,8k ore, è stato rilasciato. Scarica da hf, ms. Consulta i dettagli su arXiv.

16/06/2025: ZipVoice e ZipVoice-Distill sono stati rilasciati. arXiv demo page

Installazione

1. Clona il repository ZipVoice

git clone https://github.com/k2-fsa/ZipVoice.git

2. (Opzionale) Crea un ambiente virtuale Python

python3 -m venv zipvoice
source zipvoice/bin/activate

3. Installa i pacchetti richiesti

pip install -r requirements.txt

4. Installa k2 per l'addestramento o l'inferenza efficiente

k2 è necessario per l'addestramento e può velocizzare l'inferenza. Tuttavia, puoi comunque utilizzare la modalità di inferenza di ZipVoice senza installare k2.

Nota: Assicurati di installare la versione di k2 che corrisponde alla tua versione di PyTorch e CUDA. Ad esempio, se stai usando pytorch 2.5.1 e CUDA 12.1, puoi installare k2 come segue:

pip install k2==1.24.4.dev20250208+cuda12.1.torch2.5.1 -f https://k2-fsa.github.io/k2/cuda.html
Si prega di fare riferimento a https://k2-fsa.org/get-started/k2/ per i dettagli. Gli utenti nella Cina continentale possono fare riferimento a https://k2-fsa.org/zh-CN/get-started/k2/.

python3 -c "import k2; print(k2.__file__)"

Utilizzo

1. Generazione di parlato a singolo parlante

Per generare parlato a singolo parlante con i nostri modelli pre-addestrati ZipVoice o ZipVoice-Distill, utilizzare i seguenti comandi (i modelli necessari verranno scaricati da HuggingFace):

#### 1.1 Inferenza di una singola frase

python3 -m zipvoice.bin.infer_zipvoice \
    --model-name zipvoice \
    --prompt-wav prompt.wav \
    --prompt-text "I am the transcription of the prompt wav." \
    --text "I am the text to be synthesized." \
    --res-wav-path result.wav
#### 1.2 Inferenza di una lista di frasi

python3 -m zipvoice.bin.infer_zipvoice \
    --model-name zipvoice \
    --test-list test.tsv \
    --res-dir results

2. Generazione di dialoghi vocali

#### 2.1 Comando di inferenza

Per generare dialoghi vocali a due voci con i nostri modelli pre-addestrati ZipVoice-Dialogue o ZipVoice-Dialogue-Stereo, utilizzare i seguenti comandi (i modelli necessari saranno scaricati da HuggingFace):

python3 -m zipvoice.bin.infer_zipvoice_dialog \
    --model-name "zipvoice_dialog" \
    --test-list test.tsv \
    --res-dir results
che generano rispettivamente dialoghi mono e stereo.

#### 2.2 Formati di input

Ogni riga di test.tsv è in uno dei seguenti formati:

(1) Formato prompt unificato in cui gli audio e le trascrizioni dei prompt di due speaker sono uniti in un unico file wav prompt:

{wav_name}\t{prompt_transcription}\t{prompt_wav}\t{text}

(2) Formato prompt separato dove gli audio e le trascrizioni dei due interlocutori esistono in file separati:

{wav_name}\t{spk1_prompt_transcription}\t{spk2_prompt_transcription}\t{spk1_prompt_wav}\t{spk2_prompt_wav}\t{text}

3 Guida per un uso migliore:

#### 3.1 Lunghezza del prompt

Si raccomanda un file wav di prompt breve (ad esempio, meno di 3 secondi per la generazione vocale a singolo speaker, meno di 10 secondi per la generazione di dialoghi) per una velocità di inferenza più rapida. Un prompt molto lungo rallenterà l'inferenza e peggiorerà la qualità del parlato.

#### 3.2 Ottimizzazione della velocità

Se la velocità di inferenza non è soddisfacente, puoi accelerarla come segue:

#### 3.3 Controllo della memoria

Il testo fornito verrà suddiviso in blocchi in base alla punteggiatura (per la generazione vocale a singolo speaker) o ai simboli di cambio speaker (per la generazione di dialoghi). I testi suddivisi verranno poi elaborati in batch. Pertanto, il modello può processare testi di qualsiasi lunghezza con un uso di memoria quasi costante. Puoi controllare l'uso di memoria regolando il parametro --max-duration.

#### 3.4 Valutazione "Raw"

Di default, preprocessiamo gli input (wav di prompt, trascrizione del prompt e testo) per inferenza efficiente e migliori prestazioni. Se vuoi valutare la performance "raw" del modello usando gli input esatti forniti (ad esempio, per riprodurre i risultati del nostro paper), puoi passare --raw-evaluation True.

#### 3.5 Testo corto

Quando si genera parlato per testi molto brevi (ad esempio, una o due parole), il parlato generato potrebbe talvolta omettere alcune pronunce. Per risolvere questo problema, puoi passare --speed 0.3 (dove 0.3 è un valore regolabile) per estendere la durata del parlato generato.

#### 3.6 Correzione dei caratteri polifoni cinesi pronunciati erroneamente

Utilizziamo pypinyin per convertire i caratteri cinesi in pinyin. Tuttavia, può occasionalmente pronunciare erroneamente i caratteri polifoni (多音字).

Per correggere manualmente queste pronunce errate, racchiudi il pinyin corretto tra parentesi angolari < > e includi il tono.

Esempio:

> Nota: Se vuoi assegnare manualmente più pinyin, racchiudi ciascun pinyin tra <>, ad esempio: 这把十公分

#### 3.7 Rimuovere le pause lunghe dal parlato generato

Il modello determina automaticamente le posizioni e le durate delle pause nel parlato generato. Talvolta si verificano pause lunghe nel mezzo del discorso. Se non lo desideri, puoi passare --remove-long-sil per rimuovere le pause lunghe nel mezzo del parlato generato (le pause ai margini vengono rimosse di default).

#### 3.8 Download del modello

Se hai problemi di connessione a HuggingFace durante il download dei modelli pre-addestrati, prova a cambiare endpoint al sito mirror: export HF_ENDPOINT=https://hf-mirror.com.

Addestra il tuo modello

Consulta la directory egs per esempi di addestramento, fine-tuning e valutazione.

Deployment C++

Consulta sherpa-onnx per la soluzione di deployment C++ su CPU.

Discussione & Comunicazione

Puoi discutere direttamente su Github Issues.

Puoi anche scansionare il codice QR per unirti al nostro gruppo wechat o seguire il nostro account ufficiale wechat.

| Gruppo Wechat | Account Ufficiale Wechat | | ------------- | ------------------------ | |wechat |wechat |

Citazione

@article{zhu2025zipvoice,
      title={ZipVoice: Fast and High-Quality Zero-Shot Text-to-Speech with Flow Matching},
      author={Zhu, Han and Kang, Wei and Yao, Zengwei and Guo, Liyong and Kuang, Fangjun and Li, Zhaoqing and Zhuang, Weiji and Lin, Long and Povey, Daniel},
      journal={arXiv preprint arXiv:2506.13053},
      year={2025}
}

@article{zhu2025zipvoicedialog, title={ZipVoice-Dialog: Non-Autoregressive Spoken Dialogue Generation with Flow Matching}, author={Zhu, Han and Kang, Wei and Guo, Liyong and Yao, Zengwei and Kuang, Fangjun and Zhuang, Weiji and Li, Zhaoqing and Han, Zhifeng and Zhang, Dong and Zhang, Xin and Song, Xingchen and Lin, Long and Povey, Daniel}, journal={arXiv preprint arXiv:2507.09318}, year={2025} }

--- Tranlated By Open Ai Tx | Last indexed: 2025-10-06 ---