思路:

.txt -> 读取 -> 调用api合成语音 -> 合成语音 -> MP3+PNG/JPG -> 合成视频

目录结构

  • new_video:存放最后生产的视频文件
  • out_v:存放合成的MP3文件
  • text:存放文本文件
  • voices:存放api导出的MP3

代码结构:

import os
import time
import subprocess
from pydub import AudioSegment
from aip import AipSpeech
import pandas as pd
pd.set_option( 'display.max_columns', None)
pd.set_option( 'display.max_rows', None)
PATH = os.path.abspath(__file__).replace(os.path.abspath(__file__).split('\\')[-1], '')def text_to_voice(text,file_name,r_num):print(len(text))text_list = []out_max = 500if len(text)> out_max:text_list.append(text[:out_max])text_list.append(text[out_max:])while True:if len(text_list[-1])>out_max:text_re = text_list[-1]text_list.remove(text_re)text_list.append(text_re[:out_max])text_list.append(text_re[out_max:])else:breakprint(len(text_list))file_name_list = []for i in range(0,len(text_list)):APP_ID = 'xxx'API_KEY = 'xxx'SECRET_KEY = 'xxx'try:client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)result = client.synthesis(text_list[i], 'zh', 1, {'vol': 5,'per': 3,'spd': 6})print(f"::{file_name}::{i}::{result}")except Exception as e:print(e)if not isinstance(result, dict):with open(f'voices/{r_num}_{i}.mp3', 'wb') as f:f.write(result)time.sleep(2)file_name_list.append(f'{r_num}_{i}.mp3')f = open(f'voices/{r_num}_ff.txt','a')for i in file_name_list:f.write(f'file {i}\n')f.close()return f'{r_num}_ff.txt'def add_mp3(dir_name,file_name):f = open(f"{dir_name}/{file_name}",encoding='utf-8')ret = f.readlines()f.close()outfile_name = ret[0].replace('.mp3','_NEW.mp3').replace('file ','').replace('\n','')cmd = f'{PATH}{dir_name}\\ffmpeg.exe -f concat -safe 0'cmd+= f' -i {PATH}{dir_name}\\{file_name} -c copy {PATH}out_v\\{outfile_name}'print(cmd)subprocess.call(cmd,shell=True)def filter_text(text_src):f= open(text_src, encoding='utf-8')ret = f.readlines()ret_out = []for i in ret:i = i.strip().replace('\n','')if i != '':ret_out.append(i)f.close()return ret_outdef filter_text_1(text_src):f = open(text_src, encoding='utf-8')ret = f.readlines()ret_out = []for i in ret:i = i.strip().replace('\n', '').replace('|','')if i != '':ret_out.append(i)f.close()ret_dict = {}str1 = ''for i in ret_out:if '===' in i:title = i.replace('===','').replace(' ','_')str1 = ''continuestr1 += iret_dict[title]=str1for i in ret_dict:print(i)print(len(ret_dict[i]))return ret_dictdef to_video(src):ff = ['ffmpeg.exe','back.png']l_r = [i for num, i in enumerate(os.listdir(src)) if num not in ff]print(l_r)for c in l_r:out_name = c.replace('.mp3','.mp4')cmd = f'{PATH}voices\\ffmpeg.exe -i {PATH}out_v\\{c} -i {PATH}out_v\\back.png' \f'  -acodec aac -strict -2 -vcodec libx264 -ar 22050 -ab 128k -ac 2 -y {PATH}new_video\\{out_name}'print(cmd)subprocess.call(cmd, shell=True)def to_video_one(dir_name,vioce_name):out_name = vioce_name.replace('.mp3','.mp4')cmd = f'{PATH}{dir_name}\\ffmpeg.exe -i {PATH}{dir_name}\\{vioce_name} -i {PATH}{dir_name}\\back.png' \f'  -acodec aac -strict -2 -vcodec libx264 -ar 22050 -ab 128k -ac 2 -y {PATH}new_video\\{out_name}'print(cmd)subprocess.call(cmd, shell=True)if __name__ == '__main__':# ret_dict = filter_text_1('text/1.txt')# k = 1# txt_file_list=[]# for i in ret_dict:#     if k>187:#         file_name = text_to_voice(ret_dict[i],i,k)#         txt_file_list.append(file_name)#     k +=1# print(txt_file_list)#---------------------------# f = open('out_v/full.txt','a')# for i in range(1,263):#     f.write(f'file {i}_0_NEW.mp3\n')# f.close()# add_mp3('out_v','full.txt')#-----------------------------# txt_file_list = []# for i in range(1,263):#     txt_file_list.append(f'{i}_ff.txt')# print(txt_file_list)# for i in txt_file_list:#     add_mp3('voices',i)# to_video('out_v/')#-------------------# to_video_one('out_v','1_0_NEW_NEW.mp3')#-------------------

