AIGC

使用GPT-SoVITS克隆声音

GPT-SoVITS是一个集模型训练、声音合成于一体的开源AI声音处理项目,项目地址:https://github.com/RVC-Boss/GPT-SoVITS,感兴趣的可以照项目主页readme里的安装方法安装。这个安装难度不高,比较麻烦的python版本的匹配,可以通过conda为其单独开安装一个python版本:conda create –name py39 python=3.9
项目安装完以后,需要到项目目录内看一下是否自动下载了模型(包括models和Weights),模型地址见readme。我这边实际测试,windows版本自动安装了模型,但mac版本的就没有自动安装模型,需要手动下载、再按要求放入指定目录
GPT-SoVITS的使用分简单和复杂两种办法,简单方法是使用项目自带模型。具体做法是,启动webui后,选择“1-GPT-SoCITS-TTS”-“1c-推理”,然后点选项目的“是否开启TTS推理WebUI”,待自动打开新页面后,选择系统的GPT模型和SoVITS模型,上传准备好的参考音频、输入参考音频文本内容,参考音频需要控制在3~10秒;然后输入要合成的文体,点击“合成语音”,但是这种合成出来效果并不好,而且容易出错,大家可以感受一下
示例音频
文本:“小草偷偷地从土地里钻出来,嫩嫩的,绿绿的。园子里,田野里,瞧去,一大片一大片满是的。坐着,躺着,打两个滚,踢几脚球,赛几趟跑,捉几回迷藏。风轻悄悄的,草软绵绵的”
合成音频
更推荐的做法,是自己训练模型,也不算复杂,首先,要先找一段3~5分钟尽量感觉干净无噪声、无背景音乐的人声音频,然后按如下步骤操作:
1. 使用“前置数据集获取工具”,在“0b-语音切分工具”内,选择音频输入输出路径后,点击“开启语音切割”,将语音切割成多个小段
2. 将上一步的分段语音输出路径,拷贝到下面的“0c-中文批量离线ASR工具”内,点击“开启离线批量ASR”,将语音自动识别为文字文本

3. 使用“0c-语音文本校对标注工具”,点击“开启打标webUI”,在新页面内校对语音文本(嫌webui不好用,可以自己找到上一步生成的opt文件,然后用自己习惯的文本编辑器修改)

4. 切换到“1-GPT-SoVITS-TTS”选项卡,在第一行输入你想要的模型名称
5. 在“1A-训练集格式化工具”内,输入切分音频.list路径,和打标opt文件路径,点击最下方“一键三连”,开始格式化进程,输出内容会放在项目路径下logs目录内


6. 切换到“1B-微调训练”,依次“开启SoVITS训练”和“开启GTP训练”,开始训练模型。这一步看电脑配置,配置低或者CPU运行的话,会很慢
模型训练完成后,重复本文开始的步骤:切换到“1C-推理”,点击“开启webui”,点击“刷新模型路径”,找到自己训练的GTP和SoVITS模型,再试一下刚才的语音,感觉音色好了不少:
但董佳耀的语音太冲,所以重新用更舒缓的语音训练了一个模型,效果还不错:
舒缓语音参考音频
舒缓语音训练结果:
——over
转载请注明出处: 昆仑的山头
———-
一周后补充:
“鄙视小帅、理解小帅、曾经小帅”
比较了GPT-SoVITS,和其他渠道的音频合成效果,最终还是选择了自己曾经鄙视的“解说小帅”,理由很简单:清晰! O(∩_∩)O哈哈~

AIGC

玩转StableDiffusion.10——老照片放大、上色

今天来说一个StableDiffusion的实用技术:老照片放大上色。StableDiffusion里有不少功能都能对图片做放大,但是对比下来,针对不同的照片类型,效果还是差异很大的,这里就介绍一种对小尺寸、但相对清晰的黑白照片的处理过程。分两步,先放大、再上色。
第一步,进入“后期处理”选项卡(有些版本也翻译成“附加功能”),按下图所示做设置、对图片做放大

