Web Analytics

ZipVoice

⭐ 661 stars French by k2-fsa

🌐 Langue

ZipVoice⚡

Synthèse vocale rapide et de haute qualité en zéro-shot grâce au Flow Matching

Vue d'ensemble

ZipVoice est une série de modèles TTS zero-shot rapides et de haute qualité, basés sur le flow matching.

1. Caractéristiques principales

2. Variantes du modèle

Nom du modèle Description Article Démo
ZipVoice Le modèle de base supportant le TTS zero-shot mono-locuteur en chinois et anglais.
ZipVoice-Distill La version distillée de ZipVoice, offrant une vitesse améliorée avec une dégradation minimale des performances.
ZipVoice-Dialog Un modèle de génération de dialogue basé sur ZipVoice, capable de générer des dialogues parlés à deux voix sur un seul canal.
ZipVoice-Dialog-Stereo La variante stéréo de ZipVoice-Dialog, permettant la génération de dialogues à deux canaux avec chaque interlocuteur assigné à un canal distinct.

Actualités

2025/07/14 : ZipVoice-Dialog et ZipVoice-Dialog-Stereo, deux modèles de génération de dialogues parlés, sont publiés. arXiv demo page

2025/07/14 : Le jeu de données OpenDialog, un corpus de dialogues parlés de 6,8k heures, est publié. Téléchargez-le sur hf, ms. Consultez les détails sur arXiv.

2025/06/16 : ZipVoice et ZipVoice-Distill sont publiés. arXiv demo page

Installation

1. Cloner le dépôt ZipVoice

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

2. (Optionnel) Créez un environnement virtuel Python

python3 -m venv zipvoice
source zipvoice/bin/activate

3. Installez les paquets requis

pip install -r requirements.txt

4. Installer k2 pour l'entraînement ou l'inférence efficace

k2 est nécessaire pour l'entraînement et peut accélérer l'inférence. Néanmoins, vous pouvez toujours utiliser le mode inférence de ZipVoice sans installer k2.

Remarque : Assurez-vous d'installer la version de k2 qui correspond à votre version de PyTorch et CUDA. Par exemple, si vous utilisez pytorch 2.5.1 et CUDA 12.1, vous pouvez installer k2 comme suit :

pip install k2==1.24.4.dev20250208+cuda12.1.torch2.5.1 -f https://k2-fsa.github.io/k2/cuda.html
Veuillez consulter https://k2-fsa.org/get-started/k2/ pour plus de détails. Les utilisateurs en Chine continentale peuvent consulter https://k2-fsa.org/zh-CN/get-started/k2/.

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

Utilisation

1. Génération de parole à un seul locuteur

Pour générer de la parole à un seul locuteur avec nos modèles ZipVoice ou ZipVoice-Distill pré-entraînés, utilisez les commandes suivantes (Les modèles requis seront téléchargés depuis HuggingFace) :

#### 1.1 Inférence d'une seule phrase

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 Inférence d'une liste de phrases

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

2. Génération de la parole en dialogue

#### 2.1 Commande d'inférence

Pour générer des dialogues parlés à deux voix avec nos modèles pré-entraînés ZipVoice-Dialogue ou ZipVoice-Dialogue-Stereo, utilisez les commandes suivantes (les modèles requis seront téléchargés depuis HuggingFace) :

python3 -m zipvoice.bin.infer_zipvoice_dialog \
    --model-name "zipvoice_dialog" \
    --test-list test.tsv \
    --res-dir results
qui génèrent respectivement des dialogues mono et stéréo.

#### 2.2 Formats d'entrée

Chaque ligne de test.tsv est dans l'un des formats suivants :

(1) Format de prompt fusionné où les audios et transcriptions des prompts des deux locuteurs sont fusionnés en un seul fichier wav de prompt :

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

(2) Format de prompt séparé où les audios et les transcriptions des deux interlocuteurs existent dans des fichiers distincts :

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

3 Conseils pour une meilleure utilisation :

#### 3.1 Longueur du prompt

Nous recommandons un fichier wav de prompt court (par exemple, moins de 3 secondes pour la génération de parole à un seul locuteur, moins de 10 secondes pour la génération de dialogue) pour une vitesse d'inférence plus rapide. Un prompt très long ralentira l'inférence et dégradera la qualité de la parole.

#### 3.2 Optimisation de la vitesse

Si la vitesse d'inférence n'est pas satisfaisante, vous pouvez l'accélérer comme suit :

#### 3.3 Contrôle de la mémoire

Le texte fourni sera découpé en morceaux selon la ponctuation (pour la génération de parole à un seul locuteur) ou le symbole de changement de locuteur (pour la génération de dialogue). Ensuite, les morceaux seront traités en lots. Ainsi, le modèle peut traiter des textes arbitrairement longs avec une utilisation mémoire quasiment constante. Vous pouvez contrôler l'utilisation mémoire en ajustant le paramètre --max-duration.

#### 3.4 Évaluation "brute"

Par défaut, nous prétraitons les entrées (prompt wav, transcription du prompt et texte) pour une inférence efficace et de meilleures performances. Si vous souhaitez évaluer la performance "brute" du modèle avec les entrées exactes fournies (par exemple, pour reproduire les résultats de notre article), vous pouvez utiliser --raw-evaluation True.

#### 3.5 Texte court

Lors de la génération de parole pour des textes très courts (par exemple, un ou deux mots), la parole générée peut parfois omettre certaines prononciations. Pour résoudre ce problème, vous pouvez utiliser --speed 0.3 (où 0.3 est une valeur ajustable) pour prolonger la durée de la parole générée.

#### 3.6 Correction de la prononciation incorrecte des caractères chinois polyphoniques

Nous utilisons pypinyin pour convertir les caractères chinois en pinyin. Cependant, il peut parfois mal prononcer les caractères polyphoniques (多音字).

Pour corriger manuellement ces erreurs de prononciation, encadrez le pinyin corrigé entre chevrons < > et incluez l’accent tonique.

Exemple :

> Remarque : Si vous souhaitez attribuer plusieurs pinyins manuellement, encadrez chaque pinyin avec <>, par exemple : 这把十公分

#### 3.7 Suppression des silences longs dans la parole générée

Le modèle détermine automatiquement les positions et la durée des silences dans la parole générée. Il arrive qu’il y ait de longs silences au milieu de la parole. Si vous ne souhaitez pas cela, vous pouvez passer l’option --remove-long-sil pour supprimer les longs silences au milieu de la parole générée (les silences en début et fin seront supprimés par défaut).

#### 3.8 Téléchargement du modèle

Si vous rencontrez des difficultés pour vous connecter à HuggingFace lors du téléchargement des modèles pré-entraînés, essayez de changer l’endpoint vers le site miroir : export HF_ENDPOINT=https://hf-mirror.com.

Entraînez votre propre modèle

Consultez le répertoire egs pour des exemples d’entraînement, de fine-tuning et d’évaluation.

Déploiement C++

Consultez sherpa-onnx pour la solution de déploiement C++ sur CPU.

Discussion & Communication

Vous pouvez discuter directement sur Github Issues.

Vous pouvez également scanner le code QR pour rejoindre notre groupe WeChat ou suivre notre compte officiel WeChat.

| Groupe WeChat | Compte Officiel WeChat | | ------------- | ---------------------- | |wechat |wechat |

Citation

@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 ---