Web Analytics

ZipVoice

⭐ 661 stars German by k2-fsa

🌐 Sprache

ZipVoice⚡

Schnelle und hochwertige Zero-Shot-Text-zu-Sprache mit Flow Matching

Übersicht

ZipVoice ist eine Serie von schnellen und hochwertigen Zero-Shot-TTS-Modellen, die auf Flow Matching basieren.

1. Hauptmerkmale

2. Modellvarianten

Modellname Beschreibung Paper Demo
ZipVoice Das Basismodell, das Zero-Shot-Einzelsprecher-TTS in Chinesisch und Englisch unterstützt.
ZipVoice-Distill Die destillierte Version von ZipVoice mit verbesserter Geschwindigkeit und minimalem Leistungsverlust.
ZipVoice-Dialog Ein Dialoggenerierungsmodell, das auf ZipVoice basiert und einsprachige Zwei-Parteien-Gespräche erzeugen kann.
ZipVoice-Dialog-Stereo Die Stereo-Variante von ZipVoice-Dialog, ermöglicht zweikanalige Dialoggenerierung mit jedem Sprecher auf einem eigenen Kanal.

Neuigkeiten

2025/07/14: ZipVoice-Dialog und ZipVoice-Dialog-Stereo, zwei Modelle zur gesprochenen Dialoggenerierung, sind veröffentlicht. arXiv Demo-Seite

2025/07/14: OpenDialog Datensatz, ein 6,8k-Stunden-Datensatz für gesprochene Dialoge, ist veröffentlicht. Download unter hf, ms. Details unter arXiv.

2025/06/16: ZipVoice und ZipVoice-Distill sind veröffentlicht. arXiv Demo-Seite

Installation

1. Klone das ZipVoice-Repository

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

2. (Optional) Erstellen Sie eine Python-virtuelle Umgebung

python3 -m venv zipvoice
source zipvoice/bin/activate

3. Installieren Sie die erforderlichen Pakete

pip install -r requirements.txt

4. Installieren Sie k2 für das Training oder effizientes Inferenzieren

k2 ist für das Training notwendig und kann die Inferenz beschleunigen. Dennoch können Sie den Inferenzmodus von ZipVoice auch ohne die Installation von k2 verwenden.

Hinweis: Stellen Sie sicher, dass Sie die k2-Version installieren, die zu Ihrer PyTorch- und CUDA-Version passt. Wenn Sie beispielsweise pytorch 2.5.1 und CUDA 12.1 verwenden, können Sie k2 wie folgt installieren:

pip install k2==1.24.4.dev20250208+cuda12.1.torch2.5.1 -f https://k2-fsa.github.io/k2/cuda.html
Bitte beachten Sie https://k2-fsa.org/get-started/k2/ für weitere Details. Nutzer in Festlandchina können https://k2-fsa.org/zh-CN/get-started/k2/ nutzen.

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

Verwendung

1. Sprachgenerierung mit einem Sprecher

Um Sprachaufnahmen mit nur einem Sprecher mithilfe unserer vortrainierten ZipVoice- oder ZipVoice-Distill-Modelle zu erzeugen, verwenden Sie die folgenden Befehle (Erforderliche Modelle werden von HuggingFace heruntergeladen):

#### 1.1 Inferenz eines einzelnen Satzes

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 Inferenz einer Liste von Sätzen

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

2. Dialog-Sprachgenerierung

#### 2.1 Inferenzbefehl

Um Zwei-Parteien-Dialoge mit unseren vortrainierten ZipVoice-Dialogue oder ZipVoice-Dialogue-Stereo Modellen zu generieren, verwenden Sie die folgenden Befehle (Die benötigten Modelle werden von HuggingFace heruntergeladen):

python3 -m zipvoice.bin.infer_zipvoice_dialog \
    --model-name "zipvoice_dialog" \
    --test-list test.tsv \
    --res-dir results
wobei jeweils Mono- bzw. Stereo-Dialoge erzeugt werden.

#### 2.2 Eingabeformate

Jede Zeile in test.tsv hat eines der folgenden Formate:

(1) Zusammengeführtes Prompt-Format, bei dem die Audiodateien und Transkriptionen der Prompts beider Sprecher in einer Prompt-WAV-Datei zusammengeführt werden:

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

