Skip to content

erich2s/native-speak

Repository files navigation

🗣️ Native Speak

Native Speak is the modern version of say.js. It provides a simple way to use the native text-to-speech (TTS) engines on Windows and MacOS.

✨ Features

  • Uses system native tts engines
  • 100% TypeScript
  • 0 dependencies

Platform Support

  • Windows (using SAPI)
  • macOS (using say command)
  • Linux (not supported yet, welcome PRs!)

Installation

pnpm add native-speak

Quick Start

import { ns } from "native-speak";

// Use default system voice and speed
ns.speak("Hello!");

// Stop the text currently being spoken
ns.stop();

API

speak(text, options?, callback?)

Synthesize speech from text.

  • text: string - The text to be spoken
  • options?: object - Optional parameters
    • voice?: string - Voice name to use
    • speed?: number - Speaking speed
  • callback?: (error: Error | null) => void - Called when speech is finished or an error occurs
// Using options and callback
ns.speak("Hello!", { voice: "Alex", speed: 300 }, (error) => {
  if (error) {
    console.error("Speech failed:", error);
  }
  else {
    console.log("Speech completed");
  }
});

export(text, filename, options?, callback?)

Export speech to an audio file.

  • text: string - The text to synthesize
  • filename: string - Path to save the audio file
  • options?: object - Optional parameters
    • voice?: string - Voice name to use
    • speed?: number - Speaking speed
  • callback?: (error: Error | null) => void - Called when export is finished or an error occurs
ns.export("Hello!", "output.m4a", { voice: "Alex" }, (error) => {
  if (error) {
    console.error("Export failed:", error);
  }
  else {
    console.log("Audio file saved");
  }
});

stop()

Stop the current speech.

ns.stop();

getVoices(callback)

Get a list of available voices.

  • callback: (error: Error | null, voices?: string[]) => void - Called with the list of voices or an error
ns.getVoices((error, voices) => {
  if (error) {
    console.error("Failed to get voices:", error);
  }
  else {
    console.table("Available voices:", voices);
  }
});

Others

If you want to create a specified platform of ns instance, you can use the NativeSpeakFactory.create() method.

import { NativeSpeakFactory } from "native-speak";

// Create a Windows ns instance
const customNs = NativeSpeakFactory.create("win32");
customNs.speak("Hello!");

About

A simple text-to-speech library using system native tts engines for Node.js

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •