ZipVoice:轻量高效的零样本语音合成模型

原创 发布日期:
4

一、ZipVoice是什么

ZipVoice是一款基于流匹配(Flow Matching)技术的零样本语音合成(Text-to-Speech, TTS)模型,核心定位是在保证高质量语音输出的同时,实现轻量化模型架构与快速推理性能的平衡。该项目旨在为开发者提供易用、高效且跨语言的语音合成工具,支持通过少量参考语音(提示音频)克隆说话人音色,无需针对特定说话人进行微调即可生成自然、清晰的目标语音。

作为零样本TTS领域的创新方案,ZipVoice打破了传统语音合成模型对大量目标说话人数据的依赖,仅需一段参考音频及其转录文本,就能精准捕捉说话人的音色特征、语调风格,并将其迁移到新的文本合成任务中。同时,项目通过模型蒸馏技术进一步优化,衍生出轻量化的ZipVoice-Distill版本,满足不同场景下对性能与资源消耗的差异化需求。

ZipVoice

二、ZipVoice功能特色

特色类别 核心表现 技术支撑 实际价值
轻量化架构 基础模型仅123M参数,蒸馏版体积更小 优化的网络结构设计+模型蒸馏技术 降低部署门槛,适配边缘设备、移动端等资源受限场景
高速推理性能 支持CPU快速运行,ONNX格式部署可进一步提速 流匹配技术简化生成流程,k2库加速计算 满足实时语音合成需求,如智能助手、实时播报等场景
高质量合成效果 说话人相似度、语音可懂度、自然度达SOTA水平 流匹配生成范式+精细化数据训练 合成语音接近真人发音,提升用户听觉体验
零样本音色克隆 仅需一段参考音频(prompt wav)即可克隆音色 基于提示的特征迁移机制 无需大量标注数据,快速适配个性化语音需求
多语言支持 原生支持中文与英文两种语言 跨语言文本处理模块+双语语料训练 满足国际化产品的语音合成需求,减少多模型开发成本
灵活的文本处理 支持多音字手动校正、特殊标记识别 自定义拼音标注语法+特殊token解析逻辑 提升中文合成准确性,适配专业术语、特殊发音场景
多模式推理 支持单句合成、批量句子合成两种模式 模块化推理脚本设计 适配单次测试、批量生产等不同使用场景
跨平台部署兼容 支持PyTorch原生部署与ONNX格式导出 标准化模型接口+ONNX生态适配 兼容Windows、Linux、macOS等系统,支持CPU/GPU运行

此外,ZipVoice还具备完善的工具链支持,包括数据预处理脚本、模型训练与蒸馏流程、评估基准测试工具等,形成了从数据准备到模型部署的全流程解决方案,既适合开发者直接使用预训练模型,也支持二次开发与定制训练。

三、ZipVoice技术细节

(一)核心技术架构

ZipVoice基于流匹配(Flow Matching)技术构建核心生成模块,流匹配是一种新兴的生成模型范式,通过学习从简单噪声分布到目标数据分布的连续变换过程,避免了传统扩散模型复杂的反向去噪步骤,在生成速度与质量之间取得了更优平衡。其整体架构主要包含三大模块:

  1. 文本编码模块:负责将输入文本(中文/英文)转换为结构化的语言特征表示。对于英文,采用字符级(char)tokenization;对于中文,通过pypinyin工具将汉字转换为拼音,并支持用户通过特殊标记手动校正多音字。文本编码过程中,会对<>包裹的拼音标记和[]包裹的特殊标签进行单独解析,确保发音准确性与合成灵活性。

  2. 说话人特征提取模块:从参考音频(prompt wav)中提取说话人音色、语调等个性化特征。该模块通过分析参考音频的频谱特征、基频信息等,生成固定维度的说话人嵌入向量(Speaker Embedding),为零样本音色克隆提供核心特征支撑。

  3. 流匹配生成模块:这是ZipVoice的核心模块,接收文本编码特征与说话人嵌入向量作为输入,通过流匹配变换将随机噪声逐步转换为目标语音的频谱图,再经声码器(Vocoder)转换为可听的波形信号。该模块采用123M参数的轻量化设计,同时通过k2库的优化实现高效计算,蒸馏版模型进一步精简网络结构,在牺牲少量质量的前提下提升推理速度。

