CLI tool
espeak-ng/espeak-ng avatar
espeak-ng/espeak-ng

eSpeak NG: formant synthesis that trades naturalness for coverage

eSpeak NG is an open source speech synthesizer that supports more than hundred languages and accents.

6,843 stars1,294 forksCGPL-3.0

At a glance

What is it?
espeak-ng/espeak-ng is a GPL-3.0 text to speech synthesizer in C covering more than 100 languages and accents in a few megabytes, using formant synthesis rather than recorded speech. The README says plainly that the output is clear and fast but not as natural or smooth as larger synthesizers.
Who is it for?
Use eSpeak NG if you need speech output in many languages from a few megabytes of code, on constrained hardware, or if you want a phoneme front end to drive another synthesizer such as MBROLA. It suits embedded devices, screen reader integration through SAPI5 on Windows, and languages that commercial services do not cover.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 4 days ago.
What is it written in?
Mainly C, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

Formant synthesis, not recorded speech

eSpeak NG is a compact open source text to speech synthesizer for Linux, Windows, Android and other systems, supporting more than 100 languages and accents. It is based on the eSpeak engine created by Jonathan Duddington.

The synthesis method is the part that determines everything else. The README says eSpeak NG uses formant synthesis, which allows many languages to be provided in a small size, and that the speech is clear and can be used at high speeds, but is not as natural or smooth as larger synthesizers based on human speech recordings.

That is a rare instance of a project stating its own weakness up front, and it should be taken at face value. Formant synthesis generates sound from a model of the vocal tract rather than replaying recorded human speech, so there are no recordings to ship, which is why a hundred languages fit in a few megabytes. The cost is the robotic quality people associate with it.

The README also notes support for Klatt formant synthesis and the ability to use MBROLA as a backend synthesizer, which is one route to better sounding output.

Coverage against quality

The trade this project makes is explicit: breadth of languages over naturalness of voice. For most modern TTS work the trade runs the other way, since a neural system sounds far better and covers a handful of languages well.

The README is honest about the state of the coverage too. It says several languages are included in varying stages of progress and invites help from native speakers. A language being listed is not the same as a language being good, and the quality spread across a hundred entries maintained by volunteers is necessarily wide.

The 1.52 release notes show what maintenance looks like here: a long list of updated languages, including Bashkir, Belarusian, Mandarin, English, Spanish, Persian, Guarani, Hebrew, Italian, Japanese, Greenlandic, Kyrgyz, Latvian, Nogai, Romanian, Russian, Shan Tay Yai and Turkmen, each credited to named contributors. Two of the entries are constructed languages, Lang Belta and Quenya.

That list is the project's real character. It is a language coverage effort sustained by volunteers, and its value is highest for languages that commercial speech services ignore.

Four ways to use it

The README describes four delivery forms, which is more than most synthesizers offer.

There is a command line program for Linux and Windows that speaks text from a file or from standard input, documented in src/espeak-ng.1.ronn. There is a shared library, a DLL on Windows, for embedding in other programs. There is a SAPI5 version for Windows, so it can be used with screen readers and other programs that support the Windows SAPI5 interface. And it has been ported to other platforms including Solaris and Mac OSX.

Features listed include selectable voices whose characteristics can be altered, output to a WAV file, SSML support that the README marks as not complete, plus HTML, and the ability to translate text into phoneme codes so it can drive another synthesis engine.

That last one is the MBROLA path: eSpeak NG converts text to phonemes with pitch and length information, and MBROLA voices produce the audio. If you need better quality and a diphone voice exists for your language, this is the documented way to get it.

Supported platforms are listed as Linux, BSD, Android from 4.0, Windows 8 and Mac, with CI shown only for Linux.

Getting and building it

The README does not include install or build commands. It points at a user guide in docs/guide.md for setting up and using eSpeak NG from the command line or as a library, and a building guide in docs/building.md for compiling from source.

One build change is important enough to be in the release notes rather than only in the docs. Version 1.52 is, in the words of its notes, the last release which supports the autoconf build system, and the instruction is to use cmake to compile espeak-ng from then on. Anyone carrying an older build script forward will need to replace it.

The repository reflects that breadth of targets: android/ and emscripten/ directories alongside src/, plus phsource/ and dictsource/ for the phoneme and dictionary sources, espeak-ng-data/ for the runtime data, and nano/ and vim/ for editor support.

For most users the practical answer is a package from their distribution rather than a source build, and the README's own pointing at the guides rather than at a command suggests the project expects that.

Where it is the wrong tool

Anywhere the voice is the product. A customer-facing assistant, an audiobook, a narration track or an accessibility feature that people will listen to for hours are all cases where the robotic quality is the wrong trade, and the README says as much.

The SSML gap matters more than it looks. The README says SSML is supported but not complete, so if you need fine control over pronunciation, pauses or emphasis through markup, check what is actually implemented before designing around it.

