
Company News
Socket Partners with Replit to Block Malicious Packages in AI-Powered Development
Replit is integrating Socket Firewall into its AI-powered development experience to help protect builders from malicious open source packages.
node-red-contrib-say
Advanced tools
Output node for node-red for TTS (text to speech). Requires preinstall TTS program on command line.
Node-RED output node for text-to-speech (TTS).
Let your runtime speak messages from your flows.
node-red-contrib-say adds a say node to the output section of the Node-RED palette.
When the node receives a message it:
Text field in the node config, orName, ormsg.payloadsay library to speak the text on the host machinemsg to the next node when speaking finishesThis makes it easy to:
| Version | |
|---|---|
| Supported Node-RED | 4.x (recommended; aligned with current Node-RED releases) |
| Node.js | 18.x or newer (CI tests 20 and 22 on Ubuntu and macOS) |
Older Node-RED or Node.js versions may still work but are not covered by automated tests.
This node is a thin wrapper around the say package and relies on platform TTS tools:
macOS
say command.say -v '?' (voices can differ by macOS version and installed language packs).Linux
The underlying say package uses Festival only (for example espeak-ng is not used).
Install Festival using your package manager (for example on Debian/Ubuntu):
sudo apt-get install festival
You also need a working audio stack on the host (for example ALSA, PulseAudio, or PipeWire) so Festival can play sound. Minimal or headless servers may need extra configuration or audio devices mapped into the environment.
Docker and containers: Base images often omit Festival and may not expose sound devices. Install Festival inside the image, install/configure audio, and pass through devices or use a suitable remote audio setup—otherwise the node cannot produce audible output.
Windows
SAPI.SpVoice.The Node-RED container / host must have at least one working TTS backend installed and accessible from the command line, otherwise this node cannot speak.
You can install the node either from the Node-RED palette or from your project directory.
node-red-contrib-say.In your Node-RED user directory (often ~/.node-red or your project folder):
pnpm add node-red-contrib-say
Then restart Node-RED so the new node is loaded.
This package ships importable flows under examples/ (see Node-RED: packaging examples):
| File | What it shows |
|---|---|
examples/01-say-fixed-text.json | Inject → say → debug — text comes from the node Text field. |
examples/02-say-from-payload.json | Inject → say → debug — Text empty; spoken string is msg.payload. |
To import: Menu → Import → select a JSON file (or paste the file contents), then Deploy. Ensure your runtime has a working TTS setup (see Requirements).
say nodeAfter installation you will find the say node under Output in the Node-RED palette.
msg.payload
msg is forwarded once speaking is finished or an error occurred.node.error(err).The editor dialog (say.html) exposes the following fields:
Name
Text
msg.payload.msg.payload.Voice
Standard (empty value): use the default system voice.Specify voice by string (:): enables Voice Name.Alan, Nick, SLT, …).Alex, Bruce, Kathy, Vicki, …).Language
de_DE, en_US, fr_FR) on top of runtime OS filtering.All languages.Standard and Specify voice by string remain available regardless of active language filter.Voice Name (shown only when Voice is set to Specify voice by string)
Speed
1.0.0.1 – 2.0, step 0.1.Number and passed to say.speak.When a message arrives, the node chooses the text to speak in this order:
config.text (Text field), if not emptyconfig.name (Name), if Text is emptymsg.payload, if neither Text nor Name are provided"trigger").Hello from Node-REDStandard1.0Whenever you click the inject button, your machine will say:
“Hello from Node-RED”.
Temperature is 21 degreesSpeak temperatureOn each inject, the say node will speak the string from msg.payload.
Specify voice by string.Alex or another voice name recognised by your OS.The node will now try to speak using the custom voice you configured.
say call fails, the node:
node.error(err) for visibility in the debug sidebar / logs,node.send) in that case.Development setup, linting, and git hooks are described in CONTRIBUTING.md.
FAQs
Output node for node-red for TTS (text to speech). Requires preinstall TTS program on command line.
We found that node-red-contrib-say demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Company News
Replit is integrating Socket Firewall into its AI-powered development experience to help protect builders from malicious open source packages.

Security News
npm confirmed a tooling bug incorrectly marked several one-character packages as security holders and said it was working on a rollback.

Research
/Security News
Newer packages in this compromise use native extensions and .pth loaders to execute JavaScript stealers in developer environments.