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
say
command) - Linux (not supported yet, welcome PRs!)
pnpm add native-speak
import { 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!");