Zotero-TTS icon

Zotero-TTS

An enhancer for Zotero 10's Read Aloud: more voices in its Local tier, word-and-sentence highlighting in your colors, keyboard shortcuts.

Zotero 10 Latest release Downloads Last commit License

English · 简体中文

Read Aloud reading a paragraph: the word being read in blue, its sentence in yellow

If you like Zotero-TTS, give it a ⭐ on GitHub — it helps others find it.

What it adds

Zotero 10 already reads aloud, and this plugin does not replace its player — it adds voices to the player's Local tier and tunes what is around them. Why it is built this way.

Install

  1. Download zotero-tts.xpi from the latest release — in Firefox, right-click → Save Link As…
  2. Tools → Plugins → ⚙ → Install Plugin From File…, then restart Zotero.
  3. Enable a provider in Edit → Settings → Zotero-TTS, and pick its voice — Kokoro-af_bella, Azure-Ava Multilingual — under Local in the player.

The Read Aloud player with a plugin voice chosen under the Local tier

Providers

Provider What you need Cost Highlighting
Azure Speech Speech resource key + region · tutorial Free tier: 500,000 characters a month word; sentence for the voices named MAI-Voice-2
Cloudflare Workers AI Account ID + API token · tutorial 10,000 free Neurons a day: a few pages with an Aura voice, hours with MeloTTS sentence
Speechify An API key from platform.speechify.ai · 36 languages, no Mandarin Free: 50,000 characters a month, about fifteen pages; then $10 a month for a million word
Kokoro-FastAPI A server on your machine or LAN · tutorial Free; CPU works, a GPU is faster word
OpenAI-compatible Base URL and model; an API key if the server wants one OpenAI bills per character; self-hosted servers such as Chatterbox are free sentence
Xiaomi MiMo An API key from platform.xiaomimimo.com, picked in the OpenAI section's Server dropdown Free for a limited time sentence
System voices Nothing — Windows and macOS Free, offline word on Windows, sentence on macOS
OpenAI-compatible servers: how to fill the settings in
Cloudflare Tunnel and other gateways

Put the gateway's headers in Extra headers — of the OpenAI section, or of the Kokoro-FastAPI one — as Name: value pairs separated by ;, for example CF-Access-Client-Id: …; CF-Access-Client-Secret: …. They go out with every request. Tutorial.

System voices

Read Aloud already lists the voices Windows and macOS install, under Local, but bare: no sample, no favorite, no cache, no word highlight.

Enable in the System voices section gives them all of that:

Resume where you stopped

Close a document in the middle of listening, quit Zotero, come back days later, press Shift+Space — Read Aloud goes on from the sentence you stopped at. Zotero on its own does not keep that place; the plugin keeps it for every document you have listened to.

Settings

Everything is under Edit → Settings → Zotero-TTS.

Highlight

The Highlight group

Keyboard shortcuts

The Keyboard shortcuts group

Shift+Space is the only key you need — one key, whatever the reader is doing:

Shift+S stops Read Aloud everywhere — every tab's player closes at once, a short message says how many, and each tab keeps its place for the next time. While no player is open the key keeps its usual meaning.

Shift+W turns the word highlight on and off without leaving the document — the same choice as Zotero's Highlight current setting. It takes effect on the sentence being spoken, in every tab, and stays until you change it again; a short message says which you got. A voice without word timing keeps highlighting the sentence either way, and the message says so.

Voice browser

The voice browser: tier, language and voice columns

Every voice Read Aloud can use, in the player's own three steps — tier, language, voice.

Favorites, samples, the default voice

Reading

One voice everywhere, pauses, prefetch, cache

Backup and sync

Reading positions sync — your bookmarks follow you between computers.

Settings backup and sync

WebDAV URL examples

The URL is a folder, created on the first upload. Nextcloud: https://cloud.example.com/remote.php/dav/files/<user>/zotero-tts/; Jianguoyun: https://dav.jianguoyun.com/dav/zotero-tts/ with an app password.

Troubleshooting

Common problems

Compatibility

Development

npm install
npm test          # vitest, also builds build/zotero-tts.xpi
npm run typecheck
npm run build

notes/NOTES.md records the Zotero internals the plugin relies on and every incident so far.

Acknowledgments

License

AGPL-3.0, the same license as Zotero itself. Not affiliated with Zotero.

Buy me a coffee

Buy me a coffee