Web Analytics

ZipVoice

⭐ 748 stars Vietnamese by k2-fsa

🌐 Ngôn ngữ

ZipVoice⚡

Chuyển văn bản thành giọng nói nhanh và chất lượng cao với Flow Matching

Tổng quan

ZipVoice là một loạt các mô hình TTS zero-shot nhanh và chất lượng cao dựa trên flow matching.

1. Đặc điểm chính

2. Các biến thể mô hình

Tên mô hình Mô tả Bài báo Demo
ZipVoice Mô hình cơ bản hỗ trợ TTS zero-shot cho cả tiếng Trung và tiếng Anh với giọng nói một người.
ZipVoice-Distill Phiên bản rút gọn của ZipVoice, tăng tốc độ với suy giảm hiệu năng tối thiểu.
ZipVoice-Dialog Mô hình tạo đối thoại dựa trên ZipVoice, có khả năng tạo hội thoại hai bên trên một kênh âm thanh.
ZipVoice-Dialog-Stereo Biến thể stereo của ZipVoice-Dialog, cho phép tạo cuộc hội thoại hai kênh với mỗi người nói được gán vào một kênh riêng biệt.

Tin tức

2025/07/14: ZipVoice-DialogZipVoice-Dialog-Stereo, hai mô hình tạo hội thoại nói, đã được phát hành. arXiv demo page

2025/07/14: Bộ dữ liệu OpenDialog, bộ dữ liệu hội thoại nói với thời lượng 6.8k giờ, đã được phát hành. Tải về tại hf, ms. Xem chi tiết tại arXiv.

2025/06/16: ZipVoiceZipVoice-Distill đã được phát hành. arXiv demo page

Cài đặt

1. Nhân bản kho lưu trữ ZipVoice

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

2. (Tùy chọn) Tạo một môi trường ảo Python

python3 -m venv zipvoice
source zipvoice/bin/activate

3. Cài đặt các gói cần thiết

pip install -r requirements.txt

4. Cài đặt k2 để huấn luyện hoặc suy luận hiệu quả

k2 là cần thiết cho việc huấn luyện và có thể tăng tốc quá trình suy luận. Tuy nhiên, bạn vẫn có thể sử dụng chế độ suy luận của ZipVoice mà không cần cài đặt k2.

Lưu ý: Đảm bảo cài đặt phiên bản k2 phù hợp với phiên bản PyTorch và CUDA của bạn. Ví dụ, nếu bạn đang sử dụng pytorch 2.5.1 và CUDA 12.1, bạn có thể cài đặt k2 như sau:

pip install k2==1.24.4.dev20250208+cuda12.1.torch2.5.1 -f https://k2-fsa.github.io/k2/cuda.html
Vui lòng tham khảo https://k2-fsa.org/get-started/k2/ để biết chi tiết. Người dùng tại Trung Quốc đại lục có thể tham khảo https://k2-fsa.org/zh-CN/get-started/k2/.

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

Sử dụng

1. Tạo giọng nói một người nói

Để tạo giọng nói một người nói với các mô hình ZipVoice hoặc ZipVoice-Distill đã được huấn luyện trước của chúng tôi, hãy sử dụng các lệnh sau (Các mô hình cần thiết sẽ được tải xuống từ HuggingFace):

#### 1.1 Suy luận một câu đơn lẻ

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 Suy luận một danh sách các câu

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

2. Tạo sinh lời thoại

#### 2.1 Lệnh suy luận

Để tạo sinh các cuộc hội thoại hai người nói với các mô hình ZipVoice-Dialogue hoặc ZipVoice-Dialogue-Stereo đã được huấn luyện trước của chúng tôi, hãy sử dụng các lệnh sau (Các mô hình cần thiết sẽ được tải xuống từ HuggingFace):

python3 -m zipvoice.bin.infer_zipvoice_dialog \
    --model-name "zipvoice_dialog" \
    --test-list test.tsv \
    --res-dir results
lần lượt tạo ra các đoạn hội thoại mono và stereo.

#### 2.2 Định dạng đầu vào

Mỗi dòng của test.tsv sẽ thuộc một trong các định dạng sau:

(1) Định dạng prompt gộp trong đó âm thanh và bản ghi lời thoại của hai người nói được gộp vào một tệp wav prompt:

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

(2) Định dạng gợi ý tách riêng nơi các tệp âm thanh và phiên âm của hai người nói tồn tại ở các tệp riêng biệt:

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

3 Hướng dẫn sử dụng tốt hơn:

