Web Analytics

ZipVoice

⭐ 748 stars Polish by k2-fsa

🌐 Język

ZipVoice⚡

Szybka i wysokiej jakości synteza mowy z tekstu bez uczenia głosu z dopasowaniem przepływu

Przegląd

ZipVoice to seria szybkich i wysokiej jakości modeli TTS typu zero-shot opartych na flow matching.

1. Kluczowe cechy

2. Warianty modeli

Nazwa modelu Opis Publikacja Demo
ZipVoice Podstawowy model obsługujący zero-shot TTS dla pojedynczego mówcy w języku chińskim i angielskim.
ZipVoice-Distill Wersja destylowana ZipVoice, charakteryzująca się zwiększoną szybkością przy minimalnej utracie wydajności.
ZipVoice-Dialog Model generowania dialogów oparty na ZipVoice, zdolny do generowania jednopasmowych, dwustronnych dialogów mówionych.
ZipVoice-Dialog-Stereo Wariant stereo ZipVoice-Dialog, umożliwiający generowanie dwukanałowych dialogów z przypisaniem każdego rozmówcy do oddzielnego kanału.

Aktualności

2025/07/14: Modele generowania mowy dialogowej ZipVoice-Dialog oraz ZipVoice-Dialog-Stereo zostały wydane. arXiv demo page

2025/07/14: Zbiór danych OpenDialog, obejmujący 6,8 tysiąca godzin dialogów mówionych, został wydany. Pobierz z hf, ms. Szczegóły na arXiv.

2025/06/16: ZipVoice oraz ZipVoice-Distill zostały wydane. arXiv demo page

Instalacja

1. Sklonuj repozytorium ZipVoice

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

2. (Opcjonalnie) Utwórz wirtualne środowisko Pythona

python3 -m venv zipvoice
source zipvoice/bin/activate

3. Zainstaluj wymagane pakiety

pip install -r requirements.txt

4. Zainstaluj k2 do treningu lub wydajnego wnioskowania

k2 jest niezbędne do treningu i może przyspieszyć wnioskowanie. Niemniej jednak, możesz korzystać z trybu wnioskowania ZipVoice bez instalowania k2.

Uwaga: Upewnij się, że instalujesz wersję k2 pasującą do Twojej wersji PyTorch i CUDA. Na przykład, jeśli używasz pytorch 2.5.1 i CUDA 12.1, możesz zainstalować k2 w następujący sposób:

pip install k2==1.24.4.dev20250208+cuda12.1.torch2.5.1 -f https://k2-fsa.github.io/k2/cuda.html
Proszę zapoznać się ze stroną https://k2-fsa.org/get-started/k2/ po szczegóły. Użytkownicy z Chin kontynentalnych mogą zapoznać się ze stroną https://k2-fsa.org/zh-CN/get-started/k2/.

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

Użytkowanie

1. Generowanie mowy jednego mówcy

Aby wygenerować mowę jednego mówcy przy użyciu naszych wytrenowanych modeli ZipVoice lub ZipVoice-Distill, użyj następujących poleceń (wymagane modele zostaną pobrane z HuggingFace):

#### 1.1 Wnioskowanie dla pojedynczego zdania

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 Wnioskowanie listy zdań

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

2. Generowanie mowy dialogowej

#### 2.1 Polecenie inferencji

Aby wygenerować dwuosobowe dialogi mówione za pomocą naszych wytrenowanych modeli ZipVoice-Dialogue lub ZipVoice-Dialogue-Stereo, użyj następujących poleceń (Wymagane modele zostaną pobrane z HuggingFace):

python3 -m zipvoice.bin.infer_zipvoice_dialog \
    --model-name "zipvoice_dialog" \
    --test-list test.tsv \
    --res-dir results
które generują odpowiednio dialogi mono i stereo.

#### 2.2 Format wejściowy

Każda linia w pliku test.tsv ma jeden z poniższych formatów:

(1) Format scalonej podpowiedzi, gdzie nagrania audio i transkrypcje dwóch mówców są scalone w jeden plik wav z podpowiedzią:

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

