一页PPT自动生成短视频的研究

希望通过一些技术,将以前自己讲过的PPT转换成有解说的短视频,从而进行一些分发

旁白到语音

从文字转换成语音我们首先想到的就是TTS,这其中我也是用了各式各样的TTS,发现发音电子音非常强,听听起来很不舒服。后来发现很多云服务商都提供了文字转语音的功能,这样就是用过阿里云、华为云、科大讯飞等提供的一些服务,最后也放弃了,其实对这几个云服务没有完全的评价主要是因为付费。
最近chatGPT很火,也导致我直接想到借用AI解决这个问题。通过搜索我发现MockingBird,可以通过模拟我们提供的声音样本模拟一些发音。项目地址:MockingBird,但是MockingBird的安装并不顺利,下面我就将我的安装过程写在下面,有一些是来自官方github。

  • 安装 PyTorch,直接官网下载。如果GPU不支持CUDA,请默认选择。

  • 安装 ffmpeg:brew install ffmpeg就可以了

  • 安装了Anacoda,这样我就有了多环境的python。我是用Anacoda的UI界面来管理,挺方便的,都不用看文档,你看一下界面就知道怎么用了。

  • 使用Python3.8安装MockingBird,其他会遇见各式各样的问题,建议你也别折腾了,直接Python3.8(通过Anacoda的UI面积启动terminal),然后进入MockingBird代码所在目录pip install -r requirements.txt就可以等着安装依赖包了。

  • 本步骤可以跳过:如果你遇见了which is required to install pyproject.toml-based projects,那么无论你怎么pip install pyproject这个问题依旧存在,那么你需要打开另外一个terminal,然后输入xcode-select --install,等待安装完成就好了。这里就不告诉你安装的是什么了,你一看就知道了。

  • 再次pip install -r requirements.txt就可以等着安装依赖包就可以了。

  • 安装成功后,在MockingBird根目录执行python demo_toolbox.py,就可以尝试用它开始生成声音了

  • 这里还需要下一些先训练好的合成器(合成器可以在README-CN.md页面里找到)

  • 下载完合成器后,选择自己录制的一段语音(这段音频最好完整的一句话,不要随意截取,并且要在5到8秒之间效果最好。官方提供的合成器女生声音比男生声音更好生成)

  • 先选择自己的声音,然后点击synthesize only看一看生成的声纹,如果生成的声纹波纹状很明显,说明生成的发音就很清楚,否则再点击一下synthesize only重新生成,如果ok。点击Vocode only就可以听声了。我选择的合成器如下图中显示。

  • 点击Export按钮就可以到处音频了。(生成也建议一句一句的生成,效果会更好一点)

  • 多个导出的音频,我通过Audactivy这个软件进行的合成。

一页PPT到MP4

微软的PPT提供了导出视频功能,通过导出功能,选择导出格式为mp4完成导出。

ppt的每一页播放时长我就写了音频的时长(因为我设计的一页ppt就是一个视频)

利用moviepy库完成视频和音频的merge

