当前位置:首页|资讯|Stable Diffusion|ChatGPT

小说推文多角色短视频自动化的实现

作者:周增秋发布时间:2024-03-31

文字小说读者可以通过自己的想象力构建故事的视觉和人物对话。但目前多数小说推文的短视频都是同一个人物配音,直接朗读小说内容,用ai绘图构成小说画面。还是不够丰富。但用ai生成视频目前还是比较难应用。效果也不是很好。只能通过ai绘图(midjunery,stablediffusion)。再实现多角色配音,以及把小说中的旁白、人物对话区分出来。区分角色,旁白,人物对话可以通过chatgpt实现。

具体实现思路:

1. 文本处理与剧本生成

  • 项目的第一步是将小说内容保存为txt格式,然后通过ChatGPT进行分析,生成一个结构化的剧本。

  • 这个剧本不仅区分了角色、旁白和对话,还包括了角色的性别等信息,为后续的配音和绘图提供了基础。

[  {    "role": "陆程文",    "content": "“这就是人的弱点,我是最擅长利用别人的弱点欺负人的人了。对不对?”",    "type": "说话内容",    "gender": "male"  },  {    "role": "徐雪娇",    "content": "狂点头:“是的呢,是的呢。”",    "type": "说话内容",    "gender": "female"  },  {    "role": "陆程文",    "content": "“但是!”陆程文道:“现在如果出现一个人,给她拿出跟我一样的薪水给她,每个月十几万就好,就可以救她脱出苦海 。”",    "type": "说话内容",    "gender": "male"  },  {    "role": "徐雪娇",    "content": "“这样哦!”",    "type": "说话内容",    "gender": "female"  },  {    "role": "陆程文",    "content": "得意地道:“雪娇妹妹,你说,这个人,在哪儿呢?”",    "type": "说话内容",    "gender": "male"  }]

2.为了让视频中的每个角色都拥有独特而适合的声音,我们预先训练了多个具有不同风格、年龄特征的万能配音角色。通过ChatGPT的分析,为剧本中的每个角色匹配合适的配音,这一步骤使用了GPT-SoVITS-beta克隆技术来实现声音的多样性。

{                "males":[            {'name':'迪卢克','style':'霸道总裁','age':23},            {'name':'流浪者','style':'阴险反派','age':24},            {'name':'米卡','style':'害羞小男孩','age':20},             {'name':'行秋','style':'热情阳光','age':22},              {'name':'许光汉','style':'深情低沉帅气','age':27},              {'name':'提纳里','style':'直率热忱','age':27},                   {'name':'大鱼海棠',"style":"狠心毒辣","age":64},                    {'name':'阿喆',"style":"恭敬礼貌","age":30},                       {'name':'朋克',"style":"平平无奇","age":28},            ],            'females':[        {'name':'甘雨','style':'清纯善良','age':20},        {'name':'纳西妲','style':'可爱','age':18},        {'name':'罗莎莉亚','style':'成熟御姐','age':31},        {'name':'莫娜','style':'正直善良','age':16},        {'name':'菲谢尔','style':'反派阴险','age':25},        {'name':'阿贝多','style':'高冷平坦','age':23},        {'name':'香菱','style':'可爱小巧','age':18},        {'name':'琴','style':'成熟阿姨','age':36},        {'name':'江脍','style':'豁达开朗','age':24},             {'name':'老奶奶',"style":"慈祥善良","age":68}        ]        }

3.最后会生成一个配音表,剧本

4.绘图+语音合成

选择了通过AI绘图技术(如MidJourney和StableDiffusion)来创造小说的视觉画面。能够根据剧本中的描述生成高质量的图像,为每个场景和角色提供视觉支持。

prompt提前优化好,再遍历剧本,为每段台词生成图片。

非说话内容属于旁白(旁白配音固定一个)

说话内容再根据配音表选择不同角色的配音合成音频。

5.ffmpeg将图片生成为跟语音时长匹配的视频,再加入简单的转场动画。合成一个完整的视频。

最后再用funasr 识别 带时间戳的文本生成ass字幕文件。

一个小说推文的短视频就这样完成了。

大概看下效果:


该项目主要用python实现。

1.chatgpt:

用于分析小说内容生成剧本和匹配配音角色

2.MidJourney||StableDiffusion

MidJourney可以通过调用discord实现,但是速度比较慢,效果比stablediffusion好。

这一步的prompt也需要用到chatgpt生成

参考chatgpt的prompt:

                  这是小说的某一章节内容:{prompt_excaple};                                                                根据上下文来写midjourney的prompt。                 1.我将会把每一条生成promt提交给midjourney绘画,因为ai没有办法理解上下文,所以每一段都要详细,但尽量不要用自然语言,简单的单词形容,但不要遗漏重要的细节。并且拆分为一个个关键词。尽可能让ai理解。                 2.每个prompt需要包含:几个男人,几个女人,在什么场景下,他们各自在干嘛,每个人的基本外貌,身材,发色,发型,穿着等。镜头,画面风格(武侠,古代,穿越,现代)。                 3.不需要出现角色名称,因为ai不认识角色是谁,你需要用文字来描述。                 4.为场景增加一些合适的描述词。增加特效。                 类似:Surrealism, lightning, flames, summoning dragons, awakening and exploding, surrounded by flames.                 5.例如:一个男子身材高挑,留着一头深棕色的头发。那么prompt可以简化为:                 1boy&slender&tall&Dark brown hair.                 6.并不是词越多越好,而是越精准越好。                 返回一个json,json的key值是prompt,prompt必须是 英文,只需要返回json,不要有其他内容

3.GPT-SoVITS-beta

用于提前训练好多个角色的配音以及语音合成部分。

4.ffmpeg

  • 消除音频静音部分

  • 图片转视频

  • 多视频合成

  • 多音频合成

  • 音频视频合成

可以用gradio分成多个步骤。比较方便操作调整。


总结:


整体实现比我预想的要困难些。

难点在于chatgpt的训练和文本的处理上。

该文章主要提供一些实现思路,并且还不够完美。

有想法可以评论留言交流下。



Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1