Automatic-Youtube-Reddit-Text-To-Speech-Video-Generator-and-Uploader

GitHub
656 194 中等 3 次阅读 2天前MIT视频音频数据工具
AI 解读 由 AI 自动生成,仅供参考

Automatic-Youtube-Reddit-Text-To-Speech-Video-Generator-and-Uploader 能自动从 Reddit 抓取热门评论,生成文字转语音视频并上传至 YouTube。通过三个程序协同工作,自动化处理脚本筛选、TTS 生成和上传流程,但关键环节如过滤敏感内容、优化标题和缩略图仍需人工审核。适合有技术基础的内容创作者,可快速批量制作 Reddit 热点视频。工具需配置 Python 依赖,目前项目已停止更新,但开源可自由修改。单个视频制作时间从数小时缩短至 30 分钟内完成 6 个,显著节省人工操作成本。

使用场景

小李是一名独立视频创作者,专注于运营“Royal Reddit”频道,每天需要将Reddit热门评论转化为TTS视频并上传到YouTube。

没有 Automatic-Youtube-Reddit-Text-To-Speech-Video-Generator-and-Uploader 时

  • 手动从Reddit复制评论到文本编辑器,需反复调整格式,平均每个视频处理脚本耗时1小时,易遗漏关键内容。
  • 需逐个检查每条评论是否含链接、敏感内容或低质量,平均每个视频审核30分钟,错误率高且耗神。
  • 编辑标题和缩略图需切换Photoshop、视频编辑软件等多工具,操作繁琐,每次耗时40分钟。
  • 上传视频到YouTube时手动填写标题、描述、标签、分类,每次约15分钟,流程重复枯燥。
  • 整个流程每天需3-4小时,严重拖慢内容产出,难以维持频道稳定更新。

使用 Automatic-Youtube-Reddit-Text-To-Speech-Video-Generator-and-Uploader 后

  • 工具自动获取Reddit脚本,小李只需在客户端快速点击“keep/skip”筛选评论,脚本处理时间降至15分钟,准确率显著提升。
  • 内置审核功能自动标记问题评论,手动检查仅需5分钟,大幅减少内容风险。
  • 标题和缩略图编辑集成在客户端中,一键生成基础版本,调整只需10分钟,操作流畅高效。
  • 一键上传YouTube,自动填充元数据,上传过程仅需2分钟,省去重复操作。
  • 整个流程缩短至30分钟内,每天可高效制作6个视频,内容产出翻倍。

Automatic-Youtube-Reddit-Text-To-Speech-Video-Generator-and-Uploader 将视频制作效率提升90%,让小李能专注于内容创意而非繁琐操作。

运行环境要求

操作系统
  • Linux
GPU

未说明

内存

未说明

依赖
notes需下载500MB Assets文件;必须使用Python 2.7以支持YouTube-Upload;需配置Balabolka获取Daniel MLG语音;使用MySQL数据库存储脚本;YouTube API每日配额限制为10000点,最多上传6个视频
python2.7
Automatic-Youtube-Reddit-Text-To-Speech-Video-Generator-and-Uploader hero image

快速开始

HA6Bot的自动Reddit文本转语音视频生成与上传工具

继近期YouTube上“Reddit转文本转语音”视频的流行趋势后,我启动了一个项目,旨在打造一款能够尽可能减少人工干预、实现接收、生成并自动将这些视频上传至YouTube的程序。该项目历时4个月完成,由3个独立的程序协同工作以完成整个任务。

我的初衷是尽量减少人工操作,将所有琐碎的任务自动化。然而,整个流程并不能完全实现100%自动化。例如,带有链接的评论无法保留,因为这会降低视频质量,影响TTS效果。此外,即使某条评论获得了大量投票,它也可能含有冒犯性内容,不适合用于YouTube视频,因此必须予以删除。缩略图虽然部分自动生成,但仍需进一步编辑,才能吸引观众点击你的视频。同样,视频标题也必须具备足够的吸引力,才能获得关注。我尝试通过客户端程序简化手动流程,目前我大约需要30分钟才能制作6个视频(这是使用YouTube Data API在24小时内可上传的最大数量)。

我的自动文本转语音频道(皇家Reddit)

https://www.youtube.com/channel/UC0COfXvVMHVgZ-YH65Q8rVA?view_as=subscriber

我生成的部分视频:

https://www.youtube.com/watch?v=xxDKMHYXCsQ

https://www.youtube.com/watch?v=AW0yJIXXNxI&t=35s

完成一个视频的流程包括:

  1. 启动客户端程序
  2. 选择一段原始脚本进行编辑
  3. 对视频中的每条评论按下“保留”或“跳过”
  4. 当预计视频时长合适时,点击“发布视频”
  5. 将标题改得尽可能具有吸引力
  6. 添加一些与视频主题相关的标签
  7. 在缩略图文件夹中编辑生成的缩略图,然后选中它
  8. 如果需要,编辑视频描述
  9. 点击“发送至视频生成器”,当脚本上传到服务器完成后你会收到通知
  10. 完成!

一些Reddit文本转语音频道示例:

https://www.youtube.com/watch?v=izSxHx64pGQ https://www.youtube.com/watch?v=vzdTuAp2zTw

视频生成器客户端资源下载 http://www.mediafire.com/file/hpu1j1k1avwp9dj/YouTube_Bot_Assets.zip/file (500MB)

请将这些文件放置在YouTube Bot视频生成器目录下的“Assets”文件夹中。

免责声明

你需要对这段代码进行若干修改,才能使其适应你的环境。视频生成器客户端和服务器程序可在Linux上运行。为了赶在9月前完成项目,我匆忙完成了几个部分。另外,我原本并未打算将此项目公开发布。

此外,我在项目过程中多次改变了设计思路,因此部分文件命名较为奇怪,还有一些未使用的代码。我不会再更新这段代码了,但欢迎你自由使用。

依赖项

请查看dependencies.txt

要轻松安装大部分Python依赖项,请在克隆后运行以下命令(部分依赖项可能需要手动安装):

pip install -r requirements.txt

程序生成的视频为何仍能被观看?

最近流行的Reddit文本转语音视频通常遵循一个非常简单的模式:

  1. 展示一句文本。
  2. 文本转语音朗读该句文本。
  3. 文本转语音结束后,展示下一句文本。
  4. 重复上述步骤,直到评论及其回复全部完成。
  5. 当一条评论及其所有后续回复完成后,播放一段过渡间隔。
  6. 转到下一条评论。
  7. 重复步骤1至6,直到生成10分钟的视频。

随机选择一首歌曲。我下载了约40首Kevin MacLeod的免版税音乐,供随机选用。

https://www.youtube.com/watch?v=ccpyyrdS-Qo&list=PLbzGR7H3FyUS3LvitxTFAIgv601UKUHjX

所有用于生成视频的素材均可在此下载:

http://www.mediafire.com/file/hpu1j1k1avwp9dj/YouTube_Bot_Assets.zip/file

它们必须放置在视频生成器程序的“Assets”文件夹中。

工作原理

该项目由三个独立的程序组成:

  1. YouTube Bot服务器 -> initserver.py
  2. YouTube Bot视频生成器客户端 -> youtubequeue.py
  3. YouTube Bot客户端(人工审核) -> client.py

YouTube Bot服务器

该程序负责:(1) 与客户端程序建立连接的套接字服务器,以及(2) 与视频生成器客户端建立连接的套接字服务器。此外,该程序还会每小时从Reddit抓取新脚本,并更新尚未编辑过的现有脚本。

(1) 此套接字服务器会将数据库中的原始脚本发送给人工审核程序(见下文)。随后,它会接收经过审核的脚本,并将最终确定的脚本更新到数据库中,其中包括缩略图、描述和标题。该服务器支持多客户端,因此多人可以同时编辑这些脚本。

