# funpaper **Repository Path**: farfarfun/funpaper ## Basic Information - **Project Name**: funpaper - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-10-08 - **Last Updated**: 2026-10-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # funpaper 论文转播客工具:输入一篇论文 PDF,用 LLM(默认 DeepSeek)先生成「主持人 / 学习者 / 专家」三人访谈式播客脚本,再用 OpenAI TTS 把脚本合成语音并拼接成一个完整的 mp3 播客文件。 ## 安装 ```bash pip install funpaper ``` 音频合并依赖 [pydub](https://github.com/jiaaro/pydub),而 pydub 本身需要系统已安装 `ffmpeg`(否则 `generate_podcast` 合并 mp3 片段时会失败): ```bash # Debian/Ubuntu sudo apt-get install ffmpeg # macOS(Homebrew) brew install ffmpeg # Windows(Scoop) scoop install ffmpeg ``` 还需要配置 `DEEPSEEK_API_KEY`(脚本生成,经 [funai](https://github.com/farfarfun/funai) 调用)和 `OPENAI_API_KEY`(`tts-1` 语音合成)等环境变量。 ## 命令行用法 ```bash funpaper podcast --pdf_path /path/to/paper.pdf ``` 对应 `funpaper.podcast.command:funpaper`(`pyproject.toml` 中的 `[project.scripts]`),内部依次执行: 1. `funpaper.podcast.script.generate_script`:用 `pypdf` 抽取 PDF 正文,按 `plan_prompt` 生成播客大纲,再按大纲逐段生成对话,最后用 `enhance_prompt` 润色成最终脚本(LangChain + `Chroma` 向量检索辅助生成每一段的上下文)。 2. `funpaper.podcast.audio_gen.generate_podcast`:解析脚本中 `Host:` / `Learner:` / `Expert:` 三种角色的台词,分别用 OpenAI TTS(`tts-1` 模型,`alloy` / `fable` / `nova` 三种音色)合成语音片段,保存到 `podcast__<随机后缀>/` 目录,再用 `pydub` 按时间顺序合并成同名的 `podcast__<随机后缀>.mp3`。脚本生成阶段还会在当前目录创建 `text_paper_.txt` 作为抽取后的论文文本。 ## 作为库使用 ```python from funpaper.podcast.command import paper_to_podcast paper_to_podcast("/path/to/paper.pdf") ``` --- ## 关于 farfarfun [farfarfun](https://github.com/farfarfun) 是一个专注于实用工具库的开源组织, 涵盖云存储、数据处理、AI、多媒体与开发工具链等方向。 - 🏠 组织主页: - 📦 PyPI: - 📧 联系:farfarfun@qq.com 本项目基于 [MIT](LICENSE) 协议开源。