欢迎光临散文网 会员登陆 & 注册

基于vits合成神里绫华语音合成模型——小白的模型合成过程的自我复盘

2023-02-22 21:20 作者:柯哀黨  | 我要投稿

        今天,2023.2.22,我自己的vits模型——MyAyaka_ZH在我自己的电脑上基本完成了合成,本文是复盘我,一个非计算机专业小白,在本地从零开始一步步本地合成神里绫华语音的vits模型的过程,有技巧,有小杂感,记叙我自己的小小成就,以期未来回想起来,嘴角能有意思上扬。

        首先介绍本人成分:16年入站,第一只视频是瓶子的柯南剧场版吐槽,从ID上也能看出来我对柯南的喜爱(虽说现在已经不看了就是了),当时的动画区还是小而美的,谁又能想到当初和大家差不多的泛式,最后成为了动画区最大的up之一……此外,我还是一个ai爱好者,当初AI绘画爆火,我第一时间下载了@秋葉aaaki这位up整理的绘画模型,并在自己的本地跑(怎么说呢,中文互联网东西存不住,不到本地不放心),产生立了不少美图,这些图现在还在我SSD上面,这是我自学python基础以后最先接触到的大型python应用。最后本人还是一个声优豚,看番剧对于声优比较执着,对好听的声线没有抵抗力,常见的一线声优我都有所涉猎(少数在DLsite上买过音声)。

        我第一次接触到vits是在1月28日,首页刷到的"日和莉带你训练VITS模型"这只视频,由文字生成角色声线对我产生了无与伦比的吸引力。是不是经过调整(jiao)模型是否也能达到音声作品里近耳轻语的效果?如果是的话,那可真是让人无法拒绝心潮澎湃。于是我着手在站内搜索找到了包含2890名动画角色的VITS语音合成模型,从视频内容找到了相关链接和GUI下载来使用,大佬的技术力没话说,但是就是他在视频中自己说的,模型中的中文模型部分因为训练集比较小,效果并不理想。此时我产生了此次计划的雏形,我曾经研究过原神的文件结构,PC很多文件是存储在本地的,虽然加密过了,但是原神作为业界黑暗担当(doge),树大招风,肯定已经有人对她下手了吧,那么提取角色语音就是可能的,于是我开始了行动。加上当时对于神里绫华传说任务的惊艳还留存在心中,所以决定为神里凌华了!


来自暗猫大佬的《尘光》


1.语音提取        

        说干就干,首先是提取语音和文本,搜索后,我找到了(https://blog.jixiaob.cn/?post=49)这篇文章,之后按图索骥,PC上的原神似乎加过密,所以我从手机上导出了有pck的文件夹。经过逐一解包和试听,大概了解了原神音频文件的命名规则(不一定对):

  1. 10开头的是主线剧情(蒙德、璃月、稻妻、间章、须弥)

  2. 20开头的是传说任务,其中神里的是2021。

  3. 30开头的是邀约任务

  4. 50开头5001(我们终将重逢)5002(烟绯个人)

  5. External是各版本活动的剧情音频

原神音频的pck文件

        经过大约提取了600条语音,手动筛掉派蒙和杂七杂八的NPC的语音大约剩下300条左右(我解包的版本中,2021_441是空哥在看完跳舞后哼的歌,印象深刻。其他人解包的版本似乎和我解包的顺序不一样,比如"原神语音文本整理"这个篇文章的结果和我解包的顺序出入很大)长短参差不齐,而且部分语音明显带有情绪(害羞,不好意思等),按理来说这样的音频应当剔除,不过鉴于筛选时间成本大,还是没做。

        但是只有三百条还是有点少于是,我去b站的原神wiki上把凌华所有语音扒下来了(待机语言那些,50条左右)加起来得到350条左右的语音。自从学了点前端,老是想点开F12(笑)。

2.参考文章处理音频和制作训练集

        我参考的是在本地(Windows/Linux)从零开始训练VITS中文AI语音模型到TTS推理的避坑教程指南这篇文章,关于全流程讲的很详细也很实在,这里仅仅说我在中间遭遇到的麻烦和解决方法。

        首先是音频处理,两种方法,第一种参考全提瓦特最好的语音合成向导 二中Python处理,比较快且方便,再比如直接用AU的批处理,我采用的第二种。

        然后是训练集的制作,首先用python生成一个在每行开头有标准格式的txt文件,然后再进行音频文件的批量重命名,关于文本部分,我一开始想的是调用python相关的语音识别库,但遗憾的是我找到的库(PocketSphinx)对于中文的识别很不准确,于是我就想干脆听写吧,大概做了70个,突然想到语音识别领域也是有AI的呀,于是我找到了这只视频能离线使用的语音识别工具:Buzz,使用OpenAI Whisper神经网路,正确率高,按照上面的视频安装了软件,识别正确率非常高,大大优化了我的工作。可惜我不会写api,不然可能直接python导出更快。不过有个问题,就是BUZZ软件输出的文字一会是简体一会是繁体,所以手边还要准备简繁转换工具。此外软件输出的是英文标点,因此训练集txt全部写完以后还要复制到word查找替换,这里不得不感叹AI时代的到来呀。

工作时的桌面

3.搭建conda虚拟环境——和error斗争

        按照在本地(Windows/Linux)从零开始训练VITS中文AI语音模型到TTS推理的避坑教程指南的方法搭建环境,这里重点关注torch的安装,本地安装版本多且杂,很容易装错,不推荐,建议到官网pip安装的,有几个注意点:

  • pip莫名其妙报错可以尝试关掉代理,并更换清华镜像。

  • 官网得到的pip命令很容易卡在solving environment,这时候别着急建议放下去干点别的,这里确实慢,但是并不是卡死,当然cnds社区有一些方法加速(用mamba),不过我没有试。

  • pyopenjtalk真的人容易报错,我训练的中文单人模型用不到,可以删除。

  • OSError: [WinError 127] 找不到指定的程序。 Error loading "D:\anaconda3\envs\vits\lib\site-ackages\torch\lib\caffe2_detectron_ops_gpu.dll" or one of its dependencies.这个莫名其妙,文件在路径里就有的,解决方法更离谱,直接把这个文件删了就没事了……

  • 此外还要改文件,每个人电脑不一样,我是改了就好了:torch.backends.cudnn.benchmark = False;batch_szie改小,说白了就是报错了就好好利用,搜索引擎很多时候换换关键词都能找到答案。

  • 大佬说的cd到某某文件夹,我当时不太明白,后来才知道cd是干什么的。


    4.训练和调试ing

        目前跑到了G_33000版本第三十三个,600多epochs,受到训练集情绪化的影响,成品模型还是有点不自然,和大佬们发出来的成果演示视频还存在差距,我准备使用统一的文本对比一下,看看哪个版本最合适,后续可能把训练集扩成一下到所有神里相关语音都包含的版本,比如主线和2.6容彩祭和3.4的花时来信活动,鉴于工作量,可能放假前不会吧。


        

训练生成的文件夹


5.总结

        这次活动无疑建立在互联网上各位大佬的开源精神,无私的分享详细的方法,帮助电脑小白如我完成这样一项工作,把精力用在爱好上是意见幸福的事情,希望看到这里的你和我拥有幸福下去的权利。



基于vits合成神里绫华语音合成模型——小白的模型合成过程的自我复盘的评论 (共 条)

分享到微博请遵守国家法律