GPT-SoVITS icon indicating copy to clipboard operation
GPT-SoVITS copied to clipboard

0306版本GPT-SoVITS客户端推理多文本情况出现间接性复读参考文本内容的问题

Open wrl1224 opened this issue 1 year ago • 34 comments

*运行项目版本号0306 数据集采用的是红血球大佬提供的原神音频数据集,且标注没有问题.

1710250626006 1.大概从百度复制了500字左右的作文,填写到需要合成的文本的框中. 2.切分尝试过两种,分别是(按标点符号切,凑50字一切),这两种均有读着读着就念一下参考音频文本的问题,比如读着读着他就会念(好好放松一下.)这句话是参考音频文本内的话. 3.最开始我怀疑过是不是参考音频的问题,我就换了另外一个5秒的参考音频,但是任然有间接性复读参考音频文本部分内容的可能,读到后面甚至胡言乱语. 4.用的ubuntu系统 环境搭建在conda上 5.使用python3.9 cuda11.8 有使用项目中提供的sh文件来搭建环境. 6.最开始我以为是在ubuntu才有这种问题,后面我换了一台电脑在win10上使用0306也是一样的复读问题 7.不只是一个模型,我也练了其他的角色的模型好像均有这种问题,我觉得不是模型的问题,因为我把0306训练好的模型拿到github主分支的项目上用没遇到复读问题。 8.推理短的文本不容易触发这个复读问题,请尝试使用0306版本的整合包使用百字以上的文本做测试,就可以复现了。

最终我选择放弃0306整合包,去github上拉取仓库中主分支的代码,经过测试貌似这种问题只有0306版本会有,主分支的代码不会有这种复读的问题。

wrl1224 avatar Mar 12 '24 14:03 wrl1224

3月13号 尝试从百度网盘下载一份新的0306版本整合包,来测试不是我当前的0306整合包有问题,并且从语雀上面下载了三月七模型来进行测试。 经过测试不仅仅是我自己训练的模型有这种问题,我用别人训练好的模型也会出现读这读者突然冒出一句参考音频文本中的几个字。

wrl1224 avatar Mar 13 '24 01:03 wrl1224

我也遇到了,推理时 插入了参考音频的内容, 我只推理了一小段,还不是多段文本

fxconfig avatar Mar 13 '24 04:03 fxconfig

确实,我也遇到了,用的最新版的第三方推理包,当然,是偶发性的,概率不高

Downupanddownup avatar Mar 13 '24 08:03 Downupanddownup

看来0306问题还挺大,效果没和baseline对齐

RVC-Boss avatar Mar 13 '24 09:03 RVC-Boss

@wrl1224 大佬试试用fast_inference分支的代码下载下来覆盖0306包里的文件看看,这个问题是否还存在?

RVC-Boss avatar Mar 13 '24 09:03 RVC-Boss

同样使用三月七模型测试,新分支100%复读参考音频,0217和0306fix版有较小概率复读,0306版100%复读参考音频。0306fix版应该没问题了。不过模型本身确实复读概率有点大。 参考音频:6秒,正常说话 合成文本:本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责.如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录LICENSE. 切分方式:按英文句号.切

baicai-1145 avatar Mar 13 '24 20:03 baicai-1145

同样使用三月七模型测试,新分支100%复读参考音频,0217和0306fix版有较小概率复读,0306版100%复读参考音频。0306fix版应该没问题了。不过模型本身确实复读概率有点大。 参考音频:6秒,正常说话 合成文本:本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责.如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录LICENSE. 切分方式:按英文句号.切

我使用了pretrained模型,使用莫娜的一段语音作为参考音频,其他参数一样,测试了10次,新分支并没有100%复现,甚至没有复读

ChasonJiang avatar Mar 14 '24 04:03 ChasonJiang

