产品简介
So-VITS-SVC 是一个托管在 GitHub 上的开源项目,全称为 SoftVC VITS Singing Voice Conversion。该项目旨在为开发者提供一个用于歌声转换(SVC)的研究框架,其核心目标是让虚拟角色或特定音色能够执行歌唱任务。需要明确的是,该项目专注于将源音频的人声转换为目标音色,而非从文本生成语音(TTS)。因此,它不支持文本转语音功能,且其模型架构与传统的 VITS 文本转语音模型不兼容。
核心技术原理
该模型采用 SoftVC 内容编码器从源音频中提取语音特征。这些特征向量直接输入到 VITS 结构中,无需转换为基于文本的中间表示。这种设计使得原始音频的音高、语调和韵律得以完整保留。此外,项目将声码器替换为 NSF HiFiGAN,以解决声音中断问题,从而生成更清晰、自然的合成音频。在 4.1-Stable 版本中,特征输入更改为 Content Vec Transformer 输出的第 12 层,并增加了对 Whisper-PPG 编码器的支持。
主要功能特色
- 高保真音色转换:通过保留源音频的音高和语调,实现接近原声或原唱的音色相似度和表现力。
- 浅扩散增强:支持使用浅扩散模型来提高声音质量,用户可选择是否启用此功能以优化输出效果。
- 多编码器支持:兼容多种语音编码器,包括 ContentVec、HubertSoft、Whisper-PPG、CNHubertLarge、DPHubert 和 WavLM 等,用户可根据需求选择。
- 动态响度嵌入:新增响度嵌入功能,使训练后的模型能够匹配输入源的响度,提升听感一致性。
- RVC 特征检索:集成了来自 RVC 的特征检索功能,进一步丰富模型的表现能力。
工作流程概述
使用该项目需要用户具备一定的技术基础,主要流程包括数据准备、预处理、模型训练和推理。
- 数据集准备:用户需将 WAV 格式的音频文件按说话人分类放置在指定目录中,建议音频片段长度控制在 5 至 15 秒之间。
- 预处理:运行脚本进行重采样至 44100Hz 单声道,自动生成训练集和验证集配置文件,并提取 Hubert 特征及 F0 信息。
- 模型训练:用户需独立训练 Sovits 模型和可选的扩散模型。训练过程中可调整批量大小、保持的检查点数量等参数以适应硬件条件。
- 推理转换:使用训练好的模型和配置文件,通过推理脚本对目标音频进行音色转换,支持调整音高偏移和选择说话人 ID。
适用人群与场景
该项目主要面向人工智能研究人员、音频处理开发者以及对语音合成技术感兴趣的技术爱好者。适用场景包括学术研究、技术交流以及非商业性质的创意创作。由于项目声明仅用于学术目的,不建议将其部署于生产环境。创作者在使用时需注意,任何基于此项目的视频发布均需明确标注输入源 vocals 和音频来源,以符合使用条款。
使用建议与注意事项
在使用 So-VITS-SVC 时,用户需自行承担数据集的授权问题,确保不使用未经授权的音频进行训练。项目完全离线运行,不收集用户信息,但用户需对生成的音频及其后果负责。严禁将该项目用于非法活动、宗教或政治宣传。若使用商业语音合成软件作为输入源,需遵守相应软件的法规,许多引擎明确禁止用于转换输入源。此外,建议用户在处理音频时使用专业软件进行响度匹配,以避免默认设置可能导致的音质受损。
常见问题
该项目是否支持文本转语音(TTS)?
不支持。So-VITS-SVC 专注于歌声转换(SVC),即从音频到音频的转换。它与 VITS 文本转语音项目在根本目的上不同,两者模型不可互换,VITS 无法执行 SVC 任务,而本项目也不具备从文本生成语音的功能。
为什么训练或预处理时会出现内存溢出错误?
这通常是因为音频片段过长或批量大小设置不当。建议将音频切片长度限制在 5 至 15 秒之间,过长的片段可能导致 CUDA 内存不足。此外,用户可根据 GPU 显存容量调整配置文件中的 batch_size 参数,或在磁盘 IO 较低且系统内存充足时启用全部数据加载到 RAM 的选项。
如何选择合适的语音编码器?
项目提供了多种编码器选项,如 ContentVec、HubertSoft 和 Whisper-PPG 等。官方推荐使用 ContentVec 作为语音编码器。用户可根据具体需求和硬件条件选择,例如 Whisper-PPG 编码器要求音频片段短于 30 秒。不同的编码器可能在音质和处理速度上有所差异,建议参考社区反馈进行测试。
