Laszlo Repassy106 downloadsRead notes aloud sentence by sentence with a natural Piper voice that runs on your computer (through calibre), highlighting the sentence being read.
Listen to your Obsidian notes, sentence by sentence.
A natural Piper voice that runs on your own computer, with a soft
highlight on the sentence being read. For Windows, macOS and Linux.
Read Aloud reads the current note aloud with a Piper voice, sentence by sentence, and highlights the sentence being read, in the editor and in reading view. Nothing leaves the computer while reading. The speaking is done by the Piper built into calibre (8.8 or newer), which installs the same way on every system; voices in 58 languages are downloaded from the plugin's settings.
Setting it up, step by step for each system, and using it: see HELP.md. The same guide opens inside Obsidian with the Help command and from the settings page.
Read Aloud needs a few things outside the vault, as Obsidian asks plugins to disclose:
calibre-debug in the background to run the
speech engine, and stops it after 10 idle minutes.~/.var/app; otherwise it lives in the plugin's
folder.src/calibre.ts), including calibre from Flathub.src/piper_server.py) runs inside calibre's
Python and keeps the voice loaded, so only the first start takes a few
seconds. Reading starts about half a second after a sentence is sent,
and the next sentence is prepared while the current one is read, so
there is no gap between them. After
10 minutes with nothing to read, the server stops and frees its memory.In reading view, reading starts at the top of the screen.
Settings: calibre's status, voice (with a sample), voice downloads by language, speed, maximum piece length, pause between paragraphs, whether to scroll along, and, optionally, where calibre and the voices are.
The plugin, its tests and the install script are written in TypeScript,
bundled by esbuild into main.js. Node 22.18 or newer runs the tests and
the install script as they are, without compiling them. build.js stays
JavaScript, so that Obsidian's review, which rebuilds main.js to compare
it with the release, can run it with any Node version.
npm install
npm test # type check, Obsidian's lint rules (eslint-plugin-obsidianmd), then the tests
npm run lint # only the lint
npm run install-plugin # build, and copy into every vault open in Obsidian
npm run install-plugin -- ~/path/to/vault
The server tests run the real calibre when it is installed, and are skipped otherwise.
main.js is committed, so the plugin can be installed on any computer by
copying main.js, manifest.json and styles.css into
<vault>/.obsidian/plugins/read-aloud/, without building it.
Bump the version in manifest.json, package.json and versions.json,
build, commit, then push a tag named exactly as the version:
git tag -a 1.0.1 -m "What changed"
git push origin 1.0.1
The release workflow builds main.js from the tagged source, checks that
it is the committed one, runs the checks, attests where the files came
from (GitHub artifact attestations, which anyone can verify with
gh attestation verify main.js -R laszlorepassy/obsidian-read-aloud), and
publishes the release with main.js, manifest.json and styles.css.
If Read Aloud reads you something worth hearing, you can buy me a coffee:
Bug reports and pull requests are welcome.