如果放大效果不理想,可以调整放大算法多尝试几次。关于各种放大算法的差异,可以参阅这篇知乎文章:https://zhuanlan.zhihu.com/p/672717691
第二部,将放大后的图片导入到图生图,然后按如下方式,使用ControlNet的控制类型:Recolor
因为要上色,所以这里重绘幅度设置较大。来看一下处理前后的对比

除了上面提到的图片给放大的方法,针对模糊、褪色的老照片,还可以综合采用ControlNet的其他类型,以及脚本里的“Ultimate SD upscale”,尝试对照片做处理。手头有多年前用手机隔着相框拍的黑白旧照片,模糊、还有麻点,等我找到了修复这种照片的方法,会再写一篇blog o(* ̄︶ ̄*)o
对了,补充一下Recolor模型的下载地址:https://huggingface.co/lllyasviel/sd_control_collection/blob/main/ioclab_sd15_recolor.safetensors
——over
转载请注明出处: 昆仑的山头

AIGC

玩转StableDiffusion.9——把文字和logo隐藏进图片

先上几幅“秀色可餐”的美图

效果还不错吧 ^_^,这种图片隐藏文字的方式,很适合做海报、节日主题图。下面就来说说具体做法:
需要用到ControlNet的qrcode、brightness模型,下载地址:https://huggingface.co/lllyasviel/control_v11p_sd15_scribble/tree/main,大模型推荐realisticVisionV40_V4OVAE,或者其他写实模型,正反向关键词参考:“winter,snowstorm,night,((nobody)),”、“deformed iris, deformed pupils, semi-realistic,cgl,3d,render,sketch, cartoon, drawing, anime”,ControlNet两个单元配置如下


点击生成:
换个logo图试试

——over
转载请注明出处: 昆仑的山头

AIGC

玩转StableDiffusion.8——借助lora:Pixel生成动画序列图

接触StableDiffusion这么久,昨天终于看到了一个和自己本行接近的应用:通过专用Lora做动画序列图,这是C站给出的效果:

于是马上下载了对应的大模型和Lora。具体做法并不复杂,大模型选择counterfeitxl_v25,Lora选择Pixel_Xl_V1,正向提示词基本也是照葫芦画瓢:“1Girl,red short “hair,purple_sailor_dress,((((((side view, running, sequence frames)))))),,masterpiece,best,quality,White background,”,其他保持默认

然后启用一个ControlNet,选择OpenPose,上传以前项目里的动画序列作为动作模版,预处理获取姿态,但实际运行预处理效果并不好,预处理出来,总是得不到正确的动作姿态,换了几个也都不行~~
换个思路:把示例图换成真人会怎么样?于是找了一段跑步视频,截几张图拼起来~~~~StableDiffusion果然更多还是给真人用的,姿态一下只就出来了:

来看运行效果:


~~实话说,效果不算好。不过,这个方向是对的,以AIGC的发展速度,相信用不了多久,就能炼出作为生产力的专用大模型和Lora ^_^
——over
转载请注明出处: 昆仑的山头

AIGC

玩转StableDiffusion.7——InstantId制作风格化照片

上次提到使用InstantId做换脸,这次就试试其官方突出推广的“风格化照片”功能,先来看看成果,第一组是原图,下面是各种风格转化效果







有点感觉吧~~有几个其实并不理想,如果多跑几张,应该会有更好的效果,无奈InstantId对显存要求很高,我的10G显卡跑着有点吃力,每张图基本都要5-10分钟以上(⊙o⊙)…
废话不错说,下面是基本的操作步骤~~其实和之前使用图生图做换脸是一样的:


——over
转载请注明出处: 昆仑的山头

AIGC

玩转StableDiffusion.6——任意更换电商图背景