{txt-to-video}——文本转视频思路相关推荐

  1. 不使用插件,小程序也能完整的渲染富文本(视频展现,图片自适应)

    用过小程序rict-text的帅哥靓女们(说的就是正在看文章的你)都知道,rich-text是无法解析富文本中的video标签的,本文教你如何优雅的在不使用插件的情况下完整的渲染富文本 首先是富文本图 ...

  2. 直播电商平台开发,video组件实现视频弹幕功能

    直播电商平台开发,video组件实现视频弹幕功能 发送弹幕 WXML文件代码如下: <!--pages/video/video.wxml--> <video class=" ...

  3. 文本生成视频Make-A-Video,根据一句话就能一键生成视频 Meta新AI模型

    Meta公司(原Facebook)在今年9月29日首次推出一款人工智能系统模型:Make-A-Video,可以从给定的文字提示生成短视频. Make-A-Video研究基于文本到图像生成技术的最新进展 ...

  4. 如何使用Aiseesoft Mac Video Enhancer让视频更加清晰

    Aiseesoft Mac它可以让视频更加清晰,并在Mac上旋转侧向视频以纠正角度.它还允许您使用提供的裁剪,剪裁和水印功能编辑视频.小编来教您如何使用Aiseesoft Mac Video Enha ...

  5. Learning Typography for Video Editors 学习视频编辑的排版 Lynda课程中文字幕

    Learning Typography for Video Editors 中文字幕 学习视频编辑的排版 中文字幕Learning Typography for Video Editors 创建文本是 ...

  6. X-Pool:多伦多大学提出基于文本的视频聚合方式,在视频文本检索上达到SOTA性能!(CVPR 2022)...

    关注公众号,发现CV技术之美 本文分享 CVPR 2022 论文『X-Pool: Cross-Modal Language-Video Attention for Text-Video Retriev ...

  7. video/audio 音频/视频 标签详解

    video <video> 标签定义视频,比如电影片段或其他视频流. 可以在 <video> 和 </video> 标签之间放置文本内容,这样不支持 <vid ...

  8. 清华BAAI唐杰团队提出第一个开源的通用大规模预训练文本到视频生成模型CogVideo,含94亿超大参数量!代码即将开源!...

    关注公众号,发现CV技术之美 我爱计算机视觉 专业计算机视觉技术分享平台,"有价值有深度",分享开源技术与最新论文解读,传播视觉技术的业内最佳实践.知乎/微博:我爱计算机视觉,官网 ...

  9. python爬取新闻标题存入文本_Python视频爬虫实现下载头条视频功能示例

    本文实例讲述了Python视频爬虫实现下载头条视频功能.分享给大家供大家参考,具体如下: 一.需求分析 抓取头条短视频 思路: 分析网页源码,查找解析出视频资源url(查看源代码,搜mp4) 对该ur ...

最新文章

  1. UltraEdit批量删除关键字所在的指定行
  2. ab压力测试(了解ab工具,实验对网页进行测试)
  3. C# DataTable用法详解
  4. java工程师去字节飞书可以,字节跳动飞书Java后端开发暑假实习一面(过了)
  5. C语言实用算法系列之冒泡排序、sizeof与strlen的区别
  6. Jquery easyui 密码两次输入相等的验证
  7. 2.移植3.4内核-支持烧写yaffs2,裁剪内核并制作补丁
  8. mysql left join_对比MySQL,教你在Pandas中实现SQL常用操作!
  9. 打印 条码 CodeSoft JsBarCode
  10. 【JZOJ6011】天天爱跑步
  11. 图片去水印免费软件哪个好?这几款软件值得一看
  12. ALEXA中国网站排名真相调查[内幕调查:出卖Alexa]
  13. 手机厂商为何取消3.5mm耳机孔?主要原因有5点,看完你就知道了
  14. Win10、11登录微软账户时一直转圈
  15. JAVA 强制终止程序
  16. 前端上传图片到七牛云
  17. 我是漂移王-说明介绍
  18. 生态对对碰丨当数据库云管平台 zCloud 碰上 OceanBase……
  19. 还不知道 RabbitMQ 常用的几种交换机模式?这篇小白都能看懂的 RabbitMQ 交换机模式
  20. java 12306验证码识别_GitHub - sunqipeng-cn/JavaVerify: 用java 编写的验证码识别

热门文章

  1. Freemarker简单实现一个代码生成器。
  2. Win7旗舰版64位系统正确安装Genymotion模拟器步骤全过程
  3. oracle存储过程写法 并行_oracle存储过程写法
  4. 【渝粤题库】陕西师范大学163109旅游法规 作业 (高起专)
  5. 男装羽绒服十大名牌,通过获取拼多多接口分析哪个牌子销量好
  6. 腾讯云 TStor 私有云存储获统信+海光/兆芯官方认证
  7. vue使用原生videojs 播放m3u8格式的视频——播放m3u8格式视频(一)
  8. 用什么打开DWG文件进行查看呢
  9. 运行docker出现“Some WSL system related access rights are not set correctly. ”
  10. safeshare 服务器响应,(SafeShare服务器的安装与系统配置.doc