MoneyPrinter国内版改造

news2024/11/27 10:32:43

在这里插入图片描述

背景:

MoneyPrinter 是一个自动生成短视频的开源项目。只需要输入短视频主题,然后就可以生成视频。
在国内环境运行时,框架中使用的youtube、抖音文字转语音等功能无法使用,需要对框架进行国内版改造,使其使用国内网络环境。

实现原理:

MoneyPrinter根据输入的主题,调用AI生成视频文案,然后生成检索关键字,去pixel网站检索相关的视频,然后调用语音合成工具生成音频,调用moviepy生成字符,最后将生成的音频、视频、字幕进行合并,完成视频拼接。

关键步骤:

  • AI文案:调用g4f,自动检索可用的AI接口。你可以替换成自己付费的API模型,也可以让他自己检索可用的免费AI在这里插入图片描述
  • pixel网站:需要你配置自己的账号秘钥,以供接口调用时使用,完全免费的。国内可访问。
    在这里插入图片描述
  • 语音合成工具:将视频脚本转换为语音。
  • moviepy:拼接视频

国内版改造:

  1. youtube 自动上传功能

  2. 文字转音频,需要换替换国内可用服务器。之前分享的文章

  3. 字幕转换,需要转换为中文版

    def generate_response(prompt: str, ai_model: str) -> str:
        """
        Generate a script for a video, depending on the subject of the video.
    
        Args:
            video_subject (str): The subject of the video.
            ai_model (str): The AI model to use for generation.
    
    
        Returns:
    
            str: The response from the AI model.
    
        """
    
        if ai_model == 'g4f':
    
            # 使用最新版本的调用方法
            client = g4f.client.Client()
            response = client.chat.completions.create(
                model='gpt-3.5-turbo',
                messages=[{"role": "user", "content": prompt}],
            ).choices[0].message.content
    
        elif ai_model in ["gpt3.5-turbo", "gpt4"]:
    
            model_name = "gpt-3.5-turbo" if ai_model == "gpt3.5-turbo" else "gpt-4-1106-preview"
    
            response = openai.chat.completions.create(
    
                model=model_name,
    
                messages=[{"role": "user", "content": prompt}],
    
            ).choices[0].message.content
        elif ai_model == 'gemmini':
            model = genai.GenerativeModel('gemini-pro')
            response_model = model.generate_content(prompt)
            response = response_model.text
    
        else:
    
            raise ValueError("Invalid AI model selected.")
    
        return response
    
    def translate_text(txt: str, /, *, language='Chinese', ai_model: str) -> str:
        logger.debug(f'待翻译的内容: {txt} \n'
                     f'待翻译为的语言:{language}')
        prompt = f"translate the following text into {language}: {txt}"
    
        logger.debug(f'使用的AI模型:{ai_model}')
        response = generate_response(prompt, ai_model)
    
        logger.info(f'翻译结果:: {response}')
        return response
    
    
  4. 最终输入的视频存在只显示第一帧画面的问题(调用moviepy模块后补充close()方法
    在这里插入图片描述

  5. 使用loguru进行日志管理。
    在这里插入图片描述

国内版项目使用步骤:

  1. 项目代码

  2. 安装ImageMagick

  3. 修改项目配置文件:

    1. ImageMagick, 指定安装路径
    2. PEXELS_API_KEY,填写账号token
    3. 如果有,AI模型token
    # Necessary API Keys
    # -------------------
    
    # ImageMagick Binary Path 
    # Download ImageMagick from https://imagemagick.org/script/download.php
    IMAGEMAGICK_BINARY="/Downloads/ImageMagick/iMagick/usr/local/bin/magick"
    
    # Pexels API Key
    # Register at https://www.pexels.com/api/ to get your API key.
    PEXELS_API_KEY=""
    
    # Optional API Keys
    # -----------------
    
    # OpenAI API Key
    # Visit https://openai.com/api/ for details on obtaining an API key.
    #OPENAI_API_KEY=""
    
    # AssemblyAI API Key
    # Sign up at https://www.assemblyai.com/ to receive an API key.
    #ASSEMBLY_AI_API_KEY=""
    
  4. 后端服务启动 /Backend$ python main.py
    在这里插入图片描述

  5. 前端服务启动 python -m http.server 3000
    在这里插入图片描述

  6. 浏览器调用 http://127.0.0.1:3000/
    在这里插入图片描述

  7. 输入主题,生成第一个视频

  8. 查看视频http://127.0.0.1:3000/static/temp/
    在这里插入图片描述在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1671131.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue路由开启步骤

1.在控制台输入命令 //控制台下载安装npm add vue-router3.6.5 2.在main.js下导入并注册组件 import Vue from vue import App from ./App.vue//控制台下载安装npm add vue-router3.6.5 //导入 import VueRouter from "vue-router";//注册 Vue.use(VueRouter) con…

巩固学习7

正则表达式 就是用来找到符合模式的字符串,这些模式包括:是什么字符,重复多少次,在什么位置,有哪些额外的约束 找某个字符串 import re text身高:178 体重:168 学号:123456 密码:9527 #在Python中,r前缀用…

【软考高项】四十五、项目管理科学计算之工程经济学

一、资金的时间价值与等值计算的概念 1、资金的时间价值是指不同时间发生的等额资金在价值上的差别。 2、把资金存入银行,经过一段时间后也会产生增值,这就是利息。 例如,在年利率为5.22%条件下,当年的100元与下一年的105.22元是等值的,即100 (15.22%&a…

模型 奥卡姆剃刀原则

系列文章 分享 模型,了解更多👉 模型_思维模型目录。如无必要,勿增实体。 1 奥卡姆剃刀原则的应用 1.1 奥卡姆剃刀原则在工程设计中的应用 一家制造智能手机的科技公司“移动创新”在设计其最新型号手机时遇到了一个难题:新款手…

基于FPGA的视频矩阵切换方案

一、单个显示设备的系统方案:会议室只有1个显示设备 会议室的信号源有很多,但是显示设备只有1个,这个时候最佳方案是使用切换器。 (1)切换器(控制方式:遥控器、软件、机箱面板、中控&#xff…

Star CCM+衍生零部件的创建

前言 在一个仿真计算项目中,分配零部件至区域、划分网格后。下一步可以先将需要监测的点、面建立出来,方便后续创建报告。Star中需要创建点、面是在衍生零部件下创建。衍生零部件→右键→新建(如下图1所示)。通过衍生零部件可以创…

网友用摄像头看猫发现...猫竟然在家偷吃这些主食冻干!

随着科学养猫的普及,主食冻干喂养越来越受欢迎,主食冻干喂养对猫的好处很多,它符合猫咪的天性,可以提供全面的营养,保持牙齿和牙龈的健康,还有助于维持健康的消化系统。而且适口性非常的高!不在…

电信网关配置管理系统 rewrite.php 文件上传致RCE漏洞复现

0x01 产品简介 中国电信集团有限公司(英文名称“China Telecom”、简称“中国电信”)成立于2000年9月,是中国特大型国有通信企业、上海世博会全球合作伙伴。电信网关配置管理系统是一个用于管理和配置电信网络中网关设备的软件系统。它可以帮助网络管理员实现对网关设备的远…

RT-Thread事件集

文章目录 前言一、RT-Thread事件集的概念二、事件集函数的使用1.创建事件集函数2.事件集发送函数3.事件集接收函数4.事件集删除函数 三、事件集使用例程总结 前言 本篇文章将给大家讲解RT-Thread中事件集的概念,了解什么是事件集及事件集的函数使用方法。 一、RT-…

活字格登录界面设计

1、不使用内部的登录。 2、创建手机页面。 3、新增一列,行数为31行。 4、复制内含登录界面的组件到前几步创建的界面。 5、插入背景。 6、设置账号和密码文本框的单元格样式(新建单元格式样),前后景设为无。 效果图:…

点云分割论文阅读01--FusionVision

FusionVision: A Comprehensive Approach of 3D Object Reconstruction and Segmentation from RGB-D Cameras Using YOLO and Fast Segment Anything FusionVision:使用 YOLO 和 Fast Segment Anything 从 RGB-D 相机重建和分割 3D 对象的综合方法 toread&#x…

python跟C++选哪个?

选择使用Python还是C取决于你的具体需求和项目背景。我这里有一套编程入门教程,不仅包含了详细的视频讲解,项目实战。如果你渴望学习编程,不妨点个关注,给个评论222,私信22,我在后台发给你。 在通信工程行业…

2.数据类型与变量(java篇)

目录 数据类型与变量 数据类型 变量 整型变量 长整型变量 短整型变量 字节型变量 浮点型变量 双精度浮点型 单精度浮点型 字符型变量 布尔型变量(boolean) 类型转换 自动类型转换(隐式) 强制类型转换(显式) 类型提升 字符串类型 数据类…

【机器学习-06】Scikit-Learn机器学习工具包进阶指南:机器学习分类模型实战与数据可视化分析

🎩 欢迎来到技术探索的奇幻世界👨‍💻 📜 个人主页:一伦明悦-CSDN博客 ✍🏻 作者简介: C软件开发、Python机器学习爱好者 🗣️ 互动与支持:💬评论 &…

【数据结构】详解栈且实现

一.栈 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端 称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。 压栈:…

10句超好玩的西语习语,柯桥西班牙语培训

Leche在西语中本意是“牛奶”,但是当我们说一件事或一个人是 "la leche "时,就意味着ta是惊人的、不可思议的或不寻常的! Ese partido fue la leche.(≈Ese partido fue increble. ) 那场比赛太精彩了。 2. Estar hecho un lo 如…

华中科大:感谢大家,我的春招之旅结束了

今天在论坛上看到一个帖子,一位华中科大的同学,因为家中父亲突然病倒,发求助帖: 请问大家,春招走哪个方向能最快找到工作?还是说继续读研呢,但是家里急需钱…… 当时这个帖子直接热榜第一&…

深入理解与应用C++ Vector

1. C Vector 简介与基本使用 C 的 vector 是一个序列容器,用于表示可变大小的数组。它结合了数组的高效元素访问和动态大小调整的灵活性。与静态数组相比,vector 的大小可以根据需要自动调整,这是通过在底层使用动态数组来实现的。当新元素被…

48.乐理基础-音符的组合方式-休止符

休止符 音乐中总有一些停顿的地方,一次停顿多久是创作人固定好的,休止符就是用来表示每一次停顿多久 需要停顿的位置就用 0 来表示,数字 0 就是简谱中的休止符 音符有全音符、二分音符、四分音符、八分音符、十六分音符、三十二分音符等&…

微信小程序Vue+uniapp餐饮美食订餐骑手配送系统9g60o

本小程序uniapp菜品帮采用Java语言和Mysql数据库进行设计,技术采用微信小程序,可以不安装App软件就实现订餐。本系统实现管理员和用户、商家、配送员四个角色的功能。用户主要在微信端操作,内容有菜品信息,用户可以在线点餐和管理…