Browser-based text-to-speech using eSpeak-ng. No servers, no APIs, pure JavaScript.
No frameworks needed
eSpeak-ng synthesis
All voices included
No server required
// Initialize TTS
const tts = new SimpleTTS();
// Generate and play speech
tts.onReady(() => {
tts.speak('Hello world!', (audioData, sampleRate) => {
SimpleTTS.playAudioData(audioData, sampleRate);
});
});
// Speak with options
tts.speak('Hello world!', {
voice: 'en', // Voice ID
rate: 200, // Speed (80-450)
pitch: 75, // Pitch (0-100)
volume: 1.2 // Volume (0-2.0)
}, (audioData, sampleRate) => {
SimpleTTS.playAudioData(audioData, sampleRate);
});
// List available voices
tts.getVoices(voices => {
console.log(voices);
});
// Direct eSpeak-ng access
const espeak = new eSpeakNG('js/espeakng.worker.js', () => {
espeak.set_voice('en');
espeak.synthesize('Hello', (samples, events) => {
// Raw PCM samples
});
});
espeakng-simple.js - Simple wrapper APIespeakng.worker.js - Web Workerespeakng.worker.data - Voice dataLicense: GPLv3