Back to blog
Obsidian & Local TTSOctober 4, 2026•11 min read

How to Read Obsidian Notes Aloud with Narrate and OpenVox

An illustrated guide to connecting Obsidian’s Narrate plugin to OpenVox. Install the plugin, configure local TTS voices, read notes aloud, and export WAV audio.

OV

OpenVox Editorial Team

Practical guides for private, local AI voice workflows.

You can read Obsidian notes aloud locally by connecting the Narrate plugin to OpenVox. Start OpenVox’s local speech server, enter its base URL in Narrate, fetch a model and voice, and play a Markdown note. The Narrate directory listing explicitly names OpenVox as a recommended server.

This is useful when your vault already contains the material you want to hear: research notes, a draft article, a study summary, or a weekly review. Listening gives you another way to revisit that work without copying every note into a separate reading app.

Your note-to-audio workflow

Obsidian Markdown → Narrate → OpenVox local API → spoken audio

Run both desktop apps on the same computer. Narrate prepares the reading; OpenVox generates the voice.

What you need before connecting Obsidian and OpenVox

  • Desktop Obsidian with a vault containing a Markdown note.
  • Narrate installed and enabled in that vault.
  • OpenVox running with a downloaded TTS model and its local API started.
  • A compatible model, language, and voice selected from your own server’s lists.

Narrate’s current manifest marks it as desktop-only and specifies Obsidian 1.4.4 or newer. This guide focuses on a Mac, the platform highlighted by the plugin documentation. The same base-URL workflow can be used with OpenVox for Windows when its local API supplies the required routes.

Download model files before an offline session. Your voice generation can then run locally, while the first installation and model downloads need an internet connection.

Step 1: install the Narrate plugin in Obsidian

Start in the vault where you want to listen to notes. Open Obsidian’s Settings using the gear icon at the bottom left, or press Cmd + , on Mac. Select Community plugins in the left sidebar.

1.1. Exit Restricted mode

If community plugins are disabled, click the purple Exit Restricted mode button. Obsidian then displays the community plugin controls. If those controls are already visible, continue to Browse.

Obsidian Community plugins settings with the Exit Restricted mode button
Enable community plugins for this vault with Exit Restricted mode. Open full-size image.

1.2. Open the community plugin browser

Click Browse next to the Community plugins section. The Turn on and reload button above it turns Restricted mode back on; use Browse to find Narrate.

Obsidian Community plugins settings showing the Browse button after Restricted mode is disabled
Click Browse to open the plugin directory. Open full-size image.

1.3. Search for Narrate by jade

Enter narrate in the search field. In the pictured results, choose Narrate by jade, whose description mentions a local OpenAI-compatible TTS server and OpenVox. A similarly named Narrator plugin also appears, so check the exact name.

Obsidian plugin search for narrate showing Narrate by jade alongside Narrator
Select Narrate by jade, the plugin that explicitly mentions OpenVox. Open full-size image.

1.4. Install, then enable Narrate

Open Narrate’s detail panel and confirm its repository is jang-hs/obsidian-narrate. Click Install and wait for the download to finish. The screenshots show Narrate version 0.3.0; your store may offer a newer release.

Narrate plugin detail panel in Obsidian showing version 0.3.0, the jang-hs repository, and Install button
Install downloads Narrate into the current vault. Open full-size image.

When the plugin displays the Installed badge, click Enable. Installation and activation are separate steps. Close the plugin browser and look for Narrate under Community plugins in the Settings sidebar; scroll down if needed.

Installed Narrate plugin in Obsidian with the purple Enable button
Click Enable after installation to make Narrate’s settings and reading commands available. Open full-size image.

For a quick checklist:

  1. Open Settings → Community plugins in Obsidian.
  2. Turn on community plugins if they are disabled, then select Browse.
  3. Search for Narrate by jade and confirm the repository is jang-hs/obsidian-narrate.
  4. Select Install, then Enable.

