Web Analytics

ZipVoice

⭐ 661 stars Indonesian by k2-fsa

🌐 Bahasa

ZipVoice⚡

Teks-ke-Ucapan Zero-Shot yang Cepat dan Berkualitas Tinggi dengan Flow Matching

Ikhtisar

ZipVoice adalah serangkaian model TTS zero-shot yang cepat dan berkualitas tinggi berbasis flow matching.

1. Fitur utama

2. Varian model

Nama Model Deskripsi Paper Demo
ZipVoice Model dasar yang mendukung TTS zero-shot pembicara tunggal dalam Bahasa Mandarin dan Inggris.
ZipVoice-Distill Versi distilasi dari ZipVoice, dengan kecepatan yang ditingkatkan dan penurunan performa yang minimal.
ZipVoice-Dialog Model generasi dialog yang dibangun di atas ZipVoice, mampu menghasilkan dialog dua pihak dalam satu kanal.
ZipVoice-Dialog-Stereo Varian stereo dari ZipVoice-Dialog, memungkinkan generasi dialog dua saluran dengan masing-masing pembicara ditempatkan pada saluran yang berbeda.

Berita

2025/07/14: ZipVoice-Dialog dan ZipVoice-Dialog-Stereo, dua model generasi dialog lisan, telah dirilis. arXiv demo page

2025/07/14: Dataset OpenDialog, dataset dialog lisan berdurasi 6.8k-jam, telah dirilis. Unduh di hf, ms. Lihat detailnya di arXiv.

2025/06/16: ZipVoice dan ZipVoice-Distill telah dirilis. arXiv demo page

Instalasi

1. Clone repositori ZipVoice

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

2. (Opsional) Buat lingkungan virtual Python

python3 -m venv zipvoice
source zipvoice/bin/activate

3. Instal paket yang diperlukan

pip install -r requirements.txt

4. Instal k2 untuk pelatihan atau inferensi efisien

k2 diperlukan untuk pelatihan dan dapat mempercepat inferensi. Namun demikian, Anda masih dapat menggunakan mode inferensi ZipVoice tanpa menginstal k2.

Catatan: Pastikan untuk menginstal versi k2 yang sesuai dengan versi PyTorch dan CUDA Anda. Sebagai contoh, jika Anda menggunakan pytorch 2.5.1 dan CUDA 12.1, Anda dapat menginstal k2 sebagai berikut:

pip install k2==1.24.4.dev20250208+cuda12.1.torch2.5.1 -f https://k2-fsa.github.io/k2/cuda.html
Silakan merujuk ke https://k2-fsa.org/get-started/k2/ untuk detailnya. Pengguna di Tiongkok daratan dapat merujuk ke https://k2-fsa.org/zh-CN/get-started/k2/.

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

Penggunaan

1. Pembuatan Ucapan Satu Pembicara

Untuk menghasilkan ucapan satu pembicara dengan model pra-latih ZipVoice atau ZipVoice-Distill kami, gunakan perintah berikut (Model yang diperlukan akan diunduh dari HuggingFace):

#### 1.1 Inferensi satu kalimat

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 Inferensi daftar kalimat

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

2. Generasi Ucapan Dialog

#### 2.1 Perintah Inferensi

Untuk menghasilkan dialog lisan dua pihak dengan model ZipVoice-Dialogue atau ZipVoice-Dialogue-Stereo pra-latih kami, gunakan perintah berikut (Model yang diperlukan akan diunduh dari HuggingFace):

python3 -m zipvoice.bin.infer_zipvoice_dialog \
    --model-name "zipvoice_dialog" \
    --test-list test.tsv \
    --res-dir results
yang masing-masing menghasilkan dialog mono dan stereo.

#### 2.2 Format Input

Setiap baris dari test.tsv menggunakan salah satu format berikut:

(1) Format prompt gabungan di mana audio dan transkripsi dari dua pembicara digabungkan menjadi satu file wav prompt:

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

