NotebookLM 风格的播客生产线:输入 PDF 或 URL,输出双人对话、摘要、节目简介与 MP3。
Highlights
- 一键生成:播客脚本 + 摘要 + 节目简介,流式返回,前端实时渲染。
- 多路 TTS:FishAudio、Azure Speech、Qwen3 TTS,主持人/嘉宾音色可切换。
- 本地转写:内置 Whisper,本地推理;支持 Web 上传或 CLI 批量转写并导出时间戳。
- 输入灵活:PDF 上传或用 Jina 抓取 URL。
- 低延迟流式:对话生成、摘要、信息流均流式输出。
Architecture
- LLM:默认 Llama 3.1 405B(Fireworks),可切换百炼/Qwen。
- TTS:Azure OpenAI、FishAudio、Qwen3 TTS,多音色多语种。
- 转写:本地 Whisper,
WHISPER_MODEL_NAME控制模型体量(small/base/medium/large-v3)。 - 前端:Vite + React + Tailwind,流式渲染,Netlify 一键部署。
- 后端:FastAPI + Uvicorn,提供生成、摘要、转写、音频任务状态查询等接口。
Run It Locally
Backend
cd backend
cp .env.example .env # 填写密钥
python -m venv .venv && source .venv/bin/activate
pip install -r requirements-local.txt
uvicorn main:app --reload --host 0.0.0.0 --port 8000
常用环境变量:
BAILIAN_API_KEY/QWEN_API_KEY:Qwen LLM & Qwen3 TTS(Fireworks 失效兜底)。FIREWORKS_API_KEY(可选):启用 Llama 3.1 405B(FIREWORKS_MODEL_ID可覆盖)。SPEECH_KEY/SPEECH_REGION:Azure TTS。FISHAUDIO_KEY:FishAudio TTS。JINA_KEY:URL 抓取。WHISPER_MODEL_NAME:Whisper 模型名,默认small。
Frontend
cd frontend
cp .env.template .env
# 推荐填写
# VITE_HOST_URL=http://localhost:8000
# VITE_BASE_URL=http://localhost:8000/api/v1/chat
pnpm install
pnpm dev --host
API Endpoints
POST /api/v1/chat/generate_transcript:生成播客对话(PDF/URL + 提问,流式 JSON)。POST /api/v1/chat/summarize:生成摘要(流式)。POST /api/v1/chat/pod_info:生成节目简介与要点。POST /api/v1/chat/transcribe_audio:上传音频并用本地 Whisper 转写。POST /api/v1/chat/generate_audio:根据文本生成音频,返回task_id。GET /api/v1/chat/audio_status/{task_id}:查询音频合成结果。GET /api/v1/chat/speekers:获取可选音色列表。
CLI Transcription
PYTHONPATH=backend WHISPER_MODEL_NAME=base python scripts/local_transcribe.py path/to/audio.m4a --output-file tmp/result.txt
Use Cases
- 内容二次创作:长文档/报告快速转成播客,便于通勤收听。
- 课程/会议回放:上传录音,转写并生成摘要/对话串讲。
- 多语音色播客:主持人/嘉宾音色随时切换,快速迭代节目风格。
Roadmap
- 增强多说话人角色配置与情绪控制。
- 加入节目封面自动生成。
- 提供一键部署脚本(Docker Compose)。