(2) 视频生成器服务器目前仅设计为处理一个视频生成器客户端。最初计划是让该服务器同时处理多个视频生成器客户端,分布在多台电脑上。不过,我发现一台电脑足以满足我的所有视频生成需求,于是决定将其硬编码为只处理一个客户端。该服务器的作用是将数据库中的最终脚本发送给视频生成器客户端。

YouTube Bot视频生成器客户端

该程序会从YouTube Bot视频生成器服务器接收最终确定的视频脚本,包括缩略图、描述、标签和标题。这些脚本会被生成为MP4文件,然后在预定时间上传到YouTube(目前随机定在格林威治标准时间下午5点、6点或7点——这是推荐的上传时间)。一旦收到脚本,程序会先生成视频,然后等待足够API额度,通过检查最近6个视频的上传时间来判断何时可以上传。

API配额使用将于格林威治标准时间上午8点重置。我计算出,每个视频的上传需要消耗1658个积分。每天最多可使用10,000个积分。理论上,这意味着你每天可以上传6个视频。不过实际上,我最多只能上传5个视频,有时第六个视频也能上传,但此时缩略图的配额可能不足,需要人工干预才能手动上传缩略图。视频上传使用的是YouTube-Upload工具,我只成功让它在Python 2.7环境下运行。该工具通过subprocess.check_call调用,指定Python版本并按需传递参数(链接见下文)。

视频成功上传后,其状态会被设置为“已完成”,并记录上传时间,以便程序能够统计当天已上传的视频数量,从而避免超出配额使用。

YouTube 数据 API 信息:https://developers.google.com/youtube/v3/getting-started
YouTube-Upload(Python 2.7):https://github.com/tokland/youtube-upload

文本转语音 迄今为止,该项目最具挑战性的环节之一就是让文本转语音功能正常运行。我原本想使用 Daniel MLG Soft Scan 文本转语音声音——这种声音常见于大多数 Reddit 上的文本转语音视频中。我认为这是项目的重要组成部分,因为这种声音非常具有辨识度,在我看来也是目前最好听的文本转语音之一。

我使用 Balabolka 的命令行版本生成 .wav 文件,然后将这些文件与视频生成程序中的不同帧同步。

Balabolka:http://www.cross-plus-a.com/balabolka.htm
获取 Daniel MLG 声音的说明:https://www.youtube.com/watch?v=yj3dhTnyotY

YouTube 机器人客户端

该客户端程序采用类似 Tinder 的左右滑动方式,用于筛选出不需纳入视频的评论。此外,用户还可以为视频撰写标题、上传缩略图,并编辑描述和标签。不过,标题、描述和标签的部分内容是自动生成的:

标题:默认为帖子标题
描述:默认为包含帖子标题及几个话题标签的模板
标签:我从一些热门文本转语音频道(如 r/askreddit、reddit、reddit funny 等)中获取了一些基础标签
所有这些内容均可编辑。缩略图的模板也会部分生成。此外,程序会进行检查,确保各字段的字符数不超过限制,例如标题长度不得超过 100 个字符。

最终的视频内容包括编辑后的脚本、缩略图、标签、描述以及视频设置(在编辑过程中,可以调整视频生成器模板的某些特性,比如背景颜色、文字大小、线条宽度等。不过我通常保留默认值,因此很少用到这些功能)。随后,这些内容会被发送至服务器,由服务器以 BLOB 格式存储到数据库中。

MySQL

脚本及其相关信息均存储在 MySQL 数据库中。这是我第一次在项目中使用 MySQL 数据库。我对 SQL 并不精通,只是学了必要的知识来让项目顺利运行。我使用了三个表:“users”、“videogenerators”和“scripts”。

“users”表
最初我计划开发一个功能丰富的登录系统,让用户拥有编辑统计数据、查看在线用户等信息。后来放弃了这个想法,现在该表仅用于跟踪哪些用户正在编辑哪些视频,以防止同一视频被重复编辑和上传。密码在客户端使用 MD5 进行加密。

“scripts”表
这是最重要的表,存储了所有脚本信息。其中的“status”字段非常重要,用于追踪脚本所处的状态:

  • -raw:脚本可供编辑
  • -editing:脚本正在被编辑,此状态下其他用户无法再编辑
  • -complete:脚本编辑完成,将被发送至视频生成器客户端
  • -successupload:脚本已成功上传至 YouTube

“videogenerators”表
与“users”表类似,我也为客户端设计了用户名和密码登录机制。密码同样在客户端使用 MD5 加密。

如果这些表尚未存在,它们将会在名为“youtubebot”的数据库中自动创建。

接收 Reddit 脚本

我使用 praw 获取 Reddit 脚本。默认情况下,我设置从 r/AskReddit 的热门版块获取 45 个脚本。每个脚本的最低评论数必须达到 1000 条。程序会从每篇帖子中选取评分最高的 30 条评论,以及每条评论后续评分最高的 5 条回复。这段代码位于 YouTube 机器人服务器的 reddit.py 文件中。

默认情况下,YouTube 机器人服务器启动时会请求脚本,之后每隔一小时再次请求一次。如果脚本已在数据库中,程序会更新数据库中的脚本条目,以反映最新的评论和点赞数值。

获取 Google API 账户的凭据后,只需登录一次,凭据便会自动下载并保存(浏览器窗口会弹出,要求您登录 Google 账户):videouploader.py -> get_credentials()

常见问题

相似工具推荐

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85k|★★☆☆☆|今天
图像数据工具视频

scikit-learn

scikit-learn 是一个基于 Python 构建的开源机器学习库,依托于 SciPy、NumPy 等科学计算生态,旨在让机器学习变得简单高效。它提供了一套统一且简洁的接口,涵盖了从数据预处理、特征工程到模型训练、评估及选择的全流程工具,内置了包括线性回归、支持向量机、随机森林、聚类等在内的丰富经典算法。 对于希望快速验证想法或构建原型的数据科学家、研究人员以及 Python 开发者而言,scikit-learn 是不可或缺的基础设施。它有效解决了机器学习入门门槛高、算法实现复杂以及不同模型间调用方式不统一的痛点,让用户无需重复造轮子,只需几行代码即可调用成熟的算法解决分类、回归、聚类等实际问题。 其核心技术亮点在于高度一致的 API 设计风格,所有估算器(Estimator)均遵循相同的调用逻辑,极大地降低了学习成本并提升了代码的可读性与可维护性。此外,它还提供了强大的模型选择与评估工具,如交叉验证和网格搜索,帮助用户系统地优化模型性能。作为一个由全球志愿者共同维护的成熟项目,scikit-learn 以其稳定性、详尽的文档和活跃的社区支持,成为连接理论学习与工业级应用的最

65.6k|★☆☆☆☆|今天
开发框架其他数据工具

keras

Keras 是一个专为人类设计的深度学习框架,旨在让构建和训练神经网络变得简单直观。它解决了开发者在不同深度学习后端之间切换困难、模型开发效率低以及难以兼顾调试便捷性与运行性能的痛点。 无论是刚入门的学生、专注算法的研究人员,还是需要快速落地产品的工程师,都能通过 Keras 轻松上手。它支持计算机视觉、自然语言处理、音频分析及时间序列预测等多种任务。 Keras 3 的核心亮点在于其独特的“多后端”架构。用户只需编写一套代码,即可灵活选择 TensorFlow、JAX、PyTorch 或 OpenVINO 作为底层运行引擎。这一特性不仅保留了 Keras 一贯的高层易用性,还允许开发者根据需求自由选择:利用 JAX 或 PyTorch 的即时执行模式进行高效调试,或切换至速度最快的后端以获得最高 350% 的性能提升。此外,Keras 具备强大的扩展能力,能无缝从本地笔记本电脑扩展至大规模 GPU 或 TPU 集群,是连接原型开发与生产部署的理想桥梁。

