eSpeak NG is a compact open source software text-to-speech synthesizer for Linux, Windows, Android and other operating systems

Overview

eSpeak NG Text-to-Speech


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

eSpeak NG uses a "formant synthesis" method. This allows many languages to be provided in a small size. The speech is clear, and can be used at high speeds, but is not as natural or smooth as larger synthesizers which are based on human speech recordings. It also supports Klatt formant synthesis, and the ability to use MBROLA as backend speech synthesizer.

eSpeak NG is available as:

  • A command line program (Linux and Windows) to speak text from a file or from stdin.
  • A shared library version for use by other programs. (On Windows this is a DLL).
  • A SAPI5 version for Windows, so it can be used with screen-readers and other programs that support the Windows SAPI5 interface.
  • eSpeak NG has been ported to other platforms, including Solaris and Mac OSX.

Features

  • Includes different Voices, whose characteristics can be altered.
  • Can produce speech output as a WAV file.
  • SSML (Speech Synthesis Markup Language) is supported (not complete), and also HTML.
  • Compact size. The program and its data, including many languages, totals about few Mbytes.
  • Can be used as a front-end to MBROLA diphone voices. eSpeak NG converts text to phonemes with pitch and length information.
  • Can translate text into phoneme codes, so it could be adapted as a front end for another speech synthesis engine.
  • Potential for other languages. Several are included in varying stages of progress. Help from native speakers for these or other languages is welcome.
  • Written in C.

See the CHANGELOG for a description of the changes in the various releases and with the eSpeak NG project.

The following platforms are supported:

Platform Minimum Version Status
Linux Travis continuous integration builds on Linux
BSD
Android 4.0
Windows Windows 8
Mac

Documentation

  1. User guide explains how to set up and use eSpeak NG from command line or as a library.
  2. Building guide provides info how to compile and build eSpeak NG from the source.
  3. Index provides full list of more detailed information for contributors and developers.
  4. Look at contribution guide to start your contribution.
  5. Look at eSpeak NG roadmap to participate in development of eSpeak NG.

eSpeak Compatibility

The espeak-ng binaries use the same command-line options as espeak, with several additions to provide new functionality from espeak-ng such as specifying the output audio device name to use. The build creates symlinks of espeak to espeak-ng, and speak to speak-ng.

The espeak speak_lib.h include file is located in espeak-ng/speak_lib.h with an optional symlink in espeak/speak_lib.h. This file contains the espeak 1.48.15 API, with a change to the ESPEAK_API macro to fix building on Windows and some minor changes to the documentation comments. This C API is API and ABI compatible with espeak.

The espeak-data data has been moved to espeak-ng-data to avoid conflicts with espeak. There have been various changes to the voice, dictionary and phoneme files that make them incompatible with espeak.

The espeak-ng project does not include the espeakedit program. It has moved the logic to build the dictionary, phoneme and intonation binary files into the libespeak-ng.so file that is accessible from the espeak-ng command line and C API.

History

The program was originally known as speak and originally written for Acorn/RISC_OS computers starting in 1995 by Jonathan Duddington. This was enhanced and re-written in 2007 as eSpeak, including a relaxation of the original memory and processing power constraints, and with support for additional languages.

In 2010, Reece H. Dunn started maintaining a version of eSpeak on GitHub that was designed to make it easier to build eSpeak on POSIX systems, porting the build system to autotools in 2012. In late 2015, this project was officially forked to a new eSpeak NG project. The new eSpeak NG project is a significant departure from the eSpeak project, with the intention of cleaning up the existing codebase, adding new features, and adding to and improving the supported languages.

The historical branch contains the available older releases of the original eSpeak that are not contained in the subversion repository.

1.24.02 is the first version of eSpeak to appear in the subversion repository, but releases from 1.05 to 1.24 are available at http://sourceforge.net/projects/espeak/files/espeak/.

These early releases have been checked into the historical branch, with the 1.24.02 release as the last entry. This makes it possible to use the replace functionality of git to see the earlier history:

git replace 8d59235f 63c1c019

NOTE: The source releases contain the big_endian, espeak-edit, praat-mod, riskos, windows_dll and windows_sapi folders. These do not appear in the source repository until later releases, so have been excluded from the historical commits to align them better with the 1.24.02 source commit.

License Information

eSpeak NG Text-to-Speech is released under the GPL version 3 or later license.

The ieee80.c implementation is taken directly from ToFromIEEE.c.txt which has been made available for use in Open Source applications per the license statement on http://www.realitypixels.com/turk/opensource/. The only modifications made to the code is to comment out the TEST_FP define to make it useable in the eSpeak NG library, and to fix compiler warnings.

The getopt.c compatibility implementation for getopt support on Windows is taken from the NetBSD getopt_long implementation, which is licensed under a 2-clause BSD license.

Android is a trademark of Google Inc.