同样使用三月七模型测试,新分支100%复读参考音频,0217和0306fix版有较小概率复读,0306版100%复读参考音频。0306fix版应该没问题了。不过模型本身确实复读概率有点大。 参考音频:6秒,正常说话 合成文本:本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责.如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录LICENSE. 切分方式:按英文句号.切

我使用了pretrained模型,使用莫娜的一段语音作为参考音频,其他参数一样,测试了10次,新分支并没有100%复现,甚至没有复读

随后,我使用了新分支训练的莫娜模型,其他参数一样,新分支并100%出现复读

ChasonJiang avatar Mar 14 '24 04:03 ChasonJiang

同样使用三月七模型测试,新分支100%复读参考音频,0217和0306fix版有较小概率复读,0306版100%复读参考音频。0306fix版应该没问题了。不过模型本身确实复读概率有点大。 参考音频:6秒,正常说话 合成文本:本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责.如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录LICENSE. 切分方式:按英文句号.切

我使用了pretrained模型,使用莫娜的一段语音作为参考音频,其他参数一样,测试了10次,新分支并没有100%复现,甚至没有复读

随后,我使用了新分支训练的莫娜模型,其他参数一样,新分支并100%出现复读

再次,我使用了新分支训练的莫娜模型,其他参数一样,在0306fix中也出现了100%复读。值得注意的是,“新分支”是指3.13的版本,并且我同时测试带dpo和不带dpo。稍后我将用最新分支重新训练测试。

ChasonJiang avatar Mar 14 '24 04:03 ChasonJiang

有点乱,有人来整理个时间线和复读情况表么,什么测试参数,什么版本

RVC-Boss avatar Mar 14 '24 07:03 RVC-Boss

有点乱,有人来整理个时间线和复读情况表么,什么测试参数,什么版本

我在重新的严谨测试。我先在每个版本上训练相同数据的模型,然后再交叉测试

ChasonJiang avatar Mar 14 '24 07:03 ChasonJiang

测试版本是0306

所有参数默认,5 1 1

分割方式标点符号或四句一切

整合包来源:从语雀里找到https://pan.baidu.com/s/1OE5qL0KreO-ASHwm6Zl9gA?pwd=mqpi 整合包的网盘分享地址

*复读参考文本部分内容 第一个时间线问题 在里面找到0306整合包下载下来,推理文本内容多的情况下(大概500字)推理结果会复读参考音频部分文字的内容,这些文字在我要生产的文本中是没有的,都是参考音频本文中的部分内容.

*复读需要生成的文本中的句子正常一会又继续复读下一个句子 第二个时间线问题就是,从仓库拉取了fast_inference分支的代码给0306整合包进行了文件覆盖,覆盖后 推理结果变成了复读需要合成的文本内容中的部分句子复读2次,然后继续朗读间接性复读句子再正常一会又复读下一个句子。

