Archive. Date of access: 12 Jan 2022

dependabot[bot] 2d83f23935 Bump eslint-utils from 1.3.1 to 1.4.3 (#95) hace 4 años
examples 81fd70518d update standard.js to appease npm audit hace 5 años
platform 81fd70518d update standard.js to appease npm audit hace 5 años
.gitignore f4cef08c82 .gitignore, ignoring node_modules hace 10 años
.npmignore 7278b9d933 Ignoring logo.png and other unneeded files hace 7 años
.travis.yml 47ad4b56e9 Major refactor, ES6, standard linter hace 7 años
LICENSE.txt 59a45e1643 such bolded human readable files hace 10 años
README.md 5d551f952a Fully integrate WIN32 export. (#88) hace 5 años
index.d.ts 704eb45310 Voicelist (#73) hace 6 años
index.js cf364be1fc Breaking index.js into different files for each platform hace 7 años
logo.png 0b736fad30 [misc] Updated demos. Added logo to repo. Checked freshness of code. hace 14 años
package-lock.json 2d83f23935 Bump eslint-utils from 1.3.1 to 1.4.3 (#95) hace 4 años
package.json 444a49c34c 0.16.0 hace 5 años
typings.json fbdf6cd895 Add TypeScript support (#61) hace 7 años

README.md

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)