Note Reader CosyVoice Contributors166 downloadsRead Obsidian notes through the local CosyVoice TTS pipeline.
An Obsidian desktop plugin that reads the current note or selected text through either a local CosyVoice TTS pipeline or an explicitly selected Microsoft Edge online voice mode.
Reader control panel:

Plugin settings. The script path shown here is a redacted example:

CosyVoice Reader control panel.1x, 1.25x, 1.5x, 2x, 1.1x, 1.2x, 1.3x, and 1.4x.Local CosyVoice or Microsoft Edge online voice in settings. Local CosyVoice is the default.Restore defaults button for resetting all plugin settings.Math reading language setting:English is the default for public releases, for example $a_b$ -> a subscript b.Chinese keeps Chinese math words, for example $a_b$ -> a 下标 b.Skip math skips short formulas as well as long formulas.\alpha -> alpha, \beta -> beta, and \pi -> pi.\leq, \times, and _.\textbf{...}, \mathbf{...}, and \boldsymbol{...}.\frac{a}{b} as a over b in English mode or a 分之 b in Chinese mode.By default, the plugin uses local TTS. In Local CosyVoice mode, it does not send note text to Microsoft, OpenAI, or any remote TTS service. Text is written to a temporary file under the plugin cache and passed to the configured local CosyVoice wrapper.
If you select Microsoft Edge online voice, the plugin calls the edge-tts command-line tool and sends the chunk text to Microsoft Edge TTS. Use this mode only for notes whose text you are comfortable processing through that online service.
Local CosyVoice mode does not call a remote service directly. Your configured CosyVoice wrapper may talk to a local service such as 127.0.0.1. Microsoft Edge online voice mode calls Microsoft Edge TTS through edge-tts.edge-tts command in Edge mode.cache folder in the vault, checks the configured wrapper script in local mode, and can launch a wrapper stored outside the vault.Local CosyVoice: a working local CosyVoice setup and a PowerShell wrapper compatible with:cosyvoice-wrapper.ps1 -InputPath <txt> -OutputPath <wav> -Speed <speed>
A recommended script path is:
%LOCALAPPDATA%\note-reader-cosyvoice\cosyvoice-wrapper.ps1
For local CosyVoice installation, hardware guidance, OS-specific notes, and wrapper examples, see Local CosyVoice setup.
For Microsoft Edge online voice: install the edge-tts CLI and make sure the edge-tts command is on PATH. The plugin calls it with --file, --write-media, --voice, and --rate.
edge-tts is a third-party Python package published on PyPI that calls Microsoft Edge's online text-to-speech service. It is not bundled with this plugin and is not a local voice model.
Recommended command-line-only install:
pipx install edge-tts
If pipx is not installed yet:
py -m pip install --user pipx
py -m pipx ensurepath
Then open a new PowerShell window and run pipx install edge-tts.
Alternative install if you manage Python packages directly:
py -m pip install --user edge-tts
After installation, open a new PowerShell window and verify that the command is available:
edge-tts --help
To list available voices:
edge-tts --list-voices
Then open Settings -> Note Reader CosyVoice:
Speech engine to Microsoft Edge online voice.Edge TTS voice to a voice id, for example zh-CN-XiaoxiaoNeural.Speed if needed. The plugin converts this to the edge-tts --rate option.If Obsidian cannot find edge-tts, make sure edge-tts --help works in a normal PowerShell window, then fully restart Obsidian. The plugin does not use the Codex/Hermes internal edge-tts.exe path.
Privacy note: Edge mode sends each text chunk to Microsoft Edge TTS. Keep Speech engine set to Local CosyVoice for private or sensitive notes.
This plugin does not download models. Plan storage for the local TTS runtime before installing a voice model:
2.5 GB for a 300M model to about 9 GB for a 0.5B CosyVoice3 model.10-20 GB for one model and 30 GB+ if you keep multiple models, source checkouts, Conda environments, and caches.The configured script can call another local TTS engine instead of CosyVoice if it follows the same wrapper contract: read UTF-8 text from -InputPath, write a valid WAV file to -OutputPath, accept -Speed, and exit non-zero with a clear error on failure. Check the other model's license, language coverage, audio format, speed controls, startup latency, and whether it sends text outside your machine or trusted local network.
Microsoft Edge online voice mode is separate from the local wrapper contract. It writes MP3 files with edge-tts and uses the Edge TTS voice setting, for example zh-CN-XiaoxiaoNeural.
Use Chunk limits to balance startup latency and synthesis stability:
30,60,90,120,160,200.40,80,120,160,280,320.80,140,220,320,480,640.Open CosyVoice reader controlsRead current note with CosyVoiceRead selection with CosyVoiceRead from selection with CosyVoicePause or resume CosyVoice readingStop CosyVoice readingWhen the CosyVoice Reader control panel is focused, Space pauses or resumes reading, and Left Arrow or Right Arrow seek backward or forward in 5-second steps while audio is available.
The triangle buttons beside the progress bar jump to the previous text chunk or the next text chunk. Already synthesized chunks are reused when possible; otherwise the target chunk is synthesized before playback.
The progress bar shows whole-reading progress across all chunks. While audio is playing, the bar can be clicked or dragged. Seeking is limited to the currently loaded audio chunk; dragging outside that chunk is clamped to the nearest point in the current chunk.
The install package contains only:
manifest.jsonmain.jsstyles.cssREADME.mdINSTALL.mdLICENSEIt intentionally excludes data.json, cache, last-error.log, and local test files.
MIT.