Web Analytics

ZipVoice

⭐ 748 stars Dutch by k2-fsa

🌐 Taal

ZipVoice⚡

Snel en Hoogwaardige Zero-Shot Tekst-naar-Spraak met Flow Matching

Overzicht

ZipVoice is een serie snelle en hoogwaardige zero-shot TTS-modellen gebaseerd op flow matching.

1. Belangrijkste kenmerken

2. Modelvarianten

Modelnaam Beschrijving Paper Demo
ZipVoice Het basismodel dat zero-shot enkelspreker TTS ondersteunt in zowel Chinees als Engels.
ZipVoice-Distill De gedistilleerde versie van ZipVoice, met verbeterde snelheid en minimale prestatiedaling.
ZipVoice-Dialog Een dialooggeneratiemodel gebaseerd op ZipVoice, dat enkelkanaals tweezijdige gesproken dialogen kan genereren.
ZipVoice-Dialog-Stereo De stereo-variant van ZipVoice-Dialog, waarmee tweekanaals dialooggeneratie mogelijk is waarbij elke spreker aan een afzonderlijk kanaal wordt toegewezen.

Nieuws

2025/07/14: ZipVoice-Dialog en ZipVoice-Dialog-Stereo, twee modellen voor gesproken dialooggeneratie, zijn uitgebracht. arXiv demo page

2025/07/14: OpenDialog dataset, een 6,8k-uur gesproken dialoogdataset, is uitgebracht. Download via hf, ms. Bekijk details via arXiv.

2025/06/16: ZipVoice en ZipVoice-Distill zijn uitgebracht. arXiv demo page

Installatie

1. Clone de ZipVoice repository

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

2. (Optioneel) Maak een Python virtuele omgeving aan

python3 -m venv zipvoice
source zipvoice/bin/activate

3. Installeer de vereiste pakketten

pip install -r requirements.txt

4. Installeer k2 voor training of efficiënte inferentie

k2 is noodzakelijk voor training en kan de inferentie versnellen. Toch kun je de inferentiemodus van ZipVoice gebruiken zonder k2 te installeren.

Opmerking: Zorg ervoor dat je de k2-versie installeert die overeenkomt met jouw PyTorch- en CUDA-versie. Bijvoorbeeld, als je pytorch 2.5.1 en CUDA 12.1 gebruikt, kun je k2 als volgt installeren:

pip install k2==1.24.4.dev20250208+cuda12.1.torch2.5.1 -f https://k2-fsa.github.io/k2/cuda.html
Raadpleeg https://k2-fsa.org/get-started/k2/ voor meer informatie. Gebruikers op het Chinese vasteland kunnen terecht op https://k2-fsa.org/zh-CN/get-started/k2/.

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

Gebruik

1. Enkelspreker spraakgeneratie

Om enkelspreker spraak te genereren met onze voorgetrainde ZipVoice of ZipVoice-Distill modellen, gebruikt u de volgende commando's (Vereiste modellen worden gedownload van HuggingFace):

#### 1.1 Inferentie van een enkele zin

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 Inferentie van een lijst met zinnen

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

2. Dialoogspraakgeneratie

#### 2.1 Inferentiecommando

Om tweepartijgesprekken te genereren met onze voorgetrainde ZipVoice-Dialogue of ZipVoice-Dialogue-Stereo modellen, gebruikt u de volgende commando's (Benodigde modellen worden gedownload van HuggingFace):

python3 -m zipvoice.bin.infer_zipvoice_dialog \
    --model-name "zipvoice_dialog" \
    --test-list test.tsv \
    --res-dir results
die respectievelijk mono- en stereodialogen genereren.

#### 2.2 Invoerformaten

Elke regel van test.tsv is in een van de volgende formaten:

(1) Samengevoegd promptformaat waarbij de audio's en transcripties van de prompts van twee sprekers zijn samengevoegd in één prompt-wav-bestand:

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

(2) Gesplitst promptformaat waarbij de audio's en transcripties van twee sprekers in afzonderlijke bestanden staan:

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