These follow Obsidian’s installation instructions. Narrate also appears in the official plugin registry.

If Narrate does not appear in your plugin browser

The author also documents a manual installation: obtain main.js, manifest.json, and styles.css from the published plugin release, put them in <vault>/.obsidian/plugins/narrate/, then reload community plugins and enable Narrate. Follow the author’s installation notes for the version you install.

Step 2: start the local API in OpenVox

  1. Launch OpenVox and open Manage Models.
  2. Download a TTS model. The Narrate settings screenshot below uses Supertonic 3. You can also start with Kokoro for a ready-made voice or choose OmniVoice for broader language coverage.
  3. Open Local API + MCP and start the server if it is stopped.
  4. Copy the displayed Base URL, including its port and /v1.
OpenVox Local API screen with Running status, port 8000, and base URL http://127.0.0.1:8000/v1
The Running badge, Stop Server button, and Runtime Status confirm the local server is active on port 8000. Open full-size image.

In this screenshot, the green Running badge and Stop Server button mean the server is already started. Check that Runtime Status shows http://127.0.0.1:8000/v1 and copy that same Base URL from the top right.

If another app occupies port 8000, enter a free port in OpenVox, click Apply, and use the resulting Base URL in Narrate. You can enable Auto-start server on app launch for later sessions. Keep OpenVox running while Narrate is generating audio.

Step 3: enter the API URL and fetch your voice

Return to Obsidian’s Settings and click Narrate in the Community plugins section near the bottom of the sidebar. Its settings panel has the heading Audiobook TTS.

3.1. Paste the base URL and test the connection

Replace the API URL with the exact Base URL from OpenVox. For the screenshots here, enter http://127.0.0.1:8000/v1, then click Test connection. A successful connection notice confirms Narrate can retrieve the model list.

3.2. Fetch and select the model, language, and voice in order

  1. Click Fetch on the Model row. Open that row’s dropdown and choose an installed model. The example uses supertonic-3.
  2. Click Fetch on the Language row after selecting the model. Choose en — English for an English note, or another returned language that matches your text.
  3. Click Fetch on the Voice row after selecting the language. Choose an identifier returned by your own server; a long voice name may extend beyond the visible field.
  4. Check the text fields beside the dropdowns. They should reflect your chosen model ID, language code, and voice ID.
Narrate Audiobook TTS settings showing the local API URL, Supertonic 3 model, English language, voice picker, and Fetch buttons
Fetch each list, then choose a value in its dropdown. This example uses supertonic-3 and en; the voice identifier comes from the author’s local library. Open full-size image.

The connection settings at a glance:

Field or buttonWhat to enter or do
API URLPaste the OpenVox base URL, for example http://127.0.0.1:8000/v1.
Test connectionConfirm Narrate can reach the server and retrieve models.
Model → FetchChoose the downloaded model from the returned list.
Language → FetchSelect a supported language for that model.
Voice → FetchSelect a voice returned for that model and language.

Use the base URL ending in /v1. Narrate adds /models and /audio/speech itself. Entering the full speech endpoint in this field produces incorrect request paths.

The initial settings use OmniVoice with Korean language and voice values. Fetching a list does not necessarily replace the existing selection, so explicitly choose each value that fits your note. After switching models, fetch and choose the language and voice again.

For the first test, leave Prefetch depth at 2 and Chunk size (characters) at 200, as pictured. Begin with the normal playback speed; adjust the reading after you hear a successful sample.

No cloud OpenAI API key is needed for OpenVox’s local server. The exact field behavior is visible in Narrate’s settings implementation.

Step 4: read your first note aloud

4.1. Test a selection with the inline play button

  1. Close Settings and open a note in your vault, such as the Welcome note shown below.
  2. Drag across a short sentence to select it.
  3. Click the small triangular play button beside the selection. Its tooltip reads Read selection aloud.
  4. Wait for the first audio to be prepared, then listen for the voice and language you selected.
