Web Analytics

ZipVoice

⭐ 661 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 Promptlengte

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 een snellere inferentiesnelheid. Een erg lang prompt zal de inferentie vertragen en de spraakkwaliteit verminderen.

#### 3.2 Snelheidsoptimalisatie

Als de inferentiesnelheid onbevredigend is, kun je deze versnellen als volgt:

#### 3.3 Geheugenbeheer

De opgegeven tekst wordt gesplitst in stukken op basis van interpunctie (voor spraakgeneratie met één spreker) of sprekerwisselsymbool (voor dialoogspraakgeneratie). Vervolgens worden de gesplitste teksten in batches verwerkt. Hierdoor kan het model willekeurig lange tekst verwerken met vrijwel constant geheugengebruik. Je kunt het geheugengebruik regelen door de parameter --max-duration aan te passen.

#### 3.4 "Ruwe" evaluatie

Standaard preprocessen we invoer (prompt-wav, prompttranscriptie 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 uit ons artikel 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 soms gebeuren dat bepaalde uitspraken ontbreken in de gegenereerde spraak. Om dit probleem op te lossen, kun je --speed 0.3 meegeven (waarbij 0.3 een instelbare waarde is) om de duur van de gegenereerde spraak te verlengen.

#### 3.6 Corrigeren van verkeerd uitgesproken Chinese polyfone karakters

We gebruiken pypinyin om Chinese karakters naar pinyin om te zetten. Soms worden polyfone karakters (多音字) echter verkeerd uitgesproken.

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

Voorbeeld:

> Opmerking: Als je handmatig meerdere pinyins wilt toewijzen, plaats elke pinyin tussen <>, bijvoorbeeld: 这把十公分

#### 3.7 Verwijder lange stiltes uit het gegenereerde spraakfragment

Het model bepaalt automatisch de posities en lengtes van stiltes in het gegenereerde spraakfragment. Soms zijn er lange stiltes in het midden van het spraakfragment. Als je dit niet wilt, kun je --remove-long-sil gebruiken om lange stiltes in het midden van het gegenereerde spraakfragment te verwijderen (stiltes aan het begin en einde worden standaard verwijderd).

#### 3.8 Model downloaden

Als je problemen hebt met het verbinden met HuggingFace bij het downloaden van de voorgetrainde modellen, probeer dan over te schakelen 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.

C++ 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 |

Referentie

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