用途:把任意 PDF 转成一段连续的繁体中文旁白 MP3,逐页处理。适用于把投影片、病例报告或讲义做成语音导览、有声书或 podcast。
依赖工具:pdftoppm(栅格化 PDF 页面,brew install poppler)、edge-tts(微软 Edge 神经 TTS,免费无需密钥,pip install edge-tts 或 uv tool install edge-tts)、ffmpeg(合并每页 mp3,brew install ffmpeg)。
工作流程:在存放源 PDF(INPUT.pdf)的项目目录中操作。
- 栅格化每页:mkdir -p pages audio scripts,然后 pdftoppm -png -r 150 INPUT.pdf pages/page,生成 pages/page-01.png 等零填充文件名;150 dpi 兼顾清晰度与体积,密集小字可提到 200。
- 逐页阅读并写繁中逐字稿:对每个 PNG 用 Read 工具查看图像,把自然口语化中文旁白写入 scripts/page-NN.txt(每页一个纯文本文件)。写作规则:像讲者一样叙述而非逐条念;药物名、缩写、基因/蛋白名等技术词保留英文(如 rituximab、MALT、AIHA);数字日期按中文读法(2026/05/25 → 「2026 年 5 月 25 日」);不要元叙述(不写「这一页显示」);纯文本,无 markdown 与项目符号。长文档可派并行子代理各负责一段页码,但需保持一致的语音/风格指令。
- 用 edge-tts 逐页合成:循环对 scripts/page-*.txt 执行 edge-tts --voice zh-TW-HsiaoChenNeural --file "$f" --write-media "audio/$n.mp3"。可选语音:zh-TW-HsiaoChenNeural(台湾女声,默认)、zh-TW-YunJheNeural(台湾男声)、zh-CN-XiaoxiaoNeural(大陆女声);用 --rate=+10% 或 --rate=-10% 调速;edge-tts --list-voices | grep zh- 列出全部中文语音。
- 合并为单个 mp3:生成 audio/list.txt 后执行 ffmpeg -y -f concat -safe 0 -i audio/list.txt -c:a libmp3lame -b:a 128k OUTPUT.mp3;重编码可让衔接干净,-c copy 更快但参数不一致时边界可能爆音。
- 验证:用 ffprobe 查看时长,确认 mp3 文件数与页数一致、时长合理后再交付。
限制与说明:中间产物(pages/、scripts/、audio/)会保留,修改逐字稿后只需重跑第 3 步,或仅重跑第 4 步重新拼接。辅助脚本 scripts/build.sh 在逐字稿已存在时可一次执行第 1、3、4 步;第 2 步仍需模型读取图像。资料未提供其他收费、平台或效果信息。