Obsidian Welcome note with a selected sentence, Narrate inline play button, Read selection aloud tooltip, and playback toolbar
Select a sentence and click its inline play button. Narrate’s playback toolbar appears near the bottom of the note. Open full-size image.

If the inline button is missing, first confirm Narrate is enabled, then turn on Show floating play button on selection in its settings. You can also right-click the selected text and choose Read selection aloud, or run that command from the command palette.

4.2. Read a whole note with the command palette

Create a short test note with ordinary prose before trying a long research document:

# Listening test

This note is being read by a local voice through OpenVox.

I am checking pronunciation and pauses before listening to a longer draft.

Open the command palette with Cmd + P on Mac or Ctrl + P on Windows. Run Read current note aloud. Give the first generation time to load the model, then use the playback toolbar to pause or move through the reading.

For a quick proofread, select a sentence and run Read selection aloud. Listening to one paragraph at a time makes repeated words, missing transitions, and awkward sentences easier to spot. Assign a convenient shortcut through Settings → Hotkeys once the connection works.

4.3. Control playback and add a shortcut

Use the toolbar’s play/pause and stop controls to manage the session, and its previous/next controls to move between chunks. The pictured 1x control changes playback speed. You can drag the mini-toolbar to a convenient position.

To add a keyboard shortcut, open Settings → Hotkeys, search for Narrate or the reading command’s name, and assign a key combination that does not conflict with your existing shortcuts. Start with Read selection aloud for frequent proofreading.

For the available commands and playback controls, see the Narrate feature list.

Make Markdown notes easier to listen to

Reading a vault aloud works best when a note can stand on its own. Expand unexplained abbreviations, give important sections clear headings, and introduce any table before its values. A brief summary at the top can help you remember what you are listening to.

Narrate prepares Markdown before speech. Its parser removes frontmatter, image embeds, and bare URLs; links keep their readable text. The settings let you skip code, control table reading, and include or omit parenthetical content. These rules are documented in the plugin README.

For a study note, try leaving explanatory parentheses in the reading. For a programming note, skip large code samples and add a prose explanation of what the code does. Preview one section before applying the same settings to a long document.

Use a cloned voice for your Obsidian notes

Create and save a permitted voice in OpenVox with a cloning-capable model. Then return to Narrate, select that model, choose the appropriate language, and fetch its voices. Pick the saved voice identifier returned by your server.

A saved voice must be available through the selected model’s API voice list. Typing a friendly display name into Narrate will not work if the server expects a different identifier. If the voice is missing, confirm it works in OpenVox and that you selected the matching model before fetching again.

Start with a clean recording of one speaker and a short note. See the OpenVox voice cloning guide for better reference recordings.

Export an Obsidian note as a WAV file

Use Narrate’s audio-generation command when you want a recording without listening through the whole note. Choose an Audio folder in the vault to keep exports together, such as audio-notes. An empty folder setting saves the WAV alongside the source note.

The plugin joins generated chunks into a single WAV named after the note, and an existing file at that output path can be overwritten. Copy an earlier version elsewhere if you want to retain both recordings. The export behavior is described in the author’s audio output documentation.

A desktop export is also a useful way to listen on your phone. Transfer the WAV using your usual file-sharing method and play it in an audio app. This does not require Narrate to run on mobile.

Improve playback and understand local privacy

Narrate generates sections of audio ahead of playback. If you hear gaps, try a modest increase to Prefetch depth and a lighter model. Prefetching helps when generation can keep up over time; it cannot make a slow model produce audio faster than the computer allows.

Optional disk caching can reuse previously generated audio. It also creates files inside your vault, so account for those files when choosing what to sync or back up. Keep caching off if you do not want persistent audio copies, or clear the cache through the plugin settings. The cache implementation stores WAV chunks in a vault-relative folder.

With the API URL set to 127.0.0.1 and both apps on the same machine, speech requests go to the local OpenVox server. Your vault’s sync provider, other plugins, and exported audio have their own data paths. Local TTS controls where synthesis happens; it does not change those separate settings.