无意间看到了使用StableDiffusion更换商品图背景的方法,这里分享出来,比ps来的要简单些,而且融入更好。首先,需要安装一个名为“rembg”的插件,然后切换到“后期处理”界面,上传一个淘宝找来的香水图片,选择最下面“移除背景”、选择“u2net”、“回送蒙版”,点击”生成”按钮,即可得到一张黑白的蒙版图。这里注意,第一次运行可能会需要下载模型,时间会比较久:

下载蒙版图,(我这个示例图找的不太好,前景的标签也被加进去了,可以到ps里处理一下,把左边标签留下的白框涂掉)。切换到“图生图”、“上传重绘蒙版”,分别上传刚才的商品图、和蒙版图,提示词输入你想要的效果,如下图设置,比较重要的是,因为我们是要整个换背景,所以最下方“重绘幅度”设置为1。ok,点击“生成”,稍等片刻,既可以看到效果。

可以看出,输出图自然给了原图瓶子立体和阴影效果,还是很不错的。

当然,有时因为对提示词理解的原因,输出图会多出一个“瓶子”,比如下面这样…这时可以尝试换换提示词,或者点生成几张。

当然,同样的方法也可以给人换背景,不过效果不如“规则的商品”更容易控制,大家感受一下:

——over
转载请注明出处: 昆仑的山头

AIGC

玩转StableDiffusion.5——用InstantId换脸

“InstantID 是由InstantX项目组推出的一种SOTA的tuning-free方法,只需单个图像即可实现 ID 保留生成,并支持各种下游任务”。它的项目主页在这里:https://github.com/InstantID/InstantID,下面是官方效果图

相对之前玩过的easyphoto,InstantID最大的优势是省去了训练Lora的步骤,今天,我们先来试用InstantId的换脸功能。InstantID目前是通过ControlNet集成到StableDiffusion内,具体需要以下几个步骤:
1. 检查ControlNet版本不低于1.441、StableDiffusion版本不低于1.8.0
2. 下载模型、预处理器和配置文件,并放入对应目录,下载地址:https://github.com/Mikubill/sd-webui-controlnet/discussions/2589,需要下载的下列七个文件:1k3d68.onnx、glintr100.onnx、scrfd_10g_bnkps.onnx、genderage.onnx、2d106det.onnx、ip-adapter_instant_id_sdxl.bin、control_instant_id_sdxl.safetensors。5个onnx配置文件放入:webui根目录/extensions/sd-webui-controlnet/annototort/downloads/insightface/models/antelopev2。另外两个文件放入:webui根目录/extensions/sd-webui-controlnet/models
ok,重启webui后,开始操作
1. 切换到图生图,大模型选择SDXL或SDXLTurbo类模型,上传模仿图片。为了得到相对更好的效果,如果是Turbo模型,Steps设置为5-7即可、CFG设置为1.5左右;非Trubo模型Steps保持默认20,CFG设置为3-5;输入一组符合模仿图特征的提示词
2. 打开一个ControlNet单元,上传脸模图片,按下图设置

3. 再打开一个ControlNet单元,上传与图生图相同的模仿图图片

ok,点击“生成”按钮,稍等片刻,看看效果:

换一组,再来一次:

——over
转载请注明出处: 昆仑的山头

AIGC

ComfyUI学习笔记.2——ComfyUI&AnimateDiff制作动画

