ZipVoice⚡
極速且高品質的零樣本文本轉語音,採用流匹配技術
概述
ZipVoice 是一系列基於流匹配的快速且高品質零樣本 TTS 模型。
1. 主要特點
- 小巧且快速:僅有 123M 參數。
- 高品質語音克隆:在說話人相似度、可懂度和自然度上均達到最先進水平。
- 多語言:支援中文和英文。
- 多模式:支援單一說話人及對話語音生成。
2. 模型變體
最新消息
2025/07/14:ZipVoice-Dialog 和 ZipVoice-Dialog-Stereo 兩款語音對話生成模型正式釋出。
2025/07/14:OpenDialog 資料集,包含 6.8k 小時語音對話資料,正式釋出。下載連結:,
。詳情請見
。
2025/06/16:ZipVoice 和 ZipVoice-Distill 模型正式釋出。
安裝
1. 複製 ZipVoice 原始碼庫
git clone https://github.com/k2-fsa/ZipVoice.git
2.(可選)建立 Python 虛擬環境
python3 -m venv zipvoice
source zipvoice/bin/activate
3. 安裝所需的套件
pip install -r requirements.txt
4. 安裝 k2 以進行訓練或高效推理
k2 是訓練所必需的,並且可以加速推理。然而,即使不安裝 k2,你仍然可以使用 ZipVoice 的推理模式。
注意: 請確保安裝與你的 PyTorch 和 CUDA 版本相符的 k2 版本。例如,如果你使用的是 pytorch 2.5.1 和 CUDA 12.1,你可以按照以下方式安裝 k2:
pip install k2==1.24.4.dev20250208+cuda12.1.torch2.5.1 -f https://k2-fsa.github.io/k2/cuda.html
請參閱 https://k2-fsa.org/get-started/k2/ 以了解詳情。
中國大陸用戶可參考 https://k2-fsa.org/zh-CN/get-started/k2/。- 檢查 k2 是否安裝:
python3 -c "import k2; print(k2.__file__)"
使用方式
1. 單一說話者語音生成
要使用我們預訓練的 ZipVoice 或 ZipVoice-Distill 模型生成單一說話者語音,請使用以下指令(所需模型將自 HuggingFace 下載):
#### 1.1 單句推論
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
--model-name可以是zipvoice或zipvoice_distill,分別代表蒸餾前和蒸餾後的模型。- 若文字中出現
<>或[],則被括號包住的字串將被視為特殊標記。<>表示中文拼音,[]表示其他特殊標籤。
python3 -m zipvoice.bin.infer_zipvoice \
--model-name zipvoice \
--test-list test.tsv \
--res-dir results
test.tsv的每一行格式為{wav_name}\t{prompt_transcription}\t{prompt_wav}\t{text}。
2. 對話語音生成
#### 2.1 推論指令
要使用我們預訓練的 ZipVoice-Dialogue 或 ZipVoice-Dialogue-Stereo 模型生成雙方對話語音,請使用以下指令(所需模型將從 HuggingFace 下載):
python3 -m zipvoice.bin.infer_zipvoice_dialog \
--model-name "zipvoice_dialog" \
--test-list test.tsv \
--res-dir results
--model-name可以是zipvoice_dialog或zipvoice_dialog_stereo,
#### 2.2 輸入格式
test.tsv 的每一行都是以下格式之一:
(1) 合併提示格式,其中兩位說話者的提示音訊和轉錄被合併為一個提示 wav 檔案:
{wav_name}\t{prompt_transcription}\t{prompt_wav}\t{text}wav_name是輸出 wav 檔案的名稱。prompt_transcription是對話提示 wav 的文字轉錄,例如:「[S1] 你好。 [S2] 你好嗎?」prompt_wav是提示 wav 的路徑。text是要合成的文字,例如:「[S1] 我很好。 [S2] 你叫什麼名字? [S1] 我叫 Eric。 [S2] 嗨 Eric。」
{wav_name}\t{spk1_prompt_transcription}\t{spk2_prompt_transcription}\t{spk1_prompt_wav}\t{spk2_prompt_wav}\t{text}
wav_name是輸出 wav 檔案的名稱。spk1_prompt_transcription是第一位說話者的提示 wav 文字轉錄,例如「Hello」spk2_prompt_transcription是第二位說話者的提示 wav 文字轉錄,例如「How are you?」spk1_prompt_wav是第一位說話者的提示 wav 檔案路徑。spk2_prompt_wav是第二位說話者的提示 wav 檔案路徑。text是要合成的文字,例如:「[S1] I'm fine. [S2] What's your name? [S1] I'm Eric. [S2] Hi Eric.」
3 使用指引:
#### 3.1 提示長度
我們建議使用較短的提示 wav 檔案(例如單一說話者語音生成少於 3 秒,對話語音生成少於 10 秒),以加快推論速度。過長的提示會降低推論速度並影響語音品質。
#### 3.2 速度優化
如果推論速度不理想,可以透過以下方式加快速度:
- 精簡模型與減少步數:單一說話者語音生成模型預設使用
zipvoice模型以獲得更佳語音品質。如優先考量速度,可切換至zipvoice_distill並將--num-steps降至最低4(預設為 8)。 - CPU 多執行緒加速:在 CPU 執行時,可傳入
--num-thread參數(例如--num-thread 4)以增加執行緒數量加快速度。預設為 1 執行緒。 - CPU ONNX 加速:在 CPU 執行時,可使用 ONNX 模型搭配
zipvoice.bin.infer_zipvoice_onnx以提升速度(目前尚未支援對話生成模型的 ONNX)。若需更快速度,可進一步設定--onnx-int8 True使用 INT8 量化 ONNX 模型。注意量化模型會造成語音品質一定程度下降。請勿在 GPU 上使用 ONNX,因其在 GPU 上比 PyTorch 慢。 - NVIDIA TensorRT GPU 加速:如需在 NVIDIA GPU 上大幅提升效能,請先使用 zipvoice.bin.tensorrt_export 將模型匯出為 TensorRT 引擎。然後以 zipvoice.bin.infer_zipvoice 在您的資料集(如 Hugging Face 資料集)上執行推論。此方式可達到約 2 倍於 GPU 上標準 PyTorch 實作的吞吐量。
所提供的文字將依標點符號(單一說話者語音生成)或說話者換人符號(對話語音生成)分段。分段後的文字將以批次處理。因此,模型可用幾乎固定的記憶體用量處理任意長度文字。可透過調整 --max-duration 參數控制記憶體使用量。
#### 3.4 「原始」評估
預設會對輸入(提示 wav、提示文字轉錄及文字)進行預處理,以提升推論效率及效能。如欲以完全原始輸入評估模型(例如重現論文結果),可傳入 --raw-evaluation True。
#### 3.5 短文字
在生成非常短的語音(例如一兩個字)時,生成語音可能會略掉部分發音。此時可傳入 --speed 0.3(0.3 為可調參數),以延長生成語音時間。
#### 3.6 修正中文多音字發音錯誤
我們使用 pypinyin 來將中文字符轉換為拼音。然而,它偶爾會將多音字拼錯。
要手動更正這些錯誤發音,請將正確的拼音用尖括號 < > 括起,並包含聲調標記。
範例:
- 原文:
这把剑长三十公分 - 更正
长的拼音:这把剑三十公分
<> 括起,例如:这把十公分 #### 3.7 移除生成語音中的長時間靜音
模型會自動判斷生成語音中的靜音位置和長度。有時在語音中間會有較長的靜音。如果您不希望這樣,可以傳遞 --remove-long-sil 來移除生成語音中間的長時間靜音(邊緣靜音預設會被移除)。
#### 3.8 模型下載
如果您在下載預訓練模型時連接 HuggingFace 有困難,請嘗試將端點切換為鏡像站:export HF_ENDPOINT=https://hf-mirror.com。
訓練您自己的模型
請參閱 egs 目錄以獲取訓練、微調和評估的範例。
生產部署
NVIDIA Triton GPU 執行環境
如需具備高效能與可擴展性的生產級部署,請參閱 Triton Inference Server 整合,該方案提供最佳化的 TensorRT 引擎、並發請求處理,以及同時支援 gRPC/HTTP API 以供企業使用。
CPU 部署
請參閱 sherpa-onnx 以獲得基於 CPU 的 C++ 部署解決方案。
討論與交流
您可以直接在 Github Issues 上討論。
您也可以掃描二維碼加入我們的微信群或關注我們的微信公眾號。
| 微信群 | 微信公眾號 |
| ------------ | ----------------------- |
|
|
|
引用
@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 ---