我经常将长文稿转为音频来听,但市面上此刻并没有合适的应用,是专门为了在播放音频时自动滚动文稿而设计的。所以我用 Fable 5.1,耗时一整天,搓了这个小网站:https://marksonchen.github.io/audio-reader/ (可以试试网站里提供的demo)
- 把三个文件一起拖进首页:
- 音频(必需):MP3、M4A、WAV、Opus、OGG、FLAC 等浏览器能播放的任何格式
- 字幕(必需;没有字幕文件时,可以用下面的工具用音频和原稿生成一份):SRT、VTT、SBV、LRC 格式
- 原稿(可选):TXT 或 Markdown。提供后正文按原稿显示,时间从字幕借用
- 点「开始阅读」。在播放时,文字会逐句高亮、自动滚动。
所有文件只会保存在你的本地浏览器里,不会上传到任何服务器。
普通字幕只知道每一句从哪秒到哪秒,所以阅读时只能整句整块地变色。 如果你的字幕文件能够精确到每一个词,文字就会跟着声音一个字一个字地渐变。 仓库里带了一个命令行工具:提供音频文件 + 普通字幕或原稿,获得逐词的字幕文件。如果你手头只有音频和原稿、没有任何字幕文件,也能用它得到时间轴。
怎么用?clone 这个项目,然后告诉你的本地 agent:
使用这个项目的 scripts/align.py,用我的这些文件(此处填入音频文件路径与稿件/字幕文件路径)为我生成逐词的字幕文件
或者你更愿意手动来:
# 1. 安装 uv(https://docs.astral.sh/uv/getting-started/installation/ )和 ffmpeg(macOS:brew install ffmpeg)
# 2. 取得仓库
git clone https://github.com/MarksonChen/audio-reader.git
cd audio-reader
# 3. 生成逐词字幕;首次运行会自动准备环境并下载约 460 MB 的模型
uv run scripts/align.py 音频.mp3 原稿.txt # 没有字幕:用原稿
uv run scripts/align.py 音频.mp3 字幕.srt # 已有普通字幕:用字幕它会在音频旁边写出 音频.words.srt。把这个文件当作「字幕」放进网页,原稿照旧放「原稿」,就能逐字显示渐变了。
30 分钟的音频在 M4 芯片上处理 1 分钟就够了;原稿和音频有出入的地方(比如念的时候漏了几个字)会被自动跳过。
点击右上角的滑杆图标(或 ⌘ ,)打开。设置分六组:
- 外观:主题(跟随系统 / 浅色 / 纸张 / 深色)、强调色
- 排版:字体(只列出本机可用的)、字号、行距、页宽、两端对齐、段首缩进
- 高亮:当前句样式(底色 / 下划线 / 仅变色)、已读句子变灰、淡化其他段落、高亮偏移
- 跟随:打开时自动跟随、当前句停靠位置、跟随单位(逐句 / 逐段)、平滑滚动
- 播放:快进快退步长、每句结束时(继续 / 暂停 / 重复)、点击句子后播放、倍速
- 显示:段落时间戳、播放器波形
播放器右下角还有音量滑杆(默认 50%,滚轮可微调,M 键静音),音量会被记住。
倍速也可以直接点播放器右下角的倍速按钮:± 0.05(按住连续)、拖滑杆、或直接输入数字。 所有设置会自动保存,「恢复默认」一键还原。
| Mac | Windows / Linux | 作用 |
|---|---|---|
| 空格 / K | 空格 / K | 播放 / 暂停 |
| ← / → | ← / → | 后退 / 前进(步长可设,⇧ / Shift 为微调) |
| ⌥ ← / → | Alt + ← / → | 上一句 / 下一句 |
| ⌥ ↑ / ↓ | Alt + ↑ / ↓ | 上一段 / 下一段 |
| [ / ] | [ / ] | 减速 / 加速 0.05(⇧ / Shift 为 0.25) |
| - / = | - / = | 缩小 / 放大字号 |
| F | F | 开关自动跟随 |
| M | M | 静音 / 取消静音 |
| Enter | Enter | 回到当前句 |
| Z | Z | 专注阅读,隐藏上下栏(Esc 退出) |
| ⌘F 或 / | Ctrl + F 或 / | 搜索正文,回车跳转 |
| ⌘ , | Ctrl + , | 阅读设置 |
| ? | ? | 快捷键帮助 |
触屏:正文上左右滑动前后跳,双击播放 / 暂停,从播放器向上滑呼出设置。
- 文字为什么是整块变色,而不是一个字一个字点亮? 因为普通字幕只精确到句。用上面的工具生成逐词字幕即可。整体偏早或偏晚可在设置里微调「高亮偏移」。
- 原稿和字幕内容差别很大? 匹配不到的句子会以点状下划线标出;匹配度过低时会改用字幕文字显示。
- 某个字体在列表里找不到? 列表是固定的三十多种候选,只显示其中本机已安装且已启用的;在「字体册」里启用后刷新页面即可。
- 换了浏览器或清了数据? 文件只存在当时的浏览器里,需要重新放入。
技术细节:见 DEVELOPER.md。


