ChatGPT + Stable Diffusion + 百度AI + MoviePy 实现文字生成视频,小说转视频,自媒体神器!(二)

【多模态-文本翻译成手语视频】多模态API接口文档-文本翻译成手语视频,输入文字生成视频,多模态api,可以应用在手语视频的生成 【多模态-文本翻译成手语视频】多模态API接口文档-文本翻译成手语视频,输入文字生成视频,多模态api,可以应用在手语视频的生成。 用户输入文字,转换成视频,比如我们常看到的新闻类节目中,就有手语视频,这样就可以实时向手语的观众播放新闻内容了。 阅读详情

ChatGPT + Stable Diffusion + 百度AI + MoviePy 实现文字生成视频,小说转视频,自媒体神器!(二)
前言

最近大模型频出,但是对于我们普通人来说,如何使用这些AI工具来辅助我们的工作呢,或者参与进入我们的生活,就着现在比较热门的几个AI,写个一个提高生产力工具,现在在逻辑上已经走通了,后面会针对web页面、后台进行优化。

github链接

B站教程视频 https://www.bilibili.com/video/BV18M4y1H7XN/


第三步、调用百度语音合成包进行语音合成

这里不是智能用百度的API合成,想谷歌的,阿里云的都可以,只是我比较熟悉百度的API ps~: 关键是免费😂

class Main:
    client_id = client_id
    client_secret = client_secret

    def create_access_token(self):
        url = f"https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id={self.client_id}&client_secret={self.client_secret}"
        payload = ""
        headers = {
            'Content-Type': 'application/json',
            'Accept': 'application/json'
        }
        response = requests.request("POST", url, headers=headers, data=payload)
        print("-----------向百度获取 access_token API 发起请求了-----------")
        access_token = response.json()
        access_token.update({"time": datetime.now().strftime("%Y-%m-%d")})
        with open('access_token.json', 'w') as f:
            json.dump(access_token, f)
        return access_token

    def get_access_token(self):
        if os.path.exists('access_token.json'):
            with open('access_token.json', 'r') as f:
                data = json.load(f)
            time = data.get("time")
            if time and (datetime.now() - datetime.strptime(time, '%Y-%m-%d')).days >= 29:
                return self.create_access_token()
            return data
        return self.create_access_token()

    def text_to_audio(self, text: str, index: int):
        url = "https://tsn.baidu.com/text2audio"
        text = text.encode('utf8')
        FORMATS = {3: "mp3", 4: "pcm", 5: "pcm", 6: "wav"}
        FORMAT = FORMATS[6]
        data = {
            # 合成的文本,文本长度必须小于1024GBK字节。建议每次请求文本不超过120字节,约为60个汉字或者字母数字。
            "tex": text,
            # access_token
            "tok": self.get_access_token().get("access_token"),
            # 用户唯一标识,用来计算UV值。建议填写能区分用户的机器 MAC 地址或 IMEI 码,长度为60字符以内
            "cuid": hex(uuid.getnode()),
            # 客户端类型选择,web端填写固定值1
            "ctp": "1",
            # 固定值zh。语言选择,目前只有中英文混合模式,填写固定值zh
            "lan": "zh",
            # 语速,取值0-15,默认为5中语速
            "spd": 5,
            # 音调,取值0-15,默认为5中语调
            "pit": 5,
            # 音量,基础音库取值0-9,精品音库取值0-15,默认为5中音量(取值为0时为音量最小值,并非为无声)
            "vol": 5,
            # (基础音库) 度小宇=1,度小美=0,度逍遥(基础)=3,度丫丫=4
            # (精品音库) 度逍遥(精品)=5003,度小鹿=5118,度博文=106,度小童=110,度小萌=111,度米朵=103,度小娇=5
            "per": 5003,
            # 3为mp3格式(默认); 4为pcm-16k;5为pcm-8k;6为wav(内容同pcm-16k); 注意aue=4或者6是语音识别要求的格式,但是音频内容不是语音识别要求的自然人发音,所以识别效果会受影响。
            "aue": FORMAT
        }
        data = urllib.parse.urlencode(data)
        response = requests.post(url, data)
        if response.status_code == 200:
            result_str = response.content
            save_file = str(index) + '.' + FORMAT
            audio = file_path + "audio"
            if not os.path.isdir(audio):
                os.mkdir(audio)
            audio_path = f'{audio}/' + save_file
            with open(audio_path, 'wb') as of:
                of.write(result_str)
            return audio_path
        else:
            return False

当然了,这个设计也是热拔插的,以后这些数据都会做成动态的,在页面用户可以调整,也可以选择其他的API服务商