(二)模型变体对比

项目提供两种核心模型变体,分别针对不同性能需求场景设计,具体差异如下表所示:

模型名称 模型规模 推理速度 合成质量 适用场景
ZipVoice 123M参数 较快 极高(SOTA水平) 对语音质量要求高的场景,如播客生成、有声书制作
ZipVoice-Distill 小于123M参数 更快(约提升30%-50%) 高(接近基础版) 对速度要求高的场景,如实时客服、移动端语音交互

两种模型均支持ONNX格式导出,导出后在CPU上运行可获得更优的速度表现,尤其适合无GPU环境的部署需求。

(三)训练技术细节

ZipVoice的训练流程基于 Emilia 和 LibriTTS 两大公开数据集构建,采用分阶段训练与蒸馏策略,具体技术要点如下:

  1. 数据准备:项目提供自动化数据预处理脚本,支持Emilia(多语言对话数据集)与LibriTTS(英文语音数据集)的快速准备。预处理过程包括音频重采样、梅尔频谱特征提取、文本转录对齐等,最终生成标准化的训练数据清单(manifest)与token文件,为模型训练提供统一输入格式。

  2. 基础模型训练:采用流匹配目标函数训练ZipVoice基础模型,训练过程支持分布式计算(通过--world-size参数指定GPU数量)、混合精度训练(--use-fp16启用)以提升训练效率。训练超参数针对不同数据集优化,例如在Emilia数据集上设置最大时长(max-duration)为500、学习率周期(lr-hours)为30000,在LibriTTS数据集上调整最大时长为250、学习率周期为10个epoch,确保模型适配不同数据分布。

  3. 模型蒸馏流程:蒸馏过程分为两阶段进行。第一阶段以训练好的基础模型为教师模型,学生模型(蒸馏版)通过学习教师模型的输出分布与中间特征,快速掌握核心合成能力;第二阶段以第一阶段蒸馏模型为新教师,进一步微调优化,降低模型复杂度的同时保留高质量合成特性。蒸馏后的模型推理步骤(num-step)可从16缩减至4,显著提升推理速度。

  4. 模型优化策略:训练完成后通过模型平均(Model Averaging)技术生成最终模型,例如在Emilia数据集上对最后4个epoch的 checkpoint 进行平均,在LibriTTS数据集上对最后10个epoch的checkpoint进行平均,有效降低模型方差,提升泛化性能。

(四)推理技术优化

为提升实际使用中的推理效率,ZipVoice采用了多项优化技术:

  • k2库加速:k2库是专为语音处理设计的高效计算库,支持稀疏张量操作与GPU加速,安装后可显著提升推理速度,同时也是模型训练的必要依赖。

  • ONNX格式支持:通过zipvoice/zipvoice_infer_onnx.py脚本支持ONNX模型推理,ONNX作为跨框架的模型格式,可通过ONNX Runtime进行优化,在CPU上的推理速度优于PyTorch原生格式。

  • 批量推理支持:通过读取TSV格式的批量任务清单,一次性处理多个合成任务,减少模型加载与初始化开销,提升批量生产效率。

四、ZipVoice应用场景

(一)个性化语音交互

适用场景:智能助手、智能家居语音反馈、可穿戴设备语音提示等。
适配理由:零样本音色克隆功能允许用户通过一段自己的语音,将智能设备的默认语音替换为个人音色,提升交互亲切感;123M的轻量模型可轻松部署在智能手表、智能音箱等边缘设备上,配合快速推理能力实现实时语音响应。
实际案例:开发者可为智能音箱集成ZipVoice,用户上传30秒个人语音样本后,音箱即可用用户的音色播报天气、新闻等信息。

(二)内容创作工具