参考音频:取自[https://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e/nwnaga50cazb2v93]中的三月七模型,里面有附带参考音频

参考文本:名字是我自己取的,大家也叫我三月、小三月…你呢?你想叫我什么?

合成文本: 在生命的长河中,每个人的成长旅程都是独一无二的,充满了无数的故事和感人的经历。从天真无邪的童年到激情洋溢的青年,我们经历了无数的变化,收获了无数的快乐、悲伤、希望和挫折。这些丰富的情感和经历,让我们更加成熟,更有力量去面对生活的挑战。 在童年的记忆里,我们有无尽的欢乐和单纯的梦想。每天都在探索新的世界,学习、玩耍、看着世界的变化。童年的我们,像是一块未经雕琢的玉,纯洁而自然。然而,这个阶段也会过去,我们终将迎来青春的洗礼。 青春期,我们面对着无数的变化和挑战。身体的改变,情绪的波动,考试的压力,朋友的离去,还有对未知的恐惧。在这个阶段,我们可能会感到孤独、迷茫甚至绝望。但是,正是这些挫折和困难,让我们更加坚强,更加成熟。 成长的过程中,我们也在不断的学习。学习如何处理情绪,如何处理人际关系,如何面对失败,如何找到自己的方向。每一次的挫折,都是一次学习的机会。每一次的困难,都是一次成长的机会。在这个过程中,我们逐渐形成了自己的价值观和人生观。 回顾这个旅程,我们不难发现,成长的过程就是一场战斗。我们与外界斗争,与自己斗争。但是,正是这些斗争让我们变得更加坚强,更有力量。无论未来的路有多么坎坷,我们都有信心去面对。 成长的旅程中,每个人都有自己的故事和经历。无论是甜或苦,这些经历都塑造了今天的我们。面对未来,我们将带着这份力量和勇气,继续前行。让我们感谢这个过程,感谢生命中的每一个挑战和困难。因为它们让我们成长,让我们更有力量去追求自己的梦想。

wrl1224 avatar Mar 14 '24 07:03 wrl1224

0217版本 推理长文本结果会偶然性读一次参考文本内容中结尾的几个字。

0217相比0306版本要稳定一些,至少去读参考文本最后几个字的概率下降了,只会小概率朗读的时候听到一次参考音频部分内容。

wrl1224 avatar Mar 14 '24 09:03 wrl1224

0217版本 推理长文本结果会偶然性读一次参考文本内容中结尾的几个字。

0217相比0306版本要稳定一些,至少去读参考文本最后几个字的概率下降了,只会小概率朗读的时候听到一次参考音频部分内容。

@wrl1224 0306是还没fix的版本嘛?

RVC-Boss avatar Mar 14 '24 09:03 RVC-Boss

0217版本 推理长文本结果会偶然性读一次参考文本内容中结尾的几个字。 0217相比0306版本要稳定一些,至少去读参考文本最后几个字的概率下降了,只会小概率朗读的时候听到一次参考音频部分内容。

@wrl1224 0306是还没fix的版本嘛?

不确定网盘中的是否是fix版本的, 但我觉得大概率不是fix版本的0306

wrl1224 avatar Mar 14 '24 10:03 wrl1224

0217版本 推理长文本结果会偶然性读一次参考文本内容中结尾的几个字。 0217相比0306版本要稳定一些,至少去读参考文本最后几个字的概率下降了,只会小概率朗读的时候听到一次参考音频部分内容。

@wrl1224 0306是还没fix的版本嘛?

不确定网盘中的是否是fix版本的, 但我觉得大概率不是fix版本的0306

@wrl1224 嗯,就是直接看7z的文件名。我昨晚放了个fix的上去,老的删了。

RVC-Boss avatar Mar 14 '24 10:03 RVC-Boss

@RVC-Boss 来看看实验结果吧

实验记录

目的

  • 评估不同版本之间是否存在“间接性复读参考文本内容”和”复读合成文本“的问题。如果存在,就尝试量化问题存在的随机性。
  • 问题1:间接性复读参考文本内容
  • 问题2:复读合成文本

设置

  • 实验将在0217、0306fix、0314这三个版本中,使用相同的数据集进行微调,并采用该版本的默认训练参数,不做任何改动。
  • 使用三组不同的参考文本、参考音频、合成文本、推理设置,在上述三个版本训练的模型和三个版本之间做交叉测试,并用pretained模型作为对照。
  • 每组实验均采用相同的推理参数:中文,凑50字一切,batch_size=1,top_k=5, top_p=1, temperature=1
  • 由于无法确定样本生成的随机性,每个实验抽取5个样本作人耳主观评估。
  • 注意:v0127(版本) 中,”按标点切“存在报错问题,故均改为”凑50字一切“。v0314源自[fast inference] 推理功能增强和改进 by ChasonJiang · Pull Request #758 · RVC-Boss/GPT-SoVITS (github.com)

测试用例

第1组

  • 样本特点:参考音频不在训练集中、音色和训练集不同、有重复内容的参考文本,有重复内容的合成文本。
  • 参考音频:见附录
  • 参考文本:名字是我自己取的,大家也叫我三月、小三月…你呢?你想叫我什么?
  • 合成文本:
在生命的长河中,每个人的成长旅程都是独一无二的,充满了无数的故事和感人的经历。从天真无邪的童年到激情洋溢的青年,我们经历了无数的变化,收获了无数的快乐、悲伤、希望和挫折。这些丰富的情感和经历,让我们更加成熟,更有力量去面对生活的挑战。  
在童年的记忆里,我们有无尽的欢乐和单纯的梦想。每天都在探索新的世界,学习、玩耍、看着世界的变化。童年的我们,像是一块未经雕琢的玉,纯洁而自然。然而,这个阶段也会过去,我们终将迎来青春的洗礼。  
青春期,我们面对着无数的变化和挑战。身体的改变,情绪的波动,考试的压力,朋友的离去,还有对未知的恐惧。在这个阶段,我们可能会感到孤独、迷茫甚至绝望。但是,正是这些挫折和困难,让我们更加坚强,更加成熟。  
成长的过程中,我们也在不断的学习。学习如何处理情绪,如何处理人际关系,如何面对失败,如何找到自己的方向。每一次的挫折,都是一次学习的机会。每一次的困难,都是一次成长的机会。在这个过程中,我们逐渐形成了自己的价值观和人生观。  
回顾这个旅程,我们不难发现,成长的过程就是一场战斗。我们与外界斗争,与自己斗争。但是,正是这些斗争让我们变得更加坚强,更有力量。无论未来的路有多么坎坷,我们都有信心去面对。  
成长的旅程中,每个人都有自己的故事和经历。无论是甜或苦,这些经历都塑造了今天的我们。面对未来,我们将带着这份力量和勇气,继续前行。让我们感谢这个过程,感谢生命中的每一个挑战和困难。因为它们让我们成长,让我们更有力量去追求自己的梦想。

第2组

  • 样本特点:参考音频在训练集中、音色和训练集相同、没有重复内容的参考文本,但是有重复内容的合成文本,且参考文本和合成文本有读音近似的文本。
  • 参考音频:见附录
  • 参考文本:伟大的火花骑士可莉小姐,你是蒙德的希望之火,承载着众人的…
  • 合成文本:
回顾这个旅程,我们不难发现,成长的过程就是一场战斗。我们与外界斗争,与自己斗争。但是,正是这些斗争让我们变得更加坚强,更有力量。无论未来的路有多么坎坷,我们都有信心去面对。  

第3组

  • 样本特点:参考音频在训练集中、音色和训练集相同、没有重复内容的参考文本,但是有重复内容的合成文本,且参考文本和合成文本有读音近似的文本,且相似读音里参考文本近。
  • 参考音频:
  • 参考文本:伟大的火花骑士可莉小姐,你是蒙德的希望之火,承载着众人的…
  • 合成文本:
成长的过程中,我们也在不断的学习。学习如何处理情绪,如何处理人际关系,如何面对失败,如何找到自己的方向。每一次的挫折,都是一次学习的机会。每一次的困难,都是一次成长的机会。在这个过程中,我们逐渐形成了自己的价值观和人生观。  

结果

  • 表中的每个值代表出现上述问题的频率。
  • 注意,有限次数的频率只能大致描述情况,并不代表概率。
第1组
版本\模型 0217 0306fix 0314 pretrained
v0217 1.0 1.0 1.0 0.0
v0306fix 1.0 1.0 1.0 0.0
v0314 1.0 1.0 1.0 0.0
第2组
版本\模型 0217 0306fix 0314 pretrained 合计
v0217 3/5 1/5 0.0 2/5
v0306fix 4/5 3/5 1/5 0.0
v0314 3/5 0.0 1/5 1/5
第3组
版本\模型 0217 0306fix 0314 pretrained
v0217
v0306fix
v0314
  • 懒了,不做了,但是能大概反应情况了。

结论

  • 基于第1组的实验结果。无论是从模型还是版本的角度上来看,上述问题与版本无关,但与模型有关。
  • 基于第2组的实验结果。从模型的角度来看,0217版本训练的模型在上述问题中的性能略低于其他模型(不代表真实期望性能);从版本的角度来看,所有本版均会随机地产生上述问题。
  • 综合1、2两组实验和两组样本的特点来看。上述问题的产生与参考文本(音频)和合成文本的内容强相关,即与参考文本(音频)的内容是否有重复有关、与参考文本和合成文本的内容是否有相似读音内容有关;与版本无关、与模型版本略相关。

附录

  • 里面有实验产生的音频,可以自己听一听
  • 链接:https://pan.baidu.com/s/1pKehDFGAxJNK15Dnm3aAhQ?pwd=l6ue
  • 提取码:l6ue

ChasonJiang avatar Mar 14 '24 12:03 ChasonJiang

补充一个刚发现的新问题,长文本的情况下,推理出来的音频会有小概率出现吞字问题。

wrl1224 avatar Mar 14 '24 12:03 wrl1224

补充一个刚发现的新问题,长文本的情况下,推理出来的音频会有小概率出现吞字问题。

我上实验过程中也发现了,但是所有版本均存在,和参考文本(音频)和合成文本的内容是有关的

ChasonJiang avatar Mar 14 '24 12:03 ChasonJiang

补充一个刚发现的新问题,长文本的情况下,推理出来的音频会有小概率出现吞字问题。

我上实验过程中也发现了,但是所有版本均存在,和参考文本(音频)和合成文本的内容是有关的 这个应该fix版的inference_weui.py中cut1函数写的不对,应该把“split_idx[-1] = None”改为“split_idx.append(None)”,或者 def cut1(inp): inp = inp.strip("\n") inps = split(inp) opt=[] while(len(inps)>4): opt.append(''.join(inps[:4])) inps = inps[4:] if len(inps)>0: opt.append(''.join(inps)) return('\n'.join(opt))

baicai-1145 avatar Mar 14 '24 12:03 baicai-1145

有意思的是,当参考文本中有”…“,且有重复文本时,有大概率复读或吞字

ChasonJiang avatar Mar 14 '24 12:03 ChasonJiang

训练部分对比baseline有做什么改动吗,0306fix和0314

RVC-Boss avatar Mar 14 '24 13:03 RVC-Boss

训练部分对比baseline有做什么改动吗,0306fix和0314

我维护的那个分支应该是没有做改动的,不过在最后一个commit中我merge了main分支。所以实际相较于0217,我并不知道训练代码有没有改动

ChasonJiang avatar Mar 14 '24 13:03 ChasonJiang

@wrl1224 我测完后发现0306fix和0217都有复读,应该是模型问题,不是版本问题。(但0217推理得效果可能比0306稍微好点) 备忘:补充信息,白菜分享的模型是0306版本训练的。

RVC-Boss avatar Mar 14 '24 16:03 RVC-Boss

最新确认:文本前端0306=0217,都丢了参考文本的省略号,因此复读句子不同(0217是目标第一句,0306是参考最后一句)的差异还是在推理上。

RVC-Boss avatar Mar 14 '24 17:03 RVC-Boss

三月七模型没有问题,有问题的是参考音频。用0217,0306,0306fix版本又训练了三个模型。 用“名字是我自己取的,大家也叫我三月、小三月…你呢?你想叫我什么?”这个参考音频的时候都会重复最后一句。 换成“还有和三月七小姐一起执行任务,应该可以完成最终的修行。”这个参考音频就没有复读。 换成“这一路匆匆忙忙、兜兜转转的。有些朋友才刚认识,就要告别了,想想还有些舍不得呢。“这个参考音频会复读第一句。 貌似韵母相同的两个字在一起作为参考音频复读的概率会很大。”你呢?你想叫我什么?“前面三个韵母相同,匆匆 忙忙 兜兜 转转都是有相同韵母在一起。 然后使用无参考文本模式,参考音频是”名字是我自己取的,大家也叫我三月、小三月…你呢?你想叫我什么?“。0306和0217版均未复读。

baicai-1145 avatar Mar 14 '24 19:03 baicai-1145

三月七模型没有问题,有问题的是参考音频。用0217,0306,0306fix版本又训练了三个模型。 用“名字是我自己取的,大家也叫我三月、小三月…你呢?你想叫我什么?”这个参考音频的时候都会重复最后一句。 换成“还有和三月七小姐一起执行任务,应该可以完成最终的修行。”这个参考音频就没有复读。 换成“这一路匆匆忙忙、兜兜转转的。有些朋友才刚认识,就要告别了,想想还有些舍不得呢。“这个参考音频会复读第一句。 貌似韵母相同的两个字在一起作为参考音频复读的概率会很大。”你呢?你想叫我什么?“前面三个韵母相同,匆匆 忙忙 兜兜 转转都是有相同韵母在一起。 然后使用无参考文本模式,参考音频是”名字是我自己取的,大家也叫我三月、小三月…你呢?你想叫我什么?“。0306和0217版均未复读。

好像问题其实是出自于这个符号上,我自己用钟离的模型经常会复读句子中重复文本和复读参考文本

前者我是自己直接将句子切割而不使用内置cut_method

for text in string.split(","):
    audio += tts_pipeline.run(text=text)

后者我是在每个句子前面加个 "." 来缓解该问题出现 text = "." + text

charSLee013 avatar Mar 14 '24 20:03 charSLee013

0306fix2 现在复读的概率变小了 500字只会出现一次读参考音频结尾几个字的情况,但是新的问题又出现了,貌似会小概率复读需要生成的文本框内的内容,以及出现了吞字现象。

wrl1224 avatar Mar 19 '24 14:03 wrl1224

*运行项目版本号0306 数据集采用的是红血球大佬提供的原神音频数据集,且标注没有问题.

1710250626006 1.大概从百度复制了500字左右的作文,填写到需要合成的文本的框中. 2.切分尝试过两种,分别是(按标点符号切,凑50字一切),这两种均有读着读着就念一下参考音频文本的问题,比如读着读着他就会念(好好放松一下.)这句话是参考音频文本内的话. 3.最开始我怀疑过是不是参考音频的问题,我就换了另外一个5秒的参考音频,但是任然有间接性复读参考音频文本部分内容的可能,读到后面甚至胡言乱语. 4.用的ubuntu系统 环境搭建在conda上 5.使用python3.9 cuda11.8 有使用项目中提供的sh文件来搭建环境. 6.最开始我以为是在ubuntu才有这种问题,后面我换了一台电脑在win10上使用0306也是一样的复读问题 7.不只是一个模型,我也练了其他的角色的模型好像均有这种问题,我觉得不是模型的问题,因为我把0306训练好的模型拿到github主分支的项目上用没遇到复读问题。 8.推理短的文本不容易触发这个复读问题,请尝试使用0306版本的整合包使用百字以上的文本做测试,就可以复现了。

最终我选择放弃0306整合包,去github上拉取仓库中主分支的代码,经过测试貌似这种问题只有0306版本会有,主分支的代码不会有这种复读的问题。

我没有使用0306的整合包,直接使用官方的主分支(2天前下载的),然后在linux上搭建的,推理长文本,也会出现重复读,且偶尔还有吞字的情况

kevin2yl avatar Mar 28 '24 10:03 kevin2yl

0306fix2 现在复读的概率变小了 500字只会出现一次读参考音频结尾几个字的情况,但是新的问题又出现了,貌似会小概率复读需要生成的文本框内的内容,以及出现了吞字现象。

我两天前下载的主分支,自己按文档在linux搭,推理时,依然有你说的问题(重复读、吞字依然存在)

kevin2yl avatar Mar 28 '24 10:03 kevin2yl