利用moviepy库,给视频添加一个背景音乐,代码如下(Github仓库https://github.com/crisschan/video_merge_audio):

#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
@File    :   video_merge_audio.py
@Time    :   2022/12/27 15:36:57
@Author  :   CrissChan 
@Version :   1.0
@Site    :   https://blog.csdn.net/crisschan
@Desc    :   利用moviepy库,给视频添加一个背景音乐
'''

from moviepy.editor import *

class VideoMergeAudio(object):
    
    def __init__(self,video_file,audio_file,duration_flag = 0) -> None:
        '''
        @des  :构造函数
        @params  :
                 video_file视频的绝对地址和文件名
                 audio_file音频的绝对地址和文件名
                 dration_flag如果是0,那么最终视频尝试以video_file长度为准
                             如果是1,那么最终视频尝试以audio_file长度为准
        @return  : None   
        '''
        self.video_file = video_file
        self.audio_file = audio_file
        self.duration_flag = duration_flag
        pass
    def merge(self):
        '''
        @des  :合并视频和音频
        @params  :
                 video_file视频的绝对地址和文件名
                 audio_file音频的绝对地址和文件名
                 duration_flag如果是0,那么最终视频尝试以video_file长度为准
                             如果是1,那么最终视频尝试以audio_file长度为准
        @return  : 返回合并后的视频文件的绝对地址
        '''
        video_clip = VideoFileClip(self.video_file)
        audio_clip = AudioFileClip(self.audio_file)
        if self.duration_flag == 0:
            final_clip = video_clip.set_audio(audio_clip).set_duration(video_clip.duration)
        else:
            final_clip = video_clip.set_audio(audio_clip).set_duration(audio_clip.duration)
        final_clip.write_videofile(self.video_file[:-4]+'_merge.mp4')


if __name__ == '__main__':
    vma = VideoMergeAudio('1.mp4','1.mp3',duration_flag=1)
    vma.merge()

这样我就可以完成了一页PPT生成短视频的功能,那么多页PPT可以先把每一页生成短视频,然后再拼接的方式完成,这里就不做详细表述了。

### 自动生成 PPT 文件的技术方法 通过编程实现自动化的 PowerPoint 制作是一种高效的方式,可以显著减少手动操作的时间成本。以下是几种常见的技术方案: #### 使用 Python-pptx 库 Python 提供了一个强大的库 `python-pptx`,它能够帮助开发者以编程方式创建和修改 PowerPoint 演示文稿。该库支持多种功能,例如添加幻灯片、设置布局、插入文本框、图表以及图片等[^2]。 下面是一个简单的代码示例,展示如何利用 `python-pptx` 创建一份基础的 PPT 文档: ```python from pptx import Presentation from pptx.util import Inches # 初始化一个新的演示文稿对象 presentation = Presentation() # 添加一张标题幻灯片 slide_layout = presentation.slide_layouts[0] # 获取预定义的标题页布局 slide = presentation.slides.add_slide(slide_layout) title = slide.shapes.title subtitle = slide.placeholders[1] # 设置标题和副标题的内容 title.text = "自动化生成的 PPT" subtitle.text = "由 Python 脚本完成" # 添加第二张内容幻灯片 content_slide_layout = presentation.slide_layouts[1] slide = presentation.slides.add_slide(content_slide_layout) # 定义形状中的文字区域 shapes = slide.shapes title_shape = shapes.title body_shape = shapes.placeholders[1] # 填充具体内容 title_shape.text = "主要内容" text_frame = body_shape.text_frame text_frame.text = "这是自动生成的一段描述..." # 插入图片到第三张幻灯片 image_slide_layout = presentation.slide_layouts[5] slide = presentation.slides.add_slide(image_slide_layout) left = top = Inches(1) pic = slide.shapes.add_picture('example.jpg', left, top, width=Inches(5), height=Inches(3)) # 将最终的结果保存为文件 presentation.save("automated_presentation.pptx") ``` 上述脚本展示了基本的操作流程,包括初始化项目、添加不同类型的幻灯片、填充文本及图像资源等内容。 #### 结合 AI 技术增强内容生成能力 除了传统的模板填充外,还可以引入人工智能来提升 PPT 的智能化水平。例如,借助大语言模型(LLM),可以根据输入的主题动态生成相应的文案或者设计建议。具体来说,可以通过调用 API 或者集成开源框架如 Llama 系列模型来自动生成高质量的文字材料。 另外,在某些场景下可能还需要考虑多媒体元素的支持情况,比如嵌入音频片段或是录制旁白等功能,则需额外依赖其他第三方插件或服务配合完成整个工作流[^1]。 #### 办公自动化综合解决方案 如果需求更加复杂全面的话,那么采用专门开发出来的办公套件类 SDK 可能会更合适一些。这类工具通常集成了众多实用特性于一身,覆盖范围广泛,从文档编辑换直到高级视觉效果渲染均有所涉猎。 综上所述,无论是单纯依靠现有的标准模块还是进一步探索新兴科技领域内的可能性,都能找到满足特定业务目标的有效途径。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

质问

开心就好

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值