(2) Format podzielonego promptu, gdzie nagrania i transkrypcje dwóch rozmówców znajdują się w osobnych plikach:

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

3 Wskazówki dla lepszego użytkowania:

#### 3.1 Długość promptu

Zalecamy krótki plik promptu wav (np. krótszy niż 3 sekundy dla syntezy pojedynczego mówcy, krótszy niż 10 sekund dla syntezy dialogowej) dla szybszego działania. Bardzo długi prompt spowolni inferencję i pogorszy jakość mowy.

#### 3.2 Optymalizacja szybkości

Jeśli prędkość inferencji jest niezadowalająca, możesz ją zwiększyć w następujący sposób:

#### 3.3 Kontrola pamięci

Podany tekst zostanie podzielony na fragmenty na podstawie interpunkcji (dla syntezy pojedynczego mówcy) lub symbolu zmiany mówcy (dla syntezy dialogowej). Następnie fragmenty tekstu będą przetwarzane w partiach. Dzięki temu model może przetwarzać dowolnie długie teksty przy niemal stałym zużyciu pamięci. Możesz kontrolować użycie pamięci przez regulację parametru --max-duration.

#### 3.4 Ocena "Raw"

Domyślnie przetwarzamy wejścia (prompt wav, transkrypcję promptu i tekst) dla wydajnej inferencji i lepszych wyników. Jeśli chcesz ocenić "surowe" działanie modelu na dokładnie podanych danych (np. by odtworzyć wyniki z naszej publikacji), możesz podać --raw-evaluation True.

#### 3.5 Krótki tekst

Podczas generowania mowy dla bardzo krótkich tekstów (np. jedno lub dwa słowa), wygenerowana mowa może czasem pomijać pewne wymowy. Aby rozwiązać ten problem, można podać --speed 0.3 (gdzie 0.3 to wartość do dostrojenia), by wydłużyć czas trwania wygenerowanej mowy.

#### 3.6 Korekta błędnej wymowy chińskich znaków polifonicznych

Używamy pypinyin do konwersji znaków chińskich na pinyin. Jednak czasami może błędnie wymawiać znaki wielogłosowe (多音字).

Aby ręcznie poprawić te błędne wymowy, umieść poprawiony pinyin w nawiasach ostrych < > i dodaj znak tonu.

Przykład:

> Uwaga: Jeśli chcesz ręcznie przypisać kilka pinyinów, umieść każdy pinyin w <>, np. 这把十公分

#### 3.7 Usuwanie długich pauz z wygenerowanej mowy

Model automatycznie określa pozycje i długości pauz w wygenerowanej mowie. Czasami pojawia się długa pauza w środku wypowiedzi. Jeśli tego nie chcesz, możesz użyć --remove-long-sil, aby usunąć długie pauzy w środku wygenerowanej mowy (pauzy na początku i końcu są usuwane domyślnie).

#### 3.8 Pobieranie modelu

Jeśli masz problemy z połączeniem z HuggingFace podczas pobierania wstępnie wytrenowanych modeli, spróbuj zmienić endpoint na mirror: export HF_ENDPOINT=https://hf-mirror.com.

Trenuj własny model

Zobacz katalog egs po przykłady treningu, fine-tuningu i ewaluacji.

Wdrożenie produkcyjne

NVIDIA Triton GPU Runtime

Aby wdrożyć produkcyjnie z wysoką wydajnością i skalowalnością, zobacz integrację z Triton Inference Server, która zapewnia zoptymalizowane silniki TensorRT, obsługę współbieżnych żądań oraz oba API gRPC/HTTP dla zastosowań firmowych.

Wdrożenie na CPU

Sprawdź sherpa-onnx jako rozwiązanie do wdrożenia w C++ na CPU.

Dyskusja i komunikacja

Możesz dyskutować bezpośrednio na Github Issues.

Możesz także zeskanować kod QR, aby dołączyć do naszej grupy na Wechat lub obserwować nasze oficjalne konto Wechat.

| Grupa Wechat | Oficjalne konto Wechat | | ------------ | ----------------------- | |wechat |wechat |

Cytowanie

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