MicorsoftSpeech_TTS
Free Microsoft TTS in ComfyUI — no API key, no GPU, no model download
- MP3 file: String
The name says "Microsoft," so you'd brace for an Azure subscription, an API key, and a surprise bill. It's none of those. This node turns text into an MP3 by talking to the same free speech endpoint Microsoft's Edge browser uses for read-aloud - no key, no GPU, no model files to fetch. If you want a narrator for an image-to-video workflow, a character voice for an interactive dialogue graph, or just a fast way to audition forty voices, it's about the cheapest on-ramp to speech in ComfyUI.
It's a tiny utility from a Chinese-maintained pack that wears the author's 😺dzNodes branding (the category is literally 😺dzNodes/MSSpeechTTS). It is not a local neural TTS like F5-TTS or XTTS - those need a GPU and a multi-gigabyte download. This one needs exactly two things: edge_tts installed and an internet connection.
How it works
Under the hood it's the edge_tts Python library doing the heavy lifting. The node sends your text, a voice ID, and a rate to Microsoft's speech servers, gets back MP3 audio, and writes it to disk. All the synthesis happens server-side, so your machine barely notices it. The file lands in ComfyUI/output/audio/<prefix>_<timestamp>_<voicename>.mp3, which is the same folder the Output sidebar reads, so the MP3 shows up there as playable output after a run.
The inputs that matter
There are only four, and you'll actually touch two of them.
- voice - a dropdown of neural voices. It ships with about two dozen enabled, mostly US English plus Mandarin, Cantonese, and Taiwanese voices. Roughly 300 more sit in
voicelist.iniin the pack folder, commented out; delete the#at the start of a line to enable one. That's the author's own customization mechanism, and it's the first thing to know when the voice you want isn't in the list. (Side note: the parser eats the last letter of the gender label, so you'll see "(Femal)" and "(Mal)". Harmless, and oddly endearing.) - text - multiline string, your script. That's it.
- rate - speech speed as a percentage,
-200to200, default0. Positive is faster, negative slower. It's applied as+50%or-30%, and at the extremes voices get comically chipmunk. - filename_prefix - the output filename prefix (default
comfyUI).
The output
One output, named MP3 file: String. It's a string holding the absolute path to the saved file - there is no first-class audio type in vanilla ComfyUI, so don't expect to wire it straight into a video node. Treat it as an output node: run it, grab the MP3 from the sidebar or the output/audio/ folder. If you do want to chain it, you need a node that accepts a file path string.
Install
Easiest via ComfyUI Manager: Install Custom Nodes → search "ComfyUI_MSSpeech_TTS", then restart. Or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/chflame163/ComfyUI_MSSpeech_TTS
cd ComfyUI_MSSpeech_TTS
pip install -r requirements.txt
Then restart ComfyUI. For a portable install, use the embedded Python like the README shows: ..\..\..\python_embeded\python.exe -s -m pip install -r requirements.txt. Of the dependencies, edge_tts is the one that matters for this node; numpy, pyglet, arcade, and pygame are mostly for the pack's sibling sound-playing nodes. No models, no weights, no API signup.
Common gotchas
- It needs internet. Synthesis happens on Microsoft's servers, not your machine. Offline, it errors and writes nothing.
- It's an unofficial endpoint. Microsoft can change or throttle it at any time; the fix usually lands in
edge_tts. If a node that worked yesterday starts failing,pip install -U edge-ttsand restart. - A voice is "missing." Check
voicelist.ini- it's probably just commented out. - The spelling. The node registers in ComfyUI as
MicrosoftSpeech_TTS, while the comfy.icu page slug isMicorsoftSpeech_TTS(a long-lived typo). Searching either will find you here.
For a free, zero-install-weight way to add speech to a ComfyUI workflow, this is the one to reach for. Just keep in mind the synth happens on someone else's servers - fine for experimentation, and worth remembering if you're automating hundreds of runs.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| voice | COMBO | 14 options: zh-CN-XiaoxiaoNeural, zh-CN-XiaoyiNeural, zh-CN-YunjianNeural, zh-CN-YunxiNeural, zh-CN-YunxiaNeural, zh-CN-YunyangNeural, +8 | |
| rate | INT | 0-200–200 | — |
| filename_prefix | STRING | comfyUI | — |
| text | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| MP3 file: String | STRING | — |