A plugin for LM Studio that speaks every model response using the voices built into Windows (default: Zira). Everything runs on your computer — nothing is sent online.
How it works: the plugin appears in LM Studio's model picker. You select it instead of your model, and it quietly passes your messages to your real model, shows the reply on screen as normal, then reads it out loud when it finishes.
-
Update LM Studio — open LM Studio, and if it offers an update, install it.
-
Open the plugins folder — press
Windows key + R, paste this, and press Enter:%USERPROFILE%\.lmstudio\extensions\pluginsIf Windows says the folder doesn't exist, open
%USERPROFILE%\.lmstudioinstead, then create a folder namedextensions, and inside it a folder namedplugins. -
Create a folder named
ciderinsideplugins. -
Copy the whole
lmtalk-ttsfolder (the folder this README is in) intocider. You should end up with:...\.lmstudio\extensions\plugins\cider\lmtalk-tts\manifest.jsonCareful: copy it into
pluginsitself, not into another folder inside it. And keep the.lmstudiosubfolder that's insidelmtalk-tts— it contains the compiled program (production.js) that LM Studio actually runs. -
Fully restart LM Studio — right-click the LM Studio icon in the system tray (bottom-right corner of your screen, near the clock) and choose Exit/Quit, then open LM Studio again. The first start needs internet for a few seconds to fetch the plugin's one dependency.
- In a chat, click the model picker at the top and load your normal model (e.g. a Llama or Qwen model) like you always do.
- Click the model picker again and this time choose lmtalk-tts (listed under
cider/). - Send a message. The reply streams on screen as usual, and when it finishes, Zira reads it out loud.
Tip: to skip step 1 forever, open the plugin's settings in the chat sidebar and type your model's key into Model Key (find the key in the My Models tab, e.g. qwen/qwen3-8b). The plugin will then load that model by itself.
In the chat sidebar (when lmtalk-tts is selected): Read responses out loud on/off per chat, Model Key, Temperature.
In the plugin's global settings: Voice (zira, david, or part of any installed voice's name; empty = system default), Speaking speed (-10 to 10), Volume, Skip code blocks (on by default — code sounds awful spoken), Read 'thinking' text (off by default).
To see every voice installed on your PC: press Windows key, type powershell, open it, and paste:
Add-Type -AssemblyName System.Speech; (New-Object System.Speech.Synthesis.SpeechSynthesizer).GetInstalledVoices() | ForEach-Object { $_.VoiceInfo.Name }
Sending a new message or regenerating stops the current speech automatically. To stop it without sending anything, mute your speakers — there's no stop button (LM Studio plugins can't add one yet).
lmtalk-tts doesn't appear in the model picker — double-check the folder path from step 4 (the manifest.json file must be exactly at plugins\cider\lmtalk-tts\manifest.json), then fully quit LM Studio from the system tray and reopen.
"Plugin process exited unexpectedly with code 1" — the .lmstudio\production.js file inside the plugin folder is missing or broken. Re-copy the whole folder (including its .lmstudio subfolder), then click Restart on the plugin.
Error: "could not find a model to generate with" — load a model first, or set Model Key in the plugin settings.
No sound — check Windows volume and output device; make sure "Read responses out loud" is on in the chat sidebar; try emptying the Voice setting (falls back to the default voice).
Replies work but it speaks markdown weirdly — that shouldn't happen (the plugin strips formatting), but if a specific response sounds wrong, I'd love the example.
Delete the folder ...\.lmstudio\extensions\plugins\cider\lmtalk-tts and restart LM Studio.