Issues
  • Build fails on MacOS Catalina

    Build fails on MacOS Catalina

    Trying to build espeak-ng on Catalina today (on two different machines) resulted in a fail during the compilation of phoneme data. The tool seems to perform strange operations :

    ...
      CC       src/libespeak-ng/la-event.lo
      CC       src/libespeak-ng/la-fifo.lo
      CCLD     src/libespeak-ng.la
      CCLD     src/espeak-ng
    ESPEAK_DATA_PATH=/Users/ben/poub/espeak-ng src/espeak-ng --compile-intonations && \
    		ESPEAK_DATA_PATH=/Users/ben/poub/espeak-ng src/espeak-ng --compile-phonemes && \
    		touch phsource/phonemes.stamp
    Compiled 26 intonation tunes: 0 errors.
    Unknown phoneme table: 'en'
    Can't read dictionary file: '/Users/ben/poub/espeak-ng/espeak-ng-data/en_dict'
    Compiling phoneme data: /Users/ben/poub/espeak-ng/espeak-ng-data/../phsource/phonemes
    phonemes(129): Expected a number
    phonemes(129): Expected ')'
    phonemes(129): The phoneme feature is not recognised: '1='.
    phonemes(129): The phoneme feature is not recognised: '2'.
    phonemes(129): The phoneme feature is not recognised: '2700'.
    phonemes(129): The phoneme feature is not recognised: '400'.
    phonemes(129): The phoneme feature is not recognised: '600'.
    phonemes(129): The phoneme feature is not recognised: '300'.
    phonemes(129): The phoneme feature is not recognised: '80'.
    phonemes(131): The phoneme feature is not recognised: '1'.
    phonemes(132): The phoneme feature is not recognised: '_'.
    phonemes(132): The phoneme feature is not recognised: 'engthmod'.
    phonemes(133): The phoneme feature is not recognised: '3'.
    phonemes(137): Expected AND, OR, THEN
    phonemes(137): Expected a condition, not 'phonemetable'
    phonemes(137): Unexpected keyword 'phonemetable'
    phonemes(137): Expected AND, OR, THEN
    phonemes(138): Expected a condition, not 'base1'
    phonemes(138): Unexpected keyword 'base1'
    phonemes(138): Expected AND, OR, THEN
    phonemes(140): Expected a condition, not 'ph_icelandic'
    phonemes(140): Unexpected keyword 'ph_icelandic'
    phonemes(140): Expected AND, OR, THEN
    phonemes(140): Expected a condition, not 'ja'
    phonemes(140): Unexpected keyword 'ja'
    phonemes(141): Expected AND, OR, THEN
    ... etc ... etc ...
    

    Strangely, I get similar bad results on older commits (for which I'm sure it was working before under MacOS Mojave). Does anyone have a clue on how to investigate this? Could it be related to the fact that 64-bits applications and compilation have been ditched from MacOS (is espeak-ng 64-bits bullet proof) ?

    Ben

    resolved/fixed 
    opened by BenTalagan 41
  • problems with russian language

    problems with russian language

    hello.

    with recent changes with russian language pronunciation of several words were changed. for example word "общение" letter щ sch is incorrectly pronounced.

    letters when typing is also pronounced incorrectly, they are short for example с б в ж к letter л is very soft.

    i have a question why person who has no knowledge of this language such as @valdisvi is changing so serious things? if he had, these mistakes which makes synthesizer usable in russian language never be existed.

    please revert changes or fix them.

    thanks.

    opened by beqabeqa473 35
  • New release of espeak

    New release of espeak

    As per: #792

    Over at nvaccess/nvda we have started our 2021.1 release process by updating the version of espeak-ng included. We selected the latest espeak-ng commit (at the time) and would love it if an espeak-ng release process could be started that we could use for the final release.

    We have updated to espeak-ng commit 82d5b7b04488412845101851f36da6953cac4378F The NVDA 2021.1 release will be made in the first quarter of 2021.

    opened by feerrenrut 30
  • add SpeechPlayer as Klatt6

    add SpeechPlayer as Klatt6

    I managed to add NV SpeechPlayer as Klatt 6. I also was able to remove the Windows specific code from speechPlayer, and the library still works. I am using it with NVDA as I write this. I updated the visual studio project with the new source files. To update the other projects, you should add the following files:

    • libespeak-ng/sPlayer.c
    • speechPlayer/frame.cpp
    • speechPlayer/speechPlayer.cpp
    • speechPlayer/speechWaveGenerator.cpp I also added a compiler define for including SpeechPlayer, INCLUDE_SPEECHPLAYER.
    opened by datajake1999 29
  • (Turkish) vocalization of words with double letters saying of one letters

    (Turkish) vocalization of words with double letters saying of one letters

    Hello,

    there has been some shortcomings in Espeak's Turkish voice synthesis for a long time.

    The same letter can be found twice in some words in Turkish. (For example, [tr}tutturmak, elli)

    Espeak say these words in a single letter. (tuturmak, eli)

    I don't have enough C knowledge to develop Espeak. So I can only give information.

    Small information

    This issue does not exist in version eSpeak-2016.1. I don't know Espeak's versioning system. I'm not sure of the values ​​I've given above, and if you have any questions, I'll try to help. Starting from the old version, we can find out where the problem is from the changing Turkish files.

    I apologize for inadequate English. The topic is language, I would appreciate it if you simply write your answers. I don't understand complex sentences.

    opened by ghost 23
  • Add Shan Language (sh)

    Add Shan Language (sh)

    Shan(Tai) Language Language name : Shan(Tai) Language code : sh Wiki : Shan Language

    Actually, we are very new to this kind of TTS technology and need to learn how phoneme table works. But please consider adding Shan language in espeak-ng, Thanks in advance.

    • Shan Developers
    opened by ronaldaug 17
  • Broken pronunciations in the bulgarian language of eSpeak-NG 1.49.3-dev

    Broken pronunciations in the bulgarian language of eSpeak-NG 1.49.3-dev

    Hello eSpeak-NG developers and maintainers,

    I'm using the so called "alpha" snapshots of the NVDA screen reader.

    Recently, the version of eSpeak used in it was updated from 1.49.1 to 1.49.3-dev. After the update, the bulgarian language in eSpeak-NG started sounding wrong. It started mispronouncing a lot of words. Now those mispronounced words sound like they are spoken by a russian voice and not a bulgarian one, even though the eSpeak language is set to "Bulgarian" and not "Russian".

    Sorry that I can't give you more technical details on the problem, but I'm not a specialist or an expert in regards to speech synthesis or linguistics.

    Anyway, if you need more information from me in regards to the issue, feel free to ask and I'll try to provided if I can.

    Thanks much in advance!

    resolved/fixed 
    opened by k-kolev1985 16
  • Fix several Microsoft-specific terms

    Fix several Microsoft-specific terms

    Change several Microsoft-specific terms to their most commonly used pronunciations as heard internally:

    opened by codeofdusk 15
  • Unable to compile zhy dictionay on Windows

    Unable to compile zhy dictionay on Windows

    The NVDA project has had an issue open for a while. We'd like to ask for some assistance to identify the issue. This process works for all other languages.

    Our build script for espeak dictionaries:

    • Calls espeak_Initialize
    • Constructs a espeak_VOICE struct (see struct definition below) with language set to zhy\0
    • Calls espeak_SetVoiceByProperties which returns 2 (ENS_VOICE_NOT_FOUND)

    Struct:

    class espeak_VOICE(ctypes.Structure):
    	_fields_=[
    		('name',ctypes.c_char_p),
    		('languages',ctypes.c_char_p),
    		('identifier',ctypes.c_char_p),
    		('gender',ctypes.c_byte),
    		('age',ctypes.c_byte),
    		('variant',ctypes.c_byte),
    		('xx1',ctypes.c_byte),
    		('score',ctypes.c_int),
    		('spare',ctypes.c_void_p),
    	]
    

    Thanks!

    opened by feerrenrut 15
  • espeak crashes with sum strings

    espeak crashes with sum strings

    i can crash espeak with sum long strange strings.

    platforms

    • nvda 20.3
    • android 10

    i attaching file with such strings: bad-strings.txt

    such strings is common on webpages so for me espeak-ng is crashes often enough.

    opened by alex19EP 15
  •  In French: bad pronunciation of the letter

    In French: bad pronunciation of the letter "ô"

    Hello,

    Environment:

    • Debian 10 "Buster"
    • Speech Dispatcher 0.9 and master
    • Espeak NG 1.49 and master
    • In French FR default voice

    Espeak NG no longer pronounces the following words correctly:

    • Plutôt
    • Bientôt

    If I remove the "^" the words are correctly pronounced so the word are:

    • Plutot
    • Bientot

    The pronunciation was good with the old espeak.

    Let me know if I could help.

    Best regards.

    opened by alexarnaud 15
  • mto: unable to pronounce 20s (21, 22, etc.)

    mto: unable to pronounce 20s (21, 22, etc.)

    STR: Attempt to read the numbers 21, 22, 23... 29 with mto espeak-ng.

    Expected: Numbers are read.

    Actual: eSpeak remains silent.

    Version tested: commit dc153592.

    opened by codeofdusk 0
  • Android Project Not Build

    Android Project Not Build

    `Executing tasks: [:assembleDebug] in project /Users/denyskolesnikov/AndroidStudioProjects/espeak-ng/android

    Task :checkData FAILED Task :configureNdkBuildDebug[arm64-v8a] Task :buildNdkBuildDebug[arm64-v8a]

    FAILURE: Build failed with an exception.

    • Where: Build file '/Users/denyskolesnikov/AndroidStudioProjects/espeak-ng/android/build.gradle' line: 30

    • What went wrong: Execution failed for task ':checkData'.

    assert file("../espeak-ng-data/en_dict").exists() | | | false /Users/denyskolesnikov/AndroidStudioProjects/espeak-ng/espeak-ng-data/en_dict

    • Try:

    Run with --info or --debug option to get more log output. Run with --scan to get full insights.

    • Exception is: org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':checkData'. at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:147) at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:282) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:145) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:133) at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:77) at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46) at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51) at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57) at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56) at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52) at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204) at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53) at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52) at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:74) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:333) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:320) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:313) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:299) at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:143) at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:227) at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:218) at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:140) at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64) at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48) Caused by: Assertion failed:

    assert file("../espeak-ng-data/en_dict").exists() | | | false /Users/denyskolesnikov/AndroidStudioProjects/espeak-ng/espeak-ng-data/en_dict

    at build_6ovm9vo6j50f3h5zpu5y2sps5$_run_closure3$_closure8.doCall(/Users/denyskolesnikov/AndroidStudioProjects/espeak-ng/android/build.gradle:30)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at org.gradle.api.internal.AbstractTask$ClosureTaskAction.doExecute(AbstractTask.java:751)
    at org.gradle.api.internal.AbstractTask$ClosureTaskAction.lambda$execute$0(AbstractTask.java:738)
    at org.gradle.configuration.internal.DefaultUserCodeApplicationContext$CurrentApplication.reapply(DefaultUserCodeApplicationContext.java:98)
    at org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:738)
    at org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:713)
    at org.gradle.api.internal.tasks.execution.TaskExecution$3.run(TaskExecution.java:242)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:47)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:68)
    at org.gradle.api.internal.tasks.execution.TaskExecution.executeAction(TaskExecution.java:227)
    at org.gradle.api.internal.tasks.execution.TaskExecution.executeActions(TaskExecution.java:210)
    at org.gradle.api.internal.tasks.execution.TaskExecution.executeWithPreviousOutputFiles(TaskExecution.java:193)
    at org.gradle.api.internal.tasks.execution.TaskExecution.execute(TaskExecution.java:171)
    at org.gradle.internal.execution.steps.ExecuteStep.executeInternal(ExecuteStep.java:89)
    at org.gradle.internal.execution.steps.ExecuteStep.access$000(ExecuteStep.java:40)
    at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:53)
    at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:50)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)
    at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:50)
    at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:40)
    at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:68)
    at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:38)
    at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:48)
    at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:36)
    at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:41)
    at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:74)
    at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:55)
    at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:51)
    at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:29)
    at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:61)
    at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:42)
    at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:60)
    at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:27)
    at org.gradle.internal.execution.steps.BuildCacheStep.executeWithoutCache(BuildCacheStep.java:180)
    at org.gradle.internal.execution.steps.BuildCacheStep.lambda$execute$1(BuildCacheStep.java:75)
    at org.gradle.internal.Either$Right.fold(Either.java:175)
    at org.gradle.internal.execution.caching.CachingState.fold(CachingState.java:59)
    at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:73)
    at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:48)
    at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:36)
    at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:25)
    at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:36)
    at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:22)
    at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:110)
    at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$2(SkipUpToDateStep.java:56)
    at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:56)
    at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:38)
    at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:73)
    at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:44)
    at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:37)
    at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:27)
    at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:89)
    at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:50)
    at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:114)
    at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:57)
    at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:76)
    at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:50)
    at org.gradle.internal.execution.steps.SkipEmptyWorkStep.executeWithNoEmptySources(SkipEmptyWorkStep.java:249)
    at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:86)
    at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:54)
    at org.gradle.internal.execution.steps.RemoveUntrackedExecutionStateStep.execute(RemoveUntrackedExecutionStateStep.java:32)
    at org.gradle.internal.execution.steps.RemoveUntrackedExecutionStateStep.execute(RemoveUntrackedExecutionStateStep.java:21)
    at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsStartedStep.execute(MarkSnapshottingInputsStartedStep.java:38)
    at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:43)
    at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:31)
    at org.gradle.internal.execution.steps.AssignWorkspaceStep.lambda$execute$0(AssignWorkspaceStep.java:40)
    at org.gradle.api.internal.tasks.execution.TaskExecution$4.withWorkspace(TaskExecution.java:287)
    at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:40)
    at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:30)
    at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:37)
    at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:27)
    at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:44)
    at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:33)
    at org.gradle.internal.execution.impl.DefaultExecutionEngine$1.execute(DefaultExecutionEngine.java:76)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:144)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:133)
    at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:77)
    at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
    at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51)
    at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
    at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
    at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
    at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
    at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
    at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)
    at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
    at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:74)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:333)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:320)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:313)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:299)
    at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:143)
    at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:227)
    at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:218)
    at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:140)
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
    at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
    
    • Get more help at https://help.gradle.org

    BUILD FAILED in 1s 3 actionable tasks: 3 executed `

    opened by kolesnikov-denys-dev 3
  • transform from text to .pho file

    transform from text to .pho file

    Hi,

    I'm now working on a project to generate phonemes and translate them to speech. What I'm wondering is that when you do the transform from text to phonemes in espeak-ng, how do you determine the length and the pitch of them? Could you show me the specfic part of code that does this or describe briefly how this could be done? That would be of very great help!

    opened by sunhaozhepy 0
  • can you please automatic language switching option in espeak settings?

    can you please automatic language switching option in espeak settings?

    hi. when using nvda, i am very glad and appreciate nvda developers and thanks God, because they provided an option in nvda voice settings that we can control whether nvda switches to another languages or not. in nvda voice settings, i disabled automatic language switching and i have no any issue when using nvda. but in android, unfortunately this feature is not available in talkback or espeak for android. so, espeak for android, switching to another languages by mistake which is a very critical issue especially for persian users! my native language is persian, and espeak for android switches to arabic language and read persian documents letter by letter which i cant understand at all! for another languages, espeak for android switches from english united kingdom to united states and english united kingdom rp. can you please add an option in espeak settings that we can choose to disable or enable automatic language switching as we can simply do this in nvda's voice settings? thanks so much for your great programs. God bless you and His infinite mercy i pray for you!

    opened by zahra21 0
  • please provide sapi5 version of espeak for windows.

    please provide sapi5 version of espeak for windows.

    hi. i wish that you provide espeak sapi5 version for windows as you did before. many people, need it like myself. for example: i need espeak sapi5 that i can convert my favorite books and articles in to audio files. many people maybe dont use nvda screen reader, they may just need text to speech capability, or other people who use other screen readers. windows xp, vista, seven, eight, ten, eleven are all support sapit5 and nvda itself supports sapi5 and even sapi4. but i dont understand why espeak sapi5 version is not available anymore! current espeak msi version is not suitable for novice users. it has not any graphical interface in desktop, all programs, etc. i installed it, but could not use it! God bless you and His infinite mercy i pray for you!

    opened by zahra21 0
Releases(1.51)
  • 1.51(Apr 2, 2022)

    new features:

    • Add support for speechPlayer.
    • Add more tests to check the various parts of espeak-ng.
    • Various changes to clean up the codebase (Juho Hiltunen)
    • Remove support for l_length_mods language option
    • Restructure "option brackets" language option to "brackets" and "bracketsAnnounced"
    • Restructure "stressLength" and "stressAdd" language option
    • New Language option: "lowercaseSentence" for ending a sentence if a period is followed by a lower case letter
    • Add voice variants
    • Rename zh to cmn (Mandarin)
    • Rename zhy to yue (Cantonese)
    • cmn (Mandarin) now assumes all latin characters all English text Use cmn-latn-pinyin for interpreting latin characters as pinyin
    • Update list of voice varants for Android application
    • Add Chromium extension (guest271314)
    • Replace ieee80.c by a free software implementation (Ulrich Müller)

    bug fixes:

    • Fix reading malformed SSML (Christopher Brannon)
    • Fix memory allocation (Christopher Brannon)
    • Fix building and phoneme compilation (John Bowler)
    • Fix build scripts for Android (Peter Vágner, Minas Tirith Citizen)

    documentation:

    • Add documentation about voice and language options.
    • Add documentation about dictionary flags.

    updated languages:

    • ar (Arabic) -- king-dahmanus
    • ba (Bashkir) -- boracasli98, Valdis Vitolins, Juho Hiltunen
    • cmn (Mandarin) -- Silas S. Brown, Rongcui Dong, Icenowy Zheng, Juho Hiltunen
    • de (German) -- Karl Eick, Henry Krumb
    • el (Modern Greek) -- Reece Dunn (support for variant Greek letter forms)
    • en (English) -- Steven Presser, Ben Talagan
    • eo (Esperanto) -- AlsoScratch
    • eu (Basque) -- agonzalezd
    • fa (Farsi/Persian) -- Shadyar Khodayari
    • ga (Gaelic (Irish)) Chen, Chien-ting
    • grc (Ancient Greek) -- Reece Dunn (support for variant Greek letter forms)
    • hak (Hakka Chinese) -- Juho Hiltunen
    • haw (Hawaiian) -- Juho Hiltunen
    • ka (Georgian) -- Juho Hiltunen
    • kok (Konkani) -- Juho Hiltunen
    • nb (Norwegian Bokmål) -- Juho Hiltunen
    • nci (Classical Nahuatl) -- Juho Hiltunen
    • hy (Armenian) -- tigransimonyan
    • ia (Interlingua) -- nesrad
    • it (Italian) -- Christian Leo
    • ja (Japanese) -- fukuen, Juho Hiltunen
    • jbo (Lojban) -- Juho Hiltunen, xunsku
    • lv (Latvian) -- Valdis Vitolins
    • mi (Māori) -- boracasli98
    • py (Pyash) -- Andrii Logan Zvorygin
    • shn (Shan Tay Yai) -- ronaldaug
    • tr (Turkish) -- boracasli98, SeanTolstoyevski
    • ur (Urdu) -- Ejaz Shah
    • uz (Uzbek) -- boracasli98, Valdis Vitolins, Andiv06
    • yue (Cantonese) -- Andiv06

    new languages:

    • be (Belarusian) -- Sergei B
    • chr (Cherokee) -- Michael Conrad
    • cv (Chuvash) -- boracasli98, Valdis Vitolins
    • en-us-nyc (English, New York City) -- Richard Calvi
    • haw (Hawaiian) -- Valdis Vitolins
    • he (Hebrew) -- boracasli98, Valdis Vitolins
    • io (Ido) -- José Miguel López, Valdis Vitolins
    • lb (Luxembourgish) -- Marco Barnig, Valdis Vitolins
    • ltg (Latgalian) -- Valdis Vitolins
    • nog (Nogai) -- boracasli98, Valdis Vitolins
    • piqd (Klingon) -- Valdis Vitolins
    • qu (Quechua) -- Valdis Vitolins
    • qdb (Lang Belta) -- Da Def, Valdis Vitolins
    • qya (Quenya) -- Lucas Werkmeister
    • sjn (Sindarin) -- Lucas Werkmeister
    • smj (Lule Saami) -- Katri Hiovain, Sebastien Le Maguer
    • th (Thai) -- Valdis Vitolins
    • tk (Turkmen) -- boracasli98, Valdis Vitolins
    • ug (Uyghur) -- boracasli98, Valdis Vitolins
    • uk (Ukrainian) -- Valdis Vitolins
    Source code(tar.gz)
    Source code(zip)
    espeak-ng-1.51.tar.gz(1.03 MB)
    espeak-ng-X64.msi(5.72 MB)
    espeak-ng-X86.msi(5.70 MB)
    espeak-release-signed.apk(5.81 MB)
  • 1.50(Dec 2, 2019)

    1.50

    • Add a --disable-rpath option to prevent libtool hardcoding rpaths in the executable.
    • Renamed the hy-arevmda language to hyw, following the 2018-03-30 change to the BCP 47 language subtag registry making the newly registered hyw language code the preferred value for hy-arevmda. This change keeps support for detecting the hy-arevela and hy-arevmda language tags.
    • Support any length replacement rule strings for the source part of the rule (replacing from the 'source' string to the 'target' string).
    • Add more tests to check the various parts of espeak-ng.
    • Various changes to clean up the codebase.
    • Fix various compiler warnings (-Winitialized, -Wmissing-prototypes, -Wreturn-type, and -Wunused).

    security:

    • Fix several crashes in the emoji support.
    • Fix several static analysis issues detected by Coverity Scan.
    • Fix several static analysis issues detected by Microsoft Visual C++ /analyze.
    • oss-fuzz support for the SSML logic.
    • Fix running make check with -fsanitize=address (LLVM AddressSanitizer).

    documentation:

    • document the Kirshenbaum phoneme transcription scheme (used as the basis of espeak phonemes).
    • document the X-SAMPA phoneme transcription scheme.
    • document the Conlang X-SAMPA phoneme transcription scheme.

    emoji:

    • Update the emoji to Unicode 11.0.
    • Update the emoji translations to CLDR 33.1.
    • gd (Scottish Gaelic)
    • sd (Sindhi)
    • yue (Chinese (Cantonese))

    new languages:

    • ba (Bashkir) -- tc-dl, Valdis Vitolins
    • hak (Hakka Chinese) -- Chen Chien-ting
    • ht (Haitian Creole) -- Valdis Vitolins
    • kk (Kazakh) -- boracasli14, Valdis Vitolins
    • py (Pyash) -- Logan Streondj
    • quc (K'iche') -- Valdis Vitolins
    • ru-lv (Russian Latvia) -- Valdis Vitolins
    • shn (Shan Tay Yai) -- ronaldaug
    • uz (Uzbek) -- Valdis Vitolins

    updated languages:

    • af (Afrikaans) -- Christo de Klerk
    • ar (Arabic) -- Valdis Vitolins, Mark Readdie, Hesham Assabahi
    • cmn (Chinese Mandarin) -- materia-cccp
    • de (German) -- Reece Dunn, Karl Eick
    • en (English) -- Reece Dunn
    • fa (Farsi/Persian) -- Shadyar Khodayari
    • fi (Finnish) -- Juho Hiltunen
    • fr (French) -- Shallowmallow, Karl Eick, maiido, Reece Dunn
    • ku (Kurdish) -- rojanu
    • it (Italian) -- chrislm
    • lv (Latvian) -- Valdis Vitolins
    • my (Myanmar/Burmese) -- Min Maung
    • ru (Russian) -- Valdis Vitolins, Reece Dunn
    • sd (Sindhi) -- Ejaz Shah
    • ur (Urdu) -- Ejaz Shah
    • vi (Vietnamese) -- Anh Hoang Nguyen
    Source code(tar.gz)
    Source code(zip)
    espeak-ng-1.50.tgz(20.35 MB)
    espeak-ng-20191129-b702b03-x64.msi(2.83 MB)
    espeak-ng-20191129-b702b03-x86.msi(2.81 MB)
  • 1.49.2(Sep 24, 2017)

    • Provide more validation when reading phoneme tables and voice/language files.
    • Removed support for phoneme equivalence tables. These were disabled in the French and German language files.
    • Allow pre- as well as post-jump rules in dictionary files.
    • Support building the Windows version with Visual Studio 2013.
    • Use language and accent names consistently across the language files.
    • Group the encoding handling into a single place with a clean interface and tests.
    • Support all ISO 8859 encodings.
    • Support for multi-word text replacements in language dictionaries.
    • Support compiling _emoji dictionary files if present.

    bug fixes:

    • Fix running make clean ; make.
    • Fix reading stdin buffers larger than 1000.
    • Fixed various language and parent BCP 47 codes (jp is now ja).
    • Fixed several crashes and bugs in espeak_SetVoiceByName/Properties.

    new languages:

    • bpy (Bishnupriya Manipuri) -- Vardhan
    • fr-CH (French (Switzerland)) -- Claude Beazley
    • kok (Konkani) -- Vardhan
    • mi (Māori) -- Graham Oliver
    • sd (Sindhi, Arabic script) -- Vardhan, Ejaz Shah

    updated languages:

    • af (Afrikaans) -- Christo de Klerk
    • de (German) -- Valdis Vitolins
    • du (Dutch) -- Leonard de Ruijter
    • en (English) -- Reece Dunn. Thanks to Kendell Clark for identifying mispronunciations.
    • fa (Farsi/Persian) -- Shadyar Khodayari
    • fr (French) -- Valdis Vitolins; Reece Dunn
    • gu (Gujarati) -- Vardhan
    • hi (Hindi) -- Vardhan
    • it (Italian) -- chrislm
    • ky (Kyrgyz) -- JRMeyer
    • lv (Latvian) -- Valdis Vitolins
    • mr (Marathi) -- Vardhan
    • or (Oriya) -- Vardhan
    • ur (Urdu) -- Ejaz Shah

    Unicode Emoji support (from the Unicode Emoji 5.0, and CLDR 31.0.1 data files):

    • af (Afrikaans)
    • am (Amharic)
    • ar (Arabic)
    • az (Azerbaijani)
    • bg (Bulgarian)
    • bn (Bengali)
    • bs (Bosnian)
    • ca (Catalan)
    • cs (Czech)
    • cy (Welsh)
    • da (Danish)
    • de (German)
    • el (Greek)
    • en (English) -- American
    • es (Spanish)
    • et (Estonian)
    • eu (Basque)
    • fa (Farsi/Persian)
    • fi (Finnish)
    • fr (French)
    • ga (Irish Gaelic)
    • gu (Gujarati)
    • hi (Hindi)
    • hr (Croatian)
    • hu (Hungarian)
    • hy (Armenian)
    • id (Indonesian)
    • is (Icelandic)
    • it (Italian)
    • ja (Japanese)
    • ka (Georgian)
    • kn (Kannada)
    • ko (Korean)
    • ky (Kyrgyz)
    • lt (Lithuanian)
    • lv (Latvian)
    • mk (Macedonian)
    • ml (Malayalam)
    • mr (Marathi)
    • ms (Malay)
    • my (Myanmar/Burmese)
    • ne (Nepali)
    • nl (Dutch)
    • or (Oriya)
    • pa (Punjabi)
    • pl (Polish)
    • pt (Portuguese) -- Brazil
    • ro (Romanian)
    • ru (Russian)
    • si (Sinhala)
    • sk (Slovak)
    • sl (Slovenian)
    • sq (Albanian)
    • sr (Serbian)
    • sv (Swedish)
    • sw (Swahili)
    • ta (Tamil)
    • te (Telugu)
    • tr (Turkish)
    • ur (Urdu)
    • vi (Vietnamese)
    • zh (Chinese)
    Source code(tar.gz)
    Source code(zip)
    espeak-ng-1.49.2.tar.gz(32.47 MB)
    espeak-ng-x64.msi(2.67 MB)
    espeak-ng-x86.msi(2.65 MB)
  • 1.49.1(Jan 21, 2017)

    • Vim syntax support for rule files.
    • Replace ieee80.c with the implementation at http://www.realitypixels.com/turk/opensource/ToFromIEEE.c.txt for Debian open source license compliance.
    • Documentation updates.
    • Emscripten support.
    • Merged the Android port into the main espeak-ng codebase.
    • Extend --compile-phoneme to support specifying the source directory for phoneme files.
    • Support using any directory as the data home, not just espeak-ng-data.
    • Don't install the default voice: use en as the default voice.

    NOTE: The merger of the Android code is currently experimental. It is missing support for recognising Unicode characters.

    bug fixes:

    • Fix .Lnn rule groups to allow groups above 62.
    • Fix reporting the eSpeak NG version in the --version string and Windows installer.
    • Fix a crash when calling LoadDictionary when using clang.
    • Threading fixes and Mac OSX portability for the fifo and event code.
    • Fixes for running the spect code on big-endian architectures.
    • Fix determining the voice directory when installing the 32-bit Windows binaries on a 64-bit Windows system.
    • Fix a regression with the saved parameter logic.
    • Reduce the default buffer length to 60mS to improve latency.
    • Don't override buffer length when using espeak-ng for audio.
    • Fix detecting doubled consonants when using Unicode characters.
    • Fix speaking 1,,2, etc. in languages that use , as a decimal separator.

    updated languages:

    • af (Afrikaans) -- Christo de Klerk
    • en (English) -- Valdis Vitolins
    • fa (Farsi/Persian) -- Shadyar Khodayari
    • it (Italian) -- chrislm
    • ky (Krygyz) -- JRMeyer
    • lv (Latvian) -- Valdis Vitolins
    • tr (Turkish) -- Valdis Vitolins

    new languages:

    • ar (Arabic) -- Taha Zerrouki
    • jp (Japanese) -- Reece Dunn (NOTE: Hiragana and Karakana only.)
    Source code(tar.gz)
    Source code(zip)
    espeak-ng-1.49.1.tar.gz(26.96 MB)
    espeak-ng-x64.msi(1.58 MB)
    espeak-ng-x86.msi(1.56 MB)
  • 1.49.0(Sep 10, 2016)

    • Support the --compile-mbrola command-line option.
    • Support the --compile-phonemes command-line option.
    • Support the --compile-intonations command-line option.
    • Support SSML <phoneme alphabet="espeak" ph="..."> tags.
    • Added man files for the speak-ng and espeak-ng command-line programs.
    • Created a companion espeak-ng API to provide more detailed error codes and provide access to the new espeak-ng functionality.
    • Fixed many logic and security issues reported by clang scan-build, Coverity and msvc /analyze.
    • Group languages by their language family and use BCP47 compliant names.
    • Support for Windows and BSD platforms.
    • Removed support for WinCE, MS-DOS and RiscOS.
    • Add support for maintainer and status field in voice files for tracking voice maintenance.
    • Vim syntax highlighting for espeak dictionary (list and rules) files.
    • Support reading input from named pipes.
    • Fix wav file truncation when reading multiline text from stdin or a named pipe.

    build:

    • Build the code with a C99 compiler, instead of a C++ compiler.
    • Provide a pkg-config file (patch by Luke Yelavich).
    • Use -fPIC to support sparc/sparc64 architectures.
    • Removed the local portaudio header files.
    • Use the system's sonic library and header files.
    • Output phoneme compilation errors to stderr.
    • Generate build failures if building phoneme, intonation or dictionary files contain errors.
    • Provide modern Visual Studio project files to build eSpeak NG on Windows, with a WiX-based project to create an MSI installer.
    • Use the NetBSD getopt_long implementation on Windows.

    restructuring:

    • Moved the library code to src/libespeak-ng.
    • Renamed espeak to espeak-ng.
    • Renamed speak to speak-ng.
    • Use the libespeak-ng API in speak-ng using a shared implementation with espeak-ng.
    • Moved the code to build the mbrola voice data, phoneme tables and intonation data to libespeak-ng.
    • Removed the espeakedit program and the associated wxWidgets dependency.
    • Removed the platforms directory and approaching portability in a similar way to how libressl handles portability.
    • Converted the documentation to markdown.
    • Group the Windows and POSIX mbrowrap code to provide the mbrowrap.h implementation in a single place.
    • Replaced the audio APIs with PCAudioLib to improve portability of the audio and to share that across different projects.
    • Reworked the synchronous audio to share the code paths with asynchronous audio.

    cleanup:

    • Removed unused/empty internal header files.
    • Removed unused and commented out code.
    • Reformatted the code to use a consistent style and indentation.
    • Fixed many GCC and clang warnings.
    • Improved the error handling within the codebase to report the underlying error where possible.
    • Inlined several wrapper methods that were adding little/no value.

    updated languages:

    • en (English) -- Thanks to Kendell Clark for identifying mispronunciations.
    • el (Greek) : improved polytonic Greek support
    • es (Spanish) : ChrisLeo (improved intonations)
    • fa (Persian) -- Shadyar Khodayari
    • fr (French) -- Thomas Guillory
    • ga (Irish Gaelic) -- Jim Regan
    • it (Italian) -- ChrisLeo
    • lv (Latvian) -- Valdis Vitolins

    new languages:

    • gn (Guarani) -- ChrisLeo
    • ky (Kyrgyz) -- JRMeyer
    • mb-br2 (Brazillian Portuguese)
    • mb-de* (German) : extend support coverage of the German MBROLA voices
    • mb-lt1 (Lithuanian) -- embar
    • mb-lt2 (Lithuanian) -- embar
    • mt (Maltese)
    • my (Myanmar/Burmese) -- Min Maung, Lwin Moe
    • tn (Setswana)
    • tt (Tatar)
    Source code(tar.gz)
    Source code(zip)
    espeak-ng-x64.msi(1.58 MB)
    espeak-ng-x86.msi(1.56 MB)
Audacity is an easy-to-use, multi-track audio editor and recorder for Windows, Mac OS X, GNU/Linux and other operating systems

Audacity is an easy-to-use, multi-track audio editor and recorder for Windows, Mac OS X, GNU/Linux and other operating systems. Audacity is open source software licensed under GPL, version 2 or later.

Audacity 7.6k Jun 23, 2022
Sneedacity (formerly Audacity) is an easy-to-use, multi-track audio editor and recorder for Windows, Mac OS X, GNU/Linux and other operating systems.

Sneedacity (formerly Audacity) is an easy-to-use, multi-track audio editor and recorder for Windows, Mac OS X, GNU/Linux and other operating systems. Sneedacity is open source software licensed under GPL, version 2 or later.

Sneed's Feed & Seed 868 Jun 26, 2022
Let’s Create a Speech Synthesizer

Speech Synthesizer Series Material for my video series about creating a peculiar English-language speech synthesizer with Finnish accent. Playlist: ht

Joel Yliluoma 88 Jun 10, 2022
Synthesizer Modules and Audio Circuits

Dintree Synthesizer Modules and Audio Circuits 2020-07-14: You can now try Dintree modules within VCV Rack! I have created virtual versions of most mo

Andrew Kilpatrick 27 May 26, 2022
Facebook AI Research's Automatic Speech Recognition Toolkit

wav2letter++ Important Note: wav2letter has been moved and consolidated into Flashlight in the ASR application. Future wav2letter development will occ

Facebook Research 6.1k Jun 21, 2022
ChowKick is a kick drum synthesizer plugin based on creative modelling of old-school drum machine circuits

ChowKick is a kick drum synthesizer plugin based on creative modelling of old-school drum machine circuits. MIDI input to the plugin triggers a pulse with a parameterized size and shape. The pulse is then passed into a resonant filter which can be tuned to a specific frequency, or matched to the frequency of the incoming MIDI notes.

null 99 Jun 27, 2022
A visual additive synthesizer

Canvas (working title) is a visual additive synthesizer that is controlled by editing an image. Scribble on the canvas and use a variety of image filt

null 19 Jun 27, 2022
A small fast portable speech synthesis system

Flite is an open source small fast run-time text to speech engine. It is the latest addition to the suite of free software synthesis tools including University of Edinburgh's Festival Speech Synthesis System and Carnegie Mellon University's FestVox project, tools, scripts and documentation for building synthetic voices.

CMU Festvox Project 554 Jun 23, 2022
Twist A node-based audio synthesizer written in C++

Not maintained anymore! Twist A node-based audio synthesizer written in C++ Twist is the unexpected result of me trying to experiment with audio progr

Diego Lopes 124 Jun 27, 2022
Linear predictive coding (LPC) is an algorithm used to approximate audio signals like human speech

lpc.lv2 LPC analysis + synthesis plugin for LV2 About Linear predictive coding (LPC) is an algorithm used to approximate audio signals like human spee

null 3 May 2, 2022
Libsio - A runtime library for Speech Input (stt) & Output (tts)

libsio A runtime library for Speech Input (stt) & Output (tts) Speech To Text unified CTC and WFST decoding via beam search online(streaming) decoding

null 21 Jun 22, 2022
Mumble is an Open Source, low-latency, high quality voice chat software

Mumble is an Open Source, low-latency and high-quality voice-chat program written on top of Qt and Opus.

Mumble 4.9k Jun 30, 2022
HamMessenger is a portable device that uses a ham radio and the APRS protocol as a medium to send and receive text messages.

HamMessenger is a portable, battery powered device that runs on a microcontroller and interfaces with an inexpensive ham radio to send and receive text messages and provide position updates using the APRS protocol. Messages and position updates sent via HamMessenger can be viewed on sites such as aprs.fi. HamMessenger messages are NOT encrypted!

null 186 Jun 13, 2022
C library for audio noise reduction and other spectral effects

libspecbleach C library for audio noise reduction and other spectral effects Background This library is based on the algorithms that were used in nois

Luciano Dato 24 Jun 10, 2022
Tenacity is an easy-to-use, cross-platform multi-track audio editor/recorder for Windows, MacOS, GNU/Linux

Tenacity is an easy-to-use, cross-platform multi-track audio editor/recorder for Windows, MacOS, GNU/Linux and other operating systems and is developed by a group of volunteers as open source software.

null 7.2k Jun 26, 2022
🎵 A cross-platform media playback library for C/C++ with good number of features (only Windows & Linux).

libwinmedia A cross-platform media playback library for C/C++ & Flutter with good number of features. Example A very simple example can be as follows.

Harmonoid 38 Jun 24, 2022
PendulumSynth is an on-going and open-source project, running on Arduino platform with the goal of mixing real-world physics into music composition and musical performance.

PendulumSynth PendulumSynth is an on-going and open-source project, running on Arduino platform with the goal of mixing real-world physics into music

Mohammadreza Anvari 4 Jun 19, 2022
JUCE is an open-source cross-platform C++ application framework for desktop and mobile applications, including VST, VST3, AU, AUv3, RTAS and AAX audio plug-ins.

JUCE is an open-source cross-platform C++ application framework for creating high quality desktop and mobile applications, including VST, VST3, AU, AU

JUCE 4.3k Jun 21, 2022
Automatic Volume Adjuster for TVs and Sound Systems

Automatic Volume Adjuster Recently Great Scott built his version of an automatic volume adjuster. In this project he solved one of the biggest problem

Stefan Wagner 22 Jan 16, 2022