63.9k|★★☆☆☆|昨天
开发框架数据工具其他

crawl4ai

Crawl4AI 是一款专为大语言模型(LLM)设计的开源网络爬虫与数据提取工具。它的核心使命是将纷繁复杂的网页内容转化为干净、结构化的 Markdown 格式,直接服务于检索增强生成(RAG)、智能体构建及各类数据管道,让 AI 能更轻松地“读懂”互联网。 传统爬虫往往面临反爬机制拦截、动态内容加载困难以及输出格式杂乱等痛点,导致后续数据处理成本高昂。Crawl4AI 通过内置自动化的三级反机器人检测、代理升级策略以及对 Shadow DOM 的深度支持,有效突破了这些障碍。它能智能移除同意弹窗,处理深层链接,并具备长任务崩溃恢复能力,确保数据采集的稳定与高效。 这款工具特别适合开发者、AI 研究人员及数据工程师使用。无论是需要为本地模型构建知识库,还是搭建大规模自动化信息采集流程,Crawl4AI 都提供了极高的可控性与灵活性。作为 GitHub 上备受瞩目的开源项目,它完全免费开放,无需繁琐的注册或昂贵的 API 费用,让用户能够专注于数据价值本身而非采集难题。

63.2k|★★☆☆☆|3天前
数据工具Agent

meilisearch

Meilisearch 是一个开源的极速搜索服务,专为现代应用和网站打造,开箱即用。它能帮助开发者快速集成高质量的搜索功能,无需复杂的配置或额外的数据预处理。传统搜索方案往往需要大量调优才能实现准确结果,而 Meilisearch 内置了拼写容错、同义词识别、即时响应等实用特性,并支持 AI 驱动的混合搜索(结合关键词与语义理解),显著提升用户查找信息的体验。 Meilisearch 特别适合 Web 开发者、产品团队或初创公司使用,尤其适用于需要快速上线搜索功能的场景,如电商网站、内容平台或 SaaS 应用。它提供简洁的 RESTful API 和多种语言 SDK,部署简单,资源占用低,本地开发或生产环境均可轻松运行。对于希望在不依赖大型云服务的前提下,为用户提供流畅、智能搜索体验的团队来说,Meilisearch 是一个高效且友好的选择。

57k|★★☆☆☆|今天
图像Agent数据工具

MoneyPrinterTurbo

MoneyPrinterTurbo 是一款利用 AI 大模型技术,帮助用户一键生成高清短视频的开源工具。只需输入一个视频主题或关键词,它就能全自动完成从文案创作、素材匹配、字幕合成到背景音乐搭配的全过程,最终输出完整的竖屏或横屏短视频。 这款工具主要解决了传统视频制作流程繁琐、门槛高以及素材版权复杂等痛点。无论是需要快速产出内容的自媒体创作者,还是希望尝试视频生成的普通用户,无需具备专业的剪辑技能或昂贵的硬件配置(普通电脑即可运行),都能轻松上手。同时,其清晰的 MVC 架构和对多种主流大模型(如 DeepSeek、Moonshot、通义千问等)的广泛支持,也使其成为开发者进行二次开发或技术研究的理想底座。 MoneyPrinterTurbo 的独特亮点在于其高度的灵活性与本地化友好性。它不仅支持中英文双语及多种语音合成,允许用户精细调整字幕样式和画面比例,还特别优化了国内网络环境下的模型接入方案,让用户无需依赖 VPN 即可使用高性能国产大模型。此外,工具提供批量生成模式,可一次性产出多个版本供用户择优,极大地提升了内容创作的效率与质量。

55k|★★★☆☆|今天
开发框架语言模型Agent