ListenPaper 是一个面向学生听力练习的小工具。学生导入 DOCX 格式的英语试卷后,应用会自动提取英文原文,生成可编辑的听力稿章节,并通过本地桌面端合成为语音,方便反复听、跟读和整理错题材料。
项目采用 Tauri + Rust + Vite + TypeScript 构建,优先保持绿色便携:配置、项目数据和日志都放在应用目录内,不写入系统 AppData。
- 导入 DOCX 试卷并转换为 Markdown。
- 自动识别英文段落,过滤翻译、结构分析等中文说明。
- 按 Markdown 标题生成待合成章节,支持手动编辑、重命名、排序和删除。
- 支持新建空白 Markdown 文档,粘贴文本后自动分析。
- 辅助支持文字版 PDF 导入,使用 LiteParse + vendored PDFium;PDF 解析效果仍依赖原文件结构,暂不支持扫描版 PDF OCR。
- 使用 Edge TTS 合成单章或全部章节音频。
- 已合成章节可直接播放或停止。
- Markdown 源码和预览都会高亮已经进入右侧章节的段落,便于人工校对。
- 本地日志写入
logs/YYYY-MM-DD.log,并同步输出到控制台。
绿色版运行时默认结构如下:
应用目录/
ListenPaper.exe
pdfium.dll
settings.json
data/
260530_试卷名/
original/
试卷.docx
document.md
chapters.json
audio/
001_Chapter.mp3
logs/
2026-05-30.log
settings.json、data/、logs/ 和 release/ 都属于本地运行或构建产物,不进入 Git 管理。
需要安装:
- Node.js 与 pnpm
- Rust stable
- Windows 桌面环境
本项目使用 pnpm,不使用 npm。
pnpm install
pnpm run devTauri 开发运行:
pnpm tauri dev前端构建:
pnpm run build绿色版 release 可执行文件:
pnpm tauri build项目已将 PDFium 放在 lib/pdfium/,Cargo 配置会使用该目录下的 include/lib 文件,构建脚本会把 lib/pdfium/bin/pdfium.dll 复制到目标可执行文件同级目录。
本地打绿色包:
pnpm tauri build
pnpm run package:portable -Version v0.1.0 -Configuration release产物会生成在 release/ListenPaper-v0.1.0-windows-portable.zip。
推送 v* 格式的 Git tag 后,GitHub Actions 会在 Windows runner 上自动编译 release 版本,并发布绿色版 zip 到 GitHub Release。
git tag v0.1.0
git push origin v0.1.0发布产物只包含绿色版运行所需文件和许可证文件,不生成安装包。
常用检查命令:
cargo nextest run
cargo test
pnpm run type-check
pnpm run buildRust 代码格式以 cargo fmt 为准;其他语言代码格式以对应 fmt/lint 工具输出为准。
本项目以 MIT 协议开源,详见 LICENSE。
lib/pdfium/ 中 vendored PDFium 相关文件遵循其自身许可证,详见 lib/pdfium/LICENSE。