Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

我改进了一下文本切分方式,这似乎能极大改善长文本生成的质量。 #1256

Open
jiekemt opened this issue Jun 28, 2024 · 7 comments

Comments

@jiekemt
Copy link

jiekemt commented Jun 28, 2024

我最近在用GPT-SoVITS听网文小说。用的是刘悦大佬在5月14日更新的整合包,并自行修复了“微调未读取bert文件重大bug修复”这个问题。模型也是在修复之后重新训练过的。
一开始为了减少错误率,我选用了“按标点符号切”这个切分方式,但这种切分生成的断句的十分割裂,情感也不统一。
我开始尝试使用“不切”,这种方式生成的效果很好,但一旦文本长度达到150左右,就必然会导致胡言乱语。
接下来我选用了“按中文句号切”,这种方式生成效果介于前两者之间,但一旦遇到那种“逗号战神”,就和不切没什么区别了。

所以我意识到,我需要一种能将每段切分文本长度控制在150以内的切分方式。
我自己是没能力写代码的,但我看到工具本身提供了“凑50字一切”的切分方式。
在用过之后,我才发现这玩意有多好用。它的名称取得真的很不好,会给人一种“它会把一个完整的句子粗暴切开”的印象。但实际不是的,它会灵活的切到标点符号为止,并不是固定每50个字硬切一次。
**实际上,这种切分方式还有更优秀特性。**如果切分后文本的最后一块字数过少,它就会将之和倒数第二块粘合起来,所以并不会出现读到末尾最后一句才突然性情大变的情况,要变也是在倒数二、三句变。

为了让大家看得更直观,我来举个例子:
在不考虑标点符号的情况下,一段长度200的文本,使用“凑50字一切”后,文本会被切分为:
50-50-100

前两块都是50的长度,而最后一块是100的长度。这是因为,目前的规则是:当最后一块的字数在50之内时,它会与前一块黏在一起后再输出。
所以,这个切分方式能完美地将每段切分后的字数控制在100字左右!但它还不够完美。
前面50长度切一块,也实在频繁,100与150之间仍有很大空间。

所以我将之改为80长度一块,最长110。(这种切分较保守,但效果已经很好了)
1
【修改的文件路径是:GPT_SoVITS\TTS_infer_pack\text_segmentation_method.py】
我用这种方式听了几十章小说,每章2500余字,语音流畅,错误极少。(仍有漏掉短句的情况出现,读音也会偶尔奇怪,但这些问题一章顶多出现两三次)
接着我干脆直接将刘悦整活包“重复惩罚”的功能禁用掉,这功能实际上会让语句间的衔接变得不自然,但原因未知。
然后我又这样听了十几章,未见明显重复问题,而且语句的衔接更自然,听感更好了。
以下是一章小说推理出的音频,分别用了两个模型生成(仅在压缩为MP3时进行过格式转换,没有任何剪辑)

2

小说原文:“厉前辈,请进!”女子将石门一推,恭敬的作出一个让韩立先进的姿势。

韩立点点头,没有说什么的迈步就进。女子则紧随其后。

石门随后自动合上,外面重新化为了普通的墙壁。

一进入里面去,韩立就看见了一个青石通道,尽头处隐隐有白光闪动,似乎不太长的样子。

韩立默不做声的缓缓向前,结果拐过一个弯道后,前面蓦然又出现了一扇大敞的石门。

石门外面站着一位面色阴沉的中年修士,结丹中期,一身青色的儒装打扮。

他此人一见韩立出现,立刻满脸笑容的一拱手道道:

“这位是厉道友吧?在下云天啸,是此地的东主。欢迎道友来参加此次的交换会。其他道友都到了多半。文姑娘,一定要好好招待厉兄,不得怠慢!”云姓儒生先对韩立客气异常的样子,接着又冲女子平淡的吩咐了一声。

“文道友?”

这句称呼自然揭露了白衣女子的身份,她竟是韩立曾经偶然见到的文樯之女,妙音门的那位文思月。

也不知此女倒底经历了什么事情,竟然会出现在了此地。

这让突然见到此女的韩立,自然惊异无比。