适用场景:有声书制作、播客生成、短视频配音等。
适配理由:高质量合成效果确保语音自然度接近真人主播,多语言支持可满足双语有声内容创作需求;批量推理功能可快速处理长篇文本,大幅降低内容制作成本。
实际案例:自媒体创作者可使用ZipVoice克隆知名主播音色,为短视频批量生成配音,或直接将小说文本转换为带角色音色区分的有声书。

(三)企业服务与客服

适用场景:智能客服语音应答、企业通知语音生成、工单自动播报等。
适配理由:蒸馏版模型的高速推理能力可支撑客服系统的实时语音交互需求;企业可通过克隆专业客服的音色,保持语音服务的统一性与专业性;支持多音字校正功能确保产品名称、专业术语的准确发音。
实际案例:银行可使用ZipVoice生成账单提醒语音,通过克隆人工客服的亲切音色,提升用户对通知的接受度,同时批量处理百万级用户的通知任务。

(四)无障碍辅助工具

适用场景:视觉障碍者文本朗读、语言障碍者辅助语音生成等。
适配理由:高可懂度的语音合成确保视觉障碍者能清晰获取文本信息;零样本克隆功能可让语言障碍者通过少量语音样本,生成符合自己音色特征的辅助语音,提升沟通自然性。
实际案例:开发者可基于ZipVoice开发无障碍阅读APP,支持用户上传家人的语音样本,让APP以家人的音色朗读电子书或新闻。

(五)教育与培训

适用场景:双语发音教学、课文朗读、听力材料生成等。
适配理由:原生支持中英文合成,可精准生成标准发音的双语语音;多音字校正功能可帮助学生掌握汉字的正确发音,提升语言学习效果;轻量化模型可部署在教育平板等设备上,支持离线使用。
实际案例:英语教师可使用ZipVoice生成不同口音的英文听力材料,中文教师可通过手动标注拼音,让模型准确朗读包含多音字的古诗或课文。

ZipVoice:轻量高效的零样本语音合成模型

五、ZipVoice使用方法

(一)环境准备与安装

1. 硬件与系统要求

  • 操作系统:Windows 10+/Linux(Ubuntu 18.04+/CentOS 7+)/macOS 11+

  • CPU/GPU:推理支持CPU(推荐4核及以上),训练需NVIDIA GPU(显存≥16GB)

  • Python版本:3.8-3.11

  • 依赖库:PyTorch 2.0+、pypinyin、HuggingFace Hub、k2(可选,用于加速)

2. 安装步骤

步骤1:克隆仓库

打开终端或命令提示符,执行以下命令克隆GitHub仓库:

git clone https://github.com/k2-fsa/ZipVoice.git
cd ZipVoice
步骤2:创建虚拟环境(可选但推荐)

为避免依赖冲突,建议创建独立的Python虚拟环境:

# 创建虚拟环境
python3 -m venv zipvoice
# 激活虚拟环境(Linux/macOS)
source zipvoice/bin/activate
# 激活虚拟环境(Windows)
zipvoice\Scripts\activate
步骤3:安装核心依赖

通过requirements.txt安装基础依赖包:

pip install -r requirements.txt
步骤4:安装k2库(可选)

k2库可加速推理并支持训练功能,需根据PyTorch与CUDA版本选择对应版本安装。例如,PyTorch 2.5.1 + CUDA 12.1环境下的安装命令为:

pip install k2==1.24.4.dev20250208+cuda12.1.torch2.5.1 -f https://k2-fsa.github.io/k2/cuda.html

国内用户可参考k2中文安装指南获取适配版本。

(二)预训练模型推理

ZipVoice的预训练模型托管在HuggingFace平台,推理时会自动下载,支持单句合成与批量合成两种模式,同时提供ONNX加速选项。

1. 单句语音合成

适用于快速测试或单次合成需求,需准备参考音频(prompt.wav)及其转录文本,执行以下命令:

python3 zipvoice/zipvoice_infer.py \
  --model-name "zipvoice" \ # 模型选择:zipvoice(基础版)或zipvoice_distill(蒸馏版)
  --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 # 输出语音路径