互联网的存在让学习变成了一个成本极低的事情,以前是各种图文教程,这几年视频网站兴起,B站、油管都有大量的教学视频,就连开源项目也都自带方便的学习入口,只要你想学,各种资源随手一抓一大把。首先,开始正题之前,先让我们来赞美上帝、赞美共享和开源精神…阿门…
ComfyUI版AnimateDiff项目地址:https://github.com/Kosinkadink/ComfyUI-AnimateDiff-Evolved。在项目说明后面,还提供了几个漂亮的示例,这些示例都是带ComfyUI工作流图的…只要将你感兴趣的工作流拖到你的ComfyUI界面,即可在本地运行这个工作流~~当然,前提是你要补上缺失的节点插件和模型。我们还是从开始一步一步说说怎么通过提示词生成动画片段:
首先,点击右侧导航条“清除”清理工作区、“加载默认”,然后按一下几步得到AnimateDiff的工作流
1. 添加新节点“CLIP停止层”,连接到大模型与提示词节点之间,数值设置为-2
2. 添加“VAE加载器”节点到“VAE解码节点”,根据大模型版本是否是XL,选择VAE模型的版本
3. 添加“AnimateDiff Evo -> AnimateDiff加载器”节点,连接到大模型和采样器两个模型之间
4. 从输出端“VAE解码器 – 图像”拉出、新建“合并为视频”节点,保持默认帧率8,可以选择输出格式为gif,或是mp4
5. 在画面尺寸节点,调整批次大小到16,16÷8=2,将输出长度为2秒的视频
——-至此,简单输入一个关键字,看能否正常输出视频。(我这里工作流里还加了一个“墨心”Lora)

输出结果

上面演示视频只有两秒,如果大家尝试加大批次数到超过32,会发现报错,提示说最多只能生成32帧视频,要突破这个限制,需要在加入一个上下文节点,下面我们顺道把另外几个辅助点也一起都加上:
6. 新建“上下文设置”节点,连接到“AnimateDiff加载器”上面的“上下文设置”。
7. 新建“动态Lora”节点,连接到“AnimateDiff加载器”上面的“动态LORA”,选择对应的Lora,可以控制镜头运动;另外,动态LORA节点可以串联多个,实现更多动态运动。
——这里可以再点击生成按钮,试试镜头运动和提高时长的输出效果。
8. 安装FizzNodes插件节点,新建“Fiz添加节点 -> 提示词调度”,添加提示词调度节点,替换原有的正向提示词节点
9. 在提示词调度的第一个文本框可以定义每一帧的动作,第二个文本框输入正常的提示词;注意,这里第一个文本框的格式虽然没有花括号方括号,但类似json格式,也就是需要英文双引号、冒号、行逗号
10. 将批次增加到48,也就是6秒,同时忽略Lora节点(一方面为了能看到帧序列关键字是否生效,另一方面加了Lora以后,输出会更“稀碎”^_^)
ok,试试最终输出效果

素材结果

后记:可以看到输出视频非常“丝滑”…仅此而已,很明显角色的一致性是有问题的…只能说,还要继续努力、提高可控性。其实,现阶段无论是StableDiffusion,还是ComfyUI,生成的视频都相对前不久OpenAI新发布的Sora,都是小儿科,可控性很低。(当然,也是因为我刚入门,对很多控制手段都还不了解。而且,Sora也只是发布了一段演示视频,外界还不知道它的具体做法。)不过,现阶段开源免费的做的最好的也就是StableDiffusion和ComfyUI,而且,以这两年AIGC发展的速度,相信用不了多久,开源领域也会出现Sora同级别的产品

——over
转载请注明出处: 昆仑的山头

AIGC

ComfyUI学习笔记.1

说到ComfyUI与StableDiffusion,其实严格来说,二者没啥直接关联,都是可以独立运行的AI出图开源项目;可二者又是出自同门、且模型通用,整个工作原理也都类似。看评价说ComfyUI更难入门,大概是我有StableDiffusion的使用经验,今天实际使用ComfyUI,并没这么觉得,反而感觉操作更简单,更容易上手。
ComfyUI最大的特色就是节点化工作流界面,操作简单明了。而且最重要的是,相对StableDiffusion,同样条件下,ComfyUI出图更快~~真的是快。这里就来说一下安装方法和主要插件,首先是项目地址:https://github.com/comfyanonymous/ComfyUI,不是下载项目本身,而是看项目README,找到 Installing – Windows – Direct link to download,点击链接下载、解压。
如果要和本地StableDiffusion共用模型,可以修改项目目录下ComfyUI/extra_model_paths.yaml.example文件,去掉文件名“.example”,将自己的webui目录填进去,另外要留意的是controlNet目录,文件里默认不对,也要修改。ok,做好这些,就可以双击项目目录下“run_nvidia_gpu.bat”启动ComfyUI。
好,先搞一个妹子图试试~~通过节点化的界面,可以很清晰的看出出图的几个步骤:大模型、正反提示词、采样器、VAE、成品图