当然因为使用了“换形决”的缘故,韩立认得此女,此女可并没有认出韩立来。

此刻文思月一听中年儒生所言,顿时花容一变,急忙在韩立身后应声答道。

韩立虽然没有回头,但也隐隐的感到,似乎文思月对这位云天啸害怕之极的模样。

韩立目中一丝异色闪过,但是轻轻一笑后,随意的和儒生说了两句客气话,也就进入了此门。

里面是一个四方大厅,中间则是一个圆形巨桌,桌子周围稀稀拉拉的摆满了十几把宽大异常的太师椅,椅子上大半都已经坐有了修士。

不过,当韩立看清楚了众多椅子上的情形时,脸上露出一丝奇怪神色。

除了两名结丹期的女修单独一人坐着外,其他椅子上的结丹男修士身边,都偎依一名艳丽妖娆的女修士。这些女修士竟还都是炼气期十二三层或者干脆筑基初期的修为。

无一不是年轻貌美,姿色过人。

韩立正发愣之际,身侧忽然香风一起,一个柔软的娇躯微颤着贴在了身旁。

韩立身子一直,缓缓转过脸去,一张有些木然的俏脸进入了眼内。

竟是文思月主动靠了过来,一下让他幽香扑鼻。

韩立微一皱眉,倒也没有假斯文的推开此女。

反而再看了看其他修士身边的女修时,露出了一丝了然的目光。

他略一思量后,一伸手臂揽住了此女的细腰,并大步走到了一张空着的太师椅旁,稳稳的坐了下来。

文思月也像其他男修身边的女修一样,勉强随其一起坐下,这时此女半个身子都倒在了韩立怀内。

一时温香满怀,让他艳福不浅。

正当文思月默然无语,娇躯有些僵硬的时候,搂抱其柳腰的手臂,竟然松开了一些。

这让文思月为之一呆,下意识的望了韩立一眼,露出一丝惊疑之色。

可这时,韩立正不动声色的环顾其他之人。

在坐的七八位结丹期修士,自然也往韩立身上打量了一遍。

虽然他们觉得韩立面目陌生,但也没人露出什么异样神情。反而大半的人,都冲韩立露出了善意的一笑。

韩立也神色一缓,报以笑容相对。

再过了一会儿,又有五六位结丹修士进入了厅堂,身边同样都有一位年轻艳美的女修作陪。

看到这一切,韩立面色如常,心中却微感惊异。

那云天啸本事还真不小,竟能找到这么多年轻貌美的女修来。

更难得的是,这些女修的法力还个个不弱,更显得这些女子身份不一般了。

韩立正暗自思量之际,,云天啸也从外面走了进来,不过在其身旁却多出了一位雍容典雅的美妇人。

此美妇只是筑基后期的修为,但却手挽云天啸的手臂,一副十分亲昵的样子。

”范夫人!“韩立一见之下,心中又是一怔。

“这位妙音门的范左使,竟也出现这里。看起来还和此间主人关系菲浅的样子,看来此行还真有些意思了。”韩立脸上的异色很巧妙的掩饰了过去,可心里却无法平静的翻滚起来。

“啊!”怀内的文思月身子微微一颤,香唇半张的轻呻吟了一声。

声音中有些痛苦,还似乎有些羞恼!

韩立一愣之下,不禁侧目望去。

结果看到文思月一脸通红,满面羞涩。

韩立有点奇怪的目光一转,这才发现自己那只环抱此女的大手,不知何时按在了对方丰满挺拔的酥胸之上,甚至手指间还夹住了一个略微发硬的圆颗粒。

上面软绵绵的销魂滋味,让韩立灵魂深处轻轻一颤,几乎下意识的急忙挪开了此手,并马上将目光挪开,心中升起一丝异样的感觉。

文思月原本升到了玉颈上的红晕,蓦然停了下来。

她迟疑的抬起秀首,一缕诧异的目光落在了韩立脸上,里面参杂几丝意外之色。

韩立脸上隐隐有些不自在,但还是故作无事的没理会此女,反而揽着对方柳腰的手臂,再松开了一分。

