Web Analytics

ZipVoice

⭐ 748 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 consiglia un file wav di prompt breve (ad esempio, meno di 3 secondi per la generazione di parlato 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 velocizzarla come segue:

#### 3.3 Controllo della memoria

Il testo fornito verrà suddiviso in blocchi in base alla punteggiatura (per la generazione di parlato a singolo speaker) o al simbolo di cambio speaker (per la generazione di dialoghi). Successivamente, i blocchi di testo verranno processati in batch. Pertanto, il modello può processare testi arbitrariamente lunghi con un uso di memoria quasi costante. Puoi controllare l'uso di memoria regolando il parametro --max-duration.

#### 3.4 Valutazione "Raw"

Per impostazione predefinita, pre-processiamo gli input (prompt wav, trascrizione prompt e testo) per un'inferenza efficiente e migliori prestazioni. Se vuoi valutare le prestazioni "raw" del modello usando gli input esatti forniti (ad esempio, per riprodurre i risultati del nostro articolo), puoi passare --raw-evaluation True.

#### 3.5 Testo breve

Quando si genera parlato per testi molto brevi (ad esempio, una o due parole), il parlato generato può 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 polifonici cinesi pronunciati in modo errato

Usiamo pypinyin per convertire i caratteri cinesi in pinyin. Tuttavia, talvolta può pronunciare erroneamente i caratteri polifonici (多音字).

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

Esempio:

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

#### 3.7 Rimuovere lunghe pause dal parlato generato

Il modello determinerà automaticamente le posizioni e le lunghezze delle pause nel parlato generato. Talvolta ci sono lunghe pause nel mezzo del parlato. Se non desideri questo, puoi passare --remove-long-sil per rimuovere le lunghe pause nel mezzo del parlato generato (le pause ai bordi verranno rimosse automaticamente).

#### 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.

Distribuzione in produzione

Runtime GPU NVIDIA Triton

Per una distribuzione pronta per la produzione con alte prestazioni e scalabilità, consulta l'integrazione con Triton Inference Server che offre motori TensorRT ottimizzati, gestione concorrente delle richieste e API gRPC/HTTP per uso aziendale.

Distribuzione su CPU

Consulta sherpa-onnx per la soluzione di distribuzione 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-12-30 ---