Web Analytics

ZipVoice

⭐ 661 stars Simplified Chinese by k2-fsa

🌐 语言

ZipVoice⚡

基于流匹配的快速高质量零样本文本转语音

概述

ZipVoice 是一系列基于流匹配的快速高质量零样本语音合成(TTS)模型。

1. 主要特性

2. 模型变体

模型名称 描述 论文 演示
ZipVoice 基础模型,支持中英文零样本单说话人语音合成。
ZipVoice-Distill ZipVoice 的蒸馏版本,速度更快且性能损失极小。
ZipVoice-Dialog 基于 ZipVoice 构建的对话生成模型,可生成单声道双方对话语音。
ZipVoice-Dialog-Stereo ZipVoice-Dialog 的立体声版本,实现双声道对话生成,每位说话人分配到一个独立声道。

新闻

2025/07/14ZipVoice-DialogZipVoice-Dialog-Stereo 两个语音对话生成模型已发布。arXiv demo page

2025/07/14OpenDialog 数据集(6.8k 小时语音对话数据集)已发布。下载地址:hf, ms。详情请查阅 arXiv

2025/06/16ZipVoiceZipVoice-Distill 已发布。arXiv demo page

安装

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/。

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
#### 1.2 一组句子的推理

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

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
分别生成单声道和立体声对话。

#### 2.2 输入格式

test.tsv 的每一行格式为以下之一:

(1) 合并提示格式,其中两个说话人的音频和转录内容合并为一个提示 wav 文件:

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

(2) 分割提示格式,即两位说话人的音频和转录分别存在于不同文件中:

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

3 更好使用的指导:

#### 3.1 提示音频长度

我们推荐使用较短的提示音频文件(如单说话人语音生成时小于 3 秒,对话语音生成时小于 10 秒),以加快推理速度。提示过长会降低推理速度并影响语音质量。

#### 3.2 速度优化

如果推理速度不理想,可以按如下方式提升:

#### 3.3 内存控制

输入文本会根据标点(单说话人语音生成)或说话人切换符号(对话语音生成)拆分为多个片段。然后分批处理这些文本块。因此,模型能以几乎恒定的内存处理任意长度文本。可通过调整 --max-duration 参数控制内存使用。

#### 3.4 “原始”评估

默认情况下,我们会对输入(提示音频、提示转录与文本)进行预处理,以提升推理效率和表现。如果希望用精确的原始输入评估模型(如复现论文结果),可传递 --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 目录,获取训练、微调和评估的示例。

C++ 部署

请查看 sherpa-onnx,了解在 CPU 上进行 C++ 部署的解决方案。

讨论与交流

你可以在 Github Issues 上直接讨论。

你也可以扫码加入微信群或关注我们的微信公众号。

| 微信群 | 微信公众号 | | ------ | ---------- | |wechat |wechat |

引用

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