他虽然从没想过当一位正人君子,但是此女也算是故人之后,这让韩立颇有些尴尬之色。

韩立这些异常的表现,除了文思月外,并没有落入他人的眼中。

因为这时那云天啸已进入了主座坐下,范夫人则优雅之极的伴随其一旁。

其他人的目光,自然都落到了这二人身上!

“这次的交换会,竟有十三位同道一齐参加,真是云某的荣幸。虽然还有两位同道另有事情,先走了一步。但这次的交换会,已是历届同道聚集最多的一次了。别的话,在下也不再多说了。各位道友现在可以将东西拿出来了,稍微介绍一下。然后再一一报出价码和打算交换的物品,有中意的就可以成交了。”

云天啸含笑着说完这些话,就微一扭头,冲左手一位锻蓝袍的胖老者笑了笑,示意从对方开始的意思。

这位胖老者正紧紧搂住一位娇小身材的女修,一见云天啸的笑容,才有些恋恋不舍的松开手臂。片刻后,他才慢条斯理的说道:

“既然这样,就从老夫开始吧。这次齐某人可是带来了不少的好东西,谁若是能拿出在下需要的物品,尽管都换去好了。”胖老者一说完此话,就从腰间摘下一个储物袋,往身前的圆桌上一倒。

一片霞光翻卷之后,桌面上多出了几样东西来。看它们灵气萦绕的样子,似乎非同小可。

“天灵子三枚、卧虎鲨妖丹一枚、化海兽兽皮一张……”老者每拿起一样东西,就得意洋洋的介绍一番。让在座的不少修士,都为之动容,露出一丝诧异之色。显然这些东西,的确都是珍稀之物。

韩立听了这些东西,心里却不禁冷冷一笑。这些东西也需对普通的结丹修士来说的确是价值不菲之物,但是对他来说,根本就看不眼。

就是里面最珍稀的卧虎鲨妖丹,也只不过是在一枚六级妖丹而已。韩立亲手灭掉的此类妖兽,少说也有七八只。

胖老者念完自己拿出的东西,一屁股的做回了原位,再次一把搂住身边的娇小女修,满脸都是自傲之色。

其身旁的那位炼气期女修,原本被其搂住还有些不愿之色,但现在却不禁双目发亮,神色一变的温柔起来。

挨着胖老者的是一位红巾缠头的怪人,他见老者坐下后,干咳几声,就摇摇晃晃的站了起来。

此人竟然高瘦之极,如同竹竿一般的吓人。

“我只带来了一样东西,五级妖兽盘黎蚓的一枚兽卵。”他不慌不忙的说道,随后往怀内一掏,摸出了一枚黄色兽卵出来,只有鸡蛋般大小。

“盘棃蚓”

……

一听怪人此言,原本都安座的其他修士双目一亮,死死的盯着那枚兽卵,大都露出了火热的目光。

wen.mp4
yuan.mp4

大家听听如何吧!
另外,我这个切分的修改应该不是最优解,大家可自行实验找出最好的结果。
希望能给诸位帮助吧。

@jiekemt
Copy link
Author

jiekemt commented Jun 28, 2024

刘悦大佬的视频:https://www.bilibili.com/video/BV12Z421x7MN/?

@KevinZhang19870314
Copy link

推理这么多文字用了多久时间?什么配置?

@jiekemt
Copy link
Author

jiekemt commented Jun 28, 2024

推理这么多文字用了多久时间?什么配置?

4060ti 16g,生成2600字要17秒。

@Downupanddownup
Copy link
Contributor

推理这么多文字用了多久时间?什么配置?

4060ti 16g,生成2600字要17秒。

这么快?!

@qt06
Copy link

qt06 commented Jun 29, 2024

我的4060ti 8g,比你的慢不止一倍啊。

@jiekemt
Copy link
Author

jiekemt commented Jun 29, 2024

我的4060ti 8g,比你的慢不止一倍啊。

可能是cpu不一样,我是12700

@ChasonJiang
Copy link

4060ti 16g,生成2600字要17秒。

应该是用的fast_inference分支

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants