再探so-vits-svc

本文讲述了作者在使用So-VITS-SVC4.1进行AI配音时遇到的咬字问题,发现是特征编码器导致。通过尝试hubertsoft和whisper-ppg,作者发现hubertsoft在咬字能力上有优势,但存在音色泄露问题。给出了使用hubertsoft的方法、F0预测器选择以及处理响度匹配的建议,以提高语音转换质量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

去年体验了一遍so-vits-svc 4.1,做了一个AI杰伦的模型。按照当时的条件来说,结果我是比较满意的。最近有个需求,想做AI配音,大致就是先将文字转成语音,然后通过修改音色实现类似真人说话的效果。

遇到问题

起初就是按部就班之前的经验去训练,但是结果就有些不尽人意。最大的问题就是咬字,比如”cheng“的发音会读成”che“。

即使又训练了几万步也还是没有改善,起初是怀疑数据集毕竟少,因为只有十分钟左右的干声。后面觉得不对,这是提取源音频语音特征,是音色转换。数据少最多就是转换后声音不像。

后面查阅了一些资料,发现是特征编码器的关系。默认使用的是vec768l12

  • 优点,最还原音色、有大型底模、支持响度嵌入。
  • 缺点,咬字能力较弱。

当然这个咬字也和你的输入源有关,我当时换了一个TTS的音色,对应这个字的咬字就好了一些。但是这总归不是一个办法,治标不治本。谁知道这个音色的那个读音又不行了。

所以如果你对咬字比较看重,那就建议使用hubertsoftwhisper-ppg

  • 优点,咬字能力强。
  • 缺点,音色泄露。

音色泄露指的是输出的音色向底模/推理输入源的原始音色接近,模型说话人越多,音色泄露越严重。考虑到大多数人都希望尽可能还原目标说话人的音色,因此音色泄露被认为是一种不受欢迎的结果。

使用方法,在自动划分训练集、验证集,以及自动生成配置文件这步指定speech_encoder

python preprocess_flist_config.py --speech_encoder hubertsoft

然后下载hubert-soft-0d54a1f4.pt文件放在pretrain目录下。下载链接见文档

然后是f0预测器的选择,默认rmvpe效果不错,如果想在低音部分有更好表现,可以选择harvest。我训练的是男声,所以选择了它,但我实际对比rmvpe没有听出来区别。

python preprocess_hubert_f0.py --f0_predictor harvest

另外还有一个小细节,可以看看是否需要跳过响度匹配。

脚本 resample.py,默认的响度匹配是匹配到 0db。这可能会造成音质的受损。而 python 的响度匹配包 pyloudnorm 无法对电平进行压限,这会导致爆音。

导致的结果就是准备的音频问题不大,但是推理出的效果音频会有杂音。所以如果自己的音频声音大小基本一致,可以跳过响度匹配,避免负优化。

python resample.py --skip_loudnorm

推理

语音转换时推荐开启自动f0预测,开启后相似度有明显提升。也可以改善音色泄露的问题。
请添加图片描述

我对比了两次不同方案的推理结果,音色上差别不大,但是后者咬字明显加强。所以对于转换语音的场景,建议使用这套方案。歌曲的话,还是之前的方案。

参考

### So-VITS-SVC 3.0 和 So-VITS-SVC 4.0 的差异与改进 So-VITS-SVC 是一种用于语音转换的技术,其版本迭代带来了显著的功能增强和技术进步。 #### 架构优化 So-VITS-SVC 4.0 对模型架构进行了重新设计,在保持原有优势的基础上进一步提升了性能。具体而言,通过引入更高效的注意力机制和编码器结构,使得模型能够更好地捕捉音频特征中的细微变化[^1]。 #### 数据处理能力提升 相较于前一版,新版本增强了数据预处理模块,支持更高采样率的声音文件输入,并且改善了噪声抑制效果。这不仅提高了合成音质的真实度,还扩大了适用场景范围[^2]。 #### 训练效率提高 为了加速训练过程并降低资源消耗,开发团队调整了损失函数的设计思路以及正则化策略的应用方式。这些改动有效缩短了收敛时间的同时保证了最终输出的质量稳定可靠。 #### 用户体验改良 除了技术层面的进步外,官方也注重用户体验方面的细节打磨。比如简化配置流程、增加可视化调试工具等功能特性都让使用者可以更加便捷高效地操作该软件完成所需任务。 ```python # 示例代码展示如何加载不同版本的模型 from so_vits_svc import load_model model_3 = load_model('path_to_so_vits_svc_3') model_4 = load_model('path_to_so_vits_svc_4') print(f"So VITS SVC Version 3 Loaded: {type(model_3)}") print(f"So VITS SVC Version 4 Loaded: {type(model_4)}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值