Changelog¶
v1.7.3 (2017-03-15)¶
- Fixed bug #168 and added a regression test for it
- Added option
-f, --fulltoaeneas.tools.read_audioand tests for it
v1.7.2 (2017-03-03)¶
- Added MacOS TTS Wrapper (courtesy of Chris Vaughn)
- Removed dependency from
pafy, usingyoutube-dldirectly (#159) - Added retry mechanism to
Downloader, includingDOWNLOADER_SLEEPandDOWNLOADER_RETRY_ATTEMPTSinRuntimeConfiguration - Fixed bug #160
- Fixed a latent bug with arbitrary shifts in aba when using the
task_adjust_boundary_no_zerooption - Fixed a latent bug in AWS Polly and Nuance wrappers
- Updated copyright strings with 2017
- Updated
INSTALL.mdto brew install from Daniel Bair’s tap instead of official brew repo since they removed the formula for aeneas (#165)
v1.7.1 (2016-12-20)¶
- Fix bug #151
- Downgraded dependency on lxml to lxml>=3.6.0 to help packaging the Windows installer
- Added aeneas version to log
- Changed default voice for Festival TTS Wrapper to
eng-USAto help people installing from source on Mac OS X
v1.7.0 (2016-12-07)¶
- Moved syncmap I/O functions in
aeneas.syncmapsubpackage - Renamed
aeneas.timevalueintoaeneas.exacttiming - Renamed
audio_durationintolengthinSyncMapFragmentfor consistency withTimeInterval - Renamed
os_task_file_no_zero(PPN_OS_TASK_FILE_NO_ZERO) totask_adjust_boundary_no_zero(PPN_TASK_ADJUST_BOUNDARY_NO_ZERO) inTaskConfiguration - Renamed
nuance_tts_api_sleep(NUANCE_TTS_API_SLEEP) totts_api_sleep(TTS_API_SLEEP) inRuntimeConfiguration - Renamed
nuance_tts_api_retry_attempts(NUANCE_TTS_API_RETRY_ATTEMPTS) totts_api_retry_attempts(TTS_API_RETRY_ATTEMPTS) inRuntimeConfiguration - Renamed
--ratesto--rateinExecuteTaskCLI - Renamed
--example-ratesto--example-rateinExecuteTaskCLI - Changed
config_string()to property inaeneas.configuration.Configuration - Changed the default value of
TASK_MAX_AUDIO_LENGTHto0(i.e., process audio file with arbitrary audio length) - Added two new output formats:
TEXTGRID(Praat long TextGrid) andTEXTGRID_SHORT(Praat short TextGrid) - More robust and generic reading of SRT-like files, especially WebVTT
- Fixed typos in
SyncMapFormatdocstrings - Added
safety_checksparameter toRuntimeConfigurationthat can be disabled to trade safety for speed (issue #117) - Added Makefile files to C/C++ extensions, replacing previous Bash scripts
- Simplified
ExecuteTask, offloading some sub-tasks toSyncMap,SyncMapFragmentList, andAdjustBoundaryAlgorithm - Simplified
AdjustBoundaryAlgorithm - Added method
sync_map_vleavesinTaskfor quick access to sync map fragments (vleaves) - Added
aeneas.exacttiming.TimeIntervalclass to represent time intervals and act upon them - Added tests for
TimeInterval - Added
has_zero_lengthinSyncMapFragment - Added comparison functions to
SyncMapFragment, based onTimeInterval - Added
aeneas.syncmap.fragmentlist.SyncMapFragmentListclass to represent a list of sync map fragments, sorted and with positional/timing constraints - Added tests for
SyncMapFragmentList - Added
clone()method toaeneas.configuration.Configuration - Removed
clone()method toaeneas.runtimeconfiguration.RuntimeConfiguration(now it inherits fromConfiguration) - Added
clone()method toaeneas.tree.Tree - Added more tests for
Tree - Added
PPN_TASK_ADJUST_BOUNDARY_NONSPEECH_MINandPPN_TASK_ADJUST_BOUNDARY_NONSPEECH_STRINGtoTaskConfiguration - Added
ABA_NONSPEECH_TOLERANCEandABA_NO_ZERO_DURATIONparameters toRuntimeConfiguration - Added more tests for
ConfigurationandRuntimeConfiguration - Added map from language code to human-readable name for TTS wrappers and for
Language, usable byaeneas.tools.execute_task - Marked Afrikaans (
afr) language as tested - Added more examples to
aeneas.tools.execute_task - Added more tool and long tests
- Added bench tests
- Added
wiki/TESTING.md - Added
venvsdirectory with scripts to automate testing with virtual environments - Added
RuntimeConfigurationparameters to switch MFCC masking on, including per level in multilevel tasks - Modified
DTWAligner,AudioFileMFCC,ExecuteTask, andVADto allow MFCC masking - Added field human-readable descriptions in
Configurationand its subclasses - Better
--list-parametersinExecuteTask - Added
--list-parametersinExecuteJob - Added
--help-rconfoption to all tools - Added check in
ExecuteTaskon the consistency of the computed sync map - Added
RuntimeConfigurationparametersDTW_MARGIN_L1,DTW_MARGIN_L2,DTW_MARGIN_L3, to change DTW margin of each level - Added
FFMPEG_PARAMETERS_SAMPLE_48000toffmpegwrapper.py - Fixes issue with
gf.relative_path()in Windows, if executed from a drive different than the install drive - Fixed a bug with empty fragments when using subprocess TTS with TTS cache enabled
- Added
--presets-wordswitch toaeneas.tools.execute_task - Added
AWSTTSWrapperwrapper for AWS Polly TTS API - Revised docs
- Fixed a bug in reading SMIL files with machine-readable timings
- Fixed a bug in
SyncMapFragmentListwhich caused sync map to contain overlapping fragments
v1.6.0.1 (2016-09-30)¶
- Fixes bug in Nuance TTS wrapper
v1.6.0 (2016-09-26)¶
- Fixed bug #102 by checking that the audio file produced by the TTS engine is mono WAVE and has correct sample rate: slightly slower but safe
- Created
aeneas.ttswrapperssubpackage - Renamed
aeneas.ttswrappertoaeneas.ttswrappers.basettswrapper, andTTSWrappertoBaseTTSWrapper - Renamed
aeneas.espeakwrappertoaeneas.ttswrappers.espeakttswrapper, andESPEAKWrappertoESPEAKTTSWrapper - Renamed
aeneas.festivalwrappertoaeneas.ttswrappers.festivalttswrapper, andFESTIVALWrappertoFESTIVALTTSWrapper - Renamed
aeneas.nuancettsapiwrappertoaeneas.ttswrappers.nuancettswrapper, andNuanceTTSAPIWrappertoNuanceTTSWrapper - Modified the value for using the Nuance TTS API from
nuancettsapitonuanceinaeneas.synthesizer.SYNTHESIZER - Now each TTS wrapper must declare the format (codec, channels, sample rate) of its output
- Now each TTS wrapper can declare the default path for the TTS engine executable, using
DEFAULT_TTS_PATH - Changed the constructor of
BaseTTSWrapperand derived classes, moving call method flags from constructor parameters to class fields - Added check when synthesizing multiple: at least one fragment should be not empty
- Simplified writing custom TTS wrappers by providing the “multiple generic” method in
BaseTTSWrapper - Removed
synthesize_single()function in all TTS wrappers and incew - When working on multilevel sync, user can specify a different TTS for each level
- Added an optional TTS caching mechanism to reduce subprocess/API calls to the TTS engine (closes #87)
- Added wrapper for eSpeak-ng (subprocess only)
- Added
cfwPython C++ Extension to callFestivalvia its C++ API, disabled by default (closes #106) - Unified unit tests for eSpeak, eSpeak-ng, and Festival
- Python C extension compilation can be disabled/forced in setup.py via env vars
- Added check on head/process/tail length which should not exceed the audio file length (closes #80)
- Moved package metadata from
setup.pyintosetupmeta.py - Added AGPL header to all source files
- Removed metadata (e.g., version) from all source files, except those directly facing the user
- PEP 8 compliance for all Python files (except for E501 “line too long”)
- Added
wiki/CONTRIBUTING.mdexplaining the contribution rules (branch policy, code style, etc.) - Using Sphinx theme from readthedocs.org if available
- Updated dependencies: BeautifulSoup4>=4.5.1 and lxml>=3.6.4 (see discussion in #93)
- Updated documentation
- Several other minor code improvements
v1.5.1 (2016-07-25)¶
- Added
invokeparameter toAbstractCLIProgramconstructor and modified tools consequently - Added
aeneas.tools.hydratool to run all other aeneas.tools.* scripts - Added
pyinstaller-*configuration files forpyinstaller - Added the
PYINSTALLER.mdfile documenting how to compile an executable with PyInstaller - Added rconf
CDTW,CEW, andCMFCCparameters to prevent running a single C extension - Added
PPN_TASK_OS_FILE_EAF_AUDIO_REFto specify audio file URI for EAF output sync maps - Added function to output current date and time in EAF output sync maps
- Removed copies of
cint.[ch]andcwave.[ch]in other C extensions, changed include paths - Removed unused keys from
JobConfigurationand related source files - Moved import statements for
lxmlandbs4inside the functions actually using them (better isolation for future purposes) - Fixed a numerical issue in
dtw.pyby explicit statingdtype=intincentersinitializer, pure Python code only - Extension
cewcompiled for Mac OS X and Windows - Added links to installers for Mac OS X and Windows in the documentation
- Explicitly requiring lxml v3.6.0 and BeautifulSoup4 v4.4.1 due to a change in BeautifulSoup4 v4.5.0 API (to be investigated later)
v1.5.0.3 (2016-04-23)¶
- Fix an issue in
sdwithfloatreturned instead ofTimeValue
v1.5.0.2 (2016-04-09)¶
- Fix an issue in
dtwwithnumpy.searchsortedreturning an invalid index
v1.5.0.1 (2016-04-03)¶
- Fix an issue with compiling C extensions on Windows
v1.5.0 (2016-04-02)¶
- Rewritten
vad.py - Rewritten
sd.py, removedSDMetric - Rewritten
adjustboundaryalgorithm.py - Simplified
executetask.py - Added
Loggabletologger.py, now most classes derive from it - Added
timevalue.pycontaining an arbitrary-precision type to represent time values (instead offloat) - Added
ttswrapper.pyto support generic TTS engine invocation - Added
festivalwrapper.py - Added
nuancettsapiwrapper.py - Modified
espeakwrapper.pyto fit in the new TTS architecture - Renamed
espeak_pathtotts_pathinRuntimeConfiguration - Deleted
aeneas.tools.espeak_wrapperCLI tool, useaeneas.tools.synthesize_textinstead - Added
CEWSubprocessto runaeneas.cewin a separate process to work around a bug in libespeak - Added
aeneas/extradirectory, containing some custom TTS wrappers - Changed meaning of
language.pyand added list of supported languages inside TTS wrappers - Added
plotter.pyto plot waveforms and sets of labels to image file - Added
aeneas.tools.plot_waveformCLI tool - Added
tree.pyto support the new tree-like structure ofTextFileandSyncMap - Modified
textfile.pywith the new tree-like structure - Added
multilevelinput text format - Added initial support for outputting multilevel JSON, SMIL, TTML, and XML sync maps
- Added README files and documentation to the C extensions subdirectories
- Added Bash scripts to compile and run C drivers
- Added usage messages to C drivers
- Converted all
malloc()calls tocalloc()calls to avoid dirty allocations, added checks on the returned pointers - Introduced fixed-size int types in C extensions, with explicit definitions for the MS C compiler
- Merged
AudioFileMonoWAVEback intoAudioFile - More efficient append/prepend operations in
AudioFilethanks to preallocated memory and space doubling - Created
AudioFileMFCCto handle the MFCC representation of audio files - Added
run_vad()toAudioFileMFCC,VADis just an “algorithm-switcher” class now - Added
detect_head_tail()toAudioFileMFCC,SDis just an “algorithm-switcher” class now - Listed supported keys in
RuntimeConfigurationdocumentation - Renamed
ConfigurationObjecttoConfiguration - Renamed
append_*functions toadd_*in several classes - Removed
computed_pathproperty inDTWAligner,compute_path()now returns it - Fixed a bug with logger and rconf initialization in all classes
- Added
--cewsubprocessoption toaeneas.tools.execute_job - Fixed a bug in
aeneas.tools.execute_jobthat prevented processing uncompressed containers - Added
--faster-rate,--rates, and--zerooptions toaeneas.tools.execute_task - More
--example-*shortcuts inaeneas.tools.execute_task - Added list of supported language codes to
--list-valuesinaeneas.tools.execute_task - All
aeneas.tools.*CLI tools now print messages in color on POSIX OSes - Added
gc.PPN_TASK_OS_FILE_NO_ZERO(i.e.,os_task_file_no_zero) to avoid fragments with zero duration in sync maps - Added
"TRUE"and"YES"as aliases forTruevalue inConfiguration - Added
AUD,AUDHandAUDMsync map output format for use withAudacity - Added
EAFsync map output format for use withELAN - Deprecated
RBSEsync map output format - More unit tests
- More uniform documentation: unless
byteis specified,stringindicates a Unicode string (unicodein Python 2,strin Python 3)
v1.4.1 (2016-02-13)¶
- Added
DFXPsync map output format, alias forTTML - Added
SBVsync map output format (SubViewer format with newline, used by YouTube) - Added
SUBsync map output format (SubViewer format with[br]) - Added
aeneas.diagnosticsto perform setup check, modifiedaeneas_check_setup.pyaccordingly - Marked Czech (
cs) language as tested - Optimizated computation of MFCCs if no head/tail has been cut
- Fixed the
numpy deprecated API warningfor C extensions - Fixed a few bugs and cleaned the source code of the
cmfccC extension, added a C driver program - Cleaned the source code of the
cewC extension, added a C driver program - Cleaned the source code of the
cdtwC extension, added a C driver program - Added
cwaveC extension (currently not used), added a C driver program - Added
writemethod toLoggerto dump log to file - Added
ConfigurationObjectto represent a dictionary with a fixed set of keys, default values, and aliases - Now
JobConfigurationandTaskConfigurationextendConfigurationObject - Added
RuntimeConfiguration, extendingConfigurationObject, to keep the runtime settings, tunable by (expert) users - Added to
AbstractCLIProgramsupport for specifying log file path - Added to
AbstractCLIProgramsupport for specifying runtime configuration - Changed
FFMPEG_PARAMETERS_DEFAULTinffmpeg.pytoFFMPEG_PARAMETERS_SAMPLE_16000(i.e., from 22050 Hz to 16000 Hz) - Added support for specifying the temporary directory path in the
RuntimeConfiguration - Refactored
mfcc.pyto better fit into the library structure - Moved the original
mfcc.pyinto thethirdparty/directory for clarity and attribution - Nicer
aeneas_check_setup.pyscript - More unit tests covering runtime configuration options
- Slimmed the
README.mddown
v1.4.0 (2016-01-15)¶
- Now running on both Python 2.7.x and Python 3.4.x or later, including C extensions
- For XML-based sync map formats, now using
UTF-8encoding instead ofASCII - Unified
aeneas.tools.*structure, with better help messages and exit codes - All
aeneas.tools.*can be run interactively or called from Python code by passing a list of arguments aeneas.tools.convert_syncmaphas slightly different option namesaeneas.tools.read_texthas a different order of arguments and different option namesaeneas.tools.synthesize_texthas a different order of arguments and different option namesaeneas.tools.run_sdhas a different order of arguments and different option names- Added
bin/scripts - Added a flag to disable checking a language code string against listed (supported) ones, allowing for testing with custom espeak voices
- Ported the unit test launcher
run_all_unit_tests.pyin Python, with more options thanunittest discover - Added unit test
aeneas.tests.test_idsortingalgorithm - Added unit tests for
aeneas.tools.*(--tool-tests) - Added unit tests for
executejob.pyandexecutetask.py(--long-tests) - Added unit tests for
downloader.pyandaeneas.tools.download(--net-tests) - Better and more unit tests
- Changed all
IOErrortoOSError, per Python 3 recommendation - Changed
parameters=Nonedefault value in the constructor ofFFMPEGWrapper - Renamed
AudioFileMonoWAVtoAudioFileMonoWAVE - Renamed
best_audioparameter tolargest_audioindownloader.pyand inaeneas.tools.execute_taskandaeneas.tools.download - Renamed
get_rel_path(resp.,get_abs_path) intorelative_path(resp.,absolute_path) inaeneas.globalfunctions - Fixed a potential bug in
relative_path: now getting the cwd path usingos.getcwd() - Fixed a bug in
cew.ctriggered when passing espeak voices with variants (e.g.,en-gb)
v1.3.3 (2015-12-20)¶
- Added all voice variants (e.g.,
en-gbtolanguage.py) supported by espeak v1.48.03
v1.3.2 (2015-11-11)¶
- Added
is_text_file_ignore_regexparameter to ignore text from the input file - Added
is_text_file_transliterate_mapparameter to read a transliteration map from file and apply it to the input text - Added
thirdparty/transliteration.mapsample transliteration map (courtesy of Steve Gallagher and Richard Margetts) - Edited
README.md, stating the optional dependency frompafy - Renamed
check_dependencies.pyintoaeneas_check_setup.py
v1.3.1.1 (2015-11-03)¶
- Added
debian/directory containing files for creating a Debian/Ubuntu.debpackage (courtesy of Chris Hubbard) - Removed
pafyfrom required dependencies
v1.3.1 (2015-10-28)¶
- Added
os_task_file_id_regexparameter to add user-definedidvalues forplainandsubtitlesinput files - Added the HTML file
finetuneas.htmlfor manually fine tuning the sync maps (courtesy of Firat Özdemir) - Added an option to
aeneas.tools.convert_syncmapandaeneas.tools.execute_taskto outputfinetuneasHTML file
v1.3.0 (2015-10-14)¶
- Added
cewC module for synthesizing text withespeakmuch faster than in pure Python (only available on Linux at the moment) - Added
wavfile.pyfromscipy.ioto replacescikits.audiolab - Added
AudioFileMonoWAV, containing all the mono WAV functions previously inAudioFile - Added
is_audio_file_tail_lengthparameter - Added exception handling, especially in
aeneas.tools.* - Added
Downloaderto download files from Web sources (currently, audio from YouTube) - Added the corresponding
aeneas.tools.downloadutility - Added
pafyas a Python dependency, and removedscikits.audiolab - Added third party licenses
- Unified the I/O of
aeneas.tools.*, creating theaeneas/tools/res/andoutput/directories - Better and more unit tests
- Improved documentation, especially the
README.md - Added
licenses/directory, containing the licenses of third party code
v1.2.0 (2015-09-27)¶
- Added
sd.pyto automatically detect the head/tail/interval of an audio file - Added the corresponding
aeneas.tools.run_sdutility - Added the corresponding Task configuration parameters:
is_audio_file_detect_head_min,is_audio_file_detect_head_max,is_audio_file_detect_tail_min,is_audio_file_detect_tail_max, andos_task_file_head_tail_format - Added
SMILHandSMILMsync map output formats (SMILbecoming an alias ofSMILH) - Added
CSVM,SSVM,TSVM, andTXTMformats (CSV,SSV,TSV, andTXTbecoming their aliases) - Renamed the previous
JSONsync map output format toRBSE - Added a new
JSONformat - Renamed the previous
XMLsync map output format toXML_LEGACY - Changed
JSON(andRBSE) write function, now using thejsonlibrary - Added a new
XMLformat - Changed
SMIL,TTML, andXMLwrite functions, now using thelxmllibrary - Added functions to read sync map files
- Added the
aeneas.tools.convert_syncmaputility to convert sync maps - Added
reverse,trim, andwritefunctions toAudioFile - Added all the languages that espeak v1.48.03 supports to the
Languageenumeration (those not tested yet are marked as such) - Marked Persian (
fa) and Swahili (sw) languages as tested - Added the
aeneas.tools.synthesize_textutility to synthesize multiple fragments into a single wave file - Changed
FFMPEG_PARAMETERS_DEFAULTinffmpeg.pytoFFMPEG_PARAMETERS_SAMPLE_22050(i.e., from 44100 Hz to 22050 Hz) - Fixed the
TTMLoutput - Fixed a
KeyErrorbug inffprobewrapper.pywhen probing a file not recognized as audio file - Fixed a bug in
cdtw.c: int overflow when computing thecentersarray on long (>30 minutes) audio files - Many unit tests have been rewritten, extended, or refactored
- Other minor fixes and code/documentation improvements
v1.1.2 (2015-09-24)¶
- Better
setup.py, especially for Windows users (courtesy of David Smith)
v1.1.1 (2015-08-23)¶
- Added
compile_c_extensions.batand directions for Windows users (courtesy of Richard Margetts) - Added warning to
aeneas.tools.*when running without Python C extensions compiled - Improved
README.md
v1.1.0 (2015-08-21)¶
- Added
cdtwC module for running the DTW much faster than in pure Python (falling back to Python ifcdtwcannot be load) - Added
cmfccC module for extracting the MFCCs much faster than in pure Python (falling back to Python ifcmfcccannot be load) - Moved code for extracting MFCCs into
AudioFile, and rewrittendtw.pyandvad.pyaccordingly - Added
aeneas.tools.extract_mfccutility - Rewritten the
STRIPEandEXACT(Python) algorithms to compute the accumulated cost matrix in place - Renamed
ALIGNER_USE_EXACT_ALGO_WHEN_MARGIN_TOO_LARGEtoALIGNER_USE_EXACT_ALGORITHM_WHEN_MARGIN_TOO_LARGE - Removed
STRIPE_NOT_OPTIMIZEDalgorithm fromdtw.py - Added the
OFFSETandRATEAGGRESSIVEboundary adjustment algorithms - Cleaned the code for
RATEboundary adjustment algorithm - Other minor fixes and code/docs improvements
v1.0.4 (2015-08-09)¶
- Added boundary adjustment algorithm
- Added VAD algorithm and
aeneas.tools.run_vadutility - Added
subtitlesinput text format and the ability of dealing with multiline text fragments - Added
SSVoutput format - Added
CSVH,SSVH,TSVH,TXTHoutput formats (i.e., human-readable variants) - Added
-voption toaeneas.tools.execute_taskandaeneas.tools.execute_jobto produce verbose output - Added
install_dependencies.sh - Added this changelog
- Sanitized log messages, fixing a problem with
tee=Truecrashing in non UTF-8 shells (tested in a POSIX shell) - Improved unit tests
- Other minor fixes and code/docs improvements
v1.0.3 (2015-06-13)¶
- Added
TSVoutput format - Added reference to
aeneas-vagrant - Added
run_all_unit_tests.sh
v1.0.2 (2015-05-14)¶
- Corrected typos
- Merged
requirements.txt
v1.0.1 (2015-05-12)¶
- Initial version