(2) Format prompt terpisah di mana audio dan transkripsi dari dua pembicara ada di file terpisah:

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

3 Panduan untuk penggunaan lebih baik:

#### 3.1 Panjang prompt

Kami merekomendasikan file wav prompt yang pendek (misalnya, kurang dari 3 detik untuk generasi ucapan satu pembicara, kurang dari 10 detik untuk generasi ucapan dialog) untuk mempercepat kecepatan inferensi. Prompt yang terlalu panjang akan memperlambat inferensi dan menurunkan kualitas ucapan.

#### 3.2 Optimasi kecepatan

Jika kecepatan inferensi kurang memuaskan, Anda dapat mempercepatnya dengan cara berikut:

#### 3.3 Kontrol memori

Teks yang diberikan akan dibagi menjadi beberapa bagian berdasarkan tanda baca (untuk generasi ucapan satu pembicara) atau simbol pergantian pembicara (untuk generasi ucapan dialog). Kemudian, bagian-bagian teks tersebut akan diproses secara batch. Dengan demikian, model dapat memproses teks sepanjang apapun dengan penggunaan memori yang hampir tetap. Anda dapat mengontrol penggunaan memori dengan mengatur parameter --max-duration.

#### 3.4 Evaluasi "Raw"

Secara default, kami melakukan pra-pemrosesan pada input (prompt wav, transkripsi prompt, dan teks) untuk inferensi yang efisien dan performa yang lebih baik. Jika Anda ingin mengevaluasi performa "raw" model menggunakan input yang diberikan secara persis (misalnya, untuk mereproduksi hasil pada paper kami), Anda dapat menggunakan --raw-evaluation True.

#### 3.5 Teks pendek

Saat menghasilkan ucapan untuk teks yang sangat pendek (misal, satu atau dua kata), ucapan yang dihasilkan kadang-kadang dapat menghilangkan beberapa pelafalan. Untuk mengatasi masalah ini, Anda dapat menggunakan --speed 0.3 (di mana 0.3 adalah nilai yang dapat diatur) untuk memperpanjang durasi ucapan yang dihasilkan.

#### 3.6 Koreksi pelafalan karakter polifonik bahasa Mandarin yang salah

Kami menggunakan pypinyin untuk mengonversi karakter Mandarin ke pinyin. Namun, terkadang dapat salah melafalkan karakter polifonik (多音字).

Untuk memperbaiki pengucapan yang salah secara manual, sertakan pinyin yang sudah dikoreksi di dalam tanda kurung sudut < > dan tambahkan tanda nada.

Contoh:

> Catatan: Jika Anda ingin menetapkan beberapa pinyin secara manual, sertakan setiap pinyin dengan <>, misal: 这把十公分

#### 3.7 Hapus jeda panjang dari suara yang dihasilkan

Model akan secara otomatis menentukan posisi dan durasi jeda dalam suara yang dihasilkan. Kadang-kadang terdapat jeda panjang di tengah suara. Jika Anda tidak menginginkannya, Anda dapat menggunakan --remove-long-sil untuk menghapus jeda panjang di tengah suara yang dihasilkan (jeda di tepi akan dihapus secara default).

#### 3.8 Pengunduhan model

Jika Anda mengalami kesulitan terhubung ke HuggingFace saat mengunduh model pra-latih, coba ganti endpoint ke situs mirror: export HF_ENDPOINT=https://hf-mirror.com.

Latih Model Anda Sendiri

Lihat direktori egs untuk contoh pelatihan, fine-tuning dan evaluasi.

Deployment C++

Lihat sherpa-onnx untuk solusi deployment C++ di CPU.

Diskusi & Komunikasi

Anda dapat berdiskusi langsung di Github Issues.

Anda juga dapat memindai kode QR untuk bergabung dengan grup wechat kami atau mengikuti akun resmi wechat kami.

| Grup Wechat | Akun Resmi Wechat | | ------------ | ----------------------- | |wechat |wechat |

Kutipan

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