特殊文本处理说明

  • 中文多音字校正:用<>包裹正确拼音(含声调),例如“这把剑

    三十公分”(校正“长”的发音为cháng)。
  • 多拼音手动标注:每个拼音单独用<>包裹,例如“这把

    十公分”。
  • 特殊标签:用[]包裹其他特殊标记,模型会自动解析处理。

2. 批量句子合成

适用于大量文本的批量生成,需提前准备TSV格式的任务清单(test.tsv),每行格式为{wav_name}\t{prompt_transcription}\t{prompt_wav}\t{text},执行以下命令:

python3 zipvoice/zipvoice_infer.py \
  --model-name "zipvoice" \
  --test-list test.tsv \ # 批量任务清单路径
  --res-dir results/test # 输出目录,合成语音按wav_name命名

3. ONNX模型加速推理

ONNX格式可在CPU上实现更快的推理速度,使用专用脚本执行:

python3 zipvoice/zipvoice_infer_onnx.py \
  --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_onnx.wav

4. HuggingFace连接问题解决

若因网络问题无法访问HuggingFace,可通过设置镜像站点解决:

# Linux/macOS
export HF_ENDPOINT=https://hf-mirror.com
# Windows(命令提示符)
set HF_ENDPOINT=https://hf-mirror.com
# Windows(PowerShell)
$env:HF_ENDPOINT="https://hf-mirror.com"

(三)自定义模型训练

若需基于自有数据训练模型,可参考以下流程,以Emilia和LibriTTS数据集为例:

1. 数据准备

1.1 Emilia数据集准备

执行自动化预处理脚本,脚本会自动下载并处理数据:

bash scripts/prepare_emilia.sh

可查看scripts/prepare_emilia.sh文件获取数据下载地址、格式转换等详细步骤。

1.2 LibriTTS数据集准备

同理,执行LibriTTS预处理脚本:

bash scripts/prepare_libritts.sh

预处理完成后,数据会存储在data/fbank目录,token文件生成在data目录下。

2. 基础模型训练(以Emilia数据集为例)

步骤1:启动训练
python3 zipvoice/train_flow.py \
  --world-size 8 \ # 分布式训练的GPU数量
  --use-fp16 1 \ # 启用混合精度训练
  --dataset emilia \ # 数据集名称
  --max-duration 500 \ # 单个批次的最大音频时长(秒)
  --lr-hours 30000 \ # 学习率衰减的总时长
  --lr-batches 7500 \ # 学习率更新的批次间隔
  --token-file "data/tokens_emilia.txt" \ # token文件路径
  --manifest-dir "data/fbank" \ # 数据清单目录
  --num-epochs 11 \ # 训练轮数
  --exp-dir zipvoice/exp_zipvoice # 模型输出目录
步骤2:模型平均

训练完成后,对多个epoch的checkpoint进行平均,生成最终模型:

python3 zipvoice/generate_averaged_model.py \
  --epoch 11 \ # 最终训练轮数
  --avg 4 \ # 平均的checkpoint数量(取最后4个epoch)
  --distill 0 \ # 0表示基础模型,1表示蒸馏模型
  --token-file data/tokens_emilia.txt \
  --dataset "emilia" \
  --exp-dir ./zipvoice/exp_zipvoice
# 生成的模型路径:zipvoice/exp_zipvoice/epoch-11-avg-4.pt

3. 蒸馏模型训练(可选)

以基础模型为教师,训练轻量化的蒸馏模型,分两阶段进行:

第一阶段蒸馏
python3 zipvoice/train_distill.py \
  --world-size 8 \
  --use-fp16 1 \
  --tensorboard 1 \ # 启用TensorBoard日志
  --dataset "emilia" \
  --base-lr 0.0005 \ # 基础学习率
  --max-duration 500 \
  --token-file "data/tokens_emilia.txt" \
  --manifest-dir "data/fbank" \
  --teacher-model zipvoice/exp_zipvoice/epoch-11-avg-4.pt \ # 教师模型路径
  --num-updates 60000 \ # 训练更新步数
  --distill-stage "first" \ # 蒸馏阶段:first
  --exp-dir zipvoice/exp_zipvoice_distill_1stage # 第一阶段输出目录