3 Richtlijnen voor beter gebruik:

#### 3.1 Lengte van de prompt

Wij raden een kort prompt wav-bestand aan (bijvoorbeeld minder dan 3 seconden voor spraakgeneratie met één spreker, minder dan 10 seconden voor dialoogspraakgeneratie) voor snellere inferentiesnelheid. Een heel lang promptbestand vertraagt de inferentie en verslechtert de spraakkwaliteit.

#### 3.2 Snelheidsoptimalisatie

Als de inferentiesnelheid onvoldoende is, kun je deze als volgt verhogen:

#### 3.3 Geheugenbeheer

De opgegeven tekst wordt gesplitst in stukken op basis van leestekens (voor spraakgeneratie met één spreker) of sprekerwisselsymbolen (voor dialoogspraakgeneratie). Vervolgens worden de tekststukken in batches verwerkt. Hierdoor kan het model willekeurig lange tekst verwerken met vrijwel constant geheugengebruik. Je kunt het geheugengebruik regelen met de parameter --max-duration.

#### 3.4 "Ruwe" evaluatie

Standaard preprocessen we de invoer (prompt wav, prompt transcriptie en tekst) voor efficiënte inferentie en betere prestaties. Als je de "ruwe" prestaties van het model wilt evalueren met exact de opgegeven invoer (bijvoorbeeld om de resultaten in ons paper te reproduceren), kun je --raw-evaluation True meegeven.

#### 3.5 Korte tekst

Bij het genereren van spraak voor zeer korte teksten (bijvoorbeeld één of twee woorden) kan het gebeuren dat bepaalde uitspraken soms worden weggelaten. Om dit probleem op te lossen kun je --speed 0.3 meegeven (waarbij 0.3 een afstembare waarde is) om de duur van de gegenereerde spraak te verlengen.

#### 3.6 Het corrigeren van verkeerd uitgesproken Chinese polyfoonkarakters

We gebruiken pypinyin om Chinese karakters naar pinyin om te zetten. Echter, het kan soms polyfone karakters (多音字) verkeerd uitspreken.

Om deze verkeerde uitspraken handmatig te corrigeren, zet je de gecorrigeerde pinyin tussen punthaken < > en voeg je het toonaccent toe.

Voorbeeld:

> Opmerking: Wil je handmatig meerdere pinyins toewijzen, zet dan elke pinyin tussen <>, bijvoorbeeld: 这把十公分

#### 3.7 Verwijder lange stiltes uit de gegenereerde spraak

Het model bepaalt automatisch de posities en lengtes van stiltes in de gegenereerde spraak. Soms zit er een lange stilte midden in de spraak. Wil je dit niet, dan kun je --remove-long-sil meegeven om lange stiltes in het midden van de gegenereerde spraak te verwijderen (randstiltes worden standaard verwijderd).

#### 3.8 Model downloaden

Als je problemen hebt met verbinden naar HuggingFace bij het downloaden van de voorgetrainde modellen, probeer dan het endpoint te wisselen naar de mirror-site: export HF_ENDPOINT=https://hf-mirror.com.

Train Je Eigen Model

Zie de egs map voor voorbeelden van training, fine-tuning en evaluatie.

Productie Implementatie

NVIDIA Triton GPU Runtime

Voor productieklare implementatie met hoge prestaties en schaalbaarheid, bekijk de Triton Inference Server integratie die geoptimaliseerde TensorRT-engines, gelijktijdige aanvraagverwerking en zowel gRPC/HTTP API's voor zakelijk gebruik biedt.

CPU Implementatie

Bekijk sherpa-onnx voor de C++ implementatie-oplossing op CPU.

Discussie & Communicatie

Je kunt direct discussiëren op Github Issues.

Je kunt ook de QR-code scannen om lid te worden van onze wechat-groep of ons officiële wechat-account te volgen.

| Wechat Groep | Wechat Officieel Account | | ------------ | ----------------------- | |wechat |wechat |

Citaat

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