第四步、调用百度语音合成包进行语音合成

这里就比较麻烦了,首先要搭建起 Stable Diffusion 的环境,Window 用户我记得有一个 绘世
的软件,一键就可以安装,mac用户要去官网下载。

class Main:
    sd_url = sd_url

    def draw_picture(self, obj_list):
        """
        :param obj_list:
        :return: 图片地址列表
        """
        picture_path_list = []
        for index, obj in enumerate(obj_list):
            novel_dict = {
                "enable_hr": "false",
                "denoising_strength": 0,
                "firstphase_width": 0,
                "firstphase_height": 0,
                "hr_scale": 2,
                "hr_upscaler": "string",
                "hr_second_pass_steps": 0,
                "hr_resize_x": 0,
                "hr_resize_y": 0,
                "prompt": "{}".format(obj["prompt"]),
                "styles": [
                    "string"
                ],
                "seed": -1,
                "subseed": -1,
                "subseed_strength": 0,
                "seed_resize_from_h": -1,
                "seed_resize_from_w": -1,
                "sampler_name": "DPM++ SDE Karras",
                "batch_size": 1,
                "n_iter": 1,
                "steps": 50,
                "cfg_scale": 7,
                "width": 1024,
                "height": 768,
                "restore_faces": "false",
                "tiling": "false",
                "do_not_save_samples": "false",
                "do_not_save_grid": "false",
                "negative_prompt": obj["negative"],
                "eta": 0,
                "s_churn": 0,
                "s_tmax": 0,
                "s_tmin": 0,
                "s_noise": 1,
                "override_settings": {},
                "override_settings_restore_afterwards": "true",
                "script_args": [],
                "sampler_index": "DPM++ SDE Karras",
                "script_name": "",
                "send_images": "true",
                "save_images": "true",
                "alwayson_scripts": {}
            }
            html = requests.post(self.sd_url, data=json.dumps(novel_dict))
            img_response = json.loads(html.text)
            image_bytes = base64.b64decode(img_response['images'][0])
            image = Image.open(io.BytesIO(image_bytes))
            # 图片存放
            new_path = file_path + 'picture'
            if not os.path.exists(new_path):
                os.makedirs(new_path)
            picture_name = str(obj['index']) + ".png"
            image_path = os.path.join(new_path, picture_name)
            image.save(image_path)
            picture_path_list.append(image_path)
            print(f"-----------生成第{index}张图片-----------")
        return picture_path_list

后期我看看能不能引入 Midjuorney 的服务商,或者他们官方的API ps ~ 做人没有梦想和咸鱼有什么区别🥳

第五步、使用moviepy将图片和语音结合起来生成视频

moviepy中文文档

import os
from moviepy.editor import ImageSequenceClip, AudioFileClip, concatenate_videoclips
import numpy as np

from config import file_path


class Main:
    def merge_video(self, picture_path_list: list, audio_path_list: list, name: str):
        """
        :param picture_path_list: 图片路径列表
        :param audio_path_list: 音频路径列表
        :return:
        """
        clips = []
        for index, value in enumerate(picture_path_list):

            audio_clip = AudioFileClip(audio_path_list[index])
            img_clip = ImageSequenceClip([picture_path_list[index]], audio_clip.duration)
            img_clip = img_clip.set_position(('center', 'center')).fl(self.fl_up, apply_to=['mask']).set_duration(
                audio_clip.duration)
            clip = img_clip.set_audio(audio_clip)
            clips.append(clip)
            print(f"-----------生成第{index}段视频-----------")
        print(f"-----------开始合成视频-----------")
        final_clip = concatenate_videoclips(clips)
        new_parent = file_path + "video/"
        if not os.path.exists(new_parent):
            os.makedirs(new_parent)
        final_clip.write_videofile(new_parent + name + ".mp4", fps=24, audio_codec="aac")

    def fl_up(self, gf, t):
        # 获取原始图像帧
        frame = gf(t)

        # 进行滚动效果,将图像向下滚动50像素
        height, width = frame.shape[:2]
        scroll_y = int(t * 10)  # 根据时间t计算滚动的像素数
        new_frame = np.zeros_like(frame)

        # 控制滚动的范围,避免滚动超出图像的边界
        if scroll_y < height:
            new_frame[:height - scroll_y, :] = frame[scroll_y:, :]

        return new_frame

暂时就先写到这里了,后期努力添砖加瓦。 代码已经开源了。链接 有什么问题可以在github上或者博客介绍里来问我,byebye~👋

python利用AI自动化生成视频 【代码】利用AI自动化生成视频。 阅读详情

