npm install say
// 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.') })
- Speed: 1 = 100%, 0.5 = 50%, 2 = 200%, etc
say.speak(text, voice || null, speed || null, callback || null)
- MacOS / Windows Only
- Speed: 1 = 100%, 0.5 = 50%, 2 = 200%, etc
say.export(text, voice || null, speed || null, filename, callback || null)
say.stop(callback || null)
say.getInstalledVoices(callback)
Unfortunately every feature isn't supported on every platform. PR's welcome!
| Platform | Speak | Export | Stop | Speed | Voice | List |
|---|---|---|---|---|---|---|
| macOS | ✅ | ✅ | ✅ | ✅ | ✅ | 🚫 |
| Linux | ✅ | 🚫 | ✅ | ✅ | ✅ | 🚫 |
| Windows | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
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.
None.
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
- 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)