lornezhang205 downloadsObsidian local TTS plugin for reading selected text and Markdown notes aloud with an offline text-to-speech CLI.
我有 ADHD。长时间盯着文字很容易失去注意力,但听觉能帮我重新进入内容。所以我做了 Open Reader:一个免费、中文友好的 Obsidian 本地朗读插件。
选中一段文字,或者打开整篇笔记,就能用本地中文语音朗读。无需购买云端 TTS,不用 API Key,也不按字数付费。
I have ADHD. Reading for a long time makes it easy to lose focus, but listening helps me reconnect with the content. That is why I built Open Reader: a free, Chinese-friendly, local text-to-speech plugin for Obsidian.
Select some text or open an entire note and let Open Reader read it aloud. There is no cloud TTS subscription, API key, or per-character charge.
为什么值得试试 · Why try it:
试听声音 · Voice comparison · 免费下载 · Free download · 反馈问题 · Report an issue
目前仅支持桌面端 · Desktop only · 免费开源 · Free and open source · 首次模型下载约 130 MB · Initial model download: about 130 MB
The preferred protocol is Local TTS HTTP protocol 1. The CLI remains the installer, daemon launcher, and compatibility fallback:
ttsctl say <text> --output <wav-path> --speed <number>
Open Reader detects Local TTS in a fixed per-user application directory on each computer. Absolute paths are not stored in the synced vault, so the same vault can be shared between macOS and Windows. If Local TTS is missing, the settings page offers a confirmed one-click installation; the model download is about 130 MB.
main.js、manifest.json 和 styles.css。Download these three files from the latest release.<vault>/.obsidian/plugins/open-reader
Read selected text or active note aloudPause readingResume readingStop readingTest local TTS CLIOpen TTS output folderWhen reading starts, Open Reader shows a floating controller in the lower-right corner of Obsidian.
The controller shows the current synthesis/playback state and chunk progress, and provides:
PauseContinueStopFolderIf Obsidian or Electron blocks automatic playback after local synthesis, click Continue in the controller.
本地语音引擎 · Local speech engine:检测并一键安装 Local TTS。Detect and install Local TTS.输出文件夹 · Output folder:生成 WAV 的 vault 相对目录,默认 .open-reader/audio。Vault-relative audio folder.语速 · Speech speed:传给本地引擎的语速,范围 0.5–2。分段字符数 · Max chunk characters:每次合成前的文本分段大小。移除 YAML 前置元数据 · Strip YAML frontmatter:跳过 YAML frontmatter。跳过非文本代码块 · Skip non-text code blocks:朗读 text / txt / plain,跳过其他代码块。保留音频文件 · Keep generated audio:播放后保留 WAV 文件。完成后打开文件夹 · Open folder when finished:朗读结束后打开输出目录。npm install
npm run build
The production build writes main.js in the repository root.
文字只发送到本机 Local TTS。插件不会调用云端 TTS API、保存 API Key,也不需要联网合成语音。
Text is sent only to Local TTS on your computer. The plugin does not call cloud TTS APIs, store API keys, or require network access for synthesis.
Open Reader 使用 Node.js fs 在当前 vault 的配置输出目录中读写和删除生成的 WAV 文件。它使用 child_process 调用固定位置的 ttsctl.sh / ttsctl.ps1,用于安装 Local TTS、按需启动独立的本机 daemon,并在 HTTP 不可用时执行兼容回退。
Open Reader uses Node.js fs to manage generated WAV files in the configured output folder inside the current vault. It uses child_process to invoke the fixed-location ttsctl.sh / ttsctl.ps1 for Local TTS installation, on-demand startup of the independent local daemon, and CLI fallback when HTTP is unavailable.