Troubleshoot Narrate and OpenVox

SymptomWhat to check
Connection failsStart the OpenVox server; compare the host, port, and /v1 base path with Narrate’s API URL.
Model or voice list is emptyDownload the model, select it explicitly, then fetch and choose a language before fetching voices.
Wrong language or voiceReplace the initial Korean selections with entries returned by your own server.
First playback takes timeAllow the model to initialize. Compare a later run with the model already loaded.
Pauses between sectionsTry a lighter model or adjust prefetching. Close other heavy generation workloads.
Busy server or 429 responseLet the active job finish, then retry a short note. Avoid launching another export at the same time.
Nothing is readTest plain prose; your note may contain content excluded by the Markdown filters.
Narrate settings or commands are missingReturn to Community plugins and enable Narrate after installation. Scroll to its entry in the Settings sidebar.
Inline play button is missingSelect actual note text, confirm the selection play-button option is enabled, or use Read selection aloud from the command palette.

To check the server separately from Obsidian, open this address in a browser, adjusting the port if needed:

http://127.0.0.1:8000/v1/models

A model-list response confirms that the discovery route is reachable. It does not prove a particular model can synthesize audio; test a short generation in OpenVox next. For endpoint details, see the OpenVox local TTS API guide.

Frequently asked questions

How do I connect OpenVox to Obsidian?

Start OpenVox’s local API, enable Narrate in Obsidian, and set Narrate’s API URL to the OpenVox base URL ending in /v1. Use Fetch to select a model, then a language, then a voice. Open a Markdown note and run Read current note aloud.

What API URL should I use in Narrate?

Use the base URL shown by OpenVox, such as http://127.0.0.1:8000/v1. If OpenVox runs on port 8001, use http://127.0.0.1:8001/v1. Narrate appends the speech and discovery routes itself, so do not enter the full /audio/speech endpoint.

Does Narrate require an OpenAI API key?

No OpenAI API key is needed for this local OpenVox workflow. OpenAI-compatible describes the API format. Narrate sends speech requests to the OpenVox server configured in its API URL field.

Can I use Narrate on Obsidian mobile?

Narrate is currently desktop-only according to its plugin manifest. Run this integration in desktop Obsidian. You can export a note as WAV on the desktop and transfer the file to a phone for playback.

Can Obsidian read notes in a cloned voice?

Yes, when a compatible saved voice is exposed by OpenVox for the selected model and language. Create the voice in OpenVox, then fetch the voice list in Narrate and choose its returned identifier. Only clone a voice you own or have permission to use.

Is this Obsidian text-to-speech setup unlimited?

Narrate does not remove OpenVox’s plan limits. OpenVox Free has a daily generation allowance; OpenVox Pro enables unlimited generation on the purchased platform. Local generation avoids per-request cloud speech charges, while speed and capacity still depend on your computer.

Start with a note you already know

Choose a short draft or familiar study note, connect Narrate to OpenVox, and listen once with a ready-made voice. When pronunciation and playback feel right, try longer notes, a saved clone, or a WAV export. Your existing Obsidian writing becomes a reusable listening library.

OpenVox Free includes a daily generation allowance; Pro removes that limit on the purchased platform. See current pricing before planning a large audio vault.

Published October 4, 2026. Screenshots show Obsidian 1.13.7 and Narrate 0.3.0 on Mac. Setup details were checked against the supplied screenshots and Narrate’s documentation. Narrate is a third-party plugin maintained independently of OpenVox; settings can vary by version.

Download OpenVox

Give your Obsidian notes a local voice.

Install OpenVox, download a speech model, and connect Narrate to the local API. Try a short note with the free allowance, then choose Pro if you need unlimited generation.

Download OpenVox on the App Store for Mac or iPadDownload for Windows

Free download • No account required

Share this post

Know someone who would find this useful?

Related guides

Continue with the right next guide

View all posts