(2) Geteiltes Prompt-Format, bei dem die Audiodateien und Transkriptionen der beiden Sprecher in separaten Dateien vorliegen:

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

3 Hinweise für bessere Nutzung:

#### 3.1 Promptlänge

Wir empfehlen eine kurze Prompt-WAV-Datei (z. B. weniger als 3 Sekunden für die Sprachsynthese mit einem Sprecher, weniger als 10 Sekunden für die Dialog-Sprachsynthese) für eine schnellere Inferenzgeschwindigkeit. Eine sehr lange Prompt-Datei verlangsamt die Inferenz und verschlechtert die Sprachqualität.

#### 3.2 Geschwindigkeitsoptimierung

Falls die Inferenzgeschwindigkeit unzureichend ist, können Sie diese wie folgt erhöhen:

#### 3.3 Speichersteuerung

Der angegebene Text wird anhand von Satzzeichen (für Einzelsprecher-Sprachsynthese) oder Sprecherwechsel-Symbolen (für Dialog-Sprachsynthese) in Abschnitte unterteilt. Anschließend werden die Abschnitte stapelweise verarbeitet. Das Modell kann daher beliebig lange Texte mit nahezu konstantem Speicherverbrauch verarbeiten. Sie können den Speicherverbrauch durch Anpassung des Parameters --max-duration steuern.

#### 3.4 „Raw“-Bewertung

Standardmäßig werden die Eingaben (Prompt-WAV, Prompt-Transkription und Text) vorverarbeitet, um eine effiziente Inferenz und bessere Leistung zu erzielen. Wenn Sie die „rohe“ Leistung des Modells mit den exakt vorgegebenen Eingaben bewerten möchten (z. B. um die Ergebnisse aus unserer Publikation zu reproduzieren), können Sie --raw-evaluation True verwenden.

#### 3.5 Kurzer Text

Bei der Spracherzeugung für sehr kurze Texte (z. B. ein oder zwei Wörter) kann es vorkommen, dass die erzeugte Sprache bestimmte Aussprachen auslässt. Um dieses Problem zu beheben, können Sie --speed 0.3 verwenden (wobei 0.3 ein anpassbarer Wert ist), um die Dauer der erzeugten Sprache zu verlängern.

#### 3.6 Korrektur falsch ausgesprochener chinesischer Polyphon-Zeichen

Wir verwenden pypinyin, um chinesische Schriftzeichen in Pinyin umzuwandeln. Allerdings kann es gelegentlich zu falscher Aussprache von Polyphon-Zeichen (多音字) kommen.

Um diese Fehl-Aussprache manuell zu korrigieren, setze das korrigierte Pinyin in spitze Klammern < > und füge das Tonzeichen hinzu.

Beispiel:

> Hinweis: Wenn du mehreren Zeichen manuell Pinyin zuweisen möchtest, setze jedes Pinyin in < >, z.B.: 这把十公分

#### 3.7 Entfernen von langen Pausen aus der generierten Sprache

Das Modell bestimmt automatisch die Positionen und Längen der Pausen in der generierten Sprache. Gelegentlich gibt es eine lange Pause mitten in der Sprache. Wenn du das nicht möchtest, kannst du --remove-long-sil verwenden, um lange Pausen in der Mitte der generierten Sprache zu entfernen (Randpausen werden standardmäßig entfernt).

#### 3.8 Modell-Download

Wenn du beim Herunterladen der vortrainierten Modelle Probleme hast, dich mit HuggingFace zu verbinden, versuche, den Endpunkt auf die Mirror-Seite zu wechseln: export HF_ENDPOINT=https://hf-mirror.com.

Trainiere dein eigenes Modell

Siehe das egs Verzeichnis für Beispiele zum Training, Fine-Tuning und zur Auswertung.

C++-Bereitstellung

Siehe sherpa-onnx für die C++-Bereitstellungslösung auf der CPU.

Diskussion & Kommunikation

Du kannst direkt in Github Issues diskutieren.

Du kannst auch den QR-Code scannen, um unserer Wechat-Gruppe beizutreten oder unserem offiziellen Wechat-Account zu folgen.

| Wechat-Gruppe | Offizieller Wechat-Account | | ------------- | -------------------------- | |wechat |wechat |

Zitation

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