Say.js
TTS (text to speech) for node.js. send text from node.js to your speakers.
Install / Use
/learn @Marak/Say.jsREADME
Installing say.js
npm install say
Usage
// automatically pick platform
const say = require('say')
// or, override the platform
const Say = require('say').Say
const say = new Say('darwin' || 'win32' || 'linux')
// Use default system voice and speed
say.speak('Hello!')
// Stop the text currently being spoken
say.stop()
// More complex example (with an OS X voice) and slow speed
say.speak("What's up, dog?", 'Alex', 0.5)
// Fire a callback once the text has completed being spoken
say.speak("What's up, dog?", 'Good News', 1.0, (err) => {
if (err) {
return console.error(err)
}
console.log('Text has been spoken.')
});
// Export spoken audio to a WAV file
say.export("I'm sorry, Dave.", 'Cellos', 0.75, 'hal.wav', (err) => {
if (err) {
return console.error(err)
}
console.log('Text has been saved to hal.wav.')
})
Methods
Speak:
- Speed: 1 = 100%, 0.5 = 50%, 2 = 200%, etc
say.speak(text, voice || null, speed || null, callback || null)
Export Audio:
- MacOS / Windows Only
- Speed: 1 = 100%, 0.5 = 50%, 2 = 200%, etc
say.export(text, voice || null, speed || null, filename, callback || null)
Stop Speaking:
say.stop(callback || null)
Get List of Installed Voice(s):
say.getInstalledVoices(callback)
Feature Matrix
Unfortunately every feature isn't supported on every platform. PR's welcome!
Platform | Speak | Export | Stop | Speed | Voice | List ---------|-------|--------|------|-------|-------|----- macOS | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :no_entry_sign: Linux | :white_check_mark: | :no_entry_sign: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :no_entry_sign: Windows | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark:
macOS Notes
Voices in macOS are associated with different localities. To a list of voices and their localities run the following command:
say -v "?"
As an example, the default voice is Alex and the voice used by Siri is Samantha.
Windows Notes
None.
Linux Notes
Linux support requires Festival. As far as I can tell there is no sane way to get a list of available voices. The only voice that seems to work is voice_kal_diphone, which seems to be the default anyway.
The .export() method is not available.
Try the following command to install Festival with a default voice:
sudo apt-get install festival festvox-kallpc16k
Requirements
- Mac OS X (comes with
say) - Linux with Festival installed
- Windows (comes with SAPI.SpVoice)
- Needs to have Powershell installed and available in $PATH (see issue #75)
Related Skills
node-connect
341.8kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
84.6kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
341.8kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
84.6kCommit, push, and open a PR