第一阶段模型平均
python3 zipvoice/generate_averaged_model.py \
  --iter 60000 \ # 第一阶段更新步数
  --avg 7 \ # 平均的checkpoint数量
  --distill 1 \
  --token-file data/tokens_emilia.txt \
  --dataset "emilia" \
  --exp-dir ./zipvoice/exp_zipvoice_distill_1stage
# 生成模型:zipvoice/exp_zipvoice_distill_1stage/iter-60000-avg-7.pt
第二阶段蒸馏
python3 zipvoice/train_distill.py \
  --world-size 8 \
  --use-fp16 1 \
  --tensorboard 1 \
  --dataset "emilia" \
  --base-lr 0.0001 \ # 降低学习率进行微调
  --max-duration 200 \
  --token-file "data/tokens_emilia.txt" \
  --manifest-dir "data/fbank" \
  --teacher-model zipvoice/exp_zipvoice_distill_1stage/iter-60000-avg-7.pt \ # 第一阶段蒸馏模型作为教师
  --num-updates 2000 \
  --distill-stage "second" \ # 蒸馏阶段:second
  --exp-dir zipvoice/exp_zipvoice_distill_new # 最终蒸馏模型输出目录

4. 自定义模型推理

使用训练好的模型进行推理,以Emilia数据集训练的基础模型为例:

python3 zipvoice/infer.py \
  --checkpoint zipvoice/exp_zipvoice/epoch-11-avg-4.pt \ # 自定义模型路径
  --distill 0 \
  --token-file "data/tokens_emilia.txt" \
  --test-list test.tsv \ # 批量任务清单
  --res-dir results/test \ # 输出目录
  --num-step 16 \ # 推理步骤数,基础模型通常为16
  --guidance-scale 1 # 引导尺度,控制生成稳定性

(四)模型评估

项目提供基准测试工具,支持在LibriSpeech-PC test-clean(英文)、Seed-TTS test-en(英文)、Seed-TTS test-zh(中文)三个测试集上评估模型性能,执行以下命令查看详细评估流程:

bash local/evaluate.sh

评估指标包括说话人相似度(Speaker Similarity)、语音可懂度(Intelligibility)、自然度(Naturalness)等客观指标,帮助开发者量化模型性能。

六、相关链接

链接类型 具体地址 说明
GitHub仓库https://github.com/k2-fsa/ZipVoice 项目主仓库,包含代码、文档、脚本等全部资源
k2库安装指南https://k2-fsa.org/get-started/k2/ 官方k2库安装文档,含多版本适配说明
k2库中文指南https://k2-fsa.org/zh-CN/get-started/k2/ 针对国内用户的k2库安装与使用指南
预训练模型托管HuggingFace k2-fsa仓库 ZipVoice预训练模型、数据集的HuggingFace托管地址
论文链接arXiv:2506.13053 ZipVoice核心技术论文,详细阐述流匹配架构设计
演示页面https://zipvoice.github.io/ 官方在线演示平台,可体验语音合成效果

七、总结

ZipVoice作为k2-fsa团队推出的开源零样本语音合成项目,以流匹配技术为核心,成功实现了“轻量化、高速度、高质量”的三者平衡,123M参数的基础模型不仅支持中英文跨语言合成,更能通过少量参考语音实现精准的音色克隆,蒸馏版模型进一步满足了资源受限场景的速度需求。项目提供了从环境搭建、预训练模型推理到自定义训练的全流程工具链,支持ONNX加速部署与多音字校正等实用功能,降低了开发者的使用门槛。无论是个性化语音交互、内容创作、企业服务还是教育辅助等场景,ZipVoice都能凭借其灵活的部署方式与优异的合成效果提供可靠支撑,同时Apache-2.0许可协议与活跃的社区维护也为其商业应用与二次开发提供了保障,是当前零样本TTS领域极具实用价值的开源解决方案。

打赏
THE END
作者头像
AI铺子
关注ai行业发展,专注ai工具推荐