Obsidian text to speech: listen to your notes, offline
Obsidian keeps notes as plain Markdown files on your own disk, and that is why many people chose it. Listening to notes fits the same idea: review a week of notes on a walk, catch clumsy sentences by ear, turn reading notes into a short audio summary, all without sending the text anywhere.
Obsidian itself has no read-aloud feature. SuperClonica gives you natural voices in 31 languages, free to try online, and a free engine that reads Markdown files on your computer and writes MP3 files you can embed back into your notes.
Why voice notes offline
Web addresses are still read in pieces, so the folder script below removes them first.
- Obsidian stores notes as Markdown files on your disk, and the engine reads them right there, offline.
- Nothing goes to a cloud service: good for journals, work notes and anything private.
- The engine drops Markdown marks such as #, ** and [[ ]] while reading, so headings and links are not spelled out.
- Obsidian has no read-aloud of its own; community plugins either use your system voice or call a paid cloud service.
Pick a voice free online
On the page of any voice, paste a sentence from one of your notes, 30 to 100 characters, choose the language and press Voice it. Pick the voice you would happily listen to every day.
One note to audio
If you plan to listen to a note, write it the way you would say it: short sentences and no tables.
- Install the free engine: python -m pip install superclonica-cpu.
- Voice one note: superclonica --text-file "Weekly review.md" --voice F2 --lang en --normalize --output "Weekly review.mp3".
- Long notes are fine: the engine has no character limit and joins the pieces into one file.
- Digits are read as plain numbers; write dates in words where it matters.
A whole folder at once
To voice every note in a folder, run this from your vault: import re, pathlib; from superclonica import Superclonica; tts = Superclonica(); [tts.save(str(p.with_suffix('.mp3')), tts.synthesize(re.sub(r'https?://\S+', '', p.read_text(encoding='utf-8')), 'F2', 'en', normalize=True)[0]) for p in pathlib.Path('Notes').glob('*.md')]. Each note in the Notes folder gets an MP3 with the same name next to it, at the same loudness, −18 LUFS. Run it again after big edits; it simply overwrites the old files.
Embed the audio in the note
Embed the audio in the note with ![[Weekly review.mp3]]: Obsidian plays MP3, WAV, OGG, FLAC, M4A and WebM files in place, and the file lives in your vault like any other. For notes you only listen to yourself, any voice will do; the ten stock voices of the model are free, and catalog voices are bought once.