ESpeak explained

eSpeakNG
Author:Jonathan Duddington
Developer:Alexander Epaneshnikov et al.
Programming Language:C
Operating System:Linux
Windows
macOS
FreeBSD
Genre:Speech synthesizer
License:GPLv3

eSpeak is a free and open-source, cross-platform, compact, software speech synthesizer. It uses a formant synthesis method, providing many languages in a relatively small file size. eSpeakNG (Next Generation) is a continuation of the original developer's project with more feedback from native speakers.

Because of its small size and many languages, eSpeakNG is included in NVDA[1] open source screen reader for Windows, as well as Android,[2] Ubuntu[3] and other Linux distributions. Its predecessor eSpeak was recommended by Microsoft in 2016[4] and was used by Google Translate for 27 languages in 2010;[5] 17 of these were subsequently replaced by proprietary voices.[6]

The quality of the language voices varies greatly. In eSpeakNG's predecessor eSpeak, the initial versions of some languages were based on information found on Wikipedia.[7] Some languages have had more work or feedback from native speakers than others. Most of the people who have helped to improve the various languages are blind users of text-to-speech.

History

In 1995, Jonathan Duddington released the Speak speech synthesizer for RISC OS computers supporting British English.[8] On 17 February 2006, Speak 1.05 was released under the GPLv2 license, initially for Linux, with a Windows SAPI 5 version added in January 2007.[9] Development on Speak continued until version 1.14, when it was renamed to eSpeak.

Development of eSpeak continued from 1.16 (there was not a 1.15 release)[9] with the addition of an eSpeakEdit program for editing and building the eSpeak voice data. These were only available as separate source and binary downloads up to eSpeak 1.24. The 1.24.02 version of eSpeak was the first version of eSpeak to be version controlled using subversion,[10] with separate source and binary downloads made available on SourceForge.[9] From eSpeak 1.27, eSpeak was updated to use the GPLv3 license.[10] The last official eSpeak release was 1.48.04 for Windows and Linux, 1.47.06 for RISC OS and 1.45.04 for macOS.[11] The last development release of eSpeak was 1.48.15 on 16 April 2015.[12]

eSpeak uses the Usenet scheme to represent phonemes with ASCII characters.[13]

eSpeak NG

On 25 June 2010,[14] Reece Dunn started a fork of eSpeak on GitHub using the 1.43.46 release. This started off as an effort to make it easier to build eSpeak on Linux and other POSIX platforms.

On 4 October 2015 (6 months after the 1.48.15 release of eSpeak), this fork started diverging more significantly from the original eSpeak.[15] [16]

On 8 December 2015, there were discussions on the eSpeak mailing list about the lack of activity from Jonathan Duddington over the previous 8 months from the last eSpeak development release. This evolved into discussions of continuing development of eSpeak in Jonathan's absence.[17] [18] The result of this was the creation of the espeak-ng (Next Generation) fork, using the GitHub version of eSpeak as the basis for future development.

On 11 December 2015, the espeak-ng fork was started.[19] The first release of espeak-ng was 1.49.0 on 10 September 2016,[20] containing significant code cleanup, bug fixes, and language updates.

Features

eSpeakNG can be used as a command-line program, or as a shared library.

It supports Speech Synthesis Markup Language (SSML).

Language voices are identified by the language's ISO 639-1 code. They can be modified by "voice variants". These are text files which can change characteristics such as pitch range, add effects such as echo, whisper and croaky voice, or make systematic adjustments to formant frequencies to change the sound of the voice. For example, "af" is the Afrikaans voice. "af+f2" is the Afrikaans voice modified with the "f2" voice variant which changes the formants and the pitch range to give a female sound.

eSpeakNG uses an ASCII representation of phoneme names which is loosely based on the Usenet system.

Phonetic representations can be included within text input by including them within double square-brackets. For example: espeak-ng -v en "Hello [[w3:ld]]" will say in English.

Synthesis method

eSpeakNG can be used as text-to-speech translator in different ways, depending on which text-to-speech translation step user want to use.

1. step — text to phoneme translation

There are many languages (notably English) which do not have straightforward one-to-one rules between writing and pronunciation; therefore, the first step in text-to-speech generation has to be text-to-phoneme translation.

  1. input text is translated into pronunciation phonemes (e.g. input text xerox is translated into for pronunciation).
  2. pronunciation phonemes are synthesized into sound e.g., is voiced as

To add intonation for speech i.e. prosody data are necessary (e.g. stress of syllable, falling or rising pitch of basic frequency, pause, etc.) and other information, which allows to synthesize more human, non-monotonous speech. E.g. in eSpeakNG format stressed syllable is added using apostrophe: which provides more natural speech:

For comparison two samples with and without prosody data:

Notes and References

  1. Web site: Switch to eSpeak NG in NVDA distribution · Issue #5651 · nvaccess/nvda. GitHub.
  2. Web site: eSpeak TTS for Android.
  3. Web site: espeak-ng package : Ubuntu. 21 December 2023. Launchpad.
  4. Web site: Download voices for Immersive Reader, Read Mode, and Read Aloud.
  5. Google blog, Giving a voice to more languages on Google Translate, May 2010
  6. Google blog, Listen to us now, December 2010.
  7. Web site: eSpeak Speech Synthesizer. espeak.sourceforge.net.
  8. Web site: eSpeak: Speech Synthesizer. espeak.sourceforge.net.
  9. Web site: ESpeak: Speech synthesis - Browse /Espeak at SourceForge.net.
  10. Web site: eSpeak: speech synthesis / Code / Browse Commits. sourceforge.net.
  11. Web site: Espeak: Downloads.
  12. http://espeak.sourceforge.net/test/latest.html
  13. Latin to Speech. 26 July 2007. Jan-Wilem. van Leussen. Maarten. Tromp. 6. dmy-all. 10.1.1.396.7811.
  14. Web site: Build: Allow portaudio 18 and 19 to be switched easily. · rhdunn/Espeak@63daaec. GitHub.
  15. Web site: Espeakedit: Fix argument processing for unicode argv types · rhdunn/Espeak@61522a1. GitHub.
  16. Web site: Switch to eSpeak NG in NVDA distribution · Issue #5651 · nvaccess/Nvda. GitHub.
  17. Web site: [Espeak-general] Taking ownership of the espeak project and its future | eSpeak: speech synthesis]. sourceforge.net.
  18. Web site: [Espeak-general] Vote for new main espeak developer | eSpeak: speech synthesis]. sourceforge.net.
  19. https://github.com/espeak-ng/espeak-ng/issues/2 Rebrand the espeak program to espeak-ng.
  20. Web site: Release 1.49.0 · espeak-ng/espeak-ng. GitHub.