Say
approvedby 1yx
This plugin has not been manually reviewed by Obsidian staff. Read aloud the H1 heading of a note when hovering over its internal link, using the system's built-in text-to-speech engine (e.g. macOS say).
Say
A lightweight Obsidian plugin that reads aloud the H1 heading of a target note when you hover over an internal link, using the system's built-in TTS engine.
Features
- Hover to read — Hover over any internal link to hear the target note's H1 heading (falls back to filename if no H1).
- Cross-platform — Works with macOS
say, Linuxspd-say/espeak, and Windows PowerShellSpeechSynthesizer. - Configurable — Choose your TTS command, voice, speech rate, and trigger delay.
- Arguments template — Power users can specify a custom argument template (e.g.
-v {voice} -s {rate} {text}) to override defaults.
Installation
From Obsidian Community Plugins (pending review)
- Open Settings → Community Plugins
- Search for "Say"
- Click Install, then Enable
Manual
- Download
main.jsandmanifest.jsonfrom the latest release - Create a folder named
sayin your vault's.obsidian/plugins/directory - Copy both files into that folder
- Enable the plugin in Settings → Community Plugins
Usage
- Enable the plugin
- Hover over any internal link in the editor
- The plugin will read the target note's H1 heading aloud
Settings
| Setting | Description |
|---|---|
| Enable auto-read | Toggle hover-to-speak on/off |
| Speech engine | Shows install instructions for your platform |
| Command | TTS executable name or full path |
| Voice | Voice for speech synthesis (updates dynamically based on selected command) |
| Speech rate | Rate multiplier (1 = normal) |
| Trigger delay | Milliseconds before speaking after hover |
| Arguments template | Optional custom argument template that overrides voice and rate settings |
Arguments Template
The template field supports three placeholders:
{voice}— The selected voice name{rate}— The speech rate value{text}— The text to speak
Example: -v {voice} -s {rate} {text}
When non-empty, this overrides the voice and rate settings above.
Compatibility
- macOS: Uses the built-in
saycommand - Linux: Requires
speech-dispatcher(sudo apt install speech-dispatcher) orespeak - Windows: Uses PowerShell
SpeechSynthesizer(built-in)
Desktop only — requires Node.js child_process API.
Development
pnpm install
pnpm dev # Watch mode
pnpm build # Production build
pnpm lint # Lint check
pnpm typecheck # TypeScript check
License
MIT
For plugin developers
Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.