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.
- Uses system native tts engines
- 100% TypeScript
- 0 dependencies
- Windows (using
SAPI) - macOS (using
saycommand) - Linux (not supported yet, welcome PRs!)
pnpm add native-speakimport { ns } from "native-speak";
// Use default system voice and speed
ns.speak("Hello!");
// Stop the text currently being spoken
ns.stop();Synthesize speech from text.
text: string- The text to be spokenoptions?: object- Optional parametersvoice?: string- Voice name to usespeed?: 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 speech to an audio file.
text: string- The text to synthesizefilename: string- Path to save the audio fileoptions?: object- Optional parametersvoice?: string- Voice name to usespeed?: 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 the current speech.
ns.stop();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);
}
});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!");