内容
<p align="center">
<img src="assets/icon.png" alt="PodCodex" width="160" />
</p>
<h1 align="center">PodCodex</h1>
<p align="center">
<strong>将播客转化为可搜索的知识库。</strong>
</p>
<p align="center">
<a href="https://github.com/gabriel-jung/PodCodex/releases/latest">
<img src="https://img.shields.io/github/v/release/gabriel-jung/PodCodex?style=flat-square&color=f59e0b" alt="发布版本" />
</a>
<a href="https://github.com/gabriel-jung/PodCodex/releases">
<img src="https://img.shields.io/github/downloads/gabriel-jung/PodCodex/total?style=flat-square&color=f59e0b" alt="下载次数" />
</a>
<a href="https://github.com/gabriel-jung/PodCodex/stargazers">
<img src="https://img.shields.io/github/stars/gabriel-jung/PodCodex?style=flat-square&color=f59e0b" alt="星标" />
</a>
<a href="LICENSE">
<img src="https://img.shields.io/github/license/gabriel-jung/PodCodex?style=flat-square&color=f59e0b" alt="许可证" />
</a>
</p>
<p align="center">
<a href="#截图">截图</a> •
<a href="#功能介绍">功能</a> •
<a href="#获取PodCodex">下载</a> •
<a href="#集成与支持">Discord & MCP</a> •
<a href="ROADMAP.md">路线图</a> •
<a href="CONTRIBUTING.md">贡献</a>
</p>
使用PodCodex,您可以从任何音频源(播客、YouTube频道或您自己的录音)生成高质量的转录文本,并将它们转化为本地可搜索的档案。
将其与Discord机器人或支持MCP的聊天(Claude Desktop、Cursor等)连接,整个档案就变成了对话式知识库。
您还可以将结果翻译成其他语言,或通过语音克隆合成配音。
---
## 截图
<p align="center">
<img src="screenshots/home.png" alt="库视图" width="800" />
</p>
*库视图:您关注的每个播客和YouTube频道。每个图块上可见的管道进度。*
<p align="center">
<img src="screenshots/show-index.png" alt="节目索引" width="800" />
</p>
*一个列表显示一个节目的所有集。选择任意子集并对该批次运行管道步骤。*
<p align="center">
<img src="screenshots/show.png" alt="集页面" width="800" />
</p>
*每集的管道状态。活动日志记录每次运行及其模型和设置。*
<p align="center">
<img src="screenshots/editor.png" alt="纠正编辑器" width="800" />
</p>
*使用AI编辑器纠正:原始和LLM纠正的转录文本的并排差异,内联编辑,撤销,导出。*
<p align="center">
<img src="screenshots/search.png" alt="语义搜索" width="800" />
</p>
*跨整个库的语义搜索,带有时间戳和集上下文。*
列出的播客:
- [DataGen](https://www.datageneration.co/)
- [Houston We Have a Podcast](https://www.nasa.gov/podcasts/houston-we-have-a-podcast/)
- [Le rendez-vous Tech](https://frenchspin.fr/category/le-rdv-tech/)
- [LINUX Unplugged](https://linuxunplugged.com/)
- [MIT 6.S191: Introduction to Deep Learning](http://introtodeeplearning.com/)
- [This Week in Tech](https://twit.tv/shows/this-week-in-tech)
---
## 功能介绍
指向音频。六个步骤,全部在您的机器上:
1. **导入**
- 像普通的播客应用一样:订阅通过Apple Podcasts搜索或任何RSS网址提供的任何节目。
- 关注YouTube频道,下载音频和字幕。
- 或者直接指向您已有的录音文件夹。
2. **转录**
- 使用[WhisperX](https://github.com/m-bain/whisperX)将音频转录为文本,可选使用[pyannote-audio](https://github.com/pyannote/pyannote-audio)进行说话者标注。
- 根据您的硬件(CPU或GPU)和速度与质量需求选择不同的模型大小。
- 已经有字幕?导入它们(.srt,.vtt),或直接拉取YouTube自动字幕,并完全跳过转录。
3. **纠正**
- 在转录编辑器中手动纠正错误(文本,说话者,时间戳),并同步音频播放。
- 或运行LLM清理:复制粘贴到大多数LLM网络聊天(ChatGPT,Claude等),指向本地Ollama模型,或使用大多数LLM API密钥。
4. **索引和搜索**
- 按含义或确切短语搜索整个库。
- 使用[Chonkie](https://github.com/chonkie-inc/chonkie)将每个转录文本分成较小的片段,并使用[BGE-M3](https://huggingface.co/BAAI/bge-m3),[E5(small / large)](https://huggingface.co/collections/intfloat/multilingual-e5-text-embeddings)或[Perplexity(0.6B / 4B)](https://huggingface.co/collections/perplexity-ai/pplx-embed)嵌入模型进行语义检索。
- 本地[LanceDB](https://github.com/lancedb/lancedb)索引存储在您的磁盘上:存储向量并支持快速搜索。
5. **翻译** (可选)
- 将转录文本翻译成任何目标语言。
- 使用与纠正相同的后端(网络聊天,本地Ollama或API密钥)。
6. **合成** (可选)
- 使用[Qwen3-TTS](https://huggingface.co/collections/Qwen/qwen3-tts)语音克隆在目标语言中生成配音。
- 保留原始说话者的声音。
每个步骤都保存到SQLite数据库中,带有其模型和设置。您可以随时回滚,或在不丢失早期运行结果的情况下尝试不同的设置。
---
## 获取PodCodex
### 预构建版本
直接下载(最新版本):
- **macOS(Apple Silicon)**: [PodCodex-macos-arm64.dmg](https://github.com/gabriel-jung/PodCodex/releases/latest/download/PodCodex-macos-arm64.dmg)
- **Windows x64**: [PodCodex-windows-x64.msi](https://github.com/gabriel-jung/PodCodex/releases/latest/download/PodCodex-windows-x64.msi)
所有资产和校验和都在[发布页面](https://github.com/gabriel-jung/PodCodex/releases)上。
PodCodex使用系统[FFmpeg](https://ffmpeg.org/download.html)安装进行转录,剪辑提取和合成。在首次启动前安装它(应用程序的首次运行检查会显示一个对话框,如果它丢失了)。
**macOS隔离启动。** DMG文件未签名,因此Gatekeeper会说*“PodCodex.app已损坏,无法打开”*。该应用程序是安全的。将其拖到`/Applications`,然后:
```bash
xattr -dr com.apple.quarantine /Applications/PodCodex.app
```
后续启动不需要它。
### 本地LLM (可选)
“本地”纠正/翻译需要[Ollama](https://ollama.com)应用程序已安装并运行;您在那里拉取的模型将自动出现在PodCodex中。`qwen3.5:9b`在具有可接受质量的笔记本电脑上运行良好;较大的模型产生更好的结果。
### 硬件支持
| 硬件 | GPU支持 |
|----------------------------|--------------------------------------------------------------------------------------|
| NVIDIA RTX 20xx 或更新 | 捆绑安装程序(应用内CUDA激活,约2.4 GB),或源代码使用`--extra gpu` |
| NVIDIA Pascal(GTX 10xx,P40) | 源代码使用`--extra gpu-pascal`,参见[PASCAL.md](deploy/PASCAL.md) |
| Apple Silicon | 仅CPU,无GPU/MPS路径 |
| 其他/无GPU | 仅CPU |
捆绑安装程序仅支持CPU。NVIDIA用户在应用内CUDA后端从**设置→GPU加速**激活;它在首次激活时下载CUDA启用的torch构建(约2.4 GB)。在同一面板中强制使用CPU。
---
## 集成与支持
### Discord机器人
与小社区分享您的档案。将机器人放入任何Discord服务器中,听众可以运行斜杠命令进行语义搜索(`/search`),精确短语搜索(`/exact`),随机样本(`/random`),集浏览(`/episodes`),说话者统计(`/speakers`)和库统计(`/stats`)。如果您在单个机器人上运行多个节目,则每个服务器的密码。
```bash
uv sync --extra bot --extra rag
DISCORD_TOKEN=... uv run podcodex-bot
```
完整的部署指南(uv + Docker,systemd,密码轮换,VPS rsync)在[`deploy/BOT.md`](deploy/BOT.md)中。
### MCP
PodCodex附带一个模型上下文协议服务器,因此任何MCP兼容的客户端(Claude Desktop,Claude Code,Cursor,Continue,Zed等)都可以在对话中搜索您的档案。它公开了搜索,精确短语,节目列表和上下文获取工具,以及可编辑的斜杠提示,如`/brief`,`/speaker`,`/timeline`。
**Claude Desktop:** 在**设置→Claude Desktop→启用集成**处的一键式设置为您编写stdio配置。
**其他客户端:** 将它们指向`http://127.0.0.1:18811/mcp`(HTTP传输,只要应用程序运行),或手动在stdio上运行服务器。参见[`deploy/MCP.md`](deploy/MCP.md)。
---
## 注意事项和限制
- YouTube自动生成的字幕需要安装[deno](https://deno.com/)(yt-dlp将JS挑战传递给它)。手动字幕无需安装即可正常工作。
- Ollama纠正/翻译需要具有可靠的结构化输出支持的模型;小型模型往往会破坏JSON格式。
- Qwen3-TTS需要CUDA才能实现合理的合成速度。
---
## 贡献者
首先阅读[CONTRIBUTING.md](CONTRIBUTING.md)。系统连接线在[ARCHITECTURE.md](ARCHITECTURE.md)中。AI助手上下文在[CLAUDE.md](CLAUDE.md)中。前端设计规则在[DESIGN.md](DESIGN.md)中。ML堆栈大头针,缓存布局和运行时补丁在[ML_RUNTIME.md](ML_RUNTIME.md)中。
### 从源代码构建
您需要:
- **[uv](https://docs.astral.sh/uv/)**:处理Python 3.12安装+依赖项。
- **[Node.js](https://nodejs.org/) LTS**:前端(或通过nvm,Homebrew,winget等)。
- **[Rust](https://www.rust-lang.org/)** (可选):用于本地Tauri窗口。
与[获取PodCodex](#获取PodCodex)相同的运行时先决条件。
**安装:**
```bash
git clone https://github.com/gabriel-jung/PodCodex && cd PodCodex
make setup # uv sync + npm install
```
**运行应用程序:**
仅浏览器(无Rust,更快尝试):
```bash
make dev-no-tauri
```
本地Tauri窗口(需要Rust):
```bash
make dev
```
更多关于构建和签名的信息,请参见[`deploy/BUILD.md`](deploy/BUILD.md)。
### 技术栈
| 层 | 技术 |
|----------------|-----------------------------------------------------------------------------------------------------------|
| 桌面外壳 | [Tauri v2](https://tauri.app) (Rust) |
| 前端 | [React 19](https://react.dev),[Vite](https://vitejs.dev),[TypeScript](https://www.typescriptlang.org),[Tailwind](https://tailwindcss.com),[shadcn/ui](https://ui.shadcn.com) |
| 后端 | [FastAPI](https://fastapi.tiangolo.com) (REST + WebSocket,后台任务) |
| 导入 | [yt-dlp](https://github.com/yt-dlp/yt-dlp),[feedparser](https://github.com/kurtmckee/feedparser),系统[FFmpeg](https://ffmpeg.org/) |
| 转录 | [WhisperX](https://github.com/m-bain/whisperX),[pyannote-audio](https://github.com/pyannote/pyannote-audio) |
| LLM | [Ollama](https://ollama.com)(本地),[OpenAI](https://openai.com),[Anthropic](https://anthropic.com),[Mistral](https://mistral.ai),[DeepSeek](https://deepseek.com),以及其他;或任何OpenAI兼容的API |
| 语音克隆 | [Qwen3-TTS](https://huggingface.co/collections/Qwen/qwen3-tts) |
| 搜索 | [LanceDB](https://github.com/lancedb/lancedb),[BGE-M3](https://huggingface.co/BAAI/bge-m3) / [E5](https://huggingface.co/collections/intfloat/multilingual-e5-text-embeddings) / [Perplexity](https://huggingface.co/collections/perplexity-ai/pplx-embed)嵌入器,[Chonkie](https://github.com/chonkie-inc/chonkie)分块器 |
| 状态 | [SQLite](https://sqlite.org) |
---
## 路线图
在[ROADMAP.md](ROADMAP.md)中查看接下来和长期计划的内容。已发布的特性在[CHANGELOG.md](CHANGELOG.md)中。
---
## 许可证
MIT。参见[LICENSE](LICENSE)。