There is also a licensing consideration for embedding. The project is GPL-3.0, so linking the shared library into a distributed proprietary application carries the GPL's obligations. Running the command line tool as a separate process is a different situation, and which one applies to your integration is a question for someone qualified rather than for a README.

Finally, quality is uneven by language. Test the specific voices you need rather than assuming the English ones represent the rest.

Piper as the alternative

The modern alternative for local synthesis is Piper, a neural text to speech system that runs on your own hardware using per-language ONNX models, and the difference is the trade in reverse.

Piper produces far more natural speech, because the models are trained on recorded audio rather than generated from a vocal tract model. The cost is size and coverage: each language is a separate model of tens of megabytes, and the language list is a small fraction of eSpeak NG's hundred plus.

eSpeak NG wins on footprint, language breadth, speed and the ability to run on very constrained hardware, including Android from version 4.0. It also gives you phoneme output, which no neural system exposes as cleanly.

Choose Piper if you need one or two languages and the voice matters. Choose eSpeak NG if you need many languages, a few megabytes total, or a phoneme front end for something else. Cloud text to speech services are the third option, with the best quality and the widest polished language set, at the cost of a network dependency and per-character billing.

Licence and project history

eSpeak NG is released under GPL version 3 or later. The README notes one exception: the getopt.c compatibility implementation for Windows comes from the NetBSD getopt_long implementation and is licensed under a 2-clause BSD licence. The root also carries COPYING.APACHE and COPYING.UCD files, so bundled data has its own terms.

The history is longer than most open source projects. The program began as speak in 1995 for Acorn and RISC OS computers, was rewritten in 2007 as eSpeak, was maintained on GitHub from 2010 by Reece H. Dunn with an autotools port in 2012, and was officially forked in late 2015 to become eSpeak NG, with the intent of cleaning up the codebase and improving language support.

Compatibility with eSpeak is preserved where it matters: the binaries use the same command line options with additions, the build creates symlinks from espeak to espeak-ng and speak to speak-ng, and the C API is API and ABI compatible with espeak. The data directory moved from espeak-data to espeak-ng-data to avoid conflicts, and the voice, dictionary and phoneme files are not compatible with espeak. The espeakedit program is not included; its logic moved into the library.

Maintenance state

The repository was last pushed to on 2026-09-14, so the code is being worked on. The newest release is 1.52, published on 2024-12-12, with 1.51 before it on 2022-04-02.

That means roughly twenty months of commits sit outside a tag, and anyone installing from a package is likely on a build from late 2024. For a synthesizer this is less alarming than it would be for a network service, since the output does not depend on a live API, but it does mean language fixes made since then are not in released binaries.

The 1.52 notes themselves are a good summary of where the work goes: a cmake build system, stress marks added to phoneme events, many fixes to the core C code, Android direct boot support with the ndk-build step integrated into the main Gradle pipeline, and the long list of language updates.

Adopting it means tracking master for language improvements, or accepting your distribution's packaged version and its lag.

Editorial conclusion

Use eSpeak NG if you need speech output in many languages from a few megabytes of code, on constrained hardware, or if you want a phoneme front end to drive another synthesizer such as MBROLA. It suits embedded devices, screen reader integration through SAPI5 on Windows, and languages that commercial services do not cover. Do not use it where the voice is the product, because the README says formant synthesis is not as natural or smooth as larger synthesizers, and check the SSML support before designing around markup, since the README calls it incomplete. Note the licence: the project is GPL-3.0, which matters if you plan to link the library rather than call the command line tool. Verify your specific languages with real audio, since coverage is uneven and listed languages vary in how complete they are.

Frequently asked questions

What is eSpeak NG used for?

It is a text to speech synthesizer available as a command line program, a shared library, a Windows SAPI5 engine for screen readers, and a port to Android and other platforms, producing speech output or WAV files.

How many languages does eSpeak NG support?

The README says more than 100 languages and accents, and adds that several are included in varying stages of progress, with help from native speakers welcome.

Why does eSpeak NG sound robotic?

It uses formant synthesis rather than recorded human speech, which is what keeps many languages small in size. The README says the speech is clear and fast but not as natural or smooth as larger synthesizers based on recordings.

Can I build eSpeak NG with autoconf?

Not after 1.52. The release notes state that 1.52 is the last release which supports the autoconf build system and that cmake should be used to compile espeak-ng from then on.

Is eSpeak NG compatible with the original eSpeak?

Partly. The binaries use the same command line options with additions and the C API is API and ABI compatible, but the data moved from espeak-data to espeak-ng-data and the voice, dictionary and phoneme files are not compatible with espeak.

Official sources

  1. espeak-ng/espeak-ng on GitHub
  2. Issues
  3. License: GPL-3.0
  4. README
  5. Releases
Community notes

Community notes