Skip to content

riverbii/GenPod

Repository files navigation

GenPod - 工业级播客音频自动化生成工具

GenPod 是一个基于 ChatTTS 的播客自动化生成方案。它能够将 Markdown 脚本一键转化为包含欢迎语、主体音频和背景音乐的完整播客项目,并自动生成符合标准的 RSS Feed。

✨ 核心特性

  • 🚀 统一 CLI:一个 genpod 命令集成初始化、构建、海选、RSS 生成全流程。
  • 📦 脚手架支持genpod init 一键生成标准化播客项目目录。
  • 🎙️ 播音海选genpod audition 随机生成语音样本,助您快速挑选最合适的 Seed。
  • 增量构建:基于文本哈希的音频缓存系统,修改脚本后仅重新生成变化的段落。
  • 📝 智能分段:自动处理长文本,确保每一段音频都在 ChatTTS 的最佳表现长度内。
  • 📡 自动 RSS:根据已完成的节目自动生成带时长、大小和 Meta 信息的播客订阅源。
  • ⚙️ 层级配置:支持 全局 (~/.genpod.toml) -> 项目 -> 节目的三级配置覆盖。
  • 🛡️ 生产安全:支持 Atomic Write(原子写入)防止文件损坏,以及 Merge Validation(合并校验)防止段落缺失。
  • 💻 开发友好:内置 ruff 代码检查与 pytest 自动化测试,提供 Pre-commit Hook 保障代码质量。

🛠️ 安装

# 克隆仓库
git clone https://github.com/your-repo/GenPod.git
cd GenPod

# 使用 uv 安装环境(推荐)
uv sync

# 安装成功后即可使用 genpod 命令
genpod --help

注意:首次运行需要下载约 1GB 的 ChatTTS 模型文件。

📖 快速上手

1. 初始化新播客

genpod init my_podcast
cd my_podcast

2. 挑选声音种子 (Audition)

# 生成 5 个随机试音样本到 workspace/audition
genpod audition -n 5

听完样本后,将喜欢的种子填入项目根目录的 genpod.toml 中的 voice_seed

3. 编写脚本

workspace/input/20260130/(以日期命名)下创建 script.md

4. 一键构建

# 为 20260130 这期构建播客
# 使用 -w 指定当前项目为工作空间
# 使用 -n 显式指定节目名称(输出目录名),防止输入路径导致的命名混乱
genpod build 20260130 -w . -v
# 或者:genpod build input_folder -n 20260130

生成的成品将保存在 workspace/output/20260130/

5. 生成 RSS

genpod rss .

生成的 RSS 文件位于 website/rss/feed.xml

📂 标准目录结构

my_podcast/
├── genpod.toml             # 项目级配置文件
├── assets/                 # 音频素材
│   ├── bgm/                # 背景音乐
│   ├── welcome/            # 片头
│   └── outro/              # 片尾
├── episodes/               # 已归档节目 (.md + .wav)
├── website/                # 网站资源与 RSS
├── workspace/              # 生产车间 (已加入 .gitignore)
│   ├── input/              # 待处理脚本
│   └── output/             # 构建中间件与成品
└── scripts/                # 维护脚本

⚙️ 配置系统 (genpod.toml)

GenPod 采用层级配置系统,支持三级覆盖:~/.genpod.toml (全局) > 项目根目录 > 节目目录。

核心参数详解

参数 说明 示例
voice_seed 音色种子。决定播音员的声音。 2222
podcast_link 播客主页。重要!用于拼接音频和图片的完整下载链接。 https://name.github.io/pod
podcast_audio_url_prefix 音频托管前缀。若音频不在 /audio 下,请修改此项。 https://cdn.com/mp3
welcome_audio 片头音频路径。 assets/welcome/intro.wav
outro_bgm 片尾音频路径。 assets/bgm/music.mp3

🚀 GitHub Pages 一键发布指南

GenPod 的目录结构原生支持 GitHub Pages。

1. 结构准备

确保你的目录如下:

  • website/rss/feed.xml (RSS 源)
  • website/audio/ (音频文件,可通过软链接或直接存放)
  • website/images/ (封面图)

2. 配置 genpod.toml

podcast_link = "https://<你的用户名>.github.io/<仓库名>"
# 这样 RSS 里的音频链接会自动变为 https://<用户名>.github.io/<仓库名>/audio/xxx.wav

3. 在 GitHub 开启

进入仓库 Settings -> Pages -> Build and deployment -> Branch 选择 main 分支,路径选择 /docs (或根目录,取决于你将 website 映射到哪)。


💻 开发者指南 (Developer Guide)

环境设置

GenPod 使用 uv 进行包管理。

# 安装依赖(包括开发依赖 ruff, pytest)
uv sync

运行测试

项目内置了自动化测试脚本,会自动运行 Ruff 代码检查和 Pytest 单元测试。

./run_tests.sh

Pre-commit Hook

建议启用 Git Pre-commit 钩子,确保每次提交前代码质量:

cp .git/hooks/pre-commit .git/hooks/pre-commit
chmod +x .git/hooks/pre-commit

📄 许可证

MIT License

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors