Web Analytics

ZipVoice

⭐ 748 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 Anleitung für bessere Nutzung:

#### 3.1 Länge des Prompts

Wir empfehlen eine kurze Prompt-WAV-Datei (z. B. weniger als 3 Sekunden für die Einzelsprecher-Spracherzeugung, weniger als 10 Sekunden für die Dialog-Spracherzeugung) für eine schnellere Inferenzgeschwindigkeit. Ein sehr langer Prompt verlangsamt die Inferenz und verschlechtert die Sprachqualität.

#### 3.2 Geschwindigkeitsoptimierung

Wenn die Inferenzgeschwindigkeit unzufriedenstellend ist, können Sie wie folgt beschleunigen:

#### 3.3 Speichersteuerung

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

#### 3.4 „Rohe“ Auswertung

Standardmäßig werden Eingaben (Prompt-WAV, Prompt-Transkription und Text) für effiziente Inferenz und bessere Leistung vorverarbeitet. Wenn Sie die „rohe“ Leistung des Modells mit den exakt angegebenen Eingaben bewerten möchten (z. B. zur Reproduktion der Ergebnisse unserer Publikation), können Sie --raw-evaluation True übergeben.

#### 3.5 Kurzer Text

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

#### 3.6 Korrektur von falsch ausgesprochenen chinesischen Polyphonen-Zeichen

Wir verwenden pypinyin, um chinesische Schriftzeichen in Pinyin umzuwandeln. Allerdings kann es gelegentlich polyphone Zeichen (多音字) falsch aussprechen.

Um diese Fehl-Aussprache manuell zu korrigieren, schließen Sie das korrigierte Pinyin in spitze Klammern < > ein und fügen Sie das Tonzeichen hinzu.

Beispiel:

> Hinweis: Wenn Sie mehreren Zeichen manuell Pinyin zuweisen möchten, schließen Sie jedes Pinyin in <> ein, 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 lange Pausen mitten in der Sprache. Wenn Sie dies nicht wünschen, können Sie --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 Sie beim Herunterladen der vortrainierten Modelle Schwierigkeiten haben, eine Verbindung zu HuggingFace herzustellen, versuchen Sie, den Endpunkt auf die Spiegelseite zu wechseln: export HF_ENDPOINT=https://hf-mirror.com.

Eigenes Modell trainieren

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

Produktiv-Einsatz

NVIDIA Triton GPU-Laufzeit

Für produktionsbereiten Einsatz mit hoher Leistung und Skalierbarkeit sehen Sie sich die Triton Inference Server-Integration an, die optimierte TensorRT-Engines, gleichzeitige Anfragebearbeitung und sowohl gRPC/HTTP-APIs für den Unternehmenseinsatz bietet.

CPU-Bereitstellung

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

Diskussion & Kommunikation

Sie können direkt auf Github Issues diskutieren.

Sie können 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-12-30 ---