~~运行成功!
下面开始安装插件,先来第一个:管理器,项目地址 https://github.com/ltdrdata/ComfyUI-Manager,下载以后放入ComfyUI/custom_nodes目录内,重启项目~~这时右侧导航条的最下方就出现了“Manager”按钮,通过这个管理器,不仅可以对ComfyUI做各种设置,而且还能下载、管理插件,其中一个有意思的设置:“预览方法”,打开以后,就能在采样器中看到出图的每一个“step”,让我们更能理解AI出图的过程,很有意思。

然后是中文汉化插件https://github.com/AIGODLIKE/AIGODLIKE-ComfyUI-Translation,可以选择手动下载安装,也可以在刚才的“管理器”中通过“安装节点”安装
另外两个比较有用的是“SDXL提示词”和“脚本辅助工具”,地址分别是https://github.com/twri/sdxl_prompt_styler、https://github.com/pythongosssss/ComfyUI-Custom-Scripts。第一个插件允许添加“SDXL风格节点”,可将很多预设的风格提示词直接加入,非常方便。最后一个辅助工具,最有用的一点是可以替换大模型节点,让大模型的显示更加简洁、且能够显示出模型预览图

另外,图像面板也很好用,能够看到最近生产的各个图片,直接把图片拖入工作区,还能将图片的生产预设直接带过去,相当于保存了整个工作流
~~ok,先介绍这几个插件,整体用起来,ComfyUI的可视化节点界面,比webui的界面简单直观了很多,项目打开、出图也都更快了
——over
转载请注明出处: 昆仑的山头

AIGC

玩转StableDiffusion.4——用EasyPhoto实现丝滑换脸

EasyPhoto是一个集模型训练、文生图、图生图、文生视频、图生视频于一体的SD插件,功能强大,操作简便,今天就来看看如果用它来做AI换脸。
安装好EasyPhoto以后,SD的webui的上导航就会出现EasyPhoto选项卡,点进去以后,默认就是“训练”Lora的界面。这里可以选择不少于5张面部图片,尽量包含各种表情、各种角度。我们就来请出一位和蔼可亲的大叔来做模特,把图片上传到“训练”内

右边“高级选项”中,选择“人物Lora”、选一个比较通用的写实大模型。“max train steps”和“max steps per photos”,分别是训练步数,和每张图片训练多少次,如果不想训练过程太久,可以保持默认选项,下面的验证选项“Validation”建议取消勾选,否则不仅训练过程会变慢,而且还很容易报错、中断训练过程。ok,点击橙色的“Start Training”按钮,输入Lora名称,开始训练
16张图,按上图的设置,手头这台电脑显卡是10G3080,训练时间大概是20~30分钟
~~训练完成,切换到“Photo Inference”选项,测试一下训练效果。先使用“Photo2Photo – Template Gallery”,选一张easyphoto自带的模版图片,下侧大模型,尽量和训练Lora时保持一致,Num of Faceid选1,user_0 id选择刚才训练的Lora(如果没有,点一下右侧的刷新按钮),点击橙色按钮,稍等片刻,既可以看到换脸效果

下方“高级选项”,可输入更多提示词,对输出结果进行更多调整。勾选选择“Display Face Similarity Scores”,可以看到当前输出结果,是参考自哪张训练图。
换一种同性别的证件照:

可以看出easyphoto并非简单换脸,而是会做一定程度的融合,具体的融合参数,可通过“高级选项”进行设置。
切换到“Sing Image Upload”,上传几张自定义图片试试效果:


另外试了一下easyphoto的图生视频选项,效果很渣,等调整好了,再拿出来展示o(* ̄︶ ̄*)o
——over
转载请注明出处: 昆仑的山头