相关推荐

Python实战:使用Moviepy生成视频剪辑并显示定制信息和倒计时

在这篇文章中,我们将介绍如何使用Python的Moviepy库来生成自定义的视频剪辑,并向其中添加特定信息和倒计时。本文介绍了如何使用Python的Moviepy库来生成自定义的视频剪辑,以及如何向其中添加特定信息和倒计时。在这个脚本中,我们将使用Moviepy来创建一个简短的视频剪辑,并添加特定信息和倒计时。函数来创建一个倒计时Clip,将其添加到最终的视频剪辑中。接着,我们定义了视频剪辑的持续时间,这里我们设置为5秒钟。运行该脚本后,你将会看到生成的视频剪辑,其中包含特定信息和倒计时。

m0_47037246的博客 549

百度智能AI文章转视频:文字无限可能,创作轻松易

第一点:创造无限可能的文字世界身为一位作家,我对文字满怀挚爱与追求。然而有时,文字描述似乎难以传达丰富的情感及画面效果。然而,自从遇见百度智能AI文章转视频后,我的创作之路发生了根本性的变化。它能够将我所著文字转化为生动的视频,使读者在欣赏之余更深入地感受每一情境。

2401_82494260的博客 1600

Visual C++与WPF混合开发:C++/CLI桥接技术实现现代化桌面应用

在桌面应用开发领域,混合编程技术是连接不同技术栈、复用核心资产的关键手段。其核心原理在于通过特定的桥接层,实现托管代码与非托管代码之间的互操作,从而打破语言和运行时环境的壁垒。这项技术的核心价值在于,它允许开发者将高性能、高稳定性的原生C++业务逻辑库,与现代化、高表现力的WPF用户界面无缝结合,避免了重写核心代码的巨大成本和风险。在工业控制、数据可视化、上位机软件等对性能和界面均有高要求的应用场景中,这种架构尤为适用。本文以C++/CLI作为桥接技术,详细演示了如何构建一个包含原生C++核心层、C++/C

weixin_33146151的博客 278

文本生成视频模型

zeroscope_v2 576w是一种基于Modelscope的文本转视频模型,经过优化,可产生高质量的16:9组合和平滑的视频输出

jinke2010_happy的博客 1245

PaddleOCR实战:给图片‘加个框’,轻松搞定小图和长图文字识别不准的难题

本文探讨了PaddleOCR在处理小图和长图时识别精度下降的问题,并提出通过图像边框预处理技术显著提升OCR识别效果。详细介绍了使用OpenCV实现智能边框添加的方法,包括核心原理、工程实践中的关键细节以及性能优化策略,帮助开发者轻松解决非常规尺寸图像的文本检测难题。

weixin_29313547的博客 188

【FPGA XDMA AXI Bridge 模式】PCIe:BARs 和 AXI:BARs 含义解析

Xilinx的 DMA/Bridge Subsystem for PCI Express IP核中,支持普通的XDMA模式,但是这种模式只允许主机端发起PCIe 读写请求,FPGA内部无法主动发起读写请求,也即FPGA无法主动读写HOST的内存。而该IP核的另一种模式,AXI Bridge模式则支持HOST主动读写,以及FPGA主动读写。该模式下有个参数需要配置,分别是PCIe:BARs以及AXI:BARs。而上述的普通模式只有PCIe:BARs需要配置。下面详细说说这两个参数的含义。

weixin_45888152的博客 3733

ChatGPT + Stable Diffusion + 百度AI + MoviePy 实现文字生成视频,小说转视频,自媒体神器!(一)

ChatGPT + Stable Diffusion + 百度AI + MoviePy 实现文字生成视频,小说转视频,自媒体神器!(一)

Python_anning的博客 6324

避坑指南:C#调用CodeSoft打印标签时常见的5个错误及解决方法

本文总结了C#调用CodeSoft打印标签时常见的5个核心错误及解决方案,涵盖环境配置、模板加载、变量赋值、打印机切换和资源管理。重点解析了如何避免COM对象创建失败、模板路径错误、变量名不匹配、打印机切换异常及内存泄漏等问题,帮助开发者实现稳定高效的标签打印集成。

weixin_29215815的博客 231

【Python小技巧】moviepy读取字幕srt文件报错‘gbk‘ codec can‘t decode的解决办法(修改subtitles.py中SubtitlesClip类完美解决)