#### 3.1 Độ dài prompt

Chúng tôi khuyến nghị sử dụng tệp wav nhắc nhở ngắn (ví dụ, dưới 3 giây cho tạo giọng nói một người, dưới 10 giây cho tạo hội thoại) để tăng tốc độ suy luận. Tệp nhắc nhở quá dài sẽ làm chậm quá trình suy luận và giảm chất lượng giọng nói.

#### 3.2 Tối ưu hóa tốc độ

Nếu tốc độ suy luận chưa đạt yêu cầu, bạn có thể tăng tốc như sau:

#### 3.3 Kiểm soát bộ nhớ

Văn bản đầu vào sẽ được chia thành các đoạn nhỏ dựa trên dấu câu (cho tạo giọng nói một người) hoặc ký hiệu đổi người nói (cho tạo hội thoại). Sau đó, các đoạn văn bản sẽ được xử lý theo lô. Do đó, mô hình có thể xử lý văn bản dài bất kỳ với mức sử dụng bộ nhớ gần như không đổi. Bạn có thể kiểm soát bộ nhớ bằng cách điều chỉnh tham số --max-duration.

#### 3.4 Đánh giá "Raw"

Mặc định, chúng tôi sẽ tiền xử lý các đầu vào (wav nhắc nhở, bản ghi nhắc nhở và văn bản) để tối ưu hóa suy luận và hiệu suất. Nếu bạn muốn đánh giá hiệu suất "gốc" của mô hình bằng đúng đầu vào cung cấp (ví dụ, để tái tạo kết quả trong bài báo của chúng tôi), bạn có thể truyền --raw-evaluation True.

#### 3.5 Văn bản ngắn

Khi tạo giọng nói cho các văn bản rất ngắn (ví dụ, một hoặc hai từ), giọng nói tạo ra đôi khi có thể bị thiếu một số âm tiết. Để khắc phục vấn đề này, bạn có thể truyền --speed 0.3 (trong đó 0.3 là giá trị có thể điều chỉnh) để kéo dài thời lượng của giọng nói tạo ra.

#### 3.6 Sửa lỗi phát âm sai các ký tự đa âm tiếng Trung

Chúng tôi sử dụng pypinyin để chuyển đổi ký tự tiếng Trung sang pinyin. Tuy nhiên, đôi khi nó có thể phát âm sai chữ đa âm (多音字).

Để sửa các phát âm sai này một cách thủ công, hãy đặt pinyin đã chỉnh sửa trong dấu ngoặc nhọn < > và thêm dấu thanh.

Ví dụ:

> Lưu ý: Nếu bạn muốn gán thủ công nhiều pinyin, hãy đặt mỗi pinyin trong <>, ví dụ: 这把十公分

#### 3.7 Loại bỏ khoảng lặng dài khỏi giọng nói đã tạo

Mô hình sẽ tự động xác định vị trí và độ dài của các khoảng lặng trong giọng nói đã tạo. Đôi khi có khoảng lặng dài ở giữa bài nói. Nếu bạn không muốn điều này, bạn có thể truyền --remove-long-sil để loại bỏ các khoảng lặng dài ở giữa giọng nói đã tạo (các khoảng lặng ở đầu/cuối sẽ được loại bỏ mặc định).

#### 3.8 Tải mô hình

Nếu bạn gặp sự cố khi kết nối với HuggingFace để tải các mô hình đã huấn luyện trước, hãy thử chuyển endpoint sang trang mirror: export HF_ENDPOINT=https://hf-mirror.com.

Huấn luyện mô hình của bạn

Xem thư mục egs để biết ví dụ về huấn luyện, fine-tuning và đánh giá.

Triển khai sản xuất

NVIDIA Triton GPU Runtime

Để triển khai sản xuất sẵn sàng với hiệu năng và khả năng mở rộng cao, hãy tham khảo Triton Inference Server integration cung cấp các engine TensorRT tối ưu, xử lý yêu cầu đồng thời và các API gRPC/HTTP cho doanh nghiệp.

Triển khai CPU

Xem sherpa-onnx để biết giải pháp triển khai C++ trên CPU.

Thảo luận & Trao đổi

Bạn có thể thảo luận trực tiếp trên Github Issues.

Bạn cũng có thể quét mã QR để tham gia nhóm wechat của chúng tôi hoặc theo dõi tài khoản wechat chính thức.

| Nhóm Wechat | Tài khoản Wechat chính thức | | ------------ | ----------------------- | |wechat |wechat |

Trích dẫn

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