# say

> TTS (Text To Speech) Module for Node.js

Latest version **0.16.0** (published 2019-06-12) · MIT license · 0 weekly downloads

## Install

```sh
npm install say
pnpm add say
yarn add say
bun add say
```

## Health

**Score 25/100 (F)** — status: abandoned.

Positive: has types; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.16.0 |
| Published | 2019-06-12 |
| First published | 2011-01-25 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Node | >=6.9 |
| Dependencies | 1 |
| Unpacked size | 16 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 1528 |
| Author | Marak Squires |
| Maintainers | marak, tlhunter |

## Links

- npm: https://www.npmjs.com/package/say
- Repository: https://github.com/Marak/say.js
- Homepage: https://github.com/Marak/say.js#readme
- Issues: https://github.com/Marak/say.js/issues
- npm.io page: https://npm.io/package/say

## Dependencies (1)

- [one-time](https://npm.io/package/one-time.md) 0.0.4

## Recent versions

- 0.16.0 (latest) — 2019-06-12
- 0.15.0 — 2018-06-19
- 0.14.0 — 2017-11-05
- 0.13.1 — 2017-09-30
- 0.13.0 — 2017-09-23
- 0.12.1 — 2017-09-10
- 0.12.0 — 2017-09-10
- 0.11.0 — 2016-11-13
- 0.10.0 — 2016-09-25
- 0.9.1 — 2016-08-14
- 0.9.0 — 2016-02-22
- 0.8.1 — 2016-02-22
- 0.8.0 — 2016-02-15
- 0.7.0 — 2016-02-15
- 0.6.0 — 2014-09-26
- … 3 more at https://npm.io/package/say/versions

## README

<img src="https://travis-ci.org/Marak/say.js.svg?branch=master" />

<img src="https://github.com/Marak/say.js/raw/master/logo.png" />

## Installing say.js

```bash
npm install say
```


## Usage

```javascript
// 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

```javascript
say.speak(text, voice || null, speed || null, callback || null)
```

#### Export Audio:

* MacOS / Windows Only
* Speed: 1 = 100%, 0.5 = 50%, 2 = 200%, etc

```javascript
say.export(text, voice || null, speed || null, filename, callback || null)
```

#### Stop Speaking:

```javascript
say.stop(callback || null)
```

#### Get List of Installed Voice(s):

```javascript
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:

```sh
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](http://www.cstr.ed.ac.uk/projects/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:

```shell
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](https://github.com/Marak/say.js/issues/75))

---
_Source: https://npm.io/package/say · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