最近研究moviepy,使用其给视频添加字幕,却发现一个很久不会碰到的问题----文件编码问题。这在python3.x很少发生了。不成想,moviepy还是有bug。debug也是编程乐趣之一。不过写到这里,希望以后官方升级可以修复这个问题。以前python2.x文字编码老是各种出错,改用python3.x后,编码及中文问题都得到了解决。不曾想还是会应为编码问题倒是文件打不开或者乱码。以后看到这个提示,先检查字符编码。然后就是打开方式,通常都可以解决。

IT里的交易员-博客 2025

APO的全面进化之路(2):走向IBP、建设端到端供应链计划体系

前一篇记录阐述了在供应链计划(Supply Chain Planning)领域里SAP的关键产品APO的不断进化之路,即部分产品从APO进化到S/4HANA,本篇将继续阐述进化之路上的另一大中坚产品力量SAP-IBP(Integrated Business Planning)。作为SAP数字化供应链(Digital Supply Chain)中供应链计划SCP的左膀右臂,S/4HANA与IBP共同完善了计划域的完整闭环。本篇作为收尾,在先谈对IBP产品的个人认知之前,特别是在当今这个IT产品迭代多、技术革新

ChampaignWolf的专栏 5232

Neo4j 智能供应链应用源代码简析

本文简析Neo4j智能供应链应用的源代码,让你也可以快速开发自己的供应链应用。

Neo4j 开发者博客 1681

不再错过短视频风口,用python一键生成短视频,就是这么简单!

最近在网上查资料,正好看到百度开放平台又解锁一项能力【图文生成视频】。 利用这个api接口,可以可以把你的图文自动生成一个视频,完全不需要再借助其他任何的软件。 不过目前能力,一次只能转一条图文。 对于目前做短视频的人来说,我觉得还是非常方便的,所以就花点时间捣鼓了下,把代码写了出来。 在使用之前,我们先需要做做前期的准备。 1.一个百度账号 要使用百度API的接口,我们需要有一个百度...

sola237的博客 8972

[Dify实战] 做企业内部助手时,最容易被低估的不是提示词,而是权限、状态同步和反馈回写

这篇文章围绕“做企业内部助手时”这个具体问题展开,很多团队做企业内部助手时,最先优化的是提示词,但真正决定系统能不能上线长期跑下去的,往往是权限边界、状态同步和反馈回写闭环。正文会结合Dify拆解节点设计、配置建议和测试样例,补充关键步骤、检查点和常见坑,帮助读者判断第一版该怎么落地,并把经验复用到自己的真实业务场景中。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 68

解决SubtitlesClip读取字幕文件时报 ‘gbk‘ codec can‘t decode byte xxx in position xxx

操作系统:windows10moviepy版本:1.0.3在使用moviepy处理视频时,加载srt字幕使用的SubtitlesClip这个类读取的文件。

HYESC的博客 1195

【WorkBuddy专栏51】Codex与WorkBuddy的底层基因——两条完全不同的AI智能体路线(上)

【WorkBuddy专栏51】Codex与WorkBuddy的底层基因——两条完全不同的AI智能体路线(上)

AI人人懂 2190

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

一个基于 ChatGPT 的视频神器,开源了!

公众号关注“GitHubDaily”设为 “星标”,每天带你逛 GitHub!自今年开始,AIGC 行业爆火,直接带动了不少产业的发展,这其中自然也包括电商直播、新媒体营销等等。虽说现在可以利用不少工具,快速基于文案生成视频。但是,目前大部分应用还都是闭源的,可扩展性差,产品技术封闭,不太适合技术生态的构建与发展。有鉴于此,我们的星球嘉宾,重新打造了一套完整的视频自动生成与剪辑工具:Open C...

GitHubDaily 2376

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

小说转视频AI神器,一键生成小说视频!

这种技术利用人工智能算法和语言模型,将文本转化为视频剧情,加上配图、音效等元素,创造出生动的故事场景。三、Narrative Science:这是一个知名的自动写作软件,能够基于你输入的数据生成新闻报道和其他类型的文本。我们平时在刷抖音或者快手的时候,经常会看到有人把小说做成视频,有的甚至视频画面内容与音频毫不相关,但是这种视频的播放量是相当高的。你可以输入一些关键词或故事大纲,然后软件会根据你的输入生成相应的文本。这是一款比较专业的AI视频软件,如小说合成视频,文章合成视频,视频糊变晰、图片变、

A1688188的博客 1万+

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

AI一键将小说文字转成漫画视频(附安装包/大模型)

