https://github.com/echogarden-project/macos-native-tts
Node.js binding to the macOS native text-to-speech API (AVSpeechSynthesizer).
https://github.com/echogarden-project/macos-native-tts
macos nodejs text-to-speech
Last synced: about 1 month ago
JSON representation
Node.js binding to the macOS native text-to-speech API (AVSpeechSynthesizer).
- Host: GitHub
- URL: https://github.com/echogarden-project/macos-native-tts
- Owner: echogarden-project
- License: mit
- Created: 2024-11-27T11:06:01.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2024-11-27T11:31:02.000Z (6 months ago)
- Last Synced: 2025-04-11T08:38:31.228Z (about 2 months ago)
- Topics: macos, nodejs, text-to-speech
- Language: C++
- Homepage:
- Size: 105 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# Node.js binding to the macOS native speech synthesizer
Uses N-API to bind to the native macOS [`AVSpeechSynthesizer`](https://developer.apple.com/documentation/avfaudio/avspeechsynthesizer/) API.
* Speech is returned as a `Int16Array` raw PCM, `22050` Hz mono
* Will recognize voices installed via the macOS OS
* Addon binaries are pre-bundled. Doesn't require any install-time postprocessing
* Supports macOS `10.14` and later, x64 and arm64## Installation
`npm install @echogarden/macos-native-tts`
## Usage examples
### Synthesize text
```ts
import { synthesize } from '@echogarden/macos-native-tts'const text = `
Hello World! How are you doing today?
`const { audioSamples, sampleRate } = synthesize(text, {
voice: 'en-US',
rate: 0.5,
pitchMultiplier: 1.0,
volume: 1.0,
})
```The returned `audioSamples` is an `Int16Array` containing mono samples at a sample rate of `sampleRate` (usually `22050` or `11025` Hz).
### List voices:
```ts
import { getVoiceList } from '@echogarden/macos-native-tts'const voices = getVoiceList()
console.log(voices)
```
Prints:```ts
[
{
identifier: 'com.apple.voice.compact.ar-001.Maged',
name: 'Majed',
quality: 1,
gender: 'male',
language: 'ar-001'
},
{
identifier: 'com.apple.voice.compact.bg-BG.Daria',
name: 'Daria',
quality: 1,
gender: 'female',
language: 'bg-BG'
},
{
identifier: 'com.apple.voice.compact.ca-ES.Montserrat',
name: 'Montse',
quality: 1,
gender: 'female',
language: 'ca-ES'
},//...
]
```## Building the N-API addons
The library is bundled with pre-built addons, so recompilation shouldn't be needed.
If you still want to compile yourself, for a modification or a fork:
* In the `addons` directory, run `npm install`, which would install the necessary build tools.
* Then run `npm run build-x64` (x64) or `npm run build-arm64` (arm64)## License
MIT