Say

approved

by 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).

26 downloadsUpdated 7d agoMIT

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, Linux spd-say/espeak, and Windows PowerShell SpeechSynthesizer.
  • 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)

  1. Open Settings → Community Plugins
  2. Search for "Say"
  3. Click Install, then Enable

Manual

  1. Download main.js and manifest.json from the latest release
  2. Create a folder named say in your vault's .obsidian/plugins/ directory
  3. Copy both files into that folder
  4. Enable the plugin in Settings → Community Plugins

Usage

  1. Enable the plugin
  2. Hover over any internal link in the editor
  3. The plugin will read the target note's H1 heading aloud

Settings

SettingDescription
Enable auto-readToggle hover-to-speak on/off
Speech engineShows install instructions for your platform
CommandTTS executable name or full path
VoiceVoice for speech synthesis (updates dynamically based on selected command)
Speech rateRate multiplier (1 = normal)
Trigger delayMilliseconds before speaking after hover
Arguments templateOptional 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 say command
  • Linux: Requires speech-dispatcher (sudo apt install speech-dispatcher) or espeak
  • 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.