感兴趣的小伙伴,赠送全套AIGC学习资料,包含AI绘画、AI人工智能等前沿科技教程和软件工具,具体看这里。​AIGC技术的未来发展前景广阔,随着人工智能技术的不断发展,AIGC技术也将不断提高。未来,AIGC技术将在游戏和计算领域得到更广泛的应用,使游戏和计算系统具有更高效、更智能、更灵活的特性。同时,AIGC技术也将与人工智能技术紧密结合,在更多的领域得到广泛应用,对程序员来说影响至关重要。未来,AIGC技术将继续得到提高,同时也将与人工智能技术紧密结合,在更多的领域得到广泛应用。

bagell的博客 9839

十大好处!百度智能Ai文章转视频工具带来的颠覆性革新

在社交媒体与视频成为主流传播方式之际,各种创意和广告制作部门愈发关注如何将文本内容巧妙地转换为引人入胜的视频,以提高曝光率和受众参与度。幸而,百度智能Ai文章转视频工具的出现,使得这一困扰得以迎刃而解,只需简单操作即可令文字蜕变为具有视觉冲击力的精美视频

Xgvafdj55的博客 519

小说变成视频脚本化,并自动上传快手

【代码】小说变成视频脚本化,并自动上传快手。

File_xie的博客 1036

强大如斯:Stable Diffusion文字转视频插件Deforum

感兴趣的小伙伴,赠送全套AIGC学习资料,包含AI绘画、AI人工智能等前沿科技教程和软件工具,具体看这里。AIGC技术的未来发展前景广阔,随着人工智能技术的不断发展,AIGC技术也将不断提高。未来,AIGC技术将在游戏和计算领域得到更广泛的应用,使游戏和计算系统具有更高效、更智能、更灵活的特性。同时,AIGC技术也将与人工智能技术紧密结合,在更多的领域得到广泛应用,对程序员来说影响至关重要。未来,AIGC技术将继续得到提高,同时也将与人工智能技术紧密结合,在更多的领域得到广泛应用。

A1353192296的博客 3124

调用智能Ai画图在线生成图片生成视频的工具集API说明等

四款文字生成视频的智能软件1、 Lumen5:是一种自动化视频制作工具,可以利用其强大的AI技术,自动对文本进行分析,并提供适当的图像、视频剪辑和音乐,生成令人印象深刻的视频。它适用于制作社交媒体广告、营销视频和品牌故事等。。用户只需输入文本和选择相关图像/视频资源即可快速生成视频。2、Adobe Premiere Rush:这是一款功能强大且易于使用的视频编辑软件。它可以将您的文字、图片和音频混合并制成高质量的视频。

人工智能全栈工程师 | 智能算法研发与实战落地​专注于人工智能算法研究、代码实现与工程落地,提供从模型设计到部署应用的全流程解决方案。 8277

ChatGPT“保姆级教程”——手把手教你5分钟快速AI智能文字转爆款视频(剪映+百度AIGC平台)

AI智能一键成片技术的发展已经取得了非常显著的成果,它可以为用户提供快速、高效的视频制作服务。通过使用这种技术,用户只需要输入文字内容和一些基本的设置参数,就可以轻松地生成一个完整的视频作品。这种技术的优势在于它可以大大缩短视频制作的周期,同时还可以提高视频制作的效率和质量。对于那些没有太多视频制作经验的用户来说,AI智能一键成片技术也是一种非常便捷的选择。

小胡说人工智能的博客 7905

全球首发,国产开源「文本-视频生成」模型!免费在线体验,一键实现视频生成自由...

来源:新智元去年4月,OpenAI发布的DALL-E 2用更高的分辨率、更真实的图像生成以及更准确地理解自然描述,横扫整个AIGC领域。不过图像生成真正进入全民化还要数Stable Diffusion的开源,仅在消费级的GPU上即可运行,用户可以在自己的数据集上进行微调,也不用忍受各大绘画网站为了「安全」设立的各种过滤词表,真正实现了「绘画自由」。而在视频生成领域,目前各家大厂还是只敢拿demo出...

深度学习技术前沿 3231

90行代码轻松实现!结合 Whisper + Stable-diffusion 的语音生成图像任务!

本项目基于JinaAI MLOps平台搭建,通过使用 DocArray 跨越了不同数据类型之间的鸿沟,减少了应用的数据传输成本。同时使用 Jina 搭建了一个云原生的基于微服务的 Pipeline,并且很容易就能部署到 Kubernetes 系统中。

Jina AI 的博客 8724
上一篇: ChatGPT + Stable Diffusion + 百度AI + MoviePy 实现文字生成视频,小说转视频,自媒体神器!(一)
下一篇: 全网最全stable diffusion webui API调用示例,包含controlneth和segment anything的API(附json示例)
Python_anning
博客等级 码龄9年 1409粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值