From 7d0b4b482bc7cfa00112018f15cc8c4831ad0d2d Mon Sep 17 00:00:00 2001 From: Alberto Pettarin Date: Tue, 18 Oct 2016 17:40:34 +0200 Subject: [PATCH 01/66] Bumped to v1.6.1. Added TextGrid I/O format. --- README.md | 9 +- README.rst | 9 +- VERSION | 2 +- aeneas/__init__.py | 2 +- aeneas/cdtw/cdtw_setup.py | 2 +- aeneas/cew/cew_setup.py | 2 +- aeneas/cmfcc/cmfcc_setup.py | 2 +- aeneas/cwave/cwave_setup.py | 2 +- aeneas/syncmap.py | 262 ++++++++++++++---- aeneas/tests/res/syncmaps/sonnet001.aud | 20 +- aeneas/tests/res/syncmaps/sonnet001.audh | 20 +- aeneas/tests/res/syncmaps/sonnet001.audm | 20 +- aeneas/tests/res/syncmaps/sonnet001.csv | 20 +- aeneas/tests/res/syncmaps/sonnet001.csvh | 20 +- aeneas/tests/res/syncmaps/sonnet001.csvm | 20 +- aeneas/tests/res/syncmaps/sonnet001.dfxp | 20 +- aeneas/tests/res/syncmaps/sonnet001.eaf | 33 ++- aeneas/tests/res/syncmaps/sonnet001.json | 28 +- aeneas/tests/res/syncmaps/sonnet001.rbse | 28 +- aeneas/tests/res/syncmaps/sonnet001.sbv | 20 +- aeneas/tests/res/syncmaps/sonnet001.smil | 20 +- aeneas/tests/res/syncmaps/sonnet001.smilh | 20 +- aeneas/tests/res/syncmaps/sonnet001.smilm | 20 +- aeneas/tests/res/syncmaps/sonnet001.srt | 20 +- aeneas/tests/res/syncmaps/sonnet001.ssv | 20 +- aeneas/tests/res/syncmaps/sonnet001.ssvh | 20 +- aeneas/tests/res/syncmaps/sonnet001.ssvm | 20 +- aeneas/tests/res/syncmaps/sonnet001.sub | 20 +- aeneas/tests/res/syncmaps/sonnet001.tab | 20 +- aeneas/tests/res/syncmaps/sonnet001.textgrid | 74 +++++ .../res/syncmaps/sonnet001.textgrid_short | 57 ++++ aeneas/tests/res/syncmaps/sonnet001.tsv | 20 +- aeneas/tests/res/syncmaps/sonnet001.tsvh | 20 +- aeneas/tests/res/syncmaps/sonnet001.tsvm | 20 +- aeneas/tests/res/syncmaps/sonnet001.ttml | 20 +- aeneas/tests/res/syncmaps/sonnet001.txt | 20 +- aeneas/tests/res/syncmaps/sonnet001.txth | 20 +- aeneas/tests/res/syncmaps/sonnet001.txtm | 20 +- aeneas/tests/res/syncmaps/sonnet001.vtt | 20 +- aeneas/tests/res/syncmaps/sonnet001.xml | 20 +- .../tests/res/syncmaps/sonnet001.xml_legacy | 28 +- aeneas/tests/res/syncmaps/sonnet001.zzz | 20 +- aeneas/tests/res/syncmaps/sonnet001_m.aud | 20 +- aeneas/tests/res/syncmaps/sonnet001_m.audh | 20 +- aeneas/tests/res/syncmaps/sonnet001_m.audm | 20 +- aeneas/tests/res/syncmaps/sonnet001_m.csv | 20 +- aeneas/tests/res/syncmaps/sonnet001_m.csvh | 20 +- aeneas/tests/res/syncmaps/sonnet001_m.csvm | 20 +- aeneas/tests/res/syncmaps/sonnet001_m.dfxp | 20 +- aeneas/tests/res/syncmaps/sonnet001_m.eaf | 33 ++- aeneas/tests/res/syncmaps/sonnet001_m.json | 28 +- aeneas/tests/res/syncmaps/sonnet001_m.rbse | 28 +- aeneas/tests/res/syncmaps/sonnet001_m.sbv | 20 +- aeneas/tests/res/syncmaps/sonnet001_m.smil | 20 +- aeneas/tests/res/syncmaps/sonnet001_m.smilh | 20 +- aeneas/tests/res/syncmaps/sonnet001_m.smilm | 20 +- aeneas/tests/res/syncmaps/sonnet001_m.srt | 20 +- aeneas/tests/res/syncmaps/sonnet001_m.ssv | 20 +- aeneas/tests/res/syncmaps/sonnet001_m.ssvh | 20 +- aeneas/tests/res/syncmaps/sonnet001_m.ssvm | 20 +- aeneas/tests/res/syncmaps/sonnet001_m.sub | 20 +- aeneas/tests/res/syncmaps/sonnet001_m.tab | 20 +- .../tests/res/syncmaps/sonnet001_m.textgrid | 74 +++++ .../res/syncmaps/sonnet001_m.textgrid_short | 57 ++++ aeneas/tests/res/syncmaps/sonnet001_m.tsv | 20 +- aeneas/tests/res/syncmaps/sonnet001_m.tsvh | 20 +- aeneas/tests/res/syncmaps/sonnet001_m.tsvm | 20 +- aeneas/tests/res/syncmaps/sonnet001_m.ttml | 20 +- aeneas/tests/res/syncmaps/sonnet001_m.txt | 20 +- aeneas/tests/res/syncmaps/sonnet001_m.txth | 20 +- aeneas/tests/res/syncmaps/sonnet001_m.txtm | 20 +- aeneas/tests/res/syncmaps/sonnet001_m.vtt | 20 +- aeneas/tests/res/syncmaps/sonnet001_m.xml | 20 +- .../tests/res/syncmaps/sonnet001_m.xml_legacy | 28 +- aeneas/tests/res/syncmaps/sonnet001_mu.aud | 24 +- aeneas/tests/res/syncmaps/sonnet001_mu.audh | 24 +- aeneas/tests/res/syncmaps/sonnet001_mu.audm | 24 +- aeneas/tests/res/syncmaps/sonnet001_mu.csv | 24 +- aeneas/tests/res/syncmaps/sonnet001_mu.csvh | 24 +- aeneas/tests/res/syncmaps/sonnet001_mu.csvm | 24 +- aeneas/tests/res/syncmaps/sonnet001_mu.dfxp | 24 +- aeneas/tests/res/syncmaps/sonnet001_mu.eaf | 33 ++- aeneas/tests/res/syncmaps/sonnet001_mu.json | 28 +- aeneas/tests/res/syncmaps/sonnet001_mu.rbse | 28 +- aeneas/tests/res/syncmaps/sonnet001_mu.sbv | 24 +- aeneas/tests/res/syncmaps/sonnet001_mu.smil | 24 +- aeneas/tests/res/syncmaps/sonnet001_mu.smilh | 24 +- aeneas/tests/res/syncmaps/sonnet001_mu.smilm | 24 +- aeneas/tests/res/syncmaps/sonnet001_mu.srt | 24 +- aeneas/tests/res/syncmaps/sonnet001_mu.ssv | 24 +- aeneas/tests/res/syncmaps/sonnet001_mu.ssvh | 24 +- aeneas/tests/res/syncmaps/sonnet001_mu.ssvm | 24 +- aeneas/tests/res/syncmaps/sonnet001_mu.sub | 24 +- aeneas/tests/res/syncmaps/sonnet001_mu.tab | 24 +- .../tests/res/syncmaps/sonnet001_mu.textgrid | 74 +++++ .../res/syncmaps/sonnet001_mu.textgrid_short | 57 ++++ aeneas/tests/res/syncmaps/sonnet001_mu.tsv | 24 +- aeneas/tests/res/syncmaps/sonnet001_mu.tsvh | 24 +- aeneas/tests/res/syncmaps/sonnet001_mu.tsvm | 24 +- aeneas/tests/res/syncmaps/sonnet001_mu.ttml | 24 +- aeneas/tests/res/syncmaps/sonnet001_mu.txt | 24 +- aeneas/tests/res/syncmaps/sonnet001_mu.txth | 24 +- aeneas/tests/res/syncmaps/sonnet001_mu.txtm | 24 +- aeneas/tests/res/syncmaps/sonnet001_mu.vtt | 24 +- aeneas/tests/res/syncmaps/sonnet001_mu.xml | 24 +- .../res/syncmaps/sonnet001_mu.xml_legacy | 28 +- aeneas/tests/res/syncmaps/sonnet001_u.aud | 24 +- aeneas/tests/res/syncmaps/sonnet001_u.audh | 24 +- aeneas/tests/res/syncmaps/sonnet001_u.audm | 24 +- aeneas/tests/res/syncmaps/sonnet001_u.csv | 24 +- aeneas/tests/res/syncmaps/sonnet001_u.csvh | 24 +- aeneas/tests/res/syncmaps/sonnet001_u.csvm | 24 +- aeneas/tests/res/syncmaps/sonnet001_u.dfxp | 24 +- aeneas/tests/res/syncmaps/sonnet001_u.eaf | 33 ++- aeneas/tests/res/syncmaps/sonnet001_u.json | 28 +- aeneas/tests/res/syncmaps/sonnet001_u.rbse | 28 +- aeneas/tests/res/syncmaps/sonnet001_u.sbv | 24 +- aeneas/tests/res/syncmaps/sonnet001_u.smil | 24 +- aeneas/tests/res/syncmaps/sonnet001_u.smilh | 24 +- aeneas/tests/res/syncmaps/sonnet001_u.smilm | 24 +- aeneas/tests/res/syncmaps/sonnet001_u.srt | 24 +- aeneas/tests/res/syncmaps/sonnet001_u.ssv | 24 +- aeneas/tests/res/syncmaps/sonnet001_u.ssvh | 24 +- aeneas/tests/res/syncmaps/sonnet001_u.ssvm | 24 +- aeneas/tests/res/syncmaps/sonnet001_u.sub | 24 +- aeneas/tests/res/syncmaps/sonnet001_u.tab | 24 +- .../tests/res/syncmaps/sonnet001_u.textgrid | 74 +++++ .../res/syncmaps/sonnet001_u.textgrid_short | 57 ++++ aeneas/tests/res/syncmaps/sonnet001_u.tsv | 24 +- aeneas/tests/res/syncmaps/sonnet001_u.tsvh | 24 +- aeneas/tests/res/syncmaps/sonnet001_u.tsvm | 24 +- aeneas/tests/res/syncmaps/sonnet001_u.ttml | 24 +- aeneas/tests/res/syncmaps/sonnet001_u.txt | 24 +- aeneas/tests/res/syncmaps/sonnet001_u.txth | 24 +- aeneas/tests/res/syncmaps/sonnet001_u.txtm | 24 +- aeneas/tests/res/syncmaps/sonnet001_u.vtt | 24 +- aeneas/tests/res/syncmaps/sonnet001_u.xml | 24 +- .../tests/res/syncmaps/sonnet001_u.xml_legacy | 28 +- aeneas_check_setup.py | 2 +- bin/aeneas_check_setup.py | 2 +- bin/aeneas_convert_syncmap.py | 2 +- bin/aeneas_download.py | 2 +- bin/aeneas_execute_job.py | 2 +- bin/aeneas_execute_task.py | 2 +- bin/aeneas_plot_waveform.py | 2 +- bin/aeneas_synthesize_text.py | 2 +- bin/aeneas_validate.py | 2 +- check_dependencies.py | 2 +- docs/source/changelog.rst | 6 + docs/source/conf.py | 2 +- install_dependencies.sh | 2 +- pyinstaller-aeneas-cli.py | 2 +- pyinstaller-onedir.spec | 2 +- pyinstaller-onefile.spec | 2 +- run_all_unit_tests.py | 2 +- setup.py | 2 +- setupmeta.py | 23 +- 157 files changed, 2171 insertions(+), 1484 deletions(-) create mode 100644 aeneas/tests/res/syncmaps/sonnet001.textgrid create mode 100644 aeneas/tests/res/syncmaps/sonnet001.textgrid_short create mode 100644 aeneas/tests/res/syncmaps/sonnet001_m.textgrid create mode 100644 aeneas/tests/res/syncmaps/sonnet001_m.textgrid_short create mode 100644 aeneas/tests/res/syncmaps/sonnet001_mu.textgrid create mode 100644 aeneas/tests/res/syncmaps/sonnet001_mu.textgrid_short create mode 100644 aeneas/tests/res/syncmaps/sonnet001_u.textgrid create mode 100644 aeneas/tests/res/syncmaps/sonnet001_u.textgrid_short diff --git a/README.md b/README.md index 583b2c25..0ddf790c 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,8 @@ **aeneas** is a Python/C library and a set of tools to automagically synchronize audio and text (aka forced alignment). -* Version: 1.6.0.1 -* Date: 2016-09-30 +* Version: 1.6.1.0 +* Date: 2016-10-?? * Developed by: [ReadBeyond](http://www.readbeyond.it/) * Lead Developer: [Alberto Pettarin](http://www.albertopettarin.it/) * License: the GNU Affero General Public License Version 3 (AGPL v3) @@ -227,7 +227,7 @@ which explains how to use the built-in command line tools. * Text extraction from XML (e.g., XHTML) files using `id` and `class` attributes * Arbitrary text fragment granularity (single word, subphrase, phrase, paragraph, etc.) * Input audio file formats: all those readable by `ffmpeg` -* Output sync map formats: AUD, CSV, EAF, JSON, SMIL, SRT, SSV, SUB, TSV, TTML, TXT, VTT, XML +* Output sync map formats: AUD, CSV, EAF, JSON, SMIL, SRT, SSV, SUB, TEXTGRID, TSV, TTML, TXT, VTT, XML * Confirmed working on 37 languages: ARA, BUL, CAT, CYM, CES, DAN, DEU, ELL, ENG, EPO, EST, FAS, FIN, FRA, GLE, GRC, HRV, HUN, ISL, ITA, JPN, LAT, LAV, LIT, NLD, NOR, RON, RUS, POL, POR, SLK, SPA, SRP, SWA, SWE, TUR, UKR * MFCC and DTW computed via Python C extensions to reduce the processing time * Several built-in TTS engine wrappers: eSpeak (default), eSpeak-ng, Festival, Nuance TTS API @@ -341,6 +341,9 @@ packaged the installers for Mac OS X and Windows. **Firat Ozdemir** contributed the `finetuneas` HTML/JS code for fine tuning sync maps in the browser. +**Willem van der Walt** contributed the code snippet +to output a sync map in TextGrid format. + All the mighty [GitHub contributors](https://github.com/readbeyond/aeneas/graphs/contributors), and the members of the diff --git a/README.rst b/README.rst index 4f0b8b84..c0ef1790 100644 --- a/README.rst +++ b/README.rst @@ -4,8 +4,8 @@ aeneas **aeneas** is a Python/C library and a set of tools to automagically synchronize audio and text (aka forced alignment). -- Version: 1.6.0.1 -- Date: 2016-09-30 +- Version: 1.6.1.0 +- Date: 2016-10-?? - Developed by: `ReadBeyond `__ - Lead Developer: `Alberto Pettarin `__ - License: the GNU Affero General Public License Version 3 (AGPL v3) @@ -234,7 +234,7 @@ Supported Features paragraph, etc.) - Input audio file formats: all those readable by ``ffmpeg`` - Output sync map formats: AUD, CSV, EAF, JSON, SMIL, SRT, SSV, SUB, - TSV, TTML, TXT, VTT, XML + TEXTGRID, TSV, TTML, TXT, VTT, XML - Confirmed working on 37 languages: ARA, BUL, CAT, CYM, CES, DAN, DEU, ELL, ENG, EPO, EST, FAS, FIN, FRA, GLE, GRC, HRV, HUN, ISL, ITA, JPN, LAT, LAV, LIT, NLD, NOR, RON, RUS, POL, POR, SLK, SPA, SRP, SWA, SWE, @@ -371,6 +371,9 @@ the installers for Mac OS X and Windows. **Firat Ozdemir** contributed the ``finetuneas`` HTML/JS code for fine tuning sync maps in the browser. +**Willem van der Walt** contributed the code snippet to output a sync +map in TextGrid format. + All the mighty `GitHub contributors `__, and the members of the `Google diff --git a/VERSION b/VERSION index dc1e644a..9c6d6293 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.6.0 +1.6.1 diff --git a/aeneas/__init__.py b/aeneas/__init__.py index 99569ff1..cebb390b 100644 --- a/aeneas/__init__.py +++ b/aeneas/__init__.py @@ -35,4 +35,4 @@ """ __license__ = "GNU AGPL v3" __status__ = "Production" -__version__ = "1.6.0" +__version__ = "1.6.1" diff --git a/aeneas/cdtw/cdtw_setup.py b/aeneas/cdtw/cdtw_setup.py index a0db76d0..89f4f494 100644 --- a/aeneas/cdtw/cdtw_setup.py +++ b/aeneas/cdtw/cdtw_setup.py @@ -49,7 +49,7 @@ setup( name="cdtw", - version="1.6.0", + version="1.6.1", description="Python C Extension for computing the DTW as fast as your bare metal allows.", ext_modules=[CMODULE], include_dirs=[misc_util.get_numpy_include_dirs()] diff --git a/aeneas/cew/cew_setup.py b/aeneas/cew/cew_setup.py index 6043be92..ab56dffc 100644 --- a/aeneas/cew/cew_setup.py +++ b/aeneas/cew/cew_setup.py @@ -47,7 +47,7 @@ setup( name="cew", - version="1.6.0", + version="1.6.1", description="Python C Extension for synthesizing text with eSpeak.", ext_modules=[CMODULE] ) diff --git a/aeneas/cmfcc/cmfcc_setup.py b/aeneas/cmfcc/cmfcc_setup.py index 93c88888..97f3132a 100644 --- a/aeneas/cmfcc/cmfcc_setup.py +++ b/aeneas/cmfcc/cmfcc_setup.py @@ -50,7 +50,7 @@ setup( name="cmfcc", - version="1.6.0", + version="1.6.1", description="Python C Extension for computing the MFCCs as fast as your bare metal allows.", ext_modules=[CMODULE], include_dirs=[misc_util.get_numpy_include_dirs()] diff --git a/aeneas/cwave/cwave_setup.py b/aeneas/cwave/cwave_setup.py index 76842860..e5b6bdd7 100644 --- a/aeneas/cwave/cwave_setup.py +++ b/aeneas/cwave/cwave_setup.py @@ -49,7 +49,7 @@ setup( name="cwave", - version="1.6.0", + version="1.6.1", description="Python C Extension for for reading WAVE files.", ext_modules=[CMODULE], include_dirs=[misc_util.get_numpy_include_dirs()] diff --git a/aeneas/syncmap.py b/aeneas/syncmap.py index 9d11e1f4..815ff86d 100644 --- a/aeneas/syncmap.py +++ b/aeneas/syncmap.py @@ -68,7 +68,7 @@ class SyncMapFormat(object): AUD = "aud" """ - Alias for AUDM + Alias for AUDM. """ AUDH = "audh" @@ -106,7 +106,7 @@ class SyncMapFormat(object): CSV = "csv" """ - Alias for CSVM + Alias for CSVM. """ CSVH = "csvh" @@ -114,13 +114,18 @@ class SyncMapFormat(object): Comma-separated values (CSV), with human-readable time values:: - f001,00:00:00.000,00:00:01.234,First fragment text - f002,00:00:01.234,00:00:05.678,Second fragment text - f003,00:00:05.678,00:00:07.890,Third fragment text + f001,00:00:00.000,00:00:01.234,"First fragment text" + f002,00:00:01.234,00:00:05.678,"Second fragment text" + f003,00:00:05.678,00:00:07.890,"Third fragment text" * Multiple levels: no * Multiple lines: no + Please note that the text is assumed to be contained + in double quotes ("..."), + which are stripped when reading from file, + and added back when writing to file. + .. versionadded:: 1.0.4 """ @@ -129,19 +134,24 @@ class SyncMapFormat(object): Comma-separated values (CSV), with machine-readable time values:: - f001,0.000,1.234,First fragment text - f002,1.234,5.678,Second fragment text - f003,5.678,7.890,Third fragment text + f001,0.000,1.234,"First fragment text" + f002,1.234,5.678,"Second fragment text" + f003,5.678,7.890,"Third fragment text" * Multiple levels: no * Multiple lines: no + Please note that the text is assumed to be contained + in double quotes ("..."), + which are stripped when reading from file, + and added back when writing to file. + .. versionadded:: 1.2.0 """ DFXP = "dfxp" """ - Alias for TTML + Alias for TTML. .. versionadded:: 1.4.1 """ @@ -152,7 +162,7 @@ class SyncMapFormat(object): -
+
@@ -286,7 +296,7 @@ class SyncMapFormat(object): SMIL = "smil" """ - Alias for SMILH + Alias for SMILH. """ SMILH = "smilh" @@ -374,14 +384,7 @@ class SyncMapFormat(object): SSV = "ssv" """ - Space-separated plain text:: - - 0.000 1.234 f001 "First fragment text" - 1.234 5.678 f002 "Second fragment text" - 5.678 7.890 f003 "Third fragment text" - - * Multiple levels: no - * Multiple lines: no + Alias for SSVM. .. versionadded:: 1.0.4 """ @@ -398,6 +401,11 @@ class SyncMapFormat(object): * Multiple levels: no * Multiple lines: no + Please note that the text is assumed to be contained + in double quotes ("..."), + which are stripped when reading from file, + and added back when writing to file. + .. versionadded:: 1.0.4 """ @@ -413,6 +421,11 @@ class SyncMapFormat(object): * Multiple levels: no * Multiple lines: no + Please note that the text is assumed to be contained + in double quotes ("..."), + which are stripped when reading from file, + and added back when writing to file. + .. versionadded:: 1.2.0 """ @@ -439,14 +452,84 @@ class SyncMapFormat(object): TAB = "tab" """ - Deprecated, it will be removed in v2.0.0. Use TSV instead. + Deprecated, it will be removed in v2.0.0. + Use TSV instead. .. deprecated:: 1.0.3 """ + TEXTGRID = "textgrid" + """ + Praat long TextGrid format:: + + File type = "ooTextFile" + Object class = "TextGrid" + + xmin = 0.0 + xmax = 7.89 + tiers? + size = 1 + item []: + item [1]: + class = "IntervalTier" + name = "Token" + xmin = 0.0 + xmax = 7.89 + intervals: size = 3 + intervals [1]: + xmin = 0.0 + xmax = 1.234 + text = "First fragment text" + intervals [2]: + xmin = 1.234 + xmax = 5.678 + text = "Second fragment text" + intervals [3]: + xmin = 5.678 + xmax = 7.89 + text = "Third fragment text" + + * Multiple levels: no (not yet) + * Multiple lines: no + + .. versionadded:: 1.6.1 + """ + + TEXTGRID_SHORT = "textgrid_short" + """ + Praat short TextGrid format:: + + File type = "ooTextFile" + Object class = "TextGrid" + + 0.0 + 7.89 + + 1 + "IntervalTier" + "Token" + 0.0 + 7.89 + 3 + 0.0 + 1.234 + "First fragment text" + 1.234 + 5.678 + "Second fragment text" + 5.678 + 7.89 + "Third fragment text" + + * Multiple levels: no (not yet) + * Multiple lines: no + + .. versionadded:: 1.6.1 + """ + TSV = "tsv" """ - Alias for TSVM + Alias for TSVM. """ TSVH = "tsvh" @@ -508,7 +591,7 @@ class SyncMapFormat(object): TXT = "txt" """ - Alias for TXTM + Alias for TXTM. """ TXTH = "txth" @@ -523,6 +606,11 @@ class SyncMapFormat(object): * Multiple levels: no * Multiple lines: no + Please note that the text is assumed to be contained + in double quotes ("..."), + which are stripped when reading from file, + and added back when writing to file. + .. versionadded:: 1.0.4 """ @@ -539,6 +627,11 @@ class SyncMapFormat(object): * Multiple levels: no * Multiple lines: no + Please note that the text is assumed to be contained + in double quotes ("..."), + which are stripped when reading from file, + and added back when writing to file. + .. versionadded:: 1.2.0 """ @@ -618,7 +711,8 @@ class SyncMapFormat(object): * Multiple levels: no * Multiple lines: no - Deprecated, it will be removed in v2.0.0. Use XML instead. + Deprecated, it will be removed in v2.0.0. + Use XML instead. .. deprecated:: 1.2.0 """ @@ -644,6 +738,8 @@ class SyncMapFormat(object): SSVM, SUB, TAB, + TEXTGRID, + TEXTGRID_SHORT, TSV, TSVH, TSVM, @@ -894,6 +990,8 @@ def read(self, sync_map_format, input_file_path, parameters=None): SyncMapFormat.SSVM: partial(self._read_ssv, parse_time=gf.time_from_ssmmm), SyncMapFormat.SUB: partial(self._read_sub, use_newline=False), SyncMapFormat.TAB: partial(self._read_tsv, parse_time=gf.time_from_ssmmm), + SyncMapFormat.TEXTGRID: self._read_textgrid, + SyncMapFormat.TEXTGRID_SHORT: self._read_textgrid, SyncMapFormat.TSV: partial(self._read_tsv, parse_time=gf.time_from_ssmmm), SyncMapFormat.TSVH: partial(self._read_tsv, parse_time=gf.time_from_hhmmssmmm), SyncMapFormat.TSVM: partial(self._read_tsv, parse_time=gf.time_from_ssmmm), @@ -964,6 +1062,8 @@ def write(self, sync_map_format, output_file_path, parameters=None): SyncMapFormat.SSVM: partial(self._write_ssv, format_time=gf.time_to_ssmmm), SyncMapFormat.SUB: partial(self._write_sub, use_newline=False), SyncMapFormat.TAB: partial(self._write_tsv, format_time=gf.time_to_ssmmm), + SyncMapFormat.TEXTGRID: partial(self._write_textgrid, full=True), + SyncMapFormat.TEXTGRID_SHORT: partial(self._write_textgrid, full=False), SyncMapFormat.TSV: partial(self._write_tsv, format_time=gf.time_to_ssmmm), SyncMapFormat.TSVH: partial(self._write_tsv, format_time=gf.time_to_hhmmssmmm), SyncMapFormat.TSVM: partial(self._write_tsv, format_time=gf.time_to_ssmmm), @@ -1009,20 +1109,18 @@ def write(self, sync_map_format, output_file_path, parameters=None): def _read_aud(self, input_file, parse_time): """ Read from AUD file """ - identifier_index = 1 - for line in input_file.readlines(): + for identifier_index, line in enumerate(input_file.readlines(), 1): split = line.strip().split("\t") self.add_fragment( SyncMapFragment( text_fragment=TextFragment( - identifier=(u"f" + str(identifier_index).zfill(6)), + identifier=(u"f%06d" % (identifier_index)), lines=[split[2]] ), begin=parse_time(split[0]), end=parse_time(split[1]) ) ) - identifier_index += 1 def _write_aud(self, output_file, format_time): """ Write to AUD file """ @@ -1124,8 +1222,7 @@ def _write_eaf(self, output_file, parameters=None): tier = etree.SubElement(doc, "TIER") tier.attrib["LINGUISTIC_TYPE_REF"] = "utterance" tier.attrib["TIER_ID"] = "tier1" - i = 1 - for fragment in self.fragments: + for i, fragment in enumerate(self.fragments, 1): # time slots begin_id = "ts%06db" % i end_id = "ts%06de" % i @@ -1143,7 +1240,6 @@ def _write_eaf(self, output_file, parameters=None): alignable.attrib["TIME_SLOT_REF2"] = end_id value = etree.SubElement(alignable, "ANNOTATION_VALUE") value.text = u" ".join(fragment.text_fragment.lines) - i += 1 # linguistic type ling = etree.SubElement(doc, "LINGUISTIC_TYPE") ling.attrib["LINGUISTIC_TYPE_ID"] = "utterance" @@ -1262,44 +1358,39 @@ def _write_smil(self, output_file, format_time, parameters): smil_elem.attrib["version"] = "3.0" body_elem = etree.SubElement(smil_elem, "{%s}body" % smil_ns) seq_elem = etree.SubElement(body_elem, "{%s}seq" % smil_ns) - seq_elem.attrib["id"] = "seq" + str(1).zfill(6) + seq_elem.attrib["id"] = u"seq000001" seq_elem.attrib["{%s}textref" % epub_ns] = text_ref if self.is_single_level: # single level - i = 1 - for fragment in self.fragments: + for i, fragment in enumerate(self.fragments, 1): text = fragment.text_fragment par_elem = etree.SubElement(seq_elem, "{%s}par" % smil_ns) - par_elem.attrib["id"] = "par" + str(i).zfill(6) + par_elem.attrib["id"] = "par%06d" % (i) text_elem = etree.SubElement(par_elem, "{%s}text" % smil_ns) text_elem.attrib["src"] = "%s#%s" % (text_ref, text.identifier) audio_elem = etree.SubElement(par_elem, "{%s}audio" % smil_ns) audio_elem.attrib["src"] = audio_ref audio_elem.attrib["clipBegin"] = format_time(fragment.begin) audio_elem.attrib["clipEnd"] = format_time(fragment.end) - i += 1 else: # TODO support generic multiple levels # multiple levels - par_index = 1 - for par_child in self.fragments_tree.children_not_empty: + for par_index, par_child in enumerate(self.fragments_tree.children_not_empty, 1): par_seq_elem = etree.SubElement(seq_elem, "{%s}seq" % smil_ns) - # COMMENTED par_seq_elem.attrib["id"] = "p" + str(par_index).zfill(6) + # COMMENTED par_seq_elem.attrib["id"] = "p%06d" % (par_index) par_seq_elem.attrib["{%s}type" % epub_ns] = "paragraph" par_seq_elem.attrib["{%s}textref" % epub_ns] = text_ref + "#" + par_child.value.text_fragment.identifier - sen_index = 1 - for sen_child in par_child.children_not_empty: + for sen_index, sen_child in enumerate(par_child.children_not_empty, 1): sen_seq_elem = etree.SubElement(par_seq_elem, "{%s}seq" % smil_ns) - # COMMENTED sen_seq_elem.attrib["id"] = par_seq_elem.attrib["id"] + "s" + str(sen_index).zfill(6) + # COMMENTED sen_seq_elem.attrib["id"] = par_seq_elem.attrib["id"] + "s%06d" % (sen_index) sen_seq_elem.attrib["{%s}type" % epub_ns] = "sentence" sen_seq_elem.attrib["{%s}textref" % epub_ns] = text_ref + "#" + sen_child.value.text_fragment.identifier - wor_index = 1 - for wor_child in sen_child.children_not_empty: + for wor_index, wor_child in enumerate(sen_child.children_not_empty, 1): fragment = wor_child.value text = fragment.text_fragment wor_seq_elem = etree.SubElement(sen_seq_elem, "{%s}seq" % smil_ns) - # COMMENTED wor_seq_elem.attrib["id"] = sen_seq_elem.attrib["id"] + "s" + str(wor_index).zfill(6) + # COMMENTED wor_seq_elem.attrib["id"] = sen_seq_elem.attrib["id"] + "w%06d" % (wor_index) wor_seq_elem.attrib["{%s}type" % epub_ns] = "word" wor_seq_elem.attrib["{%s}textref" % epub_ns] = text_ref + "#" + text.identifier wor_par_elem = etree.SubElement(wor_seq_elem, "{%s}par" % smil_ns) @@ -1309,9 +1400,6 @@ def _write_smil(self, output_file, format_time, parameters): audio_elem.attrib["src"] = audio_ref audio_elem.attrib["clipBegin"] = format_time(fragment.begin) audio_elem.attrib["clipEnd"] = format_time(fragment.end) - wor_index += 1 - sen_index += 1 - par_index += 1 # write tree self._write_tree_to_file(smil_elem, output_file, xml_declaration=False) @@ -1323,7 +1411,7 @@ def _read_srt(self, input_file): line = lines[i].strip() if len(line) > 0: identifier_index = int(line) - identifier = u"f" + str(identifier_index).zfill(6) + identifier = u"f%06d" % (identifier_index) i += 1 if i < len(lines): line = lines[i].strip() @@ -1355,8 +1443,7 @@ def _read_srt(self, input_file): def _write_srt(self, output_file): """ Write to SRT file """ msg = [] - i = 1 - for fragment in self.fragments: + for i, fragment in enumerate(self.fragments, 1): text = fragment.text_fragment msg.append(u"%d" % i) msg.append(u"%s --> %s" % ( @@ -1365,7 +1452,6 @@ def _write_srt(self, output_file): )) msg.extend(text.lines) msg.append(u"") - i += 1 # add an extra \n at the end msg.append(u"") output_file.write(u"\n".join(msg)) @@ -1385,7 +1471,7 @@ def _read_sub(self, input_file, use_newline=False): if in_subtitle: timings = line.split(",") if len(timings) == 2: - identifier = u"f" + str(identifier_index).zfill(6) + identifier = u"f%06d" % (identifier_index) identifier_index += 1 begin = gf.time_from_hhmmssmmm(timings[0]) end = gf.time_from_hhmmssmmm(timings[1]) @@ -1464,6 +1550,67 @@ def _write_ssv(self, output_file, format_time): ) output_file.write(u"\n".join(msg)) + def _read_textgrid(self, input_file): + """ Read from TEXTGRID file """ + try: + import tgt + except ImportError as exc: + self.log_exc(u"Python module tgt is not installed", exc, True, ImportError) + + # from https://github.com/hbuschme/TextGridTools/blob/master/tgt/io.py + # get all non-empty lines + lines = [l.strip() for l in input_file.readlines()] + lines = [l for l in lines if l not in ["", "\""]] + # long format => has "xmin = 0.0" in its 3rd line + if lines[2].startswith("xmin"): + read_function = tgt.io.read_long_textgrid + else: + read_function = tgt.io.read_short_textgrid + textgrid = read_function( + filename="Dummy TextGrid file", + stg=lines, + include_empty_intervals=True + ) + if len(textgrid.tiers) == 0: + # no tiers => nothing to read => empty sync map + return + # TODO at the moment we support only one tier, the first + for i, interval in enumerate(textgrid.tiers[0].intervals, 1): + self.add_fragment( + SyncMapFragment( + text_fragment=TextFragment( + identifier=u"f%06d" % i, + lines=[interval.text] + ), + begin=TimeValue(interval.start_time.real), + end=TimeValue(interval.end_time.real) + ) + ) + + def _write_textgrid(self, output_file, full=True): + """ Write to TEXTGRID file """ + try: + import tgt + except ImportError as exc: + self.log_exc(u"Python module tgt is not installed", exc, True, ImportError) + # from https://github.com/hbuschme/TextGridTools/blob/master/tgt/io.py + textgrid = tgt.TextGrid() + tier = tgt.IntervalTier(name="Token") + for fragment in self.fragments: + begin = float(fragment.begin) + end = float(fragment.end) + text = fragment.text_fragment.text + if text == u"": + text = u"SIL" + interval = tgt.Interval(begin, end, text=text) + tier.add_interval(interval) + textgrid.add_tier(tier) + if full: + msg = tgt.io.export_to_long_textgrid(textgrid) + else: + msg = tgt.io.export_to_short_textgrid(textgrid) + output_file.write(msg) + def _read_tsv(self, input_file, parse_time): """ Read from TSV file """ for line in input_file.readlines(): @@ -1605,14 +1752,16 @@ def _write_txt(self, output_file, format_time): def _read_vtt(self, input_file): """ Read from WebVTT file """ + # TODO make this function more generic lines = input_file.readlines() - # ignore the first line containing "WEBVTT" and the following blank line + # ignore the first line containing "WEBVTT", + # and the following blank line i = 2 while i < len(lines): line = lines[i].strip() if len(line) > 0: identifier_index = int(line) - identifier = u"f" + str(identifier_index).zfill(6) + identifier = u"f%06d" % (identifier_index) i += 1 if i < len(lines): line = lines[i].strip() @@ -1643,11 +1792,11 @@ def _read_vtt(self, input_file): def _write_vtt(self, output_file): """ Write to WebVTT file """ + # NOTE this will create a valid, if constrained, WebVTT file msg = [] - i = 1 msg.append(u"WEBVTT") msg.append(u"") - for fragment in self.fragments: + for i, fragment in enumerate(self.fragments, 1): text = fragment.text_fragment msg.append(u"%d" % i) msg.append(u"%s --> %s" % ( @@ -1656,7 +1805,6 @@ def _write_vtt(self, output_file): )) msg.extend(text.lines) msg.append(u"") - i += 1 # add an extra \n at the end msg.append(u"") output_file.write(u"\n".join(msg)) diff --git a/aeneas/tests/res/syncmaps/sonnet001.aud b/aeneas/tests/res/syncmaps/sonnet001.aud index 9d743535..a34b55cc 100644 --- a/aeneas/tests/res/syncmaps/sonnet001.aud +++ b/aeneas/tests/res/syncmaps/sonnet001.aud @@ -1,15 +1,15 @@ -0.000 2.640 1 -2.640 5.880 From fairest creatures we desire increase, +0.000 2.680 1 +2.680 5.880 From fairest creatures we desire increase, 5.880 9.240 That thereby beauty's rose might never die, 9.240 11.920 But as the riper should by time decease, 11.920 15.280 His tender heir might bear his memory: -15.280 18.800 But thou contracted to thine own bright eyes, -18.800 22.760 Feed'st thy light's flame with self-substantial fuel, -22.760 25.680 Making a famine where abundance lies, +15.280 18.600 But thou contracted to thine own bright eyes, +18.600 22.800 Feed'st thy light's flame with self-substantial fuel, +22.800 25.680 Making a famine where abundance lies, 25.680 31.240 Thy self thy foe, to thy sweet self too cruel: -31.240 34.400 Thou that art now the world's fresh ornament, -34.400 36.920 And only herald to the gaudy spring, -36.920 40.640 Within thine own bud buriest thy content, -40.640 43.640 And tender churl mak'st waste in niggarding: -43.640 48.080 Pity the world, or else this glutton be, +31.240 34.280 Thou that art now the world's fresh ornament, +34.280 36.960 And only herald to the gaudy spring, +36.960 40.680 Within thine own bud buriest thy content, +40.680 44.560 And tender churl mak'st waste in niggarding: +44.560 48.080 Pity the world, or else this glutton be, 48.080 53.240 To eat the world's due, by the grave and thee. \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001.audh b/aeneas/tests/res/syncmaps/sonnet001.audh index c453b76f..8fdc3569 100644 --- a/aeneas/tests/res/syncmaps/sonnet001.audh +++ b/aeneas/tests/res/syncmaps/sonnet001.audh @@ -1,15 +1,15 @@ -00:00:00.000 00:00:02.640 1 -00:00:02.640 00:00:05.880 From fairest creatures we desire increase, +00:00:00.000 00:00:02.680 1 +00:00:02.680 00:00:05.880 From fairest creatures we desire increase, 00:00:05.880 00:00:09.240 That thereby beauty's rose might never die, 00:00:09.240 00:00:11.920 But as the riper should by time decease, 00:00:11.920 00:00:15.280 His tender heir might bear his memory: -00:00:15.280 00:00:18.800 But thou contracted to thine own bright eyes, -00:00:18.800 00:00:22.760 Feed'st thy light's flame with self-substantial fuel, -00:00:22.760 00:00:25.680 Making a famine where abundance lies, +00:00:15.280 00:00:18.600 But thou contracted to thine own bright eyes, +00:00:18.600 00:00:22.800 Feed'st thy light's flame with self-substantial fuel, +00:00:22.800 00:00:25.680 Making a famine where abundance lies, 00:00:25.680 00:00:31.240 Thy self thy foe, to thy sweet self too cruel: -00:00:31.240 00:00:34.400 Thou that art now the world's fresh ornament, -00:00:34.400 00:00:36.920 And only herald to the gaudy spring, -00:00:36.920 00:00:40.640 Within thine own bud buriest thy content, -00:00:40.640 00:00:43.640 And tender churl mak'st waste in niggarding: -00:00:43.640 00:00:48.080 Pity the world, or else this glutton be, +00:00:31.240 00:00:34.280 Thou that art now the world's fresh ornament, +00:00:34.280 00:00:36.960 And only herald to the gaudy spring, +00:00:36.960 00:00:40.680 Within thine own bud buriest thy content, +00:00:40.680 00:00:44.560 And tender churl mak'st waste in niggarding: +00:00:44.560 00:00:48.080 Pity the world, or else this glutton be, 00:00:48.080 00:00:53.240 To eat the world's due, by the grave and thee. \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001.audm b/aeneas/tests/res/syncmaps/sonnet001.audm index 9d743535..a34b55cc 100644 --- a/aeneas/tests/res/syncmaps/sonnet001.audm +++ b/aeneas/tests/res/syncmaps/sonnet001.audm @@ -1,15 +1,15 @@ -0.000 2.640 1 -2.640 5.880 From fairest creatures we desire increase, +0.000 2.680 1 +2.680 5.880 From fairest creatures we desire increase, 5.880 9.240 That thereby beauty's rose might never die, 9.240 11.920 But as the riper should by time decease, 11.920 15.280 His tender heir might bear his memory: -15.280 18.800 But thou contracted to thine own bright eyes, -18.800 22.760 Feed'st thy light's flame with self-substantial fuel, -22.760 25.680 Making a famine where abundance lies, +15.280 18.600 But thou contracted to thine own bright eyes, +18.600 22.800 Feed'st thy light's flame with self-substantial fuel, +22.800 25.680 Making a famine where abundance lies, 25.680 31.240 Thy self thy foe, to thy sweet self too cruel: -31.240 34.400 Thou that art now the world's fresh ornament, -34.400 36.920 And only herald to the gaudy spring, -36.920 40.640 Within thine own bud buriest thy content, -40.640 43.640 And tender churl mak'st waste in niggarding: -43.640 48.080 Pity the world, or else this glutton be, +31.240 34.280 Thou that art now the world's fresh ornament, +34.280 36.960 And only herald to the gaudy spring, +36.960 40.680 Within thine own bud buriest thy content, +40.680 44.560 And tender churl mak'st waste in niggarding: +44.560 48.080 Pity the world, or else this glutton be, 48.080 53.240 To eat the world's due, by the grave and thee. \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001.csv b/aeneas/tests/res/syncmaps/sonnet001.csv index d57821bd..298a64ff 100644 --- a/aeneas/tests/res/syncmaps/sonnet001.csv +++ b/aeneas/tests/res/syncmaps/sonnet001.csv @@ -1,15 +1,15 @@ -f000001,0.000,2.640,"1" -f000002,2.640,5.880,"From fairest creatures we desire increase," +f000001,0.000,2.680,"1" +f000002,2.680,5.880,"From fairest creatures we desire increase," f000003,5.880,9.240,"That thereby beauty's rose might never die," f000004,9.240,11.920,"But as the riper should by time decease," f000005,11.920,15.280,"His tender heir might bear his memory:" -f000006,15.280,18.800,"But thou contracted to thine own bright eyes," -f000007,18.800,22.760,"Feed'st thy light's flame with self-substantial fuel," -f000008,22.760,25.680,"Making a famine where abundance lies," +f000006,15.280,18.600,"But thou contracted to thine own bright eyes," +f000007,18.600,22.800,"Feed'st thy light's flame with self-substantial fuel," +f000008,22.800,25.680,"Making a famine where abundance lies," f000009,25.680,31.240,"Thy self thy foe, to thy sweet self too cruel:" -f000010,31.240,34.400,"Thou that art now the world's fresh ornament," -f000011,34.400,36.920,"And only herald to the gaudy spring," -f000012,36.920,40.640,"Within thine own bud buriest thy content," -f000013,40.640,43.640,"And tender churl mak'st waste in niggarding:" -f000014,43.640,48.080,"Pity the world, or else this glutton be," +f000010,31.240,34.280,"Thou that art now the world's fresh ornament," +f000011,34.280,36.960,"And only herald to the gaudy spring," +f000012,36.960,40.680,"Within thine own bud buriest thy content," +f000013,40.680,44.560,"And tender churl mak'st waste in niggarding:" +f000014,44.560,48.080,"Pity the world, or else this glutton be," f000015,48.080,53.240,"To eat the world's due, by the grave and thee." \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001.csvh b/aeneas/tests/res/syncmaps/sonnet001.csvh index a92065f7..b7c1d668 100644 --- a/aeneas/tests/res/syncmaps/sonnet001.csvh +++ b/aeneas/tests/res/syncmaps/sonnet001.csvh @@ -1,15 +1,15 @@ -f000001,00:00:00.000,00:00:02.640,"1" -f000002,00:00:02.640,00:00:05.880,"From fairest creatures we desire increase," +f000001,00:00:00.000,00:00:02.680,"1" +f000002,00:00:02.680,00:00:05.880,"From fairest creatures we desire increase," f000003,00:00:05.880,00:00:09.240,"That thereby beauty's rose might never die," f000004,00:00:09.240,00:00:11.920,"But as the riper should by time decease," f000005,00:00:11.920,00:00:15.280,"His tender heir might bear his memory:" -f000006,00:00:15.280,00:00:18.800,"But thou contracted to thine own bright eyes," -f000007,00:00:18.800,00:00:22.760,"Feed'st thy light's flame with self-substantial fuel," -f000008,00:00:22.760,00:00:25.680,"Making a famine where abundance lies," +f000006,00:00:15.280,00:00:18.600,"But thou contracted to thine own bright eyes," +f000007,00:00:18.600,00:00:22.800,"Feed'st thy light's flame with self-substantial fuel," +f000008,00:00:22.800,00:00:25.680,"Making a famine where abundance lies," f000009,00:00:25.680,00:00:31.240,"Thy self thy foe, to thy sweet self too cruel:" -f000010,00:00:31.240,00:00:34.400,"Thou that art now the world's fresh ornament," -f000011,00:00:34.400,00:00:36.920,"And only herald to the gaudy spring," -f000012,00:00:36.920,00:00:40.640,"Within thine own bud buriest thy content," -f000013,00:00:40.640,00:00:43.640,"And tender churl mak'st waste in niggarding:" -f000014,00:00:43.640,00:00:48.080,"Pity the world, or else this glutton be," +f000010,00:00:31.240,00:00:34.280,"Thou that art now the world's fresh ornament," +f000011,00:00:34.280,00:00:36.960,"And only herald to the gaudy spring," +f000012,00:00:36.960,00:00:40.680,"Within thine own bud buriest thy content," +f000013,00:00:40.680,00:00:44.560,"And tender churl mak'st waste in niggarding:" +f000014,00:00:44.560,00:00:48.080,"Pity the world, or else this glutton be," f000015,00:00:48.080,00:00:53.240,"To eat the world's due, by the grave and thee." \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001.csvm b/aeneas/tests/res/syncmaps/sonnet001.csvm index d57821bd..298a64ff 100644 --- a/aeneas/tests/res/syncmaps/sonnet001.csvm +++ b/aeneas/tests/res/syncmaps/sonnet001.csvm @@ -1,15 +1,15 @@ -f000001,0.000,2.640,"1" -f000002,2.640,5.880,"From fairest creatures we desire increase," +f000001,0.000,2.680,"1" +f000002,2.680,5.880,"From fairest creatures we desire increase," f000003,5.880,9.240,"That thereby beauty's rose might never die," f000004,9.240,11.920,"But as the riper should by time decease," f000005,11.920,15.280,"His tender heir might bear his memory:" -f000006,15.280,18.800,"But thou contracted to thine own bright eyes," -f000007,18.800,22.760,"Feed'st thy light's flame with self-substantial fuel," -f000008,22.760,25.680,"Making a famine where abundance lies," +f000006,15.280,18.600,"But thou contracted to thine own bright eyes," +f000007,18.600,22.800,"Feed'st thy light's flame with self-substantial fuel," +f000008,22.800,25.680,"Making a famine where abundance lies," f000009,25.680,31.240,"Thy self thy foe, to thy sweet self too cruel:" -f000010,31.240,34.400,"Thou that art now the world's fresh ornament," -f000011,34.400,36.920,"And only herald to the gaudy spring," -f000012,36.920,40.640,"Within thine own bud buriest thy content," -f000013,40.640,43.640,"And tender churl mak'st waste in niggarding:" -f000014,43.640,48.080,"Pity the world, or else this glutton be," +f000010,31.240,34.280,"Thou that art now the world's fresh ornament," +f000011,34.280,36.960,"And only herald to the gaudy spring," +f000012,36.960,40.680,"Within thine own bud buriest thy content," +f000013,40.680,44.560,"And tender churl mak'st waste in niggarding:" +f000014,44.560,48.080,"Pity the world, or else this glutton be," f000015,48.080,53.240,"To eat the world's due, by the grave and thee." \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001.dfxp b/aeneas/tests/res/syncmaps/sonnet001.dfxp index 74133acc..0d175441 100644 --- a/aeneas/tests/res/syncmaps/sonnet001.dfxp +++ b/aeneas/tests/res/syncmaps/sonnet001.dfxp @@ -2,20 +2,20 @@
-

1

-

From fairest creatures we desire increase,

+

1

+

From fairest creatures we desire increase,

That thereby beauty's rose might never die,

But as the riper should by time decease,

His tender heir might bear his memory:

-

But thou contracted to thine own bright eyes,

-

Feed'st thy light's flame with self-substantial fuel,

-

Making a famine where abundance lies,

+

But thou contracted to thine own bright eyes,

+

Feed'st thy light's flame with self-substantial fuel,

+

Making a famine where abundance lies,

Thy self thy foe, to thy sweet self too cruel:

-

Thou that art now the world's fresh ornament,

-

And only herald to the gaudy spring,

-

Within thine own bud buriest thy content,

-

And tender churl mak'st waste in niggarding:

-

Pity the world, or else this glutton be,

+

Thou that art now the world's fresh ornament,

+

And only herald to the gaudy spring,

+

Within thine own bud buriest thy content,

+

And tender churl mak'st waste in niggarding:

+

Pity the world, or else this glutton be,

To eat the world's due, by the grave and thee.

diff --git a/aeneas/tests/res/syncmaps/sonnet001.eaf b/aeneas/tests/res/syncmaps/sonnet001.eaf index ab6e1a61..9c9f41d4 100644 --- a/aeneas/tests/res/syncmaps/sonnet001.eaf +++ b/aeneas/tests/res/syncmaps/sonnet001.eaf @@ -1,11 +1,10 @@ - -
-
+ +
- - + + @@ -14,22 +13,22 @@ - - - - + + + + - - - - - - - - + + + + + + + + diff --git a/aeneas/tests/res/syncmaps/sonnet001.json b/aeneas/tests/res/syncmaps/sonnet001.json index 4ab45aed..ca5a5129 100644 --- a/aeneas/tests/res/syncmaps/sonnet001.json +++ b/aeneas/tests/res/syncmaps/sonnet001.json @@ -3,7 +3,7 @@ { "begin": "0.000", "children": [], - "end": "2.640", + "end": "2.680", "id": "f000001", "language": "en", "lines": [ @@ -11,7 +11,7 @@ ] }, { - "begin": "2.640", + "begin": "2.680", "children": [], "end": "5.880", "id": "f000002", @@ -53,7 +53,7 @@ { "begin": "15.280", "children": [], - "end": "18.800", + "end": "18.600", "id": "f000006", "language": "en", "lines": [ @@ -61,9 +61,9 @@ ] }, { - "begin": "18.800", + "begin": "18.600", "children": [], - "end": "22.760", + "end": "22.800", "id": "f000007", "language": "en", "lines": [ @@ -71,7 +71,7 @@ ] }, { - "begin": "22.760", + "begin": "22.800", "children": [], "end": "25.680", "id": "f000008", @@ -93,7 +93,7 @@ { "begin": "31.240", "children": [], - "end": "34.400", + "end": "34.280", "id": "f000010", "language": "en", "lines": [ @@ -101,9 +101,9 @@ ] }, { - "begin": "34.400", + "begin": "34.280", "children": [], - "end": "36.920", + "end": "36.960", "id": "f000011", "language": "en", "lines": [ @@ -111,9 +111,9 @@ ] }, { - "begin": "36.920", + "begin": "36.960", "children": [], - "end": "40.640", + "end": "40.680", "id": "f000012", "language": "en", "lines": [ @@ -121,9 +121,9 @@ ] }, { - "begin": "40.640", + "begin": "40.680", "children": [], - "end": "43.640", + "end": "44.560", "id": "f000013", "language": "en", "lines": [ @@ -131,7 +131,7 @@ ] }, { - "begin": "43.640", + "begin": "44.560", "children": [], "end": "48.080", "id": "f000014", diff --git a/aeneas/tests/res/syncmaps/sonnet001.rbse b/aeneas/tests/res/syncmaps/sonnet001.rbse index b3c7f65f..731d24de 100644 --- a/aeneas/tests/res/syncmaps/sonnet001.rbse +++ b/aeneas/tests/res/syncmaps/sonnet001.rbse @@ -2,11 +2,11 @@ "smil_data": [ { "begin": "0.000", - "end": "2.640", + "end": "2.680", "id": "f000001" }, { - "begin": "2.640", + "begin": "2.680", "end": "5.880", "id": "f000002" }, @@ -27,16 +27,16 @@ }, { "begin": "15.280", - "end": "18.800", + "end": "18.600", "id": "f000006" }, { - "begin": "18.800", - "end": "22.760", + "begin": "18.600", + "end": "22.800", "id": "f000007" }, { - "begin": "22.760", + "begin": "22.800", "end": "25.680", "id": "f000008" }, @@ -47,26 +47,26 @@ }, { "begin": "31.240", - "end": "34.400", + "end": "34.280", "id": "f000010" }, { - "begin": "34.400", - "end": "36.920", + "begin": "34.280", + "end": "36.960", "id": "f000011" }, { - "begin": "36.920", - "end": "40.640", + "begin": "36.960", + "end": "40.680", "id": "f000012" }, { - "begin": "40.640", - "end": "43.640", + "begin": "40.680", + "end": "44.560", "id": "f000013" }, { - "begin": "43.640", + "begin": "44.560", "end": "48.080", "id": "f000014" }, diff --git a/aeneas/tests/res/syncmaps/sonnet001.sbv b/aeneas/tests/res/syncmaps/sonnet001.sbv index 694daa78..1982ba8a 100644 --- a/aeneas/tests/res/syncmaps/sonnet001.sbv +++ b/aeneas/tests/res/syncmaps/sonnet001.sbv @@ -1,8 +1,8 @@ [SUBTITLE] -00:00:00.000,00:00:02.640 +00:00:00.000,00:00:02.680 1 -00:00:02.640,00:00:05.880 +00:00:02.680,00:00:05.880 From fairest creatures we desire increase, 00:00:05.880,00:00:09.240 @@ -14,31 +14,31 @@ But as the riper should by time decease, 00:00:11.920,00:00:15.280 His tender heir might bear his memory: -00:00:15.280,00:00:18.800 +00:00:15.280,00:00:18.600 But thou contracted to thine own bright eyes, -00:00:18.800,00:00:22.760 +00:00:18.600,00:00:22.800 Feed'st thy light's flame with self-substantial fuel, -00:00:22.760,00:00:25.680 +00:00:22.800,00:00:25.680 Making a famine where abundance lies, 00:00:25.680,00:00:31.240 Thy self thy foe, to thy sweet self too cruel: -00:00:31.240,00:00:34.400 +00:00:31.240,00:00:34.280 Thou that art now the world's fresh ornament, -00:00:34.400,00:00:36.920 +00:00:34.280,00:00:36.960 And only herald to the gaudy spring, -00:00:36.920,00:00:40.640 +00:00:36.960,00:00:40.680 Within thine own bud buriest thy content, -00:00:40.640,00:00:43.640 +00:00:40.680,00:00:44.560 And tender churl mak'st waste in niggarding: -00:00:43.640,00:00:48.080 +00:00:44.560,00:00:48.080 Pity the world, or else this glutton be, 00:00:48.080,00:00:53.240 diff --git a/aeneas/tests/res/syncmaps/sonnet001.smil b/aeneas/tests/res/syncmaps/sonnet001.smil index 4a83b60f..8713fb20 100644 --- a/aeneas/tests/res/syncmaps/sonnet001.smil +++ b/aeneas/tests/res/syncmaps/sonnet001.smil @@ -3,11 +3,11 @@ - - @@ -23,15 +23,15 @@ - - - @@ -39,23 +39,23 @@ - - - - - diff --git a/aeneas/tests/res/syncmaps/sonnet001.smilh b/aeneas/tests/res/syncmaps/sonnet001.smilh index 4a83b60f..8713fb20 100644 --- a/aeneas/tests/res/syncmaps/sonnet001.smilh +++ b/aeneas/tests/res/syncmaps/sonnet001.smilh @@ -3,11 +3,11 @@ - - @@ -23,15 +23,15 @@ - - - @@ -39,23 +39,23 @@ - - - - - diff --git a/aeneas/tests/res/syncmaps/sonnet001.smilm b/aeneas/tests/res/syncmaps/sonnet001.smilm index c6fabebf..eae93e40 100644 --- a/aeneas/tests/res/syncmaps/sonnet001.smilm +++ b/aeneas/tests/res/syncmaps/sonnet001.smilm @@ -3,11 +3,11 @@ - - @@ -23,15 +23,15 @@ - - - @@ -39,23 +39,23 @@ - - - - - diff --git a/aeneas/tests/res/syncmaps/sonnet001.srt b/aeneas/tests/res/syncmaps/sonnet001.srt index 70752101..6e013bbd 100644 --- a/aeneas/tests/res/syncmaps/sonnet001.srt +++ b/aeneas/tests/res/syncmaps/sonnet001.srt @@ -1,9 +1,9 @@ 1 -00:00:00,000 --> 00:00:02,640 +00:00:00,000 --> 00:00:02,680 1 2 -00:00:02,640 --> 00:00:05,880 +00:00:02,680 --> 00:00:05,880 From fairest creatures we desire increase, 3 @@ -19,15 +19,15 @@ But as the riper should by time decease, His tender heir might bear his memory: 6 -00:00:15,280 --> 00:00:18,800 +00:00:15,280 --> 00:00:18,600 But thou contracted to thine own bright eyes, 7 -00:00:18,800 --> 00:00:22,760 +00:00:18,600 --> 00:00:22,800 Feed'st thy light's flame with self-substantial fuel, 8 -00:00:22,760 --> 00:00:25,680 +00:00:22,800 --> 00:00:25,680 Making a famine where abundance lies, 9 @@ -35,23 +35,23 @@ Making a famine where abundance lies, Thy self thy foe, to thy sweet self too cruel: 10 -00:00:31,240 --> 00:00:34,400 +00:00:31,240 --> 00:00:34,280 Thou that art now the world's fresh ornament, 11 -00:00:34,400 --> 00:00:36,920 +00:00:34,280 --> 00:00:36,960 And only herald to the gaudy spring, 12 -00:00:36,920 --> 00:00:40,640 +00:00:36,960 --> 00:00:40,680 Within thine own bud buriest thy content, 13 -00:00:40,640 --> 00:00:43,640 +00:00:40,680 --> 00:00:44,560 And tender churl mak'st waste in niggarding: 14 -00:00:43,640 --> 00:00:48,080 +00:00:44,560 --> 00:00:48,080 Pity the world, or else this glutton be, 15 diff --git a/aeneas/tests/res/syncmaps/sonnet001.ssv b/aeneas/tests/res/syncmaps/sonnet001.ssv index 09039b81..a902da1a 100644 --- a/aeneas/tests/res/syncmaps/sonnet001.ssv +++ b/aeneas/tests/res/syncmaps/sonnet001.ssv @@ -1,15 +1,15 @@ -0.000 2.640 f000001 "1" -2.640 5.880 f000002 "From fairest creatures we desire increase," +0.000 2.680 f000001 "1" +2.680 5.880 f000002 "From fairest creatures we desire increase," 5.880 9.240 f000003 "That thereby beauty's rose might never die," 9.240 11.920 f000004 "But as the riper should by time decease," 11.920 15.280 f000005 "His tender heir might bear his memory:" -15.280 18.800 f000006 "But thou contracted to thine own bright eyes," -18.800 22.760 f000007 "Feed'st thy light's flame with self-substantial fuel," -22.760 25.680 f000008 "Making a famine where abundance lies," +15.280 18.600 f000006 "But thou contracted to thine own bright eyes," +18.600 22.800 f000007 "Feed'st thy light's flame with self-substantial fuel," +22.800 25.680 f000008 "Making a famine where abundance lies," 25.680 31.240 f000009 "Thy self thy foe, to thy sweet self too cruel:" -31.240 34.400 f000010 "Thou that art now the world's fresh ornament," -34.400 36.920 f000011 "And only herald to the gaudy spring," -36.920 40.640 f000012 "Within thine own bud buriest thy content," -40.640 43.640 f000013 "And tender churl mak'st waste in niggarding:" -43.640 48.080 f000014 "Pity the world, or else this glutton be," +31.240 34.280 f000010 "Thou that art now the world's fresh ornament," +34.280 36.960 f000011 "And only herald to the gaudy spring," +36.960 40.680 f000012 "Within thine own bud buriest thy content," +40.680 44.560 f000013 "And tender churl mak'st waste in niggarding:" +44.560 48.080 f000014 "Pity the world, or else this glutton be," 48.080 53.240 f000015 "To eat the world's due, by the grave and thee." \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001.ssvh b/aeneas/tests/res/syncmaps/sonnet001.ssvh index 9da37b0b..a29c38b4 100644 --- a/aeneas/tests/res/syncmaps/sonnet001.ssvh +++ b/aeneas/tests/res/syncmaps/sonnet001.ssvh @@ -1,15 +1,15 @@ -00:00:00.000 00:00:02.640 f000001 "1" -00:00:02.640 00:00:05.880 f000002 "From fairest creatures we desire increase," +00:00:00.000 00:00:02.680 f000001 "1" +00:00:02.680 00:00:05.880 f000002 "From fairest creatures we desire increase," 00:00:05.880 00:00:09.240 f000003 "That thereby beauty's rose might never die," 00:00:09.240 00:00:11.920 f000004 "But as the riper should by time decease," 00:00:11.920 00:00:15.280 f000005 "His tender heir might bear his memory:" -00:00:15.280 00:00:18.800 f000006 "But thou contracted to thine own bright eyes," -00:00:18.800 00:00:22.760 f000007 "Feed'st thy light's flame with self-substantial fuel," -00:00:22.760 00:00:25.680 f000008 "Making a famine where abundance lies," +00:00:15.280 00:00:18.600 f000006 "But thou contracted to thine own bright eyes," +00:00:18.600 00:00:22.800 f000007 "Feed'st thy light's flame with self-substantial fuel," +00:00:22.800 00:00:25.680 f000008 "Making a famine where abundance lies," 00:00:25.680 00:00:31.240 f000009 "Thy self thy foe, to thy sweet self too cruel:" -00:00:31.240 00:00:34.400 f000010 "Thou that art now the world's fresh ornament," -00:00:34.400 00:00:36.920 f000011 "And only herald to the gaudy spring," -00:00:36.920 00:00:40.640 f000012 "Within thine own bud buriest thy content," -00:00:40.640 00:00:43.640 f000013 "And tender churl mak'st waste in niggarding:" -00:00:43.640 00:00:48.080 f000014 "Pity the world, or else this glutton be," +00:00:31.240 00:00:34.280 f000010 "Thou that art now the world's fresh ornament," +00:00:34.280 00:00:36.960 f000011 "And only herald to the gaudy spring," +00:00:36.960 00:00:40.680 f000012 "Within thine own bud buriest thy content," +00:00:40.680 00:00:44.560 f000013 "And tender churl mak'st waste in niggarding:" +00:00:44.560 00:00:48.080 f000014 "Pity the world, or else this glutton be," 00:00:48.080 00:00:53.240 f000015 "To eat the world's due, by the grave and thee." \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001.ssvm b/aeneas/tests/res/syncmaps/sonnet001.ssvm index 09039b81..a902da1a 100644 --- a/aeneas/tests/res/syncmaps/sonnet001.ssvm +++ b/aeneas/tests/res/syncmaps/sonnet001.ssvm @@ -1,15 +1,15 @@ -0.000 2.640 f000001 "1" -2.640 5.880 f000002 "From fairest creatures we desire increase," +0.000 2.680 f000001 "1" +2.680 5.880 f000002 "From fairest creatures we desire increase," 5.880 9.240 f000003 "That thereby beauty's rose might never die," 9.240 11.920 f000004 "But as the riper should by time decease," 11.920 15.280 f000005 "His tender heir might bear his memory:" -15.280 18.800 f000006 "But thou contracted to thine own bright eyes," -18.800 22.760 f000007 "Feed'st thy light's flame with self-substantial fuel," -22.760 25.680 f000008 "Making a famine where abundance lies," +15.280 18.600 f000006 "But thou contracted to thine own bright eyes," +18.600 22.800 f000007 "Feed'st thy light's flame with self-substantial fuel," +22.800 25.680 f000008 "Making a famine where abundance lies," 25.680 31.240 f000009 "Thy self thy foe, to thy sweet self too cruel:" -31.240 34.400 f000010 "Thou that art now the world's fresh ornament," -34.400 36.920 f000011 "And only herald to the gaudy spring," -36.920 40.640 f000012 "Within thine own bud buriest thy content," -40.640 43.640 f000013 "And tender churl mak'st waste in niggarding:" -43.640 48.080 f000014 "Pity the world, or else this glutton be," +31.240 34.280 f000010 "Thou that art now the world's fresh ornament," +34.280 36.960 f000011 "And only herald to the gaudy spring," +36.960 40.680 f000012 "Within thine own bud buriest thy content," +40.680 44.560 f000013 "And tender churl mak'st waste in niggarding:" +44.560 48.080 f000014 "Pity the world, or else this glutton be," 48.080 53.240 f000015 "To eat the world's due, by the grave and thee." \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001.sub b/aeneas/tests/res/syncmaps/sonnet001.sub index 694daa78..1982ba8a 100644 --- a/aeneas/tests/res/syncmaps/sonnet001.sub +++ b/aeneas/tests/res/syncmaps/sonnet001.sub @@ -1,8 +1,8 @@ [SUBTITLE] -00:00:00.000,00:00:02.640 +00:00:00.000,00:00:02.680 1 -00:00:02.640,00:00:05.880 +00:00:02.680,00:00:05.880 From fairest creatures we desire increase, 00:00:05.880,00:00:09.240 @@ -14,31 +14,31 @@ But as the riper should by time decease, 00:00:11.920,00:00:15.280 His tender heir might bear his memory: -00:00:15.280,00:00:18.800 +00:00:15.280,00:00:18.600 But thou contracted to thine own bright eyes, -00:00:18.800,00:00:22.760 +00:00:18.600,00:00:22.800 Feed'st thy light's flame with self-substantial fuel, -00:00:22.760,00:00:25.680 +00:00:22.800,00:00:25.680 Making a famine where abundance lies, 00:00:25.680,00:00:31.240 Thy self thy foe, to thy sweet self too cruel: -00:00:31.240,00:00:34.400 +00:00:31.240,00:00:34.280 Thou that art now the world's fresh ornament, -00:00:34.400,00:00:36.920 +00:00:34.280,00:00:36.960 And only herald to the gaudy spring, -00:00:36.920,00:00:40.640 +00:00:36.960,00:00:40.680 Within thine own bud buriest thy content, -00:00:40.640,00:00:43.640 +00:00:40.680,00:00:44.560 And tender churl mak'st waste in niggarding: -00:00:43.640,00:00:48.080 +00:00:44.560,00:00:48.080 Pity the world, or else this glutton be, 00:00:48.080,00:00:53.240 diff --git a/aeneas/tests/res/syncmaps/sonnet001.tab b/aeneas/tests/res/syncmaps/sonnet001.tab index 368f64f1..9be29e9d 100644 --- a/aeneas/tests/res/syncmaps/sonnet001.tab +++ b/aeneas/tests/res/syncmaps/sonnet001.tab @@ -1,15 +1,15 @@ -0.000 2.640 f000001 -2.640 5.880 f000002 +0.000 2.680 f000001 +2.680 5.880 f000002 5.880 9.240 f000003 9.240 11.920 f000004 11.920 15.280 f000005 -15.280 18.800 f000006 -18.800 22.760 f000007 -22.760 25.680 f000008 +15.280 18.600 f000006 +18.600 22.800 f000007 +22.800 25.680 f000008 25.680 31.240 f000009 -31.240 34.400 f000010 -34.400 36.920 f000011 -36.920 40.640 f000012 -40.640 43.640 f000013 -43.640 48.080 f000014 +31.240 34.280 f000010 +34.280 36.960 f000011 +36.960 40.680 f000012 +40.680 44.560 f000013 +44.560 48.080 f000014 48.080 53.240 f000015 \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001.textgrid b/aeneas/tests/res/syncmaps/sonnet001.textgrid new file mode 100644 index 00000000..3918685f --- /dev/null +++ b/aeneas/tests/res/syncmaps/sonnet001.textgrid @@ -0,0 +1,74 @@ +File type = "ooTextFile" +Object class = "TextGrid" + +xmin = 0.0 +xmax = 53.24 +tiers? +size = 1 +item []: + item [1]: + class = "IntervalTier" + name = "Token" + xmin = 0.0 + xmax = 53.24 + intervals: size = 15 + intervals [1]: + xmin = 0.0 + xmax = 2.68 + text = "1" + intervals [2]: + xmin = 2.68 + xmax = 5.88 + text = "From fairest creatures we desire increase," + intervals [3]: + xmin = 5.88 + xmax = 9.24 + text = "That thereby beauty's rose might never die," + intervals [4]: + xmin = 9.24 + xmax = 11.92 + text = "But as the riper should by time decease," + intervals [5]: + xmin = 11.92 + xmax = 15.28 + text = "His tender heir might bear his memory:" + intervals [6]: + xmin = 15.28 + xmax = 18.6 + text = "But thou contracted to thine own bright eyes," + intervals [7]: + xmin = 18.6 + xmax = 22.8 + text = "Feed'st thy light's flame with self-substantial fuel," + intervals [8]: + xmin = 22.8 + xmax = 25.68 + text = "Making a famine where abundance lies," + intervals [9]: + xmin = 25.68 + xmax = 31.24 + text = "Thy self thy foe, to thy sweet self too cruel:" + intervals [10]: + xmin = 31.24 + xmax = 34.28 + text = "Thou that art now the world's fresh ornament," + intervals [11]: + xmin = 34.28 + xmax = 36.96 + text = "And only herald to the gaudy spring," + intervals [12]: + xmin = 36.96 + xmax = 40.68 + text = "Within thine own bud buriest thy content," + intervals [13]: + xmin = 40.68 + xmax = 44.56 + text = "And tender churl mak'st waste in niggarding:" + intervals [14]: + xmin = 44.56 + xmax = 48.08 + text = "Pity the world, or else this glutton be," + intervals [15]: + xmin = 48.08 + xmax = 53.24 + text = "To eat the world's due, by the grave and thee." \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001.textgrid_short b/aeneas/tests/res/syncmaps/sonnet001.textgrid_short new file mode 100644 index 00000000..55574725 --- /dev/null +++ b/aeneas/tests/res/syncmaps/sonnet001.textgrid_short @@ -0,0 +1,57 @@ +File type = "ooTextFile" +Object class = "TextGrid" + +0.0 +53.24 + +1 +"IntervalTier" +"Token" +0.0 +53.24 +15 +0.0 +2.68 +"1" +2.68 +5.88 +"From fairest creatures we desire increase," +5.88 +9.24 +"That thereby beauty's rose might never die," +9.24 +11.92 +"But as the riper should by time decease," +11.92 +15.28 +"His tender heir might bear his memory:" +15.28 +18.6 +"But thou contracted to thine own bright eyes," +18.6 +22.8 +"Feed'st thy light's flame with self-substantial fuel," +22.8 +25.68 +"Making a famine where abundance lies," +25.68 +31.24 +"Thy self thy foe, to thy sweet self too cruel:" +31.24 +34.28 +"Thou that art now the world's fresh ornament," +34.28 +36.96 +"And only herald to the gaudy spring," +36.96 +40.68 +"Within thine own bud buriest thy content," +40.68 +44.56 +"And tender churl mak'st waste in niggarding:" +44.56 +48.08 +"Pity the world, or else this glutton be," +48.08 +53.24 +"To eat the world's due, by the grave and thee." \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001.tsv b/aeneas/tests/res/syncmaps/sonnet001.tsv index 368f64f1..9be29e9d 100644 --- a/aeneas/tests/res/syncmaps/sonnet001.tsv +++ b/aeneas/tests/res/syncmaps/sonnet001.tsv @@ -1,15 +1,15 @@ -0.000 2.640 f000001 -2.640 5.880 f000002 +0.000 2.680 f000001 +2.680 5.880 f000002 5.880 9.240 f000003 9.240 11.920 f000004 11.920 15.280 f000005 -15.280 18.800 f000006 -18.800 22.760 f000007 -22.760 25.680 f000008 +15.280 18.600 f000006 +18.600 22.800 f000007 +22.800 25.680 f000008 25.680 31.240 f000009 -31.240 34.400 f000010 -34.400 36.920 f000011 -36.920 40.640 f000012 -40.640 43.640 f000013 -43.640 48.080 f000014 +31.240 34.280 f000010 +34.280 36.960 f000011 +36.960 40.680 f000012 +40.680 44.560 f000013 +44.560 48.080 f000014 48.080 53.240 f000015 \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001.tsvh b/aeneas/tests/res/syncmaps/sonnet001.tsvh index e960c216..4abd8416 100644 --- a/aeneas/tests/res/syncmaps/sonnet001.tsvh +++ b/aeneas/tests/res/syncmaps/sonnet001.tsvh @@ -1,15 +1,15 @@ -00:00:00.000 00:00:02.640 f000001 -00:00:02.640 00:00:05.880 f000002 +00:00:00.000 00:00:02.680 f000001 +00:00:02.680 00:00:05.880 f000002 00:00:05.880 00:00:09.240 f000003 00:00:09.240 00:00:11.920 f000004 00:00:11.920 00:00:15.280 f000005 -00:00:15.280 00:00:18.800 f000006 -00:00:18.800 00:00:22.760 f000007 -00:00:22.760 00:00:25.680 f000008 +00:00:15.280 00:00:18.600 f000006 +00:00:18.600 00:00:22.800 f000007 +00:00:22.800 00:00:25.680 f000008 00:00:25.680 00:00:31.240 f000009 -00:00:31.240 00:00:34.400 f000010 -00:00:34.400 00:00:36.920 f000011 -00:00:36.920 00:00:40.640 f000012 -00:00:40.640 00:00:43.640 f000013 -00:00:43.640 00:00:48.080 f000014 +00:00:31.240 00:00:34.280 f000010 +00:00:34.280 00:00:36.960 f000011 +00:00:36.960 00:00:40.680 f000012 +00:00:40.680 00:00:44.560 f000013 +00:00:44.560 00:00:48.080 f000014 00:00:48.080 00:00:53.240 f000015 \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001.tsvm b/aeneas/tests/res/syncmaps/sonnet001.tsvm index 368f64f1..9be29e9d 100644 --- a/aeneas/tests/res/syncmaps/sonnet001.tsvm +++ b/aeneas/tests/res/syncmaps/sonnet001.tsvm @@ -1,15 +1,15 @@ -0.000 2.640 f000001 -2.640 5.880 f000002 +0.000 2.680 f000001 +2.680 5.880 f000002 5.880 9.240 f000003 9.240 11.920 f000004 11.920 15.280 f000005 -15.280 18.800 f000006 -18.800 22.760 f000007 -22.760 25.680 f000008 +15.280 18.600 f000006 +18.600 22.800 f000007 +22.800 25.680 f000008 25.680 31.240 f000009 -31.240 34.400 f000010 -34.400 36.920 f000011 -36.920 40.640 f000012 -40.640 43.640 f000013 -43.640 48.080 f000014 +31.240 34.280 f000010 +34.280 36.960 f000011 +36.960 40.680 f000012 +40.680 44.560 f000013 +44.560 48.080 f000014 48.080 53.240 f000015 \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001.ttml b/aeneas/tests/res/syncmaps/sonnet001.ttml index 74133acc..0d175441 100644 --- a/aeneas/tests/res/syncmaps/sonnet001.ttml +++ b/aeneas/tests/res/syncmaps/sonnet001.ttml @@ -2,20 +2,20 @@
-

1

-

From fairest creatures we desire increase,

+

1

+

From fairest creatures we desire increase,

That thereby beauty's rose might never die,

But as the riper should by time decease,

His tender heir might bear his memory:

-

But thou contracted to thine own bright eyes,

-

Feed'st thy light's flame with self-substantial fuel,

-

Making a famine where abundance lies,

+

But thou contracted to thine own bright eyes,

+

Feed'st thy light's flame with self-substantial fuel,

+

Making a famine where abundance lies,

Thy self thy foe, to thy sweet self too cruel:

-

Thou that art now the world's fresh ornament,

-

And only herald to the gaudy spring,

-

Within thine own bud buriest thy content,

-

And tender churl mak'st waste in niggarding:

-

Pity the world, or else this glutton be,

+

Thou that art now the world's fresh ornament,

+

And only herald to the gaudy spring,

+

Within thine own bud buriest thy content,

+

And tender churl mak'st waste in niggarding:

+

Pity the world, or else this glutton be,

To eat the world's due, by the grave and thee.

diff --git a/aeneas/tests/res/syncmaps/sonnet001.txt b/aeneas/tests/res/syncmaps/sonnet001.txt index ee2e037f..fd7e81c2 100644 --- a/aeneas/tests/res/syncmaps/sonnet001.txt +++ b/aeneas/tests/res/syncmaps/sonnet001.txt @@ -1,15 +1,15 @@ -f000001 0.000 2.640 "1" -f000002 2.640 5.880 "From fairest creatures we desire increase," +f000001 0.000 2.680 "1" +f000002 2.680 5.880 "From fairest creatures we desire increase," f000003 5.880 9.240 "That thereby beauty's rose might never die," f000004 9.240 11.920 "But as the riper should by time decease," f000005 11.920 15.280 "His tender heir might bear his memory:" -f000006 15.280 18.800 "But thou contracted to thine own bright eyes," -f000007 18.800 22.760 "Feed'st thy light's flame with self-substantial fuel," -f000008 22.760 25.680 "Making a famine where abundance lies," +f000006 15.280 18.600 "But thou contracted to thine own bright eyes," +f000007 18.600 22.800 "Feed'st thy light's flame with self-substantial fuel," +f000008 22.800 25.680 "Making a famine where abundance lies," f000009 25.680 31.240 "Thy self thy foe, to thy sweet self too cruel:" -f000010 31.240 34.400 "Thou that art now the world's fresh ornament," -f000011 34.400 36.920 "And only herald to the gaudy spring," -f000012 36.920 40.640 "Within thine own bud buriest thy content," -f000013 40.640 43.640 "And tender churl mak'st waste in niggarding:" -f000014 43.640 48.080 "Pity the world, or else this glutton be," +f000010 31.240 34.280 "Thou that art now the world's fresh ornament," +f000011 34.280 36.960 "And only herald to the gaudy spring," +f000012 36.960 40.680 "Within thine own bud buriest thy content," +f000013 40.680 44.560 "And tender churl mak'st waste in niggarding:" +f000014 44.560 48.080 "Pity the world, or else this glutton be," f000015 48.080 53.240 "To eat the world's due, by the grave and thee." \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001.txth b/aeneas/tests/res/syncmaps/sonnet001.txth index d061a21e..ad1f079a 100644 --- a/aeneas/tests/res/syncmaps/sonnet001.txth +++ b/aeneas/tests/res/syncmaps/sonnet001.txth @@ -1,15 +1,15 @@ -f000001 00:00:00.000 00:00:02.640 "1" -f000002 00:00:02.640 00:00:05.880 "From fairest creatures we desire increase," +f000001 00:00:00.000 00:00:02.680 "1" +f000002 00:00:02.680 00:00:05.880 "From fairest creatures we desire increase," f000003 00:00:05.880 00:00:09.240 "That thereby beauty's rose might never die," f000004 00:00:09.240 00:00:11.920 "But as the riper should by time decease," f000005 00:00:11.920 00:00:15.280 "His tender heir might bear his memory:" -f000006 00:00:15.280 00:00:18.800 "But thou contracted to thine own bright eyes," -f000007 00:00:18.800 00:00:22.760 "Feed'st thy light's flame with self-substantial fuel," -f000008 00:00:22.760 00:00:25.680 "Making a famine where abundance lies," +f000006 00:00:15.280 00:00:18.600 "But thou contracted to thine own bright eyes," +f000007 00:00:18.600 00:00:22.800 "Feed'st thy light's flame with self-substantial fuel," +f000008 00:00:22.800 00:00:25.680 "Making a famine where abundance lies," f000009 00:00:25.680 00:00:31.240 "Thy self thy foe, to thy sweet self too cruel:" -f000010 00:00:31.240 00:00:34.400 "Thou that art now the world's fresh ornament," -f000011 00:00:34.400 00:00:36.920 "And only herald to the gaudy spring," -f000012 00:00:36.920 00:00:40.640 "Within thine own bud buriest thy content," -f000013 00:00:40.640 00:00:43.640 "And tender churl mak'st waste in niggarding:" -f000014 00:00:43.640 00:00:48.080 "Pity the world, or else this glutton be," +f000010 00:00:31.240 00:00:34.280 "Thou that art now the world's fresh ornament," +f000011 00:00:34.280 00:00:36.960 "And only herald to the gaudy spring," +f000012 00:00:36.960 00:00:40.680 "Within thine own bud buriest thy content," +f000013 00:00:40.680 00:00:44.560 "And tender churl mak'st waste in niggarding:" +f000014 00:00:44.560 00:00:48.080 "Pity the world, or else this glutton be," f000015 00:00:48.080 00:00:53.240 "To eat the world's due, by the grave and thee." \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001.txtm b/aeneas/tests/res/syncmaps/sonnet001.txtm index ee2e037f..fd7e81c2 100644 --- a/aeneas/tests/res/syncmaps/sonnet001.txtm +++ b/aeneas/tests/res/syncmaps/sonnet001.txtm @@ -1,15 +1,15 @@ -f000001 0.000 2.640 "1" -f000002 2.640 5.880 "From fairest creatures we desire increase," +f000001 0.000 2.680 "1" +f000002 2.680 5.880 "From fairest creatures we desire increase," f000003 5.880 9.240 "That thereby beauty's rose might never die," f000004 9.240 11.920 "But as the riper should by time decease," f000005 11.920 15.280 "His tender heir might bear his memory:" -f000006 15.280 18.800 "But thou contracted to thine own bright eyes," -f000007 18.800 22.760 "Feed'st thy light's flame with self-substantial fuel," -f000008 22.760 25.680 "Making a famine where abundance lies," +f000006 15.280 18.600 "But thou contracted to thine own bright eyes," +f000007 18.600 22.800 "Feed'st thy light's flame with self-substantial fuel," +f000008 22.800 25.680 "Making a famine where abundance lies," f000009 25.680 31.240 "Thy self thy foe, to thy sweet self too cruel:" -f000010 31.240 34.400 "Thou that art now the world's fresh ornament," -f000011 34.400 36.920 "And only herald to the gaudy spring," -f000012 36.920 40.640 "Within thine own bud buriest thy content," -f000013 40.640 43.640 "And tender churl mak'st waste in niggarding:" -f000014 43.640 48.080 "Pity the world, or else this glutton be," +f000010 31.240 34.280 "Thou that art now the world's fresh ornament," +f000011 34.280 36.960 "And only herald to the gaudy spring," +f000012 36.960 40.680 "Within thine own bud buriest thy content," +f000013 40.680 44.560 "And tender churl mak'st waste in niggarding:" +f000014 44.560 48.080 "Pity the world, or else this glutton be," f000015 48.080 53.240 "To eat the world's due, by the grave and thee." \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001.vtt b/aeneas/tests/res/syncmaps/sonnet001.vtt index 62c3b84a..5714cc6b 100644 --- a/aeneas/tests/res/syncmaps/sonnet001.vtt +++ b/aeneas/tests/res/syncmaps/sonnet001.vtt @@ -1,11 +1,11 @@ WEBVTT 1 -00:00:00.000 --> 00:00:02.640 +00:00:00.000 --> 00:00:02.680 1 2 -00:00:02.640 --> 00:00:05.880 +00:00:02.680 --> 00:00:05.880 From fairest creatures we desire increase, 3 @@ -21,15 +21,15 @@ But as the riper should by time decease, His tender heir might bear his memory: 6 -00:00:15.280 --> 00:00:18.800 +00:00:15.280 --> 00:00:18.600 But thou contracted to thine own bright eyes, 7 -00:00:18.800 --> 00:00:22.760 +00:00:18.600 --> 00:00:22.800 Feed'st thy light's flame with self-substantial fuel, 8 -00:00:22.760 --> 00:00:25.680 +00:00:22.800 --> 00:00:25.680 Making a famine where abundance lies, 9 @@ -37,23 +37,23 @@ Making a famine where abundance lies, Thy self thy foe, to thy sweet self too cruel: 10 -00:00:31.240 --> 00:00:34.400 +00:00:31.240 --> 00:00:34.280 Thou that art now the world's fresh ornament, 11 -00:00:34.400 --> 00:00:36.920 +00:00:34.280 --> 00:00:36.960 And only herald to the gaudy spring, 12 -00:00:36.920 --> 00:00:40.640 +00:00:36.960 --> 00:00:40.680 Within thine own bud buriest thy content, 13 -00:00:40.640 --> 00:00:43.640 +00:00:40.680 --> 00:00:44.560 And tender churl mak'st waste in niggarding: 14 -00:00:43.640 --> 00:00:48.080 +00:00:44.560 --> 00:00:48.080 Pity the world, or else this glutton be, 15 diff --git a/aeneas/tests/res/syncmaps/sonnet001.xml b/aeneas/tests/res/syncmaps/sonnet001.xml index adb6464a..a8124b54 100644 --- a/aeneas/tests/res/syncmaps/sonnet001.xml +++ b/aeneas/tests/res/syncmaps/sonnet001.xml @@ -1,10 +1,10 @@ - + 1 - + From fairest creatures we desire increase, @@ -20,15 +20,15 @@ His tender heir might bear his memory: - + But thou contracted to thine own bright eyes, - + Feed'st thy light's flame with self-substantial fuel, - + Making a famine where abundance lies, @@ -36,23 +36,23 @@ Thy self thy foe, to thy sweet self too cruel: - + Thou that art now the world's fresh ornament, - + And only herald to the gaudy spring, - + Within thine own bud buriest thy content, - + And tender churl mak'st waste in niggarding: - + Pity the world, or else this glutton be, diff --git a/aeneas/tests/res/syncmaps/sonnet001.xml_legacy b/aeneas/tests/res/syncmaps/sonnet001.xml_legacy index b9d67e7e..700b16e2 100644 --- a/aeneas/tests/res/syncmaps/sonnet001.xml_legacy +++ b/aeneas/tests/res/syncmaps/sonnet001.xml_legacy @@ -3,11 +3,11 @@ f000001 0.000 - 2.640 + 2.680 f000002 - 2.640 + 2.680 5.880 @@ -28,16 +28,16 @@ f000006 15.280 - 18.800 + 18.600 f000007 - 18.800 - 22.760 + 18.600 + 22.800 f000008 - 22.760 + 22.800 25.680 @@ -48,26 +48,26 @@ f000010 31.240 - 34.400 + 34.280 f000011 - 34.400 - 36.920 + 34.280 + 36.960 f000012 - 36.920 - 40.640 + 36.960 + 40.680 f000013 - 40.640 - 43.640 + 40.680 + 44.560 f000014 - 43.640 + 44.560 48.080 diff --git a/aeneas/tests/res/syncmaps/sonnet001.zzz b/aeneas/tests/res/syncmaps/sonnet001.zzz index d57821bd..298a64ff 100644 --- a/aeneas/tests/res/syncmaps/sonnet001.zzz +++ b/aeneas/tests/res/syncmaps/sonnet001.zzz @@ -1,15 +1,15 @@ -f000001,0.000,2.640,"1" -f000002,2.640,5.880,"From fairest creatures we desire increase," +f000001,0.000,2.680,"1" +f000002,2.680,5.880,"From fairest creatures we desire increase," f000003,5.880,9.240,"That thereby beauty's rose might never die," f000004,9.240,11.920,"But as the riper should by time decease," f000005,11.920,15.280,"His tender heir might bear his memory:" -f000006,15.280,18.800,"But thou contracted to thine own bright eyes," -f000007,18.800,22.760,"Feed'st thy light's flame with self-substantial fuel," -f000008,22.760,25.680,"Making a famine where abundance lies," +f000006,15.280,18.600,"But thou contracted to thine own bright eyes," +f000007,18.600,22.800,"Feed'st thy light's flame with self-substantial fuel," +f000008,22.800,25.680,"Making a famine where abundance lies," f000009,25.680,31.240,"Thy self thy foe, to thy sweet self too cruel:" -f000010,31.240,34.400,"Thou that art now the world's fresh ornament," -f000011,34.400,36.920,"And only herald to the gaudy spring," -f000012,36.920,40.640,"Within thine own bud buriest thy content," -f000013,40.640,43.640,"And tender churl mak'st waste in niggarding:" -f000014,43.640,48.080,"Pity the world, or else this glutton be," +f000010,31.240,34.280,"Thou that art now the world's fresh ornament," +f000011,34.280,36.960,"And only herald to the gaudy spring," +f000012,36.960,40.680,"Within thine own bud buriest thy content," +f000013,40.680,44.560,"And tender churl mak'st waste in niggarding:" +f000014,44.560,48.080,"Pity the world, or else this glutton be," f000015,48.080,53.240,"To eat the world's due, by the grave and thee." \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_m.aud b/aeneas/tests/res/syncmaps/sonnet001_m.aud index 9d743535..a34b55cc 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_m.aud +++ b/aeneas/tests/res/syncmaps/sonnet001_m.aud @@ -1,15 +1,15 @@ -0.000 2.640 1 -2.640 5.880 From fairest creatures we desire increase, +0.000 2.680 1 +2.680 5.880 From fairest creatures we desire increase, 5.880 9.240 That thereby beauty's rose might never die, 9.240 11.920 But as the riper should by time decease, 11.920 15.280 His tender heir might bear his memory: -15.280 18.800 But thou contracted to thine own bright eyes, -18.800 22.760 Feed'st thy light's flame with self-substantial fuel, -22.760 25.680 Making a famine where abundance lies, +15.280 18.600 But thou contracted to thine own bright eyes, +18.600 22.800 Feed'st thy light's flame with self-substantial fuel, +22.800 25.680 Making a famine where abundance lies, 25.680 31.240 Thy self thy foe, to thy sweet self too cruel: -31.240 34.400 Thou that art now the world's fresh ornament, -34.400 36.920 And only herald to the gaudy spring, -36.920 40.640 Within thine own bud buriest thy content, -40.640 43.640 And tender churl mak'st waste in niggarding: -43.640 48.080 Pity the world, or else this glutton be, +31.240 34.280 Thou that art now the world's fresh ornament, +34.280 36.960 And only herald to the gaudy spring, +36.960 40.680 Within thine own bud buriest thy content, +40.680 44.560 And tender churl mak'st waste in niggarding: +44.560 48.080 Pity the world, or else this glutton be, 48.080 53.240 To eat the world's due, by the grave and thee. \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_m.audh b/aeneas/tests/res/syncmaps/sonnet001_m.audh index c453b76f..8fdc3569 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_m.audh +++ b/aeneas/tests/res/syncmaps/sonnet001_m.audh @@ -1,15 +1,15 @@ -00:00:00.000 00:00:02.640 1 -00:00:02.640 00:00:05.880 From fairest creatures we desire increase, +00:00:00.000 00:00:02.680 1 +00:00:02.680 00:00:05.880 From fairest creatures we desire increase, 00:00:05.880 00:00:09.240 That thereby beauty's rose might never die, 00:00:09.240 00:00:11.920 But as the riper should by time decease, 00:00:11.920 00:00:15.280 His tender heir might bear his memory: -00:00:15.280 00:00:18.800 But thou contracted to thine own bright eyes, -00:00:18.800 00:00:22.760 Feed'st thy light's flame with self-substantial fuel, -00:00:22.760 00:00:25.680 Making a famine where abundance lies, +00:00:15.280 00:00:18.600 But thou contracted to thine own bright eyes, +00:00:18.600 00:00:22.800 Feed'st thy light's flame with self-substantial fuel, +00:00:22.800 00:00:25.680 Making a famine where abundance lies, 00:00:25.680 00:00:31.240 Thy self thy foe, to thy sweet self too cruel: -00:00:31.240 00:00:34.400 Thou that art now the world's fresh ornament, -00:00:34.400 00:00:36.920 And only herald to the gaudy spring, -00:00:36.920 00:00:40.640 Within thine own bud buriest thy content, -00:00:40.640 00:00:43.640 And tender churl mak'st waste in niggarding: -00:00:43.640 00:00:48.080 Pity the world, or else this glutton be, +00:00:31.240 00:00:34.280 Thou that art now the world's fresh ornament, +00:00:34.280 00:00:36.960 And only herald to the gaudy spring, +00:00:36.960 00:00:40.680 Within thine own bud buriest thy content, +00:00:40.680 00:00:44.560 And tender churl mak'st waste in niggarding: +00:00:44.560 00:00:48.080 Pity the world, or else this glutton be, 00:00:48.080 00:00:53.240 To eat the world's due, by the grave and thee. \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_m.audm b/aeneas/tests/res/syncmaps/sonnet001_m.audm index 9d743535..a34b55cc 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_m.audm +++ b/aeneas/tests/res/syncmaps/sonnet001_m.audm @@ -1,15 +1,15 @@ -0.000 2.640 1 -2.640 5.880 From fairest creatures we desire increase, +0.000 2.680 1 +2.680 5.880 From fairest creatures we desire increase, 5.880 9.240 That thereby beauty's rose might never die, 9.240 11.920 But as the riper should by time decease, 11.920 15.280 His tender heir might bear his memory: -15.280 18.800 But thou contracted to thine own bright eyes, -18.800 22.760 Feed'st thy light's flame with self-substantial fuel, -22.760 25.680 Making a famine where abundance lies, +15.280 18.600 But thou contracted to thine own bright eyes, +18.600 22.800 Feed'st thy light's flame with self-substantial fuel, +22.800 25.680 Making a famine where abundance lies, 25.680 31.240 Thy self thy foe, to thy sweet self too cruel: -31.240 34.400 Thou that art now the world's fresh ornament, -34.400 36.920 And only herald to the gaudy spring, -36.920 40.640 Within thine own bud buriest thy content, -40.640 43.640 And tender churl mak'st waste in niggarding: -43.640 48.080 Pity the world, or else this glutton be, +31.240 34.280 Thou that art now the world's fresh ornament, +34.280 36.960 And only herald to the gaudy spring, +36.960 40.680 Within thine own bud buriest thy content, +40.680 44.560 And tender churl mak'st waste in niggarding: +44.560 48.080 Pity the world, or else this glutton be, 48.080 53.240 To eat the world's due, by the grave and thee. \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_m.csv b/aeneas/tests/res/syncmaps/sonnet001_m.csv index d57821bd..298a64ff 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_m.csv +++ b/aeneas/tests/res/syncmaps/sonnet001_m.csv @@ -1,15 +1,15 @@ -f000001,0.000,2.640,"1" -f000002,2.640,5.880,"From fairest creatures we desire increase," +f000001,0.000,2.680,"1" +f000002,2.680,5.880,"From fairest creatures we desire increase," f000003,5.880,9.240,"That thereby beauty's rose might never die," f000004,9.240,11.920,"But as the riper should by time decease," f000005,11.920,15.280,"His tender heir might bear his memory:" -f000006,15.280,18.800,"But thou contracted to thine own bright eyes," -f000007,18.800,22.760,"Feed'st thy light's flame with self-substantial fuel," -f000008,22.760,25.680,"Making a famine where abundance lies," +f000006,15.280,18.600,"But thou contracted to thine own bright eyes," +f000007,18.600,22.800,"Feed'st thy light's flame with self-substantial fuel," +f000008,22.800,25.680,"Making a famine where abundance lies," f000009,25.680,31.240,"Thy self thy foe, to thy sweet self too cruel:" -f000010,31.240,34.400,"Thou that art now the world's fresh ornament," -f000011,34.400,36.920,"And only herald to the gaudy spring," -f000012,36.920,40.640,"Within thine own bud buriest thy content," -f000013,40.640,43.640,"And tender churl mak'st waste in niggarding:" -f000014,43.640,48.080,"Pity the world, or else this glutton be," +f000010,31.240,34.280,"Thou that art now the world's fresh ornament," +f000011,34.280,36.960,"And only herald to the gaudy spring," +f000012,36.960,40.680,"Within thine own bud buriest thy content," +f000013,40.680,44.560,"And tender churl mak'st waste in niggarding:" +f000014,44.560,48.080,"Pity the world, or else this glutton be," f000015,48.080,53.240,"To eat the world's due, by the grave and thee." \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_m.csvh b/aeneas/tests/res/syncmaps/sonnet001_m.csvh index a92065f7..b7c1d668 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_m.csvh +++ b/aeneas/tests/res/syncmaps/sonnet001_m.csvh @@ -1,15 +1,15 @@ -f000001,00:00:00.000,00:00:02.640,"1" -f000002,00:00:02.640,00:00:05.880,"From fairest creatures we desire increase," +f000001,00:00:00.000,00:00:02.680,"1" +f000002,00:00:02.680,00:00:05.880,"From fairest creatures we desire increase," f000003,00:00:05.880,00:00:09.240,"That thereby beauty's rose might never die," f000004,00:00:09.240,00:00:11.920,"But as the riper should by time decease," f000005,00:00:11.920,00:00:15.280,"His tender heir might bear his memory:" -f000006,00:00:15.280,00:00:18.800,"But thou contracted to thine own bright eyes," -f000007,00:00:18.800,00:00:22.760,"Feed'st thy light's flame with self-substantial fuel," -f000008,00:00:22.760,00:00:25.680,"Making a famine where abundance lies," +f000006,00:00:15.280,00:00:18.600,"But thou contracted to thine own bright eyes," +f000007,00:00:18.600,00:00:22.800,"Feed'st thy light's flame with self-substantial fuel," +f000008,00:00:22.800,00:00:25.680,"Making a famine where abundance lies," f000009,00:00:25.680,00:00:31.240,"Thy self thy foe, to thy sweet self too cruel:" -f000010,00:00:31.240,00:00:34.400,"Thou that art now the world's fresh ornament," -f000011,00:00:34.400,00:00:36.920,"And only herald to the gaudy spring," -f000012,00:00:36.920,00:00:40.640,"Within thine own bud buriest thy content," -f000013,00:00:40.640,00:00:43.640,"And tender churl mak'st waste in niggarding:" -f000014,00:00:43.640,00:00:48.080,"Pity the world, or else this glutton be," +f000010,00:00:31.240,00:00:34.280,"Thou that art now the world's fresh ornament," +f000011,00:00:34.280,00:00:36.960,"And only herald to the gaudy spring," +f000012,00:00:36.960,00:00:40.680,"Within thine own bud buriest thy content," +f000013,00:00:40.680,00:00:44.560,"And tender churl mak'st waste in niggarding:" +f000014,00:00:44.560,00:00:48.080,"Pity the world, or else this glutton be," f000015,00:00:48.080,00:00:53.240,"To eat the world's due, by the grave and thee." \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_m.csvm b/aeneas/tests/res/syncmaps/sonnet001_m.csvm index d57821bd..298a64ff 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_m.csvm +++ b/aeneas/tests/res/syncmaps/sonnet001_m.csvm @@ -1,15 +1,15 @@ -f000001,0.000,2.640,"1" -f000002,2.640,5.880,"From fairest creatures we desire increase," +f000001,0.000,2.680,"1" +f000002,2.680,5.880,"From fairest creatures we desire increase," f000003,5.880,9.240,"That thereby beauty's rose might never die," f000004,9.240,11.920,"But as the riper should by time decease," f000005,11.920,15.280,"His tender heir might bear his memory:" -f000006,15.280,18.800,"But thou contracted to thine own bright eyes," -f000007,18.800,22.760,"Feed'st thy light's flame with self-substantial fuel," -f000008,22.760,25.680,"Making a famine where abundance lies," +f000006,15.280,18.600,"But thou contracted to thine own bright eyes," +f000007,18.600,22.800,"Feed'st thy light's flame with self-substantial fuel," +f000008,22.800,25.680,"Making a famine where abundance lies," f000009,25.680,31.240,"Thy self thy foe, to thy sweet self too cruel:" -f000010,31.240,34.400,"Thou that art now the world's fresh ornament," -f000011,34.400,36.920,"And only herald to the gaudy spring," -f000012,36.920,40.640,"Within thine own bud buriest thy content," -f000013,40.640,43.640,"And tender churl mak'st waste in niggarding:" -f000014,43.640,48.080,"Pity the world, or else this glutton be," +f000010,31.240,34.280,"Thou that art now the world's fresh ornament," +f000011,34.280,36.960,"And only herald to the gaudy spring," +f000012,36.960,40.680,"Within thine own bud buriest thy content," +f000013,40.680,44.560,"And tender churl mak'st waste in niggarding:" +f000014,44.560,48.080,"Pity the world, or else this glutton be," f000015,48.080,53.240,"To eat the world's due, by the grave and thee." \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_m.dfxp b/aeneas/tests/res/syncmaps/sonnet001_m.dfxp index 094caf8c..0930ff0c 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_m.dfxp +++ b/aeneas/tests/res/syncmaps/sonnet001_m.dfxp @@ -2,20 +2,20 @@
-

1

-

From fairest creatures
we desire increase,

+

1

+

From fairest creatures
we desire increase,

That thereby beauty's rose
might never die,

But as the riper
should by time decease,

His tender heir
might bear his memory:

-

But thou contracted
to thine own bright eyes,

-

Feed'st thy light's flame
with self-substantial fuel,

-

Making a famine
where abundance lies,

+

But thou contracted
to thine own bright eyes,

+

Feed'st thy light's flame
with self-substantial fuel,

+

Making a famine
where abundance lies,

Thy self thy foe,
to thy sweet self too cruel:

-

Thou that art now
the world's fresh ornament,

-

And only herald to the gaudy spring,

-

Within thine own bud
buriest thy content,

-

And tender churl mak'st waste in niggarding:

-

Pity the world,
or else this glutton be,

+

Thou that art now
the world's fresh ornament,

+

And only herald to the gaudy spring,

+

Within thine own bud
buriest thy content,

+

And tender churl mak'st waste in niggarding:

+

Pity the world,
or else this glutton be,

To eat the world's due,
by the grave and thee.

diff --git a/aeneas/tests/res/syncmaps/sonnet001_m.eaf b/aeneas/tests/res/syncmaps/sonnet001_m.eaf index ab6e1a61..81c7ba2d 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_m.eaf +++ b/aeneas/tests/res/syncmaps/sonnet001_m.eaf @@ -1,11 +1,10 @@ - -
-
+ +
- - + + @@ -14,22 +13,22 @@ - - - - + + + + - - - - - - - - + + + + + + + + diff --git a/aeneas/tests/res/syncmaps/sonnet001_m.json b/aeneas/tests/res/syncmaps/sonnet001_m.json index cb0c21c4..d133fe4e 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_m.json +++ b/aeneas/tests/res/syncmaps/sonnet001_m.json @@ -3,7 +3,7 @@ { "begin": "0.000", "children": [], - "end": "2.640", + "end": "2.680", "id": "f000001", "language": "en", "lines": [ @@ -11,7 +11,7 @@ ] }, { - "begin": "2.640", + "begin": "2.680", "children": [], "end": "5.880", "id": "f000002", @@ -57,7 +57,7 @@ { "begin": "15.280", "children": [], - "end": "18.800", + "end": "18.600", "id": "f000006", "language": "en", "lines": [ @@ -66,9 +66,9 @@ ] }, { - "begin": "18.800", + "begin": "18.600", "children": [], - "end": "22.760", + "end": "22.800", "id": "f000007", "language": "en", "lines": [ @@ -77,7 +77,7 @@ ] }, { - "begin": "22.760", + "begin": "22.800", "children": [], "end": "25.680", "id": "f000008", @@ -101,7 +101,7 @@ { "begin": "31.240", "children": [], - "end": "34.400", + "end": "34.280", "id": "f000010", "language": "en", "lines": [ @@ -110,9 +110,9 @@ ] }, { - "begin": "34.400", + "begin": "34.280", "children": [], - "end": "36.920", + "end": "36.960", "id": "f000011", "language": "en", "lines": [ @@ -120,9 +120,9 @@ ] }, { - "begin": "36.920", + "begin": "36.960", "children": [], - "end": "40.640", + "end": "40.680", "id": "f000012", "language": "en", "lines": [ @@ -131,9 +131,9 @@ ] }, { - "begin": "40.640", + "begin": "40.680", "children": [], - "end": "43.640", + "end": "44.560", "id": "f000013", "language": "en", "lines": [ @@ -141,7 +141,7 @@ ] }, { - "begin": "43.640", + "begin": "44.560", "children": [], "end": "48.080", "id": "f000014", diff --git a/aeneas/tests/res/syncmaps/sonnet001_m.rbse b/aeneas/tests/res/syncmaps/sonnet001_m.rbse index b3c7f65f..731d24de 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_m.rbse +++ b/aeneas/tests/res/syncmaps/sonnet001_m.rbse @@ -2,11 +2,11 @@ "smil_data": [ { "begin": "0.000", - "end": "2.640", + "end": "2.680", "id": "f000001" }, { - "begin": "2.640", + "begin": "2.680", "end": "5.880", "id": "f000002" }, @@ -27,16 +27,16 @@ }, { "begin": "15.280", - "end": "18.800", + "end": "18.600", "id": "f000006" }, { - "begin": "18.800", - "end": "22.760", + "begin": "18.600", + "end": "22.800", "id": "f000007" }, { - "begin": "22.760", + "begin": "22.800", "end": "25.680", "id": "f000008" }, @@ -47,26 +47,26 @@ }, { "begin": "31.240", - "end": "34.400", + "end": "34.280", "id": "f000010" }, { - "begin": "34.400", - "end": "36.920", + "begin": "34.280", + "end": "36.960", "id": "f000011" }, { - "begin": "36.920", - "end": "40.640", + "begin": "36.960", + "end": "40.680", "id": "f000012" }, { - "begin": "40.640", - "end": "43.640", + "begin": "40.680", + "end": "44.560", "id": "f000013" }, { - "begin": "43.640", + "begin": "44.560", "end": "48.080", "id": "f000014" }, diff --git a/aeneas/tests/res/syncmaps/sonnet001_m.sbv b/aeneas/tests/res/syncmaps/sonnet001_m.sbv index e82abc7d..94cb8b40 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_m.sbv +++ b/aeneas/tests/res/syncmaps/sonnet001_m.sbv @@ -1,8 +1,8 @@ [SUBTITLE] -00:00:00.000,00:00:02.640 +00:00:00.000,00:00:02.680 1 -00:00:02.640,00:00:05.880 +00:00:02.680,00:00:05.880 From fairest creatures we desire increase, @@ -18,15 +18,15 @@ should by time decease, His tender heir might bear his memory: -00:00:15.280,00:00:18.800 +00:00:15.280,00:00:18.600 But thou contracted to thine own bright eyes, -00:00:18.800,00:00:22.760 +00:00:18.600,00:00:22.800 Feed'st thy light's flame with self-substantial fuel, -00:00:22.760,00:00:25.680 +00:00:22.800,00:00:25.680 Making a famine where abundance lies, @@ -34,21 +34,21 @@ where abundance lies, Thy self thy foe, to thy sweet self too cruel: -00:00:31.240,00:00:34.400 +00:00:31.240,00:00:34.280 Thou that art now the world's fresh ornament, -00:00:34.400,00:00:36.920 +00:00:34.280,00:00:36.960 And only herald to the gaudy spring, -00:00:36.920,00:00:40.640 +00:00:36.960,00:00:40.680 Within thine own bud buriest thy content, -00:00:40.640,00:00:43.640 +00:00:40.680,00:00:44.560 And tender churl mak'st waste in niggarding: -00:00:43.640,00:00:48.080 +00:00:44.560,00:00:48.080 Pity the world, or else this glutton be, diff --git a/aeneas/tests/res/syncmaps/sonnet001_m.smil b/aeneas/tests/res/syncmaps/sonnet001_m.smil index 4a83b60f..8713fb20 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_m.smil +++ b/aeneas/tests/res/syncmaps/sonnet001_m.smil @@ -3,11 +3,11 @@ - - @@ -23,15 +23,15 @@ - - - @@ -39,23 +39,23 @@ - - - - - diff --git a/aeneas/tests/res/syncmaps/sonnet001_m.smilh b/aeneas/tests/res/syncmaps/sonnet001_m.smilh index 4a83b60f..8713fb20 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_m.smilh +++ b/aeneas/tests/res/syncmaps/sonnet001_m.smilh @@ -3,11 +3,11 @@ - - @@ -23,15 +23,15 @@ - - - @@ -39,23 +39,23 @@ - - - - - diff --git a/aeneas/tests/res/syncmaps/sonnet001_m.smilm b/aeneas/tests/res/syncmaps/sonnet001_m.smilm index c6fabebf..eae93e40 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_m.smilm +++ b/aeneas/tests/res/syncmaps/sonnet001_m.smilm @@ -3,11 +3,11 @@ - - @@ -23,15 +23,15 @@ - - - @@ -39,23 +39,23 @@ - - - - - diff --git a/aeneas/tests/res/syncmaps/sonnet001_m.srt b/aeneas/tests/res/syncmaps/sonnet001_m.srt index f38d4985..851afdb6 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_m.srt +++ b/aeneas/tests/res/syncmaps/sonnet001_m.srt @@ -1,9 +1,9 @@ 1 -00:00:00,000 --> 00:00:02,640 +00:00:00,000 --> 00:00:02,680 1 2 -00:00:02,640 --> 00:00:05,880 +00:00:02,680 --> 00:00:05,880 From fairest creatures we desire increase, @@ -23,17 +23,17 @@ His tender heir might bear his memory: 6 -00:00:15,280 --> 00:00:18,800 +00:00:15,280 --> 00:00:18,600 But thou contracted to thine own bright eyes, 7 -00:00:18,800 --> 00:00:22,760 +00:00:18,600 --> 00:00:22,800 Feed'st thy light's flame with self-substantial fuel, 8 -00:00:22,760 --> 00:00:25,680 +00:00:22,800 --> 00:00:25,680 Making a famine where abundance lies, @@ -43,25 +43,25 @@ Thy self thy foe, to thy sweet self too cruel: 10 -00:00:31,240 --> 00:00:34,400 +00:00:31,240 --> 00:00:34,280 Thou that art now the world's fresh ornament, 11 -00:00:34,400 --> 00:00:36,920 +00:00:34,280 --> 00:00:36,960 And only herald to the gaudy spring, 12 -00:00:36,920 --> 00:00:40,640 +00:00:36,960 --> 00:00:40,680 Within thine own bud buriest thy content, 13 -00:00:40,640 --> 00:00:43,640 +00:00:40,680 --> 00:00:44,560 And tender churl mak'st waste in niggarding: 14 -00:00:43,640 --> 00:00:48,080 +00:00:44,560 --> 00:00:48,080 Pity the world, or else this glutton be, diff --git a/aeneas/tests/res/syncmaps/sonnet001_m.ssv b/aeneas/tests/res/syncmaps/sonnet001_m.ssv index 09039b81..a902da1a 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_m.ssv +++ b/aeneas/tests/res/syncmaps/sonnet001_m.ssv @@ -1,15 +1,15 @@ -0.000 2.640 f000001 "1" -2.640 5.880 f000002 "From fairest creatures we desire increase," +0.000 2.680 f000001 "1" +2.680 5.880 f000002 "From fairest creatures we desire increase," 5.880 9.240 f000003 "That thereby beauty's rose might never die," 9.240 11.920 f000004 "But as the riper should by time decease," 11.920 15.280 f000005 "His tender heir might bear his memory:" -15.280 18.800 f000006 "But thou contracted to thine own bright eyes," -18.800 22.760 f000007 "Feed'st thy light's flame with self-substantial fuel," -22.760 25.680 f000008 "Making a famine where abundance lies," +15.280 18.600 f000006 "But thou contracted to thine own bright eyes," +18.600 22.800 f000007 "Feed'st thy light's flame with self-substantial fuel," +22.800 25.680 f000008 "Making a famine where abundance lies," 25.680 31.240 f000009 "Thy self thy foe, to thy sweet self too cruel:" -31.240 34.400 f000010 "Thou that art now the world's fresh ornament," -34.400 36.920 f000011 "And only herald to the gaudy spring," -36.920 40.640 f000012 "Within thine own bud buriest thy content," -40.640 43.640 f000013 "And tender churl mak'st waste in niggarding:" -43.640 48.080 f000014 "Pity the world, or else this glutton be," +31.240 34.280 f000010 "Thou that art now the world's fresh ornament," +34.280 36.960 f000011 "And only herald to the gaudy spring," +36.960 40.680 f000012 "Within thine own bud buriest thy content," +40.680 44.560 f000013 "And tender churl mak'st waste in niggarding:" +44.560 48.080 f000014 "Pity the world, or else this glutton be," 48.080 53.240 f000015 "To eat the world's due, by the grave and thee." \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_m.ssvh b/aeneas/tests/res/syncmaps/sonnet001_m.ssvh index 9da37b0b..a29c38b4 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_m.ssvh +++ b/aeneas/tests/res/syncmaps/sonnet001_m.ssvh @@ -1,15 +1,15 @@ -00:00:00.000 00:00:02.640 f000001 "1" -00:00:02.640 00:00:05.880 f000002 "From fairest creatures we desire increase," +00:00:00.000 00:00:02.680 f000001 "1" +00:00:02.680 00:00:05.880 f000002 "From fairest creatures we desire increase," 00:00:05.880 00:00:09.240 f000003 "That thereby beauty's rose might never die," 00:00:09.240 00:00:11.920 f000004 "But as the riper should by time decease," 00:00:11.920 00:00:15.280 f000005 "His tender heir might bear his memory:" -00:00:15.280 00:00:18.800 f000006 "But thou contracted to thine own bright eyes," -00:00:18.800 00:00:22.760 f000007 "Feed'st thy light's flame with self-substantial fuel," -00:00:22.760 00:00:25.680 f000008 "Making a famine where abundance lies," +00:00:15.280 00:00:18.600 f000006 "But thou contracted to thine own bright eyes," +00:00:18.600 00:00:22.800 f000007 "Feed'st thy light's flame with self-substantial fuel," +00:00:22.800 00:00:25.680 f000008 "Making a famine where abundance lies," 00:00:25.680 00:00:31.240 f000009 "Thy self thy foe, to thy sweet self too cruel:" -00:00:31.240 00:00:34.400 f000010 "Thou that art now the world's fresh ornament," -00:00:34.400 00:00:36.920 f000011 "And only herald to the gaudy spring," -00:00:36.920 00:00:40.640 f000012 "Within thine own bud buriest thy content," -00:00:40.640 00:00:43.640 f000013 "And tender churl mak'st waste in niggarding:" -00:00:43.640 00:00:48.080 f000014 "Pity the world, or else this glutton be," +00:00:31.240 00:00:34.280 f000010 "Thou that art now the world's fresh ornament," +00:00:34.280 00:00:36.960 f000011 "And only herald to the gaudy spring," +00:00:36.960 00:00:40.680 f000012 "Within thine own bud buriest thy content," +00:00:40.680 00:00:44.560 f000013 "And tender churl mak'st waste in niggarding:" +00:00:44.560 00:00:48.080 f000014 "Pity the world, or else this glutton be," 00:00:48.080 00:00:53.240 f000015 "To eat the world's due, by the grave and thee." \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_m.ssvm b/aeneas/tests/res/syncmaps/sonnet001_m.ssvm index 09039b81..a902da1a 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_m.ssvm +++ b/aeneas/tests/res/syncmaps/sonnet001_m.ssvm @@ -1,15 +1,15 @@ -0.000 2.640 f000001 "1" -2.640 5.880 f000002 "From fairest creatures we desire increase," +0.000 2.680 f000001 "1" +2.680 5.880 f000002 "From fairest creatures we desire increase," 5.880 9.240 f000003 "That thereby beauty's rose might never die," 9.240 11.920 f000004 "But as the riper should by time decease," 11.920 15.280 f000005 "His tender heir might bear his memory:" -15.280 18.800 f000006 "But thou contracted to thine own bright eyes," -18.800 22.760 f000007 "Feed'st thy light's flame with self-substantial fuel," -22.760 25.680 f000008 "Making a famine where abundance lies," +15.280 18.600 f000006 "But thou contracted to thine own bright eyes," +18.600 22.800 f000007 "Feed'st thy light's flame with self-substantial fuel," +22.800 25.680 f000008 "Making a famine where abundance lies," 25.680 31.240 f000009 "Thy self thy foe, to thy sweet self too cruel:" -31.240 34.400 f000010 "Thou that art now the world's fresh ornament," -34.400 36.920 f000011 "And only herald to the gaudy spring," -36.920 40.640 f000012 "Within thine own bud buriest thy content," -40.640 43.640 f000013 "And tender churl mak'st waste in niggarding:" -43.640 48.080 f000014 "Pity the world, or else this glutton be," +31.240 34.280 f000010 "Thou that art now the world's fresh ornament," +34.280 36.960 f000011 "And only herald to the gaudy spring," +36.960 40.680 f000012 "Within thine own bud buriest thy content," +40.680 44.560 f000013 "And tender churl mak'st waste in niggarding:" +44.560 48.080 f000014 "Pity the world, or else this glutton be," 48.080 53.240 f000015 "To eat the world's due, by the grave and thee." \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_m.sub b/aeneas/tests/res/syncmaps/sonnet001_m.sub index 88a2d5b8..4c89212a 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_m.sub +++ b/aeneas/tests/res/syncmaps/sonnet001_m.sub @@ -1,8 +1,8 @@ [SUBTITLE] -00:00:00.000,00:00:02.640 +00:00:00.000,00:00:02.680 1 -00:00:02.640,00:00:05.880 +00:00:02.680,00:00:05.880 From fairest creatures[br]we desire increase, 00:00:05.880,00:00:09.240 @@ -14,31 +14,31 @@ But as the riper[br]should by time decease, 00:00:11.920,00:00:15.280 His tender heir[br]might bear his memory: -00:00:15.280,00:00:18.800 +00:00:15.280,00:00:18.600 But thou contracted[br]to thine own bright eyes, -00:00:18.800,00:00:22.760 +00:00:18.600,00:00:22.800 Feed'st thy light's flame[br]with self-substantial fuel, -00:00:22.760,00:00:25.680 +00:00:22.800,00:00:25.680 Making a famine[br]where abundance lies, 00:00:25.680,00:00:31.240 Thy self thy foe,[br]to thy sweet self too cruel: -00:00:31.240,00:00:34.400 +00:00:31.240,00:00:34.280 Thou that art now[br]the world's fresh ornament, -00:00:34.400,00:00:36.920 +00:00:34.280,00:00:36.960 And only herald to the gaudy spring, -00:00:36.920,00:00:40.640 +00:00:36.960,00:00:40.680 Within thine own bud[br]buriest thy content, -00:00:40.640,00:00:43.640 +00:00:40.680,00:00:44.560 And tender churl mak'st waste in niggarding: -00:00:43.640,00:00:48.080 +00:00:44.560,00:00:48.080 Pity the world,[br]or else this glutton be, 00:00:48.080,00:00:53.240 diff --git a/aeneas/tests/res/syncmaps/sonnet001_m.tab b/aeneas/tests/res/syncmaps/sonnet001_m.tab index 368f64f1..9be29e9d 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_m.tab +++ b/aeneas/tests/res/syncmaps/sonnet001_m.tab @@ -1,15 +1,15 @@ -0.000 2.640 f000001 -2.640 5.880 f000002 +0.000 2.680 f000001 +2.680 5.880 f000002 5.880 9.240 f000003 9.240 11.920 f000004 11.920 15.280 f000005 -15.280 18.800 f000006 -18.800 22.760 f000007 -22.760 25.680 f000008 +15.280 18.600 f000006 +18.600 22.800 f000007 +22.800 25.680 f000008 25.680 31.240 f000009 -31.240 34.400 f000010 -34.400 36.920 f000011 -36.920 40.640 f000012 -40.640 43.640 f000013 -43.640 48.080 f000014 +31.240 34.280 f000010 +34.280 36.960 f000011 +36.960 40.680 f000012 +40.680 44.560 f000013 +44.560 48.080 f000014 48.080 53.240 f000015 \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_m.textgrid b/aeneas/tests/res/syncmaps/sonnet001_m.textgrid new file mode 100644 index 00000000..3918685f --- /dev/null +++ b/aeneas/tests/res/syncmaps/sonnet001_m.textgrid @@ -0,0 +1,74 @@ +File type = "ooTextFile" +Object class = "TextGrid" + +xmin = 0.0 +xmax = 53.24 +tiers? +size = 1 +item []: + item [1]: + class = "IntervalTier" + name = "Token" + xmin = 0.0 + xmax = 53.24 + intervals: size = 15 + intervals [1]: + xmin = 0.0 + xmax = 2.68 + text = "1" + intervals [2]: + xmin = 2.68 + xmax = 5.88 + text = "From fairest creatures we desire increase," + intervals [3]: + xmin = 5.88 + xmax = 9.24 + text = "That thereby beauty's rose might never die," + intervals [4]: + xmin = 9.24 + xmax = 11.92 + text = "But as the riper should by time decease," + intervals [5]: + xmin = 11.92 + xmax = 15.28 + text = "His tender heir might bear his memory:" + intervals [6]: + xmin = 15.28 + xmax = 18.6 + text = "But thou contracted to thine own bright eyes," + intervals [7]: + xmin = 18.6 + xmax = 22.8 + text = "Feed'st thy light's flame with self-substantial fuel," + intervals [8]: + xmin = 22.8 + xmax = 25.68 + text = "Making a famine where abundance lies," + intervals [9]: + xmin = 25.68 + xmax = 31.24 + text = "Thy self thy foe, to thy sweet self too cruel:" + intervals [10]: + xmin = 31.24 + xmax = 34.28 + text = "Thou that art now the world's fresh ornament," + intervals [11]: + xmin = 34.28 + xmax = 36.96 + text = "And only herald to the gaudy spring," + intervals [12]: + xmin = 36.96 + xmax = 40.68 + text = "Within thine own bud buriest thy content," + intervals [13]: + xmin = 40.68 + xmax = 44.56 + text = "And tender churl mak'st waste in niggarding:" + intervals [14]: + xmin = 44.56 + xmax = 48.08 + text = "Pity the world, or else this glutton be," + intervals [15]: + xmin = 48.08 + xmax = 53.24 + text = "To eat the world's due, by the grave and thee." \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_m.textgrid_short b/aeneas/tests/res/syncmaps/sonnet001_m.textgrid_short new file mode 100644 index 00000000..55574725 --- /dev/null +++ b/aeneas/tests/res/syncmaps/sonnet001_m.textgrid_short @@ -0,0 +1,57 @@ +File type = "ooTextFile" +Object class = "TextGrid" + +0.0 +53.24 + +1 +"IntervalTier" +"Token" +0.0 +53.24 +15 +0.0 +2.68 +"1" +2.68 +5.88 +"From fairest creatures we desire increase," +5.88 +9.24 +"That thereby beauty's rose might never die," +9.24 +11.92 +"But as the riper should by time decease," +11.92 +15.28 +"His tender heir might bear his memory:" +15.28 +18.6 +"But thou contracted to thine own bright eyes," +18.6 +22.8 +"Feed'st thy light's flame with self-substantial fuel," +22.8 +25.68 +"Making a famine where abundance lies," +25.68 +31.24 +"Thy self thy foe, to thy sweet self too cruel:" +31.24 +34.28 +"Thou that art now the world's fresh ornament," +34.28 +36.96 +"And only herald to the gaudy spring," +36.96 +40.68 +"Within thine own bud buriest thy content," +40.68 +44.56 +"And tender churl mak'st waste in niggarding:" +44.56 +48.08 +"Pity the world, or else this glutton be," +48.08 +53.24 +"To eat the world's due, by the grave and thee." \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_m.tsv b/aeneas/tests/res/syncmaps/sonnet001_m.tsv index 368f64f1..9be29e9d 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_m.tsv +++ b/aeneas/tests/res/syncmaps/sonnet001_m.tsv @@ -1,15 +1,15 @@ -0.000 2.640 f000001 -2.640 5.880 f000002 +0.000 2.680 f000001 +2.680 5.880 f000002 5.880 9.240 f000003 9.240 11.920 f000004 11.920 15.280 f000005 -15.280 18.800 f000006 -18.800 22.760 f000007 -22.760 25.680 f000008 +15.280 18.600 f000006 +18.600 22.800 f000007 +22.800 25.680 f000008 25.680 31.240 f000009 -31.240 34.400 f000010 -34.400 36.920 f000011 -36.920 40.640 f000012 -40.640 43.640 f000013 -43.640 48.080 f000014 +31.240 34.280 f000010 +34.280 36.960 f000011 +36.960 40.680 f000012 +40.680 44.560 f000013 +44.560 48.080 f000014 48.080 53.240 f000015 \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_m.tsvh b/aeneas/tests/res/syncmaps/sonnet001_m.tsvh index e960c216..4abd8416 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_m.tsvh +++ b/aeneas/tests/res/syncmaps/sonnet001_m.tsvh @@ -1,15 +1,15 @@ -00:00:00.000 00:00:02.640 f000001 -00:00:02.640 00:00:05.880 f000002 +00:00:00.000 00:00:02.680 f000001 +00:00:02.680 00:00:05.880 f000002 00:00:05.880 00:00:09.240 f000003 00:00:09.240 00:00:11.920 f000004 00:00:11.920 00:00:15.280 f000005 -00:00:15.280 00:00:18.800 f000006 -00:00:18.800 00:00:22.760 f000007 -00:00:22.760 00:00:25.680 f000008 +00:00:15.280 00:00:18.600 f000006 +00:00:18.600 00:00:22.800 f000007 +00:00:22.800 00:00:25.680 f000008 00:00:25.680 00:00:31.240 f000009 -00:00:31.240 00:00:34.400 f000010 -00:00:34.400 00:00:36.920 f000011 -00:00:36.920 00:00:40.640 f000012 -00:00:40.640 00:00:43.640 f000013 -00:00:43.640 00:00:48.080 f000014 +00:00:31.240 00:00:34.280 f000010 +00:00:34.280 00:00:36.960 f000011 +00:00:36.960 00:00:40.680 f000012 +00:00:40.680 00:00:44.560 f000013 +00:00:44.560 00:00:48.080 f000014 00:00:48.080 00:00:53.240 f000015 \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_m.tsvm b/aeneas/tests/res/syncmaps/sonnet001_m.tsvm index 368f64f1..9be29e9d 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_m.tsvm +++ b/aeneas/tests/res/syncmaps/sonnet001_m.tsvm @@ -1,15 +1,15 @@ -0.000 2.640 f000001 -2.640 5.880 f000002 +0.000 2.680 f000001 +2.680 5.880 f000002 5.880 9.240 f000003 9.240 11.920 f000004 11.920 15.280 f000005 -15.280 18.800 f000006 -18.800 22.760 f000007 -22.760 25.680 f000008 +15.280 18.600 f000006 +18.600 22.800 f000007 +22.800 25.680 f000008 25.680 31.240 f000009 -31.240 34.400 f000010 -34.400 36.920 f000011 -36.920 40.640 f000012 -40.640 43.640 f000013 -43.640 48.080 f000014 +31.240 34.280 f000010 +34.280 36.960 f000011 +36.960 40.680 f000012 +40.680 44.560 f000013 +44.560 48.080 f000014 48.080 53.240 f000015 \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_m.ttml b/aeneas/tests/res/syncmaps/sonnet001_m.ttml index 094caf8c..0930ff0c 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_m.ttml +++ b/aeneas/tests/res/syncmaps/sonnet001_m.ttml @@ -2,20 +2,20 @@
-

1

-

From fairest creatures
we desire increase,

+

1

+

From fairest creatures
we desire increase,

That thereby beauty's rose
might never die,

But as the riper
should by time decease,

His tender heir
might bear his memory:

-

But thou contracted
to thine own bright eyes,

-

Feed'st thy light's flame
with self-substantial fuel,

-

Making a famine
where abundance lies,

+

But thou contracted
to thine own bright eyes,

+

Feed'st thy light's flame
with self-substantial fuel,

+

Making a famine
where abundance lies,

Thy self thy foe,
to thy sweet self too cruel:

-

Thou that art now
the world's fresh ornament,

-

And only herald to the gaudy spring,

-

Within thine own bud
buriest thy content,

-

And tender churl mak'st waste in niggarding:

-

Pity the world,
or else this glutton be,

+

Thou that art now
the world's fresh ornament,

+

And only herald to the gaudy spring,

+

Within thine own bud
buriest thy content,

+

And tender churl mak'st waste in niggarding:

+

Pity the world,
or else this glutton be,

To eat the world's due,
by the grave and thee.

diff --git a/aeneas/tests/res/syncmaps/sonnet001_m.txt b/aeneas/tests/res/syncmaps/sonnet001_m.txt index ee2e037f..fd7e81c2 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_m.txt +++ b/aeneas/tests/res/syncmaps/sonnet001_m.txt @@ -1,15 +1,15 @@ -f000001 0.000 2.640 "1" -f000002 2.640 5.880 "From fairest creatures we desire increase," +f000001 0.000 2.680 "1" +f000002 2.680 5.880 "From fairest creatures we desire increase," f000003 5.880 9.240 "That thereby beauty's rose might never die," f000004 9.240 11.920 "But as the riper should by time decease," f000005 11.920 15.280 "His tender heir might bear his memory:" -f000006 15.280 18.800 "But thou contracted to thine own bright eyes," -f000007 18.800 22.760 "Feed'st thy light's flame with self-substantial fuel," -f000008 22.760 25.680 "Making a famine where abundance lies," +f000006 15.280 18.600 "But thou contracted to thine own bright eyes," +f000007 18.600 22.800 "Feed'st thy light's flame with self-substantial fuel," +f000008 22.800 25.680 "Making a famine where abundance lies," f000009 25.680 31.240 "Thy self thy foe, to thy sweet self too cruel:" -f000010 31.240 34.400 "Thou that art now the world's fresh ornament," -f000011 34.400 36.920 "And only herald to the gaudy spring," -f000012 36.920 40.640 "Within thine own bud buriest thy content," -f000013 40.640 43.640 "And tender churl mak'st waste in niggarding:" -f000014 43.640 48.080 "Pity the world, or else this glutton be," +f000010 31.240 34.280 "Thou that art now the world's fresh ornament," +f000011 34.280 36.960 "And only herald to the gaudy spring," +f000012 36.960 40.680 "Within thine own bud buriest thy content," +f000013 40.680 44.560 "And tender churl mak'st waste in niggarding:" +f000014 44.560 48.080 "Pity the world, or else this glutton be," f000015 48.080 53.240 "To eat the world's due, by the grave and thee." \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_m.txth b/aeneas/tests/res/syncmaps/sonnet001_m.txth index d061a21e..ad1f079a 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_m.txth +++ b/aeneas/tests/res/syncmaps/sonnet001_m.txth @@ -1,15 +1,15 @@ -f000001 00:00:00.000 00:00:02.640 "1" -f000002 00:00:02.640 00:00:05.880 "From fairest creatures we desire increase," +f000001 00:00:00.000 00:00:02.680 "1" +f000002 00:00:02.680 00:00:05.880 "From fairest creatures we desire increase," f000003 00:00:05.880 00:00:09.240 "That thereby beauty's rose might never die," f000004 00:00:09.240 00:00:11.920 "But as the riper should by time decease," f000005 00:00:11.920 00:00:15.280 "His tender heir might bear his memory:" -f000006 00:00:15.280 00:00:18.800 "But thou contracted to thine own bright eyes," -f000007 00:00:18.800 00:00:22.760 "Feed'st thy light's flame with self-substantial fuel," -f000008 00:00:22.760 00:00:25.680 "Making a famine where abundance lies," +f000006 00:00:15.280 00:00:18.600 "But thou contracted to thine own bright eyes," +f000007 00:00:18.600 00:00:22.800 "Feed'st thy light's flame with self-substantial fuel," +f000008 00:00:22.800 00:00:25.680 "Making a famine where abundance lies," f000009 00:00:25.680 00:00:31.240 "Thy self thy foe, to thy sweet self too cruel:" -f000010 00:00:31.240 00:00:34.400 "Thou that art now the world's fresh ornament," -f000011 00:00:34.400 00:00:36.920 "And only herald to the gaudy spring," -f000012 00:00:36.920 00:00:40.640 "Within thine own bud buriest thy content," -f000013 00:00:40.640 00:00:43.640 "And tender churl mak'st waste in niggarding:" -f000014 00:00:43.640 00:00:48.080 "Pity the world, or else this glutton be," +f000010 00:00:31.240 00:00:34.280 "Thou that art now the world's fresh ornament," +f000011 00:00:34.280 00:00:36.960 "And only herald to the gaudy spring," +f000012 00:00:36.960 00:00:40.680 "Within thine own bud buriest thy content," +f000013 00:00:40.680 00:00:44.560 "And tender churl mak'st waste in niggarding:" +f000014 00:00:44.560 00:00:48.080 "Pity the world, or else this glutton be," f000015 00:00:48.080 00:00:53.240 "To eat the world's due, by the grave and thee." \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_m.txtm b/aeneas/tests/res/syncmaps/sonnet001_m.txtm index ee2e037f..fd7e81c2 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_m.txtm +++ b/aeneas/tests/res/syncmaps/sonnet001_m.txtm @@ -1,15 +1,15 @@ -f000001 0.000 2.640 "1" -f000002 2.640 5.880 "From fairest creatures we desire increase," +f000001 0.000 2.680 "1" +f000002 2.680 5.880 "From fairest creatures we desire increase," f000003 5.880 9.240 "That thereby beauty's rose might never die," f000004 9.240 11.920 "But as the riper should by time decease," f000005 11.920 15.280 "His tender heir might bear his memory:" -f000006 15.280 18.800 "But thou contracted to thine own bright eyes," -f000007 18.800 22.760 "Feed'st thy light's flame with self-substantial fuel," -f000008 22.760 25.680 "Making a famine where abundance lies," +f000006 15.280 18.600 "But thou contracted to thine own bright eyes," +f000007 18.600 22.800 "Feed'st thy light's flame with self-substantial fuel," +f000008 22.800 25.680 "Making a famine where abundance lies," f000009 25.680 31.240 "Thy self thy foe, to thy sweet self too cruel:" -f000010 31.240 34.400 "Thou that art now the world's fresh ornament," -f000011 34.400 36.920 "And only herald to the gaudy spring," -f000012 36.920 40.640 "Within thine own bud buriest thy content," -f000013 40.640 43.640 "And tender churl mak'st waste in niggarding:" -f000014 43.640 48.080 "Pity the world, or else this glutton be," +f000010 31.240 34.280 "Thou that art now the world's fresh ornament," +f000011 34.280 36.960 "And only herald to the gaudy spring," +f000012 36.960 40.680 "Within thine own bud buriest thy content," +f000013 40.680 44.560 "And tender churl mak'st waste in niggarding:" +f000014 44.560 48.080 "Pity the world, or else this glutton be," f000015 48.080 53.240 "To eat the world's due, by the grave and thee." \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_m.vtt b/aeneas/tests/res/syncmaps/sonnet001_m.vtt index 87170222..0724088d 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_m.vtt +++ b/aeneas/tests/res/syncmaps/sonnet001_m.vtt @@ -1,11 +1,11 @@ WEBVTT 1 -00:00:00.000 --> 00:00:02.640 +00:00:00.000 --> 00:00:02.680 1 2 -00:00:02.640 --> 00:00:05.880 +00:00:02.680 --> 00:00:05.880 From fairest creatures we desire increase, @@ -25,17 +25,17 @@ His tender heir might bear his memory: 6 -00:00:15.280 --> 00:00:18.800 +00:00:15.280 --> 00:00:18.600 But thou contracted to thine own bright eyes, 7 -00:00:18.800 --> 00:00:22.760 +00:00:18.600 --> 00:00:22.800 Feed'st thy light's flame with self-substantial fuel, 8 -00:00:22.760 --> 00:00:25.680 +00:00:22.800 --> 00:00:25.680 Making a famine where abundance lies, @@ -45,25 +45,25 @@ Thy self thy foe, to thy sweet self too cruel: 10 -00:00:31.240 --> 00:00:34.400 +00:00:31.240 --> 00:00:34.280 Thou that art now the world's fresh ornament, 11 -00:00:34.400 --> 00:00:36.920 +00:00:34.280 --> 00:00:36.960 And only herald to the gaudy spring, 12 -00:00:36.920 --> 00:00:40.640 +00:00:36.960 --> 00:00:40.680 Within thine own bud buriest thy content, 13 -00:00:40.640 --> 00:00:43.640 +00:00:40.680 --> 00:00:44.560 And tender churl mak'st waste in niggarding: 14 -00:00:43.640 --> 00:00:48.080 +00:00:44.560 --> 00:00:48.080 Pity the world, or else this glutton be, diff --git a/aeneas/tests/res/syncmaps/sonnet001_m.xml b/aeneas/tests/res/syncmaps/sonnet001_m.xml index 1cea2128..3e1f4732 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_m.xml +++ b/aeneas/tests/res/syncmaps/sonnet001_m.xml @@ -1,10 +1,10 @@ - + 1 - + From fairest creatures we desire increase, @@ -24,17 +24,17 @@ might bear his memory: - + But thou contracted to thine own bright eyes, - + Feed'st thy light's flame with self-substantial fuel, - + Making a famine where abundance lies, @@ -44,25 +44,25 @@ to thy sweet self too cruel: - + Thou that art now the world's fresh ornament, - + And only herald to the gaudy spring, - + Within thine own bud buriest thy content, - + And tender churl mak'st waste in niggarding: - + Pity the world, or else this glutton be, diff --git a/aeneas/tests/res/syncmaps/sonnet001_m.xml_legacy b/aeneas/tests/res/syncmaps/sonnet001_m.xml_legacy index b9d67e7e..700b16e2 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_m.xml_legacy +++ b/aeneas/tests/res/syncmaps/sonnet001_m.xml_legacy @@ -3,11 +3,11 @@ f000001 0.000 - 2.640 + 2.680 f000002 - 2.640 + 2.680 5.880 @@ -28,16 +28,16 @@ f000006 15.280 - 18.800 + 18.600 f000007 - 18.800 - 22.760 + 18.600 + 22.800 f000008 - 22.760 + 22.800 25.680 @@ -48,26 +48,26 @@ f000010 31.240 - 34.400 + 34.280 f000011 - 34.400 - 36.920 + 34.280 + 36.960 f000012 - 36.920 - 40.640 + 36.960 + 40.680 f000013 - 40.640 - 43.640 + 40.680 + 44.560 f000014 - 43.640 + 44.560 48.080 diff --git a/aeneas/tests/res/syncmaps/sonnet001_mu.aud b/aeneas/tests/res/syncmaps/sonnet001_mu.aud index 6c63f16c..a703532d 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_mu.aud +++ b/aeneas/tests/res/syncmaps/sonnet001_mu.aud @@ -1,15 +1,15 @@ -0.000 2.640 I -2.640 5.880 From fairest creatures we desire increase, +0.000 2.680 I +2.680 5.880 From fairest creatures we desire increase, 5.880 9.240 That thereby beauty’s rose might never die, -9.240 11.640 But as the riper should by time decease, -11.640 15.240 His tender heir might bear his memory: -15.240 18.560 But thou contracted to thine own bright eyes, +9.240 11.920 But as the riper should by time decease, +11.920 15.280 His tender heir might bear his memory: +15.280 18.560 But thou contracted to thine own bright eyes, 18.560 22.800 Feed’st thy light’s flame with self-substantial fuel, -22.800 25.680 Making a famine where abundance lies, -25.680 31.240 Thy self thy foe, to thy sweet self too cruel: -31.240 34.280 Thou that art now the world’s fresh ornament, -34.280 36.960 And only herald to the gaudy spring, +22.800 25.640 Making a famine where abundance lies, +25.640 31.240 Thy self thy foe, to thy sweet self too cruel: +31.240 34.440 Thou that art now the world’s fresh ornament, +34.440 36.960 And only herald to the gaudy spring, 36.960 40.680 Within thine own bud buriest thy content, -40.680 43.600 And tender churl mak’st waste in niggarding: -43.600 48.080 Pity the world, or else this glutton be, -48.080 53.240 To eat the world’s due, by the grave and thee. \ No newline at end of file +40.680 43.640 And tender churl mak’st waste in niggarding: +43.640 48.520 Pity the world, or else this glutton be, +48.520 53.240 To eat the world’s due, by the grave and thee. \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_mu.audh b/aeneas/tests/res/syncmaps/sonnet001_mu.audh index 43cf9390..fd39b295 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_mu.audh +++ b/aeneas/tests/res/syncmaps/sonnet001_mu.audh @@ -1,15 +1,15 @@ -00:00:00.000 00:00:02.640 I -00:00:02.640 00:00:05.880 From fairest creatures we desire increase, +00:00:00.000 00:00:02.680 I +00:00:02.680 00:00:05.880 From fairest creatures we desire increase, 00:00:05.880 00:00:09.240 That thereby beauty’s rose might never die, -00:00:09.240 00:00:11.640 But as the riper should by time decease, -00:00:11.640 00:00:15.240 His tender heir might bear his memory: -00:00:15.240 00:00:18.560 But thou contracted to thine own bright eyes, +00:00:09.240 00:00:11.920 But as the riper should by time decease, +00:00:11.920 00:00:15.280 His tender heir might bear his memory: +00:00:15.280 00:00:18.560 But thou contracted to thine own bright eyes, 00:00:18.560 00:00:22.800 Feed’st thy light’s flame with self-substantial fuel, -00:00:22.800 00:00:25.680 Making a famine where abundance lies, -00:00:25.680 00:00:31.240 Thy self thy foe, to thy sweet self too cruel: -00:00:31.240 00:00:34.280 Thou that art now the world’s fresh ornament, -00:00:34.280 00:00:36.960 And only herald to the gaudy spring, +00:00:22.800 00:00:25.640 Making a famine where abundance lies, +00:00:25.640 00:00:31.240 Thy self thy foe, to thy sweet self too cruel: +00:00:31.240 00:00:34.440 Thou that art now the world’s fresh ornament, +00:00:34.440 00:00:36.960 And only herald to the gaudy spring, 00:00:36.960 00:00:40.680 Within thine own bud buriest thy content, -00:00:40.680 00:00:43.600 And tender churl mak’st waste in niggarding: -00:00:43.600 00:00:48.080 Pity the world, or else this glutton be, -00:00:48.080 00:00:53.240 To eat the world’s due, by the grave and thee. \ No newline at end of file +00:00:40.680 00:00:43.640 And tender churl mak’st waste in niggarding: +00:00:43.640 00:00:48.520 Pity the world, or else this glutton be, +00:00:48.520 00:00:53.240 To eat the world’s due, by the grave and thee. \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_mu.audm b/aeneas/tests/res/syncmaps/sonnet001_mu.audm index 6c63f16c..a703532d 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_mu.audm +++ b/aeneas/tests/res/syncmaps/sonnet001_mu.audm @@ -1,15 +1,15 @@ -0.000 2.640 I -2.640 5.880 From fairest creatures we desire increase, +0.000 2.680 I +2.680 5.880 From fairest creatures we desire increase, 5.880 9.240 That thereby beauty’s rose might never die, -9.240 11.640 But as the riper should by time decease, -11.640 15.240 His tender heir might bear his memory: -15.240 18.560 But thou contracted to thine own bright eyes, +9.240 11.920 But as the riper should by time decease, +11.920 15.280 His tender heir might bear his memory: +15.280 18.560 But thou contracted to thine own bright eyes, 18.560 22.800 Feed’st thy light’s flame with self-substantial fuel, -22.800 25.680 Making a famine where abundance lies, -25.680 31.240 Thy self thy foe, to thy sweet self too cruel: -31.240 34.280 Thou that art now the world’s fresh ornament, -34.280 36.960 And only herald to the gaudy spring, +22.800 25.640 Making a famine where abundance lies, +25.640 31.240 Thy self thy foe, to thy sweet self too cruel: +31.240 34.440 Thou that art now the world’s fresh ornament, +34.440 36.960 And only herald to the gaudy spring, 36.960 40.680 Within thine own bud buriest thy content, -40.680 43.600 And tender churl mak’st waste in niggarding: -43.600 48.080 Pity the world, or else this glutton be, -48.080 53.240 To eat the world’s due, by the grave and thee. \ No newline at end of file +40.680 43.640 And tender churl mak’st waste in niggarding: +43.640 48.520 Pity the world, or else this glutton be, +48.520 53.240 To eat the world’s due, by the grave and thee. \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_mu.csv b/aeneas/tests/res/syncmaps/sonnet001_mu.csv index 7855f238..58279b34 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_mu.csv +++ b/aeneas/tests/res/syncmaps/sonnet001_mu.csv @@ -1,15 +1,15 @@ -f000001,0.000,2.640,"I" -f000002,2.640,5.880,"From fairest creatures we desire increase," +f000001,0.000,2.680,"I" +f000002,2.680,5.880,"From fairest creatures we desire increase," f000003,5.880,9.240,"That thereby beauty’s rose might never die," -f000004,9.240,11.640,"But as the riper should by time decease," -f000005,11.640,15.240,"His tender heir might bear his memory:" -f000006,15.240,18.560,"But thou contracted to thine own bright eyes," +f000004,9.240,11.920,"But as the riper should by time decease," +f000005,11.920,15.280,"His tender heir might bear his memory:" +f000006,15.280,18.560,"But thou contracted to thine own bright eyes," f000007,18.560,22.800,"Feed’st thy light’s flame with self-substantial fuel," -f000008,22.800,25.680,"Making a famine where abundance lies," -f000009,25.680,31.240,"Thy self thy foe, to thy sweet self too cruel:" -f000010,31.240,34.280,"Thou that art now the world’s fresh ornament," -f000011,34.280,36.960,"And only herald to the gaudy spring," +f000008,22.800,25.640,"Making a famine where abundance lies," +f000009,25.640,31.240,"Thy self thy foe, to thy sweet self too cruel:" +f000010,31.240,34.440,"Thou that art now the world’s fresh ornament," +f000011,34.440,36.960,"And only herald to the gaudy spring," f000012,36.960,40.680,"Within thine own bud buriest thy content," -f000013,40.680,43.600,"And tender churl mak’st waste in niggarding:" -f000014,43.600,48.080,"Pity the world, or else this glutton be," -f000015,48.080,53.240,"To eat the world’s due, by the grave and thee." \ No newline at end of file +f000013,40.680,43.640,"And tender churl mak’st waste in niggarding:" +f000014,43.640,48.520,"Pity the world, or else this glutton be," +f000015,48.520,53.240,"To eat the world’s due, by the grave and thee." \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_mu.csvh b/aeneas/tests/res/syncmaps/sonnet001_mu.csvh index 66421492..547a8580 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_mu.csvh +++ b/aeneas/tests/res/syncmaps/sonnet001_mu.csvh @@ -1,15 +1,15 @@ -f000001,00:00:00.000,00:00:02.640,"I" -f000002,00:00:02.640,00:00:05.880,"From fairest creatures we desire increase," +f000001,00:00:00.000,00:00:02.680,"I" +f000002,00:00:02.680,00:00:05.880,"From fairest creatures we desire increase," f000003,00:00:05.880,00:00:09.240,"That thereby beauty’s rose might never die," -f000004,00:00:09.240,00:00:11.640,"But as the riper should by time decease," -f000005,00:00:11.640,00:00:15.240,"His tender heir might bear his memory:" -f000006,00:00:15.240,00:00:18.560,"But thou contracted to thine own bright eyes," +f000004,00:00:09.240,00:00:11.920,"But as the riper should by time decease," +f000005,00:00:11.920,00:00:15.280,"His tender heir might bear his memory:" +f000006,00:00:15.280,00:00:18.560,"But thou contracted to thine own bright eyes," f000007,00:00:18.560,00:00:22.800,"Feed’st thy light’s flame with self-substantial fuel," -f000008,00:00:22.800,00:00:25.680,"Making a famine where abundance lies," -f000009,00:00:25.680,00:00:31.240,"Thy self thy foe, to thy sweet self too cruel:" -f000010,00:00:31.240,00:00:34.280,"Thou that art now the world’s fresh ornament," -f000011,00:00:34.280,00:00:36.960,"And only herald to the gaudy spring," +f000008,00:00:22.800,00:00:25.640,"Making a famine where abundance lies," +f000009,00:00:25.640,00:00:31.240,"Thy self thy foe, to thy sweet self too cruel:" +f000010,00:00:31.240,00:00:34.440,"Thou that art now the world’s fresh ornament," +f000011,00:00:34.440,00:00:36.960,"And only herald to the gaudy spring," f000012,00:00:36.960,00:00:40.680,"Within thine own bud buriest thy content," -f000013,00:00:40.680,00:00:43.600,"And tender churl mak’st waste in niggarding:" -f000014,00:00:43.600,00:00:48.080,"Pity the world, or else this glutton be," -f000015,00:00:48.080,00:00:53.240,"To eat the world’s due, by the grave and thee." \ No newline at end of file +f000013,00:00:40.680,00:00:43.640,"And tender churl mak’st waste in niggarding:" +f000014,00:00:43.640,00:00:48.520,"Pity the world, or else this glutton be," +f000015,00:00:48.520,00:00:53.240,"To eat the world’s due, by the grave and thee." \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_mu.csvm b/aeneas/tests/res/syncmaps/sonnet001_mu.csvm index 7855f238..58279b34 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_mu.csvm +++ b/aeneas/tests/res/syncmaps/sonnet001_mu.csvm @@ -1,15 +1,15 @@ -f000001,0.000,2.640,"I" -f000002,2.640,5.880,"From fairest creatures we desire increase," +f000001,0.000,2.680,"I" +f000002,2.680,5.880,"From fairest creatures we desire increase," f000003,5.880,9.240,"That thereby beauty’s rose might never die," -f000004,9.240,11.640,"But as the riper should by time decease," -f000005,11.640,15.240,"His tender heir might bear his memory:" -f000006,15.240,18.560,"But thou contracted to thine own bright eyes," +f000004,9.240,11.920,"But as the riper should by time decease," +f000005,11.920,15.280,"His tender heir might bear his memory:" +f000006,15.280,18.560,"But thou contracted to thine own bright eyes," f000007,18.560,22.800,"Feed’st thy light’s flame with self-substantial fuel," -f000008,22.800,25.680,"Making a famine where abundance lies," -f000009,25.680,31.240,"Thy self thy foe, to thy sweet self too cruel:" -f000010,31.240,34.280,"Thou that art now the world’s fresh ornament," -f000011,34.280,36.960,"And only herald to the gaudy spring," +f000008,22.800,25.640,"Making a famine where abundance lies," +f000009,25.640,31.240,"Thy self thy foe, to thy sweet self too cruel:" +f000010,31.240,34.440,"Thou that art now the world’s fresh ornament," +f000011,34.440,36.960,"And only herald to the gaudy spring," f000012,36.960,40.680,"Within thine own bud buriest thy content," -f000013,40.680,43.600,"And tender churl mak’st waste in niggarding:" -f000014,43.600,48.080,"Pity the world, or else this glutton be," -f000015,48.080,53.240,"To eat the world’s due, by the grave and thee." \ No newline at end of file +f000013,40.680,43.640,"And tender churl mak’st waste in niggarding:" +f000014,43.640,48.520,"Pity the world, or else this glutton be," +f000015,48.520,53.240,"To eat the world’s due, by the grave and thee." \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_mu.dfxp b/aeneas/tests/res/syncmaps/sonnet001_mu.dfxp index 34280a1a..0b615e61 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_mu.dfxp +++ b/aeneas/tests/res/syncmaps/sonnet001_mu.dfxp @@ -2,21 +2,21 @@
-

I

-

From fairest creatures
we desire increase,

+

I

+

From fairest creatures
we desire increase,

That thereby beauty’s rose
might never die,

-

But as the riper
should by time decease,

-

His tender heir
might bear his memory:

-

But thou contracted
to thine own bright eyes,

+

But as the riper
should by time decease,

+

His tender heir
might bear his memory:

+

But thou contracted
to thine own bright eyes,

Feed’st thy light’s flame
with self-substantial fuel,

-

Making a famine
where abundance lies,

-

Thy self thy foe,
to thy sweet self too cruel:

-

Thou that art now
the world’s fresh ornament,

-

And only herald to the gaudy spring,

+

Making a famine
where abundance lies,

+

Thy self thy foe,
to thy sweet self too cruel:

+

Thou that art now
the world’s fresh ornament,

+

And only herald to the gaudy spring,

Within thine own bud
buriest thy content,

-

And tender churl mak’st waste in niggarding:

-

Pity the world,
or else this glutton be,

-

To eat the world’s due,
by the grave and thee.

+

And tender churl mak’st waste in niggarding:

+

Pity the world,
or else this glutton be,

+

To eat the world’s due,
by the grave and thee.

diff --git a/aeneas/tests/res/syncmaps/sonnet001_mu.eaf b/aeneas/tests/res/syncmaps/sonnet001_mu.eaf index 4c108546..39e7c448 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_mu.eaf +++ b/aeneas/tests/res/syncmaps/sonnet001_mu.eaf @@ -1,37 +1,36 @@ - -
-
+ +
- - + + - - - - + + + + - - + + - - + + - - - - + + + + diff --git a/aeneas/tests/res/syncmaps/sonnet001_mu.json b/aeneas/tests/res/syncmaps/sonnet001_mu.json index ac5c2c78..04376813 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_mu.json +++ b/aeneas/tests/res/syncmaps/sonnet001_mu.json @@ -3,7 +3,7 @@ { "begin": "0.000", "children": [], - "end": "2.640", + "end": "2.680", "id": "f000001", "language": "en", "lines": [ @@ -11,7 +11,7 @@ ] }, { - "begin": "2.640", + "begin": "2.680", "children": [], "end": "5.880", "id": "f000002", @@ -35,7 +35,7 @@ { "begin": "9.240", "children": [], - "end": "11.640", + "end": "11.920", "id": "f000004", "language": "en", "lines": [ @@ -44,9 +44,9 @@ ] }, { - "begin": "11.640", + "begin": "11.920", "children": [], - "end": "15.240", + "end": "15.280", "id": "f000005", "language": "en", "lines": [ @@ -55,7 +55,7 @@ ] }, { - "begin": "15.240", + "begin": "15.280", "children": [], "end": "18.560", "id": "f000006", @@ -79,7 +79,7 @@ { "begin": "22.800", "children": [], - "end": "25.680", + "end": "25.640", "id": "f000008", "language": "en", "lines": [ @@ -88,7 +88,7 @@ ] }, { - "begin": "25.680", + "begin": "25.640", "children": [], "end": "31.240", "id": "f000009", @@ -101,7 +101,7 @@ { "begin": "31.240", "children": [], - "end": "34.280", + "end": "34.440", "id": "f000010", "language": "en", "lines": [ @@ -110,7 +110,7 @@ ] }, { - "begin": "34.280", + "begin": "34.440", "children": [], "end": "36.960", "id": "f000011", @@ -133,7 +133,7 @@ { "begin": "40.680", "children": [], - "end": "43.600", + "end": "43.640", "id": "f000013", "language": "en", "lines": [ @@ -141,9 +141,9 @@ ] }, { - "begin": "43.600", + "begin": "43.640", "children": [], - "end": "48.080", + "end": "48.520", "id": "f000014", "language": "en", "lines": [ @@ -152,7 +152,7 @@ ] }, { - "begin": "48.080", + "begin": "48.520", "children": [], "end": "53.240", "id": "f000015", diff --git a/aeneas/tests/res/syncmaps/sonnet001_mu.rbse b/aeneas/tests/res/syncmaps/sonnet001_mu.rbse index 68ec9ebd..6598895f 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_mu.rbse +++ b/aeneas/tests/res/syncmaps/sonnet001_mu.rbse @@ -2,11 +2,11 @@ "smil_data": [ { "begin": "0.000", - "end": "2.640", + "end": "2.680", "id": "f000001" }, { - "begin": "2.640", + "begin": "2.680", "end": "5.880", "id": "f000002" }, @@ -17,16 +17,16 @@ }, { "begin": "9.240", - "end": "11.640", + "end": "11.920", "id": "f000004" }, { - "begin": "11.640", - "end": "15.240", + "begin": "11.920", + "end": "15.280", "id": "f000005" }, { - "begin": "15.240", + "begin": "15.280", "end": "18.560", "id": "f000006" }, @@ -37,21 +37,21 @@ }, { "begin": "22.800", - "end": "25.680", + "end": "25.640", "id": "f000008" }, { - "begin": "25.680", + "begin": "25.640", "end": "31.240", "id": "f000009" }, { "begin": "31.240", - "end": "34.280", + "end": "34.440", "id": "f000010" }, { - "begin": "34.280", + "begin": "34.440", "end": "36.960", "id": "f000011" }, @@ -62,16 +62,16 @@ }, { "begin": "40.680", - "end": "43.600", + "end": "43.640", "id": "f000013" }, { - "begin": "43.600", - "end": "48.080", + "begin": "43.640", + "end": "48.520", "id": "f000014" }, { - "begin": "48.080", + "begin": "48.520", "end": "53.240", "id": "f000015" } diff --git a/aeneas/tests/res/syncmaps/sonnet001_mu.sbv b/aeneas/tests/res/syncmaps/sonnet001_mu.sbv index 503ad1c3..9779df37 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_mu.sbv +++ b/aeneas/tests/res/syncmaps/sonnet001_mu.sbv @@ -1,8 +1,8 @@ [SUBTITLE] -00:00:00.000,00:00:02.640 +00:00:00.000,00:00:02.680 I -00:00:02.640,00:00:05.880 +00:00:02.680,00:00:05.880 From fairest creatures we desire increase, @@ -10,15 +10,15 @@ we desire increase, That thereby beauty’s rose might never die, -00:00:09.240,00:00:11.640 +00:00:09.240,00:00:11.920 But as the riper should by time decease, -00:00:11.640,00:00:15.240 +00:00:11.920,00:00:15.280 His tender heir might bear his memory: -00:00:15.240,00:00:18.560 +00:00:15.280,00:00:18.560 But thou contracted to thine own bright eyes, @@ -26,33 +26,33 @@ to thine own bright eyes, Feed’st thy light’s flame with self-substantial fuel, -00:00:22.800,00:00:25.680 +00:00:22.800,00:00:25.640 Making a famine where abundance lies, -00:00:25.680,00:00:31.240 +00:00:25.640,00:00:31.240 Thy self thy foe, to thy sweet self too cruel: -00:00:31.240,00:00:34.280 +00:00:31.240,00:00:34.440 Thou that art now the world’s fresh ornament, -00:00:34.280,00:00:36.960 +00:00:34.440,00:00:36.960 And only herald to the gaudy spring, 00:00:36.960,00:00:40.680 Within thine own bud buriest thy content, -00:00:40.680,00:00:43.600 +00:00:40.680,00:00:43.640 And tender churl mak’st waste in niggarding: -00:00:43.600,00:00:48.080 +00:00:43.640,00:00:48.520 Pity the world, or else this glutton be, -00:00:48.080,00:00:53.240 +00:00:48.520,00:00:53.240 To eat the world’s due, by the grave and thee. diff --git a/aeneas/tests/res/syncmaps/sonnet001_mu.smil b/aeneas/tests/res/syncmaps/sonnet001_mu.smil index 3cdd0ea0..95b5c57b 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_mu.smil +++ b/aeneas/tests/res/syncmaps/sonnet001_mu.smil @@ -3,11 +3,11 @@ - - @@ -15,15 +15,15 @@ - - - @@ -31,19 +31,19 @@ - - - - @@ -51,15 +51,15 @@ - - - diff --git a/aeneas/tests/res/syncmaps/sonnet001_mu.smilh b/aeneas/tests/res/syncmaps/sonnet001_mu.smilh index 3cdd0ea0..95b5c57b 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_mu.smilh +++ b/aeneas/tests/res/syncmaps/sonnet001_mu.smilh @@ -3,11 +3,11 @@ - - @@ -15,15 +15,15 @@ - - - @@ -31,19 +31,19 @@ - - - - @@ -51,15 +51,15 @@ - - - diff --git a/aeneas/tests/res/syncmaps/sonnet001_mu.smilm b/aeneas/tests/res/syncmaps/sonnet001_mu.smilm index 3ec95df1..8c9242a7 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_mu.smilm +++ b/aeneas/tests/res/syncmaps/sonnet001_mu.smilm @@ -3,11 +3,11 @@ - - @@ -15,15 +15,15 @@ - - - @@ -31,19 +31,19 @@ - - - - @@ -51,15 +51,15 @@ - - - diff --git a/aeneas/tests/res/syncmaps/sonnet001_mu.srt b/aeneas/tests/res/syncmaps/sonnet001_mu.srt index 5eeb829d..f3106f4c 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_mu.srt +++ b/aeneas/tests/res/syncmaps/sonnet001_mu.srt @@ -1,9 +1,9 @@ 1 -00:00:00,000 --> 00:00:02,640 +00:00:00,000 --> 00:00:02,680 I 2 -00:00:02,640 --> 00:00:05,880 +00:00:02,680 --> 00:00:05,880 From fairest creatures we desire increase, @@ -13,17 +13,17 @@ That thereby beauty’s rose might never die, 4 -00:00:09,240 --> 00:00:11,640 +00:00:09,240 --> 00:00:11,920 But as the riper should by time decease, 5 -00:00:11,640 --> 00:00:15,240 +00:00:11,920 --> 00:00:15,280 His tender heir might bear his memory: 6 -00:00:15,240 --> 00:00:18,560 +00:00:15,280 --> 00:00:18,560 But thou contracted to thine own bright eyes, @@ -33,22 +33,22 @@ Feed’st thy light’s flame with self-substantial fuel, 8 -00:00:22,800 --> 00:00:25,680 +00:00:22,800 --> 00:00:25,640 Making a famine where abundance lies, 9 -00:00:25,680 --> 00:00:31,240 +00:00:25,640 --> 00:00:31,240 Thy self thy foe, to thy sweet self too cruel: 10 -00:00:31,240 --> 00:00:34,280 +00:00:31,240 --> 00:00:34,440 Thou that art now the world’s fresh ornament, 11 -00:00:34,280 --> 00:00:36,960 +00:00:34,440 --> 00:00:36,960 And only herald to the gaudy spring, 12 @@ -57,16 +57,16 @@ Within thine own bud buriest thy content, 13 -00:00:40,680 --> 00:00:43,600 +00:00:40,680 --> 00:00:43,640 And tender churl mak’st waste in niggarding: 14 -00:00:43,600 --> 00:00:48,080 +00:00:43,640 --> 00:00:48,520 Pity the world, or else this glutton be, 15 -00:00:48,080 --> 00:00:53,240 +00:00:48,520 --> 00:00:53,240 To eat the world’s due, by the grave and thee. diff --git a/aeneas/tests/res/syncmaps/sonnet001_mu.ssv b/aeneas/tests/res/syncmaps/sonnet001_mu.ssv index 6d48b8de..182e0297 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_mu.ssv +++ b/aeneas/tests/res/syncmaps/sonnet001_mu.ssv @@ -1,15 +1,15 @@ -0.000 2.640 f000001 "I" -2.640 5.880 f000002 "From fairest creatures we desire increase," +0.000 2.680 f000001 "I" +2.680 5.880 f000002 "From fairest creatures we desire increase," 5.880 9.240 f000003 "That thereby beauty’s rose might never die," -9.240 11.640 f000004 "But as the riper should by time decease," -11.640 15.240 f000005 "His tender heir might bear his memory:" -15.240 18.560 f000006 "But thou contracted to thine own bright eyes," +9.240 11.920 f000004 "But as the riper should by time decease," +11.920 15.280 f000005 "His tender heir might bear his memory:" +15.280 18.560 f000006 "But thou contracted to thine own bright eyes," 18.560 22.800 f000007 "Feed’st thy light’s flame with self-substantial fuel," -22.800 25.680 f000008 "Making a famine where abundance lies," -25.680 31.240 f000009 "Thy self thy foe, to thy sweet self too cruel:" -31.240 34.280 f000010 "Thou that art now the world’s fresh ornament," -34.280 36.960 f000011 "And only herald to the gaudy spring," +22.800 25.640 f000008 "Making a famine where abundance lies," +25.640 31.240 f000009 "Thy self thy foe, to thy sweet self too cruel:" +31.240 34.440 f000010 "Thou that art now the world’s fresh ornament," +34.440 36.960 f000011 "And only herald to the gaudy spring," 36.960 40.680 f000012 "Within thine own bud buriest thy content," -40.680 43.600 f000013 "And tender churl mak’st waste in niggarding:" -43.600 48.080 f000014 "Pity the world, or else this glutton be," -48.080 53.240 f000015 "To eat the world’s due, by the grave and thee." \ No newline at end of file +40.680 43.640 f000013 "And tender churl mak’st waste in niggarding:" +43.640 48.520 f000014 "Pity the world, or else this glutton be," +48.520 53.240 f000015 "To eat the world’s due, by the grave and thee." \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_mu.ssvh b/aeneas/tests/res/syncmaps/sonnet001_mu.ssvh index d433778d..4d39496c 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_mu.ssvh +++ b/aeneas/tests/res/syncmaps/sonnet001_mu.ssvh @@ -1,15 +1,15 @@ -00:00:00.000 00:00:02.640 f000001 "I" -00:00:02.640 00:00:05.880 f000002 "From fairest creatures we desire increase," +00:00:00.000 00:00:02.680 f000001 "I" +00:00:02.680 00:00:05.880 f000002 "From fairest creatures we desire increase," 00:00:05.880 00:00:09.240 f000003 "That thereby beauty’s rose might never die," -00:00:09.240 00:00:11.640 f000004 "But as the riper should by time decease," -00:00:11.640 00:00:15.240 f000005 "His tender heir might bear his memory:" -00:00:15.240 00:00:18.560 f000006 "But thou contracted to thine own bright eyes," +00:00:09.240 00:00:11.920 f000004 "But as the riper should by time decease," +00:00:11.920 00:00:15.280 f000005 "His tender heir might bear his memory:" +00:00:15.280 00:00:18.560 f000006 "But thou contracted to thine own bright eyes," 00:00:18.560 00:00:22.800 f000007 "Feed’st thy light’s flame with self-substantial fuel," -00:00:22.800 00:00:25.680 f000008 "Making a famine where abundance lies," -00:00:25.680 00:00:31.240 f000009 "Thy self thy foe, to thy sweet self too cruel:" -00:00:31.240 00:00:34.280 f000010 "Thou that art now the world’s fresh ornament," -00:00:34.280 00:00:36.960 f000011 "And only herald to the gaudy spring," +00:00:22.800 00:00:25.640 f000008 "Making a famine where abundance lies," +00:00:25.640 00:00:31.240 f000009 "Thy self thy foe, to thy sweet self too cruel:" +00:00:31.240 00:00:34.440 f000010 "Thou that art now the world’s fresh ornament," +00:00:34.440 00:00:36.960 f000011 "And only herald to the gaudy spring," 00:00:36.960 00:00:40.680 f000012 "Within thine own bud buriest thy content," -00:00:40.680 00:00:43.600 f000013 "And tender churl mak’st waste in niggarding:" -00:00:43.600 00:00:48.080 f000014 "Pity the world, or else this glutton be," -00:00:48.080 00:00:53.240 f000015 "To eat the world’s due, by the grave and thee." \ No newline at end of file +00:00:40.680 00:00:43.640 f000013 "And tender churl mak’st waste in niggarding:" +00:00:43.640 00:00:48.520 f000014 "Pity the world, or else this glutton be," +00:00:48.520 00:00:53.240 f000015 "To eat the world’s due, by the grave and thee." \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_mu.ssvm b/aeneas/tests/res/syncmaps/sonnet001_mu.ssvm index 6d48b8de..182e0297 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_mu.ssvm +++ b/aeneas/tests/res/syncmaps/sonnet001_mu.ssvm @@ -1,15 +1,15 @@ -0.000 2.640 f000001 "I" -2.640 5.880 f000002 "From fairest creatures we desire increase," +0.000 2.680 f000001 "I" +2.680 5.880 f000002 "From fairest creatures we desire increase," 5.880 9.240 f000003 "That thereby beauty’s rose might never die," -9.240 11.640 f000004 "But as the riper should by time decease," -11.640 15.240 f000005 "His tender heir might bear his memory:" -15.240 18.560 f000006 "But thou contracted to thine own bright eyes," +9.240 11.920 f000004 "But as the riper should by time decease," +11.920 15.280 f000005 "His tender heir might bear his memory:" +15.280 18.560 f000006 "But thou contracted to thine own bright eyes," 18.560 22.800 f000007 "Feed’st thy light’s flame with self-substantial fuel," -22.800 25.680 f000008 "Making a famine where abundance lies," -25.680 31.240 f000009 "Thy self thy foe, to thy sweet self too cruel:" -31.240 34.280 f000010 "Thou that art now the world’s fresh ornament," -34.280 36.960 f000011 "And only herald to the gaudy spring," +22.800 25.640 f000008 "Making a famine where abundance lies," +25.640 31.240 f000009 "Thy self thy foe, to thy sweet self too cruel:" +31.240 34.440 f000010 "Thou that art now the world’s fresh ornament," +34.440 36.960 f000011 "And only herald to the gaudy spring," 36.960 40.680 f000012 "Within thine own bud buriest thy content," -40.680 43.600 f000013 "And tender churl mak’st waste in niggarding:" -43.600 48.080 f000014 "Pity the world, or else this glutton be," -48.080 53.240 f000015 "To eat the world’s due, by the grave and thee." \ No newline at end of file +40.680 43.640 f000013 "And tender churl mak’st waste in niggarding:" +43.640 48.520 f000014 "Pity the world, or else this glutton be," +48.520 53.240 f000015 "To eat the world’s due, by the grave and thee." \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_mu.sub b/aeneas/tests/res/syncmaps/sonnet001_mu.sub index 238c6804..d76626f4 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_mu.sub +++ b/aeneas/tests/res/syncmaps/sonnet001_mu.sub @@ -1,47 +1,47 @@ [SUBTITLE] -00:00:00.000,00:00:02.640 +00:00:00.000,00:00:02.680 I -00:00:02.640,00:00:05.880 +00:00:02.680,00:00:05.880 From fairest creatures[br]we desire increase, 00:00:05.880,00:00:09.240 That thereby beauty’s rose[br]might never die, -00:00:09.240,00:00:11.640 +00:00:09.240,00:00:11.920 But as the riper[br]should by time decease, -00:00:11.640,00:00:15.240 +00:00:11.920,00:00:15.280 His tender heir[br]might bear his memory: -00:00:15.240,00:00:18.560 +00:00:15.280,00:00:18.560 But thou contracted[br]to thine own bright eyes, 00:00:18.560,00:00:22.800 Feed’st thy light’s flame[br]with self-substantial fuel, -00:00:22.800,00:00:25.680 +00:00:22.800,00:00:25.640 Making a famine[br]where abundance lies, -00:00:25.680,00:00:31.240 +00:00:25.640,00:00:31.240 Thy self thy foe,[br]to thy sweet self too cruel: -00:00:31.240,00:00:34.280 +00:00:31.240,00:00:34.440 Thou that art now[br]the world’s fresh ornament, -00:00:34.280,00:00:36.960 +00:00:34.440,00:00:36.960 And only herald to the gaudy spring, 00:00:36.960,00:00:40.680 Within thine own bud[br]buriest thy content, -00:00:40.680,00:00:43.600 +00:00:40.680,00:00:43.640 And tender churl mak’st waste in niggarding: -00:00:43.600,00:00:48.080 +00:00:43.640,00:00:48.520 Pity the world,[br]or else this glutton be, -00:00:48.080,00:00:53.240 +00:00:48.520,00:00:53.240 To eat the world’s due,[br]by the grave and thee. [END SUBTITLE] diff --git a/aeneas/tests/res/syncmaps/sonnet001_mu.tab b/aeneas/tests/res/syncmaps/sonnet001_mu.tab index fcd186aa..2c3f0baf 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_mu.tab +++ b/aeneas/tests/res/syncmaps/sonnet001_mu.tab @@ -1,15 +1,15 @@ -0.000 2.640 f000001 -2.640 5.880 f000002 +0.000 2.680 f000001 +2.680 5.880 f000002 5.880 9.240 f000003 -9.240 11.640 f000004 -11.640 15.240 f000005 -15.240 18.560 f000006 +9.240 11.920 f000004 +11.920 15.280 f000005 +15.280 18.560 f000006 18.560 22.800 f000007 -22.800 25.680 f000008 -25.680 31.240 f000009 -31.240 34.280 f000010 -34.280 36.960 f000011 +22.800 25.640 f000008 +25.640 31.240 f000009 +31.240 34.440 f000010 +34.440 36.960 f000011 36.960 40.680 f000012 -40.680 43.600 f000013 -43.600 48.080 f000014 -48.080 53.240 f000015 \ No newline at end of file +40.680 43.640 f000013 +43.640 48.520 f000014 +48.520 53.240 f000015 \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_mu.textgrid b/aeneas/tests/res/syncmaps/sonnet001_mu.textgrid new file mode 100644 index 00000000..1fc9ed68 --- /dev/null +++ b/aeneas/tests/res/syncmaps/sonnet001_mu.textgrid @@ -0,0 +1,74 @@ +File type = "ooTextFile" +Object class = "TextGrid" + +xmin = 0.0 +xmax = 53.24 +tiers? +size = 1 +item []: + item [1]: + class = "IntervalTier" + name = "Token" + xmin = 0.0 + xmax = 53.24 + intervals: size = 15 + intervals [1]: + xmin = 0.0 + xmax = 2.68 + text = "I" + intervals [2]: + xmin = 2.68 + xmax = 5.88 + text = "From fairest creatures we desire increase," + intervals [3]: + xmin = 5.88 + xmax = 9.24 + text = "That thereby beauty’s rose might never die," + intervals [4]: + xmin = 9.24 + xmax = 11.92 + text = "But as the riper should by time decease," + intervals [5]: + xmin = 11.92 + xmax = 15.28 + text = "His tender heir might bear his memory:" + intervals [6]: + xmin = 15.28 + xmax = 18.56 + text = "But thou contracted to thine own bright eyes," + intervals [7]: + xmin = 18.56 + xmax = 22.8 + text = "Feed’st thy light’s flame with self-substantial fuel," + intervals [8]: + xmin = 22.8 + xmax = 25.64 + text = "Making a famine where abundance lies," + intervals [9]: + xmin = 25.64 + xmax = 31.24 + text = "Thy self thy foe, to thy sweet self too cruel:" + intervals [10]: + xmin = 31.24 + xmax = 34.44 + text = "Thou that art now the world’s fresh ornament," + intervals [11]: + xmin = 34.44 + xmax = 36.96 + text = "And only herald to the gaudy spring," + intervals [12]: + xmin = 36.96 + xmax = 40.68 + text = "Within thine own bud buriest thy content," + intervals [13]: + xmin = 40.68 + xmax = 43.64 + text = "And tender churl mak’st waste in niggarding:" + intervals [14]: + xmin = 43.64 + xmax = 48.52 + text = "Pity the world, or else this glutton be," + intervals [15]: + xmin = 48.52 + xmax = 53.24 + text = "To eat the world’s due, by the grave and thee." \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_mu.textgrid_short b/aeneas/tests/res/syncmaps/sonnet001_mu.textgrid_short new file mode 100644 index 00000000..ccf93546 --- /dev/null +++ b/aeneas/tests/res/syncmaps/sonnet001_mu.textgrid_short @@ -0,0 +1,57 @@ +File type = "ooTextFile" +Object class = "TextGrid" + +0.0 +53.24 + +1 +"IntervalTier" +"Token" +0.0 +53.24 +15 +0.0 +2.68 +"I" +2.68 +5.88 +"From fairest creatures we desire increase," +5.88 +9.24 +"That thereby beauty’s rose might never die," +9.24 +11.92 +"But as the riper should by time decease," +11.92 +15.28 +"His tender heir might bear his memory:" +15.28 +18.56 +"But thou contracted to thine own bright eyes," +18.56 +22.8 +"Feed’st thy light’s flame with self-substantial fuel," +22.8 +25.64 +"Making a famine where abundance lies," +25.64 +31.24 +"Thy self thy foe, to thy sweet self too cruel:" +31.24 +34.44 +"Thou that art now the world’s fresh ornament," +34.44 +36.96 +"And only herald to the gaudy spring," +36.96 +40.68 +"Within thine own bud buriest thy content," +40.68 +43.64 +"And tender churl mak’st waste in niggarding:" +43.64 +48.52 +"Pity the world, or else this glutton be," +48.52 +53.24 +"To eat the world’s due, by the grave and thee." \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_mu.tsv b/aeneas/tests/res/syncmaps/sonnet001_mu.tsv index fcd186aa..2c3f0baf 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_mu.tsv +++ b/aeneas/tests/res/syncmaps/sonnet001_mu.tsv @@ -1,15 +1,15 @@ -0.000 2.640 f000001 -2.640 5.880 f000002 +0.000 2.680 f000001 +2.680 5.880 f000002 5.880 9.240 f000003 -9.240 11.640 f000004 -11.640 15.240 f000005 -15.240 18.560 f000006 +9.240 11.920 f000004 +11.920 15.280 f000005 +15.280 18.560 f000006 18.560 22.800 f000007 -22.800 25.680 f000008 -25.680 31.240 f000009 -31.240 34.280 f000010 -34.280 36.960 f000011 +22.800 25.640 f000008 +25.640 31.240 f000009 +31.240 34.440 f000010 +34.440 36.960 f000011 36.960 40.680 f000012 -40.680 43.600 f000013 -43.600 48.080 f000014 -48.080 53.240 f000015 \ No newline at end of file +40.680 43.640 f000013 +43.640 48.520 f000014 +48.520 53.240 f000015 \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_mu.tsvh b/aeneas/tests/res/syncmaps/sonnet001_mu.tsvh index aafa1972..be8ed5e5 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_mu.tsvh +++ b/aeneas/tests/res/syncmaps/sonnet001_mu.tsvh @@ -1,15 +1,15 @@ -00:00:00.000 00:00:02.640 f000001 -00:00:02.640 00:00:05.880 f000002 +00:00:00.000 00:00:02.680 f000001 +00:00:02.680 00:00:05.880 f000002 00:00:05.880 00:00:09.240 f000003 -00:00:09.240 00:00:11.640 f000004 -00:00:11.640 00:00:15.240 f000005 -00:00:15.240 00:00:18.560 f000006 +00:00:09.240 00:00:11.920 f000004 +00:00:11.920 00:00:15.280 f000005 +00:00:15.280 00:00:18.560 f000006 00:00:18.560 00:00:22.800 f000007 -00:00:22.800 00:00:25.680 f000008 -00:00:25.680 00:00:31.240 f000009 -00:00:31.240 00:00:34.280 f000010 -00:00:34.280 00:00:36.960 f000011 +00:00:22.800 00:00:25.640 f000008 +00:00:25.640 00:00:31.240 f000009 +00:00:31.240 00:00:34.440 f000010 +00:00:34.440 00:00:36.960 f000011 00:00:36.960 00:00:40.680 f000012 -00:00:40.680 00:00:43.600 f000013 -00:00:43.600 00:00:48.080 f000014 -00:00:48.080 00:00:53.240 f000015 \ No newline at end of file +00:00:40.680 00:00:43.640 f000013 +00:00:43.640 00:00:48.520 f000014 +00:00:48.520 00:00:53.240 f000015 \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_mu.tsvm b/aeneas/tests/res/syncmaps/sonnet001_mu.tsvm index fcd186aa..2c3f0baf 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_mu.tsvm +++ b/aeneas/tests/res/syncmaps/sonnet001_mu.tsvm @@ -1,15 +1,15 @@ -0.000 2.640 f000001 -2.640 5.880 f000002 +0.000 2.680 f000001 +2.680 5.880 f000002 5.880 9.240 f000003 -9.240 11.640 f000004 -11.640 15.240 f000005 -15.240 18.560 f000006 +9.240 11.920 f000004 +11.920 15.280 f000005 +15.280 18.560 f000006 18.560 22.800 f000007 -22.800 25.680 f000008 -25.680 31.240 f000009 -31.240 34.280 f000010 -34.280 36.960 f000011 +22.800 25.640 f000008 +25.640 31.240 f000009 +31.240 34.440 f000010 +34.440 36.960 f000011 36.960 40.680 f000012 -40.680 43.600 f000013 -43.600 48.080 f000014 -48.080 53.240 f000015 \ No newline at end of file +40.680 43.640 f000013 +43.640 48.520 f000014 +48.520 53.240 f000015 \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_mu.ttml b/aeneas/tests/res/syncmaps/sonnet001_mu.ttml index 34280a1a..0b615e61 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_mu.ttml +++ b/aeneas/tests/res/syncmaps/sonnet001_mu.ttml @@ -2,21 +2,21 @@
-

I

-

From fairest creatures
we desire increase,

+

I

+

From fairest creatures
we desire increase,

That thereby beauty’s rose
might never die,

-

But as the riper
should by time decease,

-

His tender heir
might bear his memory:

-

But thou contracted
to thine own bright eyes,

+

But as the riper
should by time decease,

+

His tender heir
might bear his memory:

+

But thou contracted
to thine own bright eyes,

Feed’st thy light’s flame
with self-substantial fuel,

-

Making a famine
where abundance lies,

-

Thy self thy foe,
to thy sweet self too cruel:

-

Thou that art now
the world’s fresh ornament,

-

And only herald to the gaudy spring,

+

Making a famine
where abundance lies,

+

Thy self thy foe,
to thy sweet self too cruel:

+

Thou that art now
the world’s fresh ornament,

+

And only herald to the gaudy spring,

Within thine own bud
buriest thy content,

-

And tender churl mak’st waste in niggarding:

-

Pity the world,
or else this glutton be,

-

To eat the world’s due,
by the grave and thee.

+

And tender churl mak’st waste in niggarding:

+

Pity the world,
or else this glutton be,

+

To eat the world’s due,
by the grave and thee.

diff --git a/aeneas/tests/res/syncmaps/sonnet001_mu.txt b/aeneas/tests/res/syncmaps/sonnet001_mu.txt index 8cfa9e27..2f319242 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_mu.txt +++ b/aeneas/tests/res/syncmaps/sonnet001_mu.txt @@ -1,15 +1,15 @@ -f000001 0.000 2.640 "I" -f000002 2.640 5.880 "From fairest creatures we desire increase," +f000001 0.000 2.680 "I" +f000002 2.680 5.880 "From fairest creatures we desire increase," f000003 5.880 9.240 "That thereby beauty’s rose might never die," -f000004 9.240 11.640 "But as the riper should by time decease," -f000005 11.640 15.240 "His tender heir might bear his memory:" -f000006 15.240 18.560 "But thou contracted to thine own bright eyes," +f000004 9.240 11.920 "But as the riper should by time decease," +f000005 11.920 15.280 "His tender heir might bear his memory:" +f000006 15.280 18.560 "But thou contracted to thine own bright eyes," f000007 18.560 22.800 "Feed’st thy light’s flame with self-substantial fuel," -f000008 22.800 25.680 "Making a famine where abundance lies," -f000009 25.680 31.240 "Thy self thy foe, to thy sweet self too cruel:" -f000010 31.240 34.280 "Thou that art now the world’s fresh ornament," -f000011 34.280 36.960 "And only herald to the gaudy spring," +f000008 22.800 25.640 "Making a famine where abundance lies," +f000009 25.640 31.240 "Thy self thy foe, to thy sweet self too cruel:" +f000010 31.240 34.440 "Thou that art now the world’s fresh ornament," +f000011 34.440 36.960 "And only herald to the gaudy spring," f000012 36.960 40.680 "Within thine own bud buriest thy content," -f000013 40.680 43.600 "And tender churl mak’st waste in niggarding:" -f000014 43.600 48.080 "Pity the world, or else this glutton be," -f000015 48.080 53.240 "To eat the world’s due, by the grave and thee." \ No newline at end of file +f000013 40.680 43.640 "And tender churl mak’st waste in niggarding:" +f000014 43.640 48.520 "Pity the world, or else this glutton be," +f000015 48.520 53.240 "To eat the world’s due, by the grave and thee." \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_mu.txth b/aeneas/tests/res/syncmaps/sonnet001_mu.txth index 06c1a829..8dabc51d 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_mu.txth +++ b/aeneas/tests/res/syncmaps/sonnet001_mu.txth @@ -1,15 +1,15 @@ -f000001 00:00:00.000 00:00:02.640 "I" -f000002 00:00:02.640 00:00:05.880 "From fairest creatures we desire increase," +f000001 00:00:00.000 00:00:02.680 "I" +f000002 00:00:02.680 00:00:05.880 "From fairest creatures we desire increase," f000003 00:00:05.880 00:00:09.240 "That thereby beauty’s rose might never die," -f000004 00:00:09.240 00:00:11.640 "But as the riper should by time decease," -f000005 00:00:11.640 00:00:15.240 "His tender heir might bear his memory:" -f000006 00:00:15.240 00:00:18.560 "But thou contracted to thine own bright eyes," +f000004 00:00:09.240 00:00:11.920 "But as the riper should by time decease," +f000005 00:00:11.920 00:00:15.280 "His tender heir might bear his memory:" +f000006 00:00:15.280 00:00:18.560 "But thou contracted to thine own bright eyes," f000007 00:00:18.560 00:00:22.800 "Feed’st thy light’s flame with self-substantial fuel," -f000008 00:00:22.800 00:00:25.680 "Making a famine where abundance lies," -f000009 00:00:25.680 00:00:31.240 "Thy self thy foe, to thy sweet self too cruel:" -f000010 00:00:31.240 00:00:34.280 "Thou that art now the world’s fresh ornament," -f000011 00:00:34.280 00:00:36.960 "And only herald to the gaudy spring," +f000008 00:00:22.800 00:00:25.640 "Making a famine where abundance lies," +f000009 00:00:25.640 00:00:31.240 "Thy self thy foe, to thy sweet self too cruel:" +f000010 00:00:31.240 00:00:34.440 "Thou that art now the world’s fresh ornament," +f000011 00:00:34.440 00:00:36.960 "And only herald to the gaudy spring," f000012 00:00:36.960 00:00:40.680 "Within thine own bud buriest thy content," -f000013 00:00:40.680 00:00:43.600 "And tender churl mak’st waste in niggarding:" -f000014 00:00:43.600 00:00:48.080 "Pity the world, or else this glutton be," -f000015 00:00:48.080 00:00:53.240 "To eat the world’s due, by the grave and thee." \ No newline at end of file +f000013 00:00:40.680 00:00:43.640 "And tender churl mak’st waste in niggarding:" +f000014 00:00:43.640 00:00:48.520 "Pity the world, or else this glutton be," +f000015 00:00:48.520 00:00:53.240 "To eat the world’s due, by the grave and thee." \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_mu.txtm b/aeneas/tests/res/syncmaps/sonnet001_mu.txtm index 8cfa9e27..2f319242 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_mu.txtm +++ b/aeneas/tests/res/syncmaps/sonnet001_mu.txtm @@ -1,15 +1,15 @@ -f000001 0.000 2.640 "I" -f000002 2.640 5.880 "From fairest creatures we desire increase," +f000001 0.000 2.680 "I" +f000002 2.680 5.880 "From fairest creatures we desire increase," f000003 5.880 9.240 "That thereby beauty’s rose might never die," -f000004 9.240 11.640 "But as the riper should by time decease," -f000005 11.640 15.240 "His tender heir might bear his memory:" -f000006 15.240 18.560 "But thou contracted to thine own bright eyes," +f000004 9.240 11.920 "But as the riper should by time decease," +f000005 11.920 15.280 "His tender heir might bear his memory:" +f000006 15.280 18.560 "But thou contracted to thine own bright eyes," f000007 18.560 22.800 "Feed’st thy light’s flame with self-substantial fuel," -f000008 22.800 25.680 "Making a famine where abundance lies," -f000009 25.680 31.240 "Thy self thy foe, to thy sweet self too cruel:" -f000010 31.240 34.280 "Thou that art now the world’s fresh ornament," -f000011 34.280 36.960 "And only herald to the gaudy spring," +f000008 22.800 25.640 "Making a famine where abundance lies," +f000009 25.640 31.240 "Thy self thy foe, to thy sweet self too cruel:" +f000010 31.240 34.440 "Thou that art now the world’s fresh ornament," +f000011 34.440 36.960 "And only herald to the gaudy spring," f000012 36.960 40.680 "Within thine own bud buriest thy content," -f000013 40.680 43.600 "And tender churl mak’st waste in niggarding:" -f000014 43.600 48.080 "Pity the world, or else this glutton be," -f000015 48.080 53.240 "To eat the world’s due, by the grave and thee." \ No newline at end of file +f000013 40.680 43.640 "And tender churl mak’st waste in niggarding:" +f000014 43.640 48.520 "Pity the world, or else this glutton be," +f000015 48.520 53.240 "To eat the world’s due, by the grave and thee." \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_mu.vtt b/aeneas/tests/res/syncmaps/sonnet001_mu.vtt index 6108834b..17e0a00a 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_mu.vtt +++ b/aeneas/tests/res/syncmaps/sonnet001_mu.vtt @@ -1,11 +1,11 @@ WEBVTT 1 -00:00:00.000 --> 00:00:02.640 +00:00:00.000 --> 00:00:02.680 I 2 -00:00:02.640 --> 00:00:05.880 +00:00:02.680 --> 00:00:05.880 From fairest creatures we desire increase, @@ -15,17 +15,17 @@ That thereby beauty’s rose might never die, 4 -00:00:09.240 --> 00:00:11.640 +00:00:09.240 --> 00:00:11.920 But as the riper should by time decease, 5 -00:00:11.640 --> 00:00:15.240 +00:00:11.920 --> 00:00:15.280 His tender heir might bear his memory: 6 -00:00:15.240 --> 00:00:18.560 +00:00:15.280 --> 00:00:18.560 But thou contracted to thine own bright eyes, @@ -35,22 +35,22 @@ Feed’st thy light’s flame with self-substantial fuel, 8 -00:00:22.800 --> 00:00:25.680 +00:00:22.800 --> 00:00:25.640 Making a famine where abundance lies, 9 -00:00:25.680 --> 00:00:31.240 +00:00:25.640 --> 00:00:31.240 Thy self thy foe, to thy sweet self too cruel: 10 -00:00:31.240 --> 00:00:34.280 +00:00:31.240 --> 00:00:34.440 Thou that art now the world’s fresh ornament, 11 -00:00:34.280 --> 00:00:36.960 +00:00:34.440 --> 00:00:36.960 And only herald to the gaudy spring, 12 @@ -59,16 +59,16 @@ Within thine own bud buriest thy content, 13 -00:00:40.680 --> 00:00:43.600 +00:00:40.680 --> 00:00:43.640 And tender churl mak’st waste in niggarding: 14 -00:00:43.600 --> 00:00:48.080 +00:00:43.640 --> 00:00:48.520 Pity the world, or else this glutton be, 15 -00:00:48.080 --> 00:00:53.240 +00:00:48.520 --> 00:00:53.240 To eat the world’s due, by the grave and thee. diff --git a/aeneas/tests/res/syncmaps/sonnet001_mu.xml b/aeneas/tests/res/syncmaps/sonnet001_mu.xml index f5463948..9b515d07 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_mu.xml +++ b/aeneas/tests/res/syncmaps/sonnet001_mu.xml @@ -1,10 +1,10 @@ - + I - + From fairest creatures we desire increase, @@ -14,17 +14,17 @@ might never die, - + But as the riper should by time decease, - + His tender heir might bear his memory: - + But thou contracted to thine own bright eyes, @@ -34,22 +34,22 @@ with self-substantial fuel, - + Making a famine where abundance lies, - + Thy self thy foe, to thy sweet self too cruel: - + Thou that art now the world’s fresh ornament, - + And only herald to the gaudy spring, @@ -58,16 +58,16 @@ buriest thy content, - + And tender churl mak’st waste in niggarding: - + Pity the world, or else this glutton be, - + To eat the world’s due, by the grave and thee. diff --git a/aeneas/tests/res/syncmaps/sonnet001_mu.xml_legacy b/aeneas/tests/res/syncmaps/sonnet001_mu.xml_legacy index 63f7b6a9..28fefb9e 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_mu.xml_legacy +++ b/aeneas/tests/res/syncmaps/sonnet001_mu.xml_legacy @@ -3,11 +3,11 @@ f000001 0.000 - 2.640 + 2.680 f000002 - 2.640 + 2.680 5.880 @@ -18,16 +18,16 @@ f000004 9.240 - 11.640 + 11.920 f000005 - 11.640 - 15.240 + 11.920 + 15.280 f000006 - 15.240 + 15.280 18.560 @@ -38,21 +38,21 @@ f000008 22.800 - 25.680 + 25.640 f000009 - 25.680 + 25.640 31.240 f000010 31.240 - 34.280 + 34.440 f000011 - 34.280 + 34.440 36.960 @@ -63,16 +63,16 @@ f000013 40.680 - 43.600 + 43.640 f000014 - 43.600 - 48.080 + 43.640 + 48.520 f000015 - 48.080 + 48.520 53.240 \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_u.aud b/aeneas/tests/res/syncmaps/sonnet001_u.aud index 6c63f16c..a703532d 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_u.aud +++ b/aeneas/tests/res/syncmaps/sonnet001_u.aud @@ -1,15 +1,15 @@ -0.000 2.640 I -2.640 5.880 From fairest creatures we desire increase, +0.000 2.680 I +2.680 5.880 From fairest creatures we desire increase, 5.880 9.240 That thereby beauty’s rose might never die, -9.240 11.640 But as the riper should by time decease, -11.640 15.240 His tender heir might bear his memory: -15.240 18.560 But thou contracted to thine own bright eyes, +9.240 11.920 But as the riper should by time decease, +11.920 15.280 His tender heir might bear his memory: +15.280 18.560 But thou contracted to thine own bright eyes, 18.560 22.800 Feed’st thy light’s flame with self-substantial fuel, -22.800 25.680 Making a famine where abundance lies, -25.680 31.240 Thy self thy foe, to thy sweet self too cruel: -31.240 34.280 Thou that art now the world’s fresh ornament, -34.280 36.960 And only herald to the gaudy spring, +22.800 25.640 Making a famine where abundance lies, +25.640 31.240 Thy self thy foe, to thy sweet self too cruel: +31.240 34.440 Thou that art now the world’s fresh ornament, +34.440 36.960 And only herald to the gaudy spring, 36.960 40.680 Within thine own bud buriest thy content, -40.680 43.600 And tender churl mak’st waste in niggarding: -43.600 48.080 Pity the world, or else this glutton be, -48.080 53.240 To eat the world’s due, by the grave and thee. \ No newline at end of file +40.680 43.640 And tender churl mak’st waste in niggarding: +43.640 48.520 Pity the world, or else this glutton be, +48.520 53.240 To eat the world’s due, by the grave and thee. \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_u.audh b/aeneas/tests/res/syncmaps/sonnet001_u.audh index 43cf9390..fd39b295 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_u.audh +++ b/aeneas/tests/res/syncmaps/sonnet001_u.audh @@ -1,15 +1,15 @@ -00:00:00.000 00:00:02.640 I -00:00:02.640 00:00:05.880 From fairest creatures we desire increase, +00:00:00.000 00:00:02.680 I +00:00:02.680 00:00:05.880 From fairest creatures we desire increase, 00:00:05.880 00:00:09.240 That thereby beauty’s rose might never die, -00:00:09.240 00:00:11.640 But as the riper should by time decease, -00:00:11.640 00:00:15.240 His tender heir might bear his memory: -00:00:15.240 00:00:18.560 But thou contracted to thine own bright eyes, +00:00:09.240 00:00:11.920 But as the riper should by time decease, +00:00:11.920 00:00:15.280 His tender heir might bear his memory: +00:00:15.280 00:00:18.560 But thou contracted to thine own bright eyes, 00:00:18.560 00:00:22.800 Feed’st thy light’s flame with self-substantial fuel, -00:00:22.800 00:00:25.680 Making a famine where abundance lies, -00:00:25.680 00:00:31.240 Thy self thy foe, to thy sweet self too cruel: -00:00:31.240 00:00:34.280 Thou that art now the world’s fresh ornament, -00:00:34.280 00:00:36.960 And only herald to the gaudy spring, +00:00:22.800 00:00:25.640 Making a famine where abundance lies, +00:00:25.640 00:00:31.240 Thy self thy foe, to thy sweet self too cruel: +00:00:31.240 00:00:34.440 Thou that art now the world’s fresh ornament, +00:00:34.440 00:00:36.960 And only herald to the gaudy spring, 00:00:36.960 00:00:40.680 Within thine own bud buriest thy content, -00:00:40.680 00:00:43.600 And tender churl mak’st waste in niggarding: -00:00:43.600 00:00:48.080 Pity the world, or else this glutton be, -00:00:48.080 00:00:53.240 To eat the world’s due, by the grave and thee. \ No newline at end of file +00:00:40.680 00:00:43.640 And tender churl mak’st waste in niggarding: +00:00:43.640 00:00:48.520 Pity the world, or else this glutton be, +00:00:48.520 00:00:53.240 To eat the world’s due, by the grave and thee. \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_u.audm b/aeneas/tests/res/syncmaps/sonnet001_u.audm index 6c63f16c..a703532d 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_u.audm +++ b/aeneas/tests/res/syncmaps/sonnet001_u.audm @@ -1,15 +1,15 @@ -0.000 2.640 I -2.640 5.880 From fairest creatures we desire increase, +0.000 2.680 I +2.680 5.880 From fairest creatures we desire increase, 5.880 9.240 That thereby beauty’s rose might never die, -9.240 11.640 But as the riper should by time decease, -11.640 15.240 His tender heir might bear his memory: -15.240 18.560 But thou contracted to thine own bright eyes, +9.240 11.920 But as the riper should by time decease, +11.920 15.280 His tender heir might bear his memory: +15.280 18.560 But thou contracted to thine own bright eyes, 18.560 22.800 Feed’st thy light’s flame with self-substantial fuel, -22.800 25.680 Making a famine where abundance lies, -25.680 31.240 Thy self thy foe, to thy sweet self too cruel: -31.240 34.280 Thou that art now the world’s fresh ornament, -34.280 36.960 And only herald to the gaudy spring, +22.800 25.640 Making a famine where abundance lies, +25.640 31.240 Thy self thy foe, to thy sweet self too cruel: +31.240 34.440 Thou that art now the world’s fresh ornament, +34.440 36.960 And only herald to the gaudy spring, 36.960 40.680 Within thine own bud buriest thy content, -40.680 43.600 And tender churl mak’st waste in niggarding: -43.600 48.080 Pity the world, or else this glutton be, -48.080 53.240 To eat the world’s due, by the grave and thee. \ No newline at end of file +40.680 43.640 And tender churl mak’st waste in niggarding: +43.640 48.520 Pity the world, or else this glutton be, +48.520 53.240 To eat the world’s due, by the grave and thee. \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_u.csv b/aeneas/tests/res/syncmaps/sonnet001_u.csv index 7855f238..58279b34 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_u.csv +++ b/aeneas/tests/res/syncmaps/sonnet001_u.csv @@ -1,15 +1,15 @@ -f000001,0.000,2.640,"I" -f000002,2.640,5.880,"From fairest creatures we desire increase," +f000001,0.000,2.680,"I" +f000002,2.680,5.880,"From fairest creatures we desire increase," f000003,5.880,9.240,"That thereby beauty’s rose might never die," -f000004,9.240,11.640,"But as the riper should by time decease," -f000005,11.640,15.240,"His tender heir might bear his memory:" -f000006,15.240,18.560,"But thou contracted to thine own bright eyes," +f000004,9.240,11.920,"But as the riper should by time decease," +f000005,11.920,15.280,"His tender heir might bear his memory:" +f000006,15.280,18.560,"But thou contracted to thine own bright eyes," f000007,18.560,22.800,"Feed’st thy light’s flame with self-substantial fuel," -f000008,22.800,25.680,"Making a famine where abundance lies," -f000009,25.680,31.240,"Thy self thy foe, to thy sweet self too cruel:" -f000010,31.240,34.280,"Thou that art now the world’s fresh ornament," -f000011,34.280,36.960,"And only herald to the gaudy spring," +f000008,22.800,25.640,"Making a famine where abundance lies," +f000009,25.640,31.240,"Thy self thy foe, to thy sweet self too cruel:" +f000010,31.240,34.440,"Thou that art now the world’s fresh ornament," +f000011,34.440,36.960,"And only herald to the gaudy spring," f000012,36.960,40.680,"Within thine own bud buriest thy content," -f000013,40.680,43.600,"And tender churl mak’st waste in niggarding:" -f000014,43.600,48.080,"Pity the world, or else this glutton be," -f000015,48.080,53.240,"To eat the world’s due, by the grave and thee." \ No newline at end of file +f000013,40.680,43.640,"And tender churl mak’st waste in niggarding:" +f000014,43.640,48.520,"Pity the world, or else this glutton be," +f000015,48.520,53.240,"To eat the world’s due, by the grave and thee." \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_u.csvh b/aeneas/tests/res/syncmaps/sonnet001_u.csvh index 66421492..547a8580 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_u.csvh +++ b/aeneas/tests/res/syncmaps/sonnet001_u.csvh @@ -1,15 +1,15 @@ -f000001,00:00:00.000,00:00:02.640,"I" -f000002,00:00:02.640,00:00:05.880,"From fairest creatures we desire increase," +f000001,00:00:00.000,00:00:02.680,"I" +f000002,00:00:02.680,00:00:05.880,"From fairest creatures we desire increase," f000003,00:00:05.880,00:00:09.240,"That thereby beauty’s rose might never die," -f000004,00:00:09.240,00:00:11.640,"But as the riper should by time decease," -f000005,00:00:11.640,00:00:15.240,"His tender heir might bear his memory:" -f000006,00:00:15.240,00:00:18.560,"But thou contracted to thine own bright eyes," +f000004,00:00:09.240,00:00:11.920,"But as the riper should by time decease," +f000005,00:00:11.920,00:00:15.280,"His tender heir might bear his memory:" +f000006,00:00:15.280,00:00:18.560,"But thou contracted to thine own bright eyes," f000007,00:00:18.560,00:00:22.800,"Feed’st thy light’s flame with self-substantial fuel," -f000008,00:00:22.800,00:00:25.680,"Making a famine where abundance lies," -f000009,00:00:25.680,00:00:31.240,"Thy self thy foe, to thy sweet self too cruel:" -f000010,00:00:31.240,00:00:34.280,"Thou that art now the world’s fresh ornament," -f000011,00:00:34.280,00:00:36.960,"And only herald to the gaudy spring," +f000008,00:00:22.800,00:00:25.640,"Making a famine where abundance lies," +f000009,00:00:25.640,00:00:31.240,"Thy self thy foe, to thy sweet self too cruel:" +f000010,00:00:31.240,00:00:34.440,"Thou that art now the world’s fresh ornament," +f000011,00:00:34.440,00:00:36.960,"And only herald to the gaudy spring," f000012,00:00:36.960,00:00:40.680,"Within thine own bud buriest thy content," -f000013,00:00:40.680,00:00:43.600,"And tender churl mak’st waste in niggarding:" -f000014,00:00:43.600,00:00:48.080,"Pity the world, or else this glutton be," -f000015,00:00:48.080,00:00:53.240,"To eat the world’s due, by the grave and thee." \ No newline at end of file +f000013,00:00:40.680,00:00:43.640,"And tender churl mak’st waste in niggarding:" +f000014,00:00:43.640,00:00:48.520,"Pity the world, or else this glutton be," +f000015,00:00:48.520,00:00:53.240,"To eat the world’s due, by the grave and thee." \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_u.csvm b/aeneas/tests/res/syncmaps/sonnet001_u.csvm index 7855f238..58279b34 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_u.csvm +++ b/aeneas/tests/res/syncmaps/sonnet001_u.csvm @@ -1,15 +1,15 @@ -f000001,0.000,2.640,"I" -f000002,2.640,5.880,"From fairest creatures we desire increase," +f000001,0.000,2.680,"I" +f000002,2.680,5.880,"From fairest creatures we desire increase," f000003,5.880,9.240,"That thereby beauty’s rose might never die," -f000004,9.240,11.640,"But as the riper should by time decease," -f000005,11.640,15.240,"His tender heir might bear his memory:" -f000006,15.240,18.560,"But thou contracted to thine own bright eyes," +f000004,9.240,11.920,"But as the riper should by time decease," +f000005,11.920,15.280,"His tender heir might bear his memory:" +f000006,15.280,18.560,"But thou contracted to thine own bright eyes," f000007,18.560,22.800,"Feed’st thy light’s flame with self-substantial fuel," -f000008,22.800,25.680,"Making a famine where abundance lies," -f000009,25.680,31.240,"Thy self thy foe, to thy sweet self too cruel:" -f000010,31.240,34.280,"Thou that art now the world’s fresh ornament," -f000011,34.280,36.960,"And only herald to the gaudy spring," +f000008,22.800,25.640,"Making a famine where abundance lies," +f000009,25.640,31.240,"Thy self thy foe, to thy sweet self too cruel:" +f000010,31.240,34.440,"Thou that art now the world’s fresh ornament," +f000011,34.440,36.960,"And only herald to the gaudy spring," f000012,36.960,40.680,"Within thine own bud buriest thy content," -f000013,40.680,43.600,"And tender churl mak’st waste in niggarding:" -f000014,43.600,48.080,"Pity the world, or else this glutton be," -f000015,48.080,53.240,"To eat the world’s due, by the grave and thee." \ No newline at end of file +f000013,40.680,43.640,"And tender churl mak’st waste in niggarding:" +f000014,43.640,48.520,"Pity the world, or else this glutton be," +f000015,48.520,53.240,"To eat the world’s due, by the grave and thee." \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_u.dfxp b/aeneas/tests/res/syncmaps/sonnet001_u.dfxp index 686dc105..178da1c5 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_u.dfxp +++ b/aeneas/tests/res/syncmaps/sonnet001_u.dfxp @@ -2,21 +2,21 @@
-

I

-

From fairest creatures we desire increase,

+

I

+

From fairest creatures we desire increase,

That thereby beauty’s rose might never die,

-

But as the riper should by time decease,

-

His tender heir might bear his memory:

-

But thou contracted to thine own bright eyes,

+

But as the riper should by time decease,

+

His tender heir might bear his memory:

+

But thou contracted to thine own bright eyes,

Feed’st thy light’s flame with self-substantial fuel,

-

Making a famine where abundance lies,

-

Thy self thy foe, to thy sweet self too cruel:

-

Thou that art now the world’s fresh ornament,

-

And only herald to the gaudy spring,

+

Making a famine where abundance lies,

+

Thy self thy foe, to thy sweet self too cruel:

+

Thou that art now the world’s fresh ornament,

+

And only herald to the gaudy spring,

Within thine own bud buriest thy content,

-

And tender churl mak’st waste in niggarding:

-

Pity the world, or else this glutton be,

-

To eat the world’s due, by the grave and thee.

+

And tender churl mak’st waste in niggarding:

+

Pity the world, or else this glutton be,

+

To eat the world’s due, by the grave and thee.

diff --git a/aeneas/tests/res/syncmaps/sonnet001_u.eaf b/aeneas/tests/res/syncmaps/sonnet001_u.eaf index 4c108546..0f5badce 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_u.eaf +++ b/aeneas/tests/res/syncmaps/sonnet001_u.eaf @@ -1,37 +1,36 @@ - -
-
+ +
- - + + - - - - + + + + - - + + - - + + - - - - + + + + diff --git a/aeneas/tests/res/syncmaps/sonnet001_u.json b/aeneas/tests/res/syncmaps/sonnet001_u.json index e6af87c9..b164a92a 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_u.json +++ b/aeneas/tests/res/syncmaps/sonnet001_u.json @@ -3,7 +3,7 @@ { "begin": "0.000", "children": [], - "end": "2.640", + "end": "2.680", "id": "f000001", "language": "en", "lines": [ @@ -11,7 +11,7 @@ ] }, { - "begin": "2.640", + "begin": "2.680", "children": [], "end": "5.880", "id": "f000002", @@ -33,7 +33,7 @@ { "begin": "9.240", "children": [], - "end": "11.640", + "end": "11.920", "id": "f000004", "language": "en", "lines": [ @@ -41,9 +41,9 @@ ] }, { - "begin": "11.640", + "begin": "11.920", "children": [], - "end": "15.240", + "end": "15.280", "id": "f000005", "language": "en", "lines": [ @@ -51,7 +51,7 @@ ] }, { - "begin": "15.240", + "begin": "15.280", "children": [], "end": "18.560", "id": "f000006", @@ -73,7 +73,7 @@ { "begin": "22.800", "children": [], - "end": "25.680", + "end": "25.640", "id": "f000008", "language": "en", "lines": [ @@ -81,7 +81,7 @@ ] }, { - "begin": "25.680", + "begin": "25.640", "children": [], "end": "31.240", "id": "f000009", @@ -93,7 +93,7 @@ { "begin": "31.240", "children": [], - "end": "34.280", + "end": "34.440", "id": "f000010", "language": "en", "lines": [ @@ -101,7 +101,7 @@ ] }, { - "begin": "34.280", + "begin": "34.440", "children": [], "end": "36.960", "id": "f000011", @@ -123,7 +123,7 @@ { "begin": "40.680", "children": [], - "end": "43.600", + "end": "43.640", "id": "f000013", "language": "en", "lines": [ @@ -131,9 +131,9 @@ ] }, { - "begin": "43.600", + "begin": "43.640", "children": [], - "end": "48.080", + "end": "48.520", "id": "f000014", "language": "en", "lines": [ @@ -141,7 +141,7 @@ ] }, { - "begin": "48.080", + "begin": "48.520", "children": [], "end": "53.240", "id": "f000015", diff --git a/aeneas/tests/res/syncmaps/sonnet001_u.rbse b/aeneas/tests/res/syncmaps/sonnet001_u.rbse index 68ec9ebd..6598895f 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_u.rbse +++ b/aeneas/tests/res/syncmaps/sonnet001_u.rbse @@ -2,11 +2,11 @@ "smil_data": [ { "begin": "0.000", - "end": "2.640", + "end": "2.680", "id": "f000001" }, { - "begin": "2.640", + "begin": "2.680", "end": "5.880", "id": "f000002" }, @@ -17,16 +17,16 @@ }, { "begin": "9.240", - "end": "11.640", + "end": "11.920", "id": "f000004" }, { - "begin": "11.640", - "end": "15.240", + "begin": "11.920", + "end": "15.280", "id": "f000005" }, { - "begin": "15.240", + "begin": "15.280", "end": "18.560", "id": "f000006" }, @@ -37,21 +37,21 @@ }, { "begin": "22.800", - "end": "25.680", + "end": "25.640", "id": "f000008" }, { - "begin": "25.680", + "begin": "25.640", "end": "31.240", "id": "f000009" }, { "begin": "31.240", - "end": "34.280", + "end": "34.440", "id": "f000010" }, { - "begin": "34.280", + "begin": "34.440", "end": "36.960", "id": "f000011" }, @@ -62,16 +62,16 @@ }, { "begin": "40.680", - "end": "43.600", + "end": "43.640", "id": "f000013" }, { - "begin": "43.600", - "end": "48.080", + "begin": "43.640", + "end": "48.520", "id": "f000014" }, { - "begin": "48.080", + "begin": "48.520", "end": "53.240", "id": "f000015" } diff --git a/aeneas/tests/res/syncmaps/sonnet001_u.sbv b/aeneas/tests/res/syncmaps/sonnet001_u.sbv index e1872ad8..b31c6bf3 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_u.sbv +++ b/aeneas/tests/res/syncmaps/sonnet001_u.sbv @@ -1,47 +1,47 @@ [SUBTITLE] -00:00:00.000,00:00:02.640 +00:00:00.000,00:00:02.680 I -00:00:02.640,00:00:05.880 +00:00:02.680,00:00:05.880 From fairest creatures we desire increase, 00:00:05.880,00:00:09.240 That thereby beauty’s rose might never die, -00:00:09.240,00:00:11.640 +00:00:09.240,00:00:11.920 But as the riper should by time decease, -00:00:11.640,00:00:15.240 +00:00:11.920,00:00:15.280 His tender heir might bear his memory: -00:00:15.240,00:00:18.560 +00:00:15.280,00:00:18.560 But thou contracted to thine own bright eyes, 00:00:18.560,00:00:22.800 Feed’st thy light’s flame with self-substantial fuel, -00:00:22.800,00:00:25.680 +00:00:22.800,00:00:25.640 Making a famine where abundance lies, -00:00:25.680,00:00:31.240 +00:00:25.640,00:00:31.240 Thy self thy foe, to thy sweet self too cruel: -00:00:31.240,00:00:34.280 +00:00:31.240,00:00:34.440 Thou that art now the world’s fresh ornament, -00:00:34.280,00:00:36.960 +00:00:34.440,00:00:36.960 And only herald to the gaudy spring, 00:00:36.960,00:00:40.680 Within thine own bud buriest thy content, -00:00:40.680,00:00:43.600 +00:00:40.680,00:00:43.640 And tender churl mak’st waste in niggarding: -00:00:43.600,00:00:48.080 +00:00:43.640,00:00:48.520 Pity the world, or else this glutton be, -00:00:48.080,00:00:53.240 +00:00:48.520,00:00:53.240 To eat the world’s due, by the grave and thee. [END SUBTITLE] diff --git a/aeneas/tests/res/syncmaps/sonnet001_u.smil b/aeneas/tests/res/syncmaps/sonnet001_u.smil index 3cdd0ea0..95b5c57b 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_u.smil +++ b/aeneas/tests/res/syncmaps/sonnet001_u.smil @@ -3,11 +3,11 @@ - - @@ -15,15 +15,15 @@ - - - @@ -31,19 +31,19 @@ - - - - @@ -51,15 +51,15 @@ - - - diff --git a/aeneas/tests/res/syncmaps/sonnet001_u.smilh b/aeneas/tests/res/syncmaps/sonnet001_u.smilh index 3cdd0ea0..95b5c57b 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_u.smilh +++ b/aeneas/tests/res/syncmaps/sonnet001_u.smilh @@ -3,11 +3,11 @@ - - @@ -15,15 +15,15 @@ - - - @@ -31,19 +31,19 @@ - - - - @@ -51,15 +51,15 @@ - - - diff --git a/aeneas/tests/res/syncmaps/sonnet001_u.smilm b/aeneas/tests/res/syncmaps/sonnet001_u.smilm index 3ec95df1..8c9242a7 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_u.smilm +++ b/aeneas/tests/res/syncmaps/sonnet001_u.smilm @@ -3,11 +3,11 @@ - - @@ -15,15 +15,15 @@ - - - @@ -31,19 +31,19 @@ - - - - @@ -51,15 +51,15 @@ - - - diff --git a/aeneas/tests/res/syncmaps/sonnet001_u.srt b/aeneas/tests/res/syncmaps/sonnet001_u.srt index de53ca01..a2dc9041 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_u.srt +++ b/aeneas/tests/res/syncmaps/sonnet001_u.srt @@ -1,9 +1,9 @@ 1 -00:00:00,000 --> 00:00:02,640 +00:00:00,000 --> 00:00:02,680 I 2 -00:00:02,640 --> 00:00:05,880 +00:00:02,680 --> 00:00:05,880 From fairest creatures we desire increase, 3 @@ -11,15 +11,15 @@ From fairest creatures we desire increase, That thereby beauty’s rose might never die, 4 -00:00:09,240 --> 00:00:11,640 +00:00:09,240 --> 00:00:11,920 But as the riper should by time decease, 5 -00:00:11,640 --> 00:00:15,240 +00:00:11,920 --> 00:00:15,280 His tender heir might bear his memory: 6 -00:00:15,240 --> 00:00:18,560 +00:00:15,280 --> 00:00:18,560 But thou contracted to thine own bright eyes, 7 @@ -27,19 +27,19 @@ But thou contracted to thine own bright eyes, Feed’st thy light’s flame with self-substantial fuel, 8 -00:00:22,800 --> 00:00:25,680 +00:00:22,800 --> 00:00:25,640 Making a famine where abundance lies, 9 -00:00:25,680 --> 00:00:31,240 +00:00:25,640 --> 00:00:31,240 Thy self thy foe, to thy sweet self too cruel: 10 -00:00:31,240 --> 00:00:34,280 +00:00:31,240 --> 00:00:34,440 Thou that art now the world’s fresh ornament, 11 -00:00:34,280 --> 00:00:36,960 +00:00:34,440 --> 00:00:36,960 And only herald to the gaudy spring, 12 @@ -47,14 +47,14 @@ And only herald to the gaudy spring, Within thine own bud buriest thy content, 13 -00:00:40,680 --> 00:00:43,600 +00:00:40,680 --> 00:00:43,640 And tender churl mak’st waste in niggarding: 14 -00:00:43,600 --> 00:00:48,080 +00:00:43,640 --> 00:00:48,520 Pity the world, or else this glutton be, 15 -00:00:48,080 --> 00:00:53,240 +00:00:48,520 --> 00:00:53,240 To eat the world’s due, by the grave and thee. diff --git a/aeneas/tests/res/syncmaps/sonnet001_u.ssv b/aeneas/tests/res/syncmaps/sonnet001_u.ssv index 6d48b8de..182e0297 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_u.ssv +++ b/aeneas/tests/res/syncmaps/sonnet001_u.ssv @@ -1,15 +1,15 @@ -0.000 2.640 f000001 "I" -2.640 5.880 f000002 "From fairest creatures we desire increase," +0.000 2.680 f000001 "I" +2.680 5.880 f000002 "From fairest creatures we desire increase," 5.880 9.240 f000003 "That thereby beauty’s rose might never die," -9.240 11.640 f000004 "But as the riper should by time decease," -11.640 15.240 f000005 "His tender heir might bear his memory:" -15.240 18.560 f000006 "But thou contracted to thine own bright eyes," +9.240 11.920 f000004 "But as the riper should by time decease," +11.920 15.280 f000005 "His tender heir might bear his memory:" +15.280 18.560 f000006 "But thou contracted to thine own bright eyes," 18.560 22.800 f000007 "Feed’st thy light’s flame with self-substantial fuel," -22.800 25.680 f000008 "Making a famine where abundance lies," -25.680 31.240 f000009 "Thy self thy foe, to thy sweet self too cruel:" -31.240 34.280 f000010 "Thou that art now the world’s fresh ornament," -34.280 36.960 f000011 "And only herald to the gaudy spring," +22.800 25.640 f000008 "Making a famine where abundance lies," +25.640 31.240 f000009 "Thy self thy foe, to thy sweet self too cruel:" +31.240 34.440 f000010 "Thou that art now the world’s fresh ornament," +34.440 36.960 f000011 "And only herald to the gaudy spring," 36.960 40.680 f000012 "Within thine own bud buriest thy content," -40.680 43.600 f000013 "And tender churl mak’st waste in niggarding:" -43.600 48.080 f000014 "Pity the world, or else this glutton be," -48.080 53.240 f000015 "To eat the world’s due, by the grave and thee." \ No newline at end of file +40.680 43.640 f000013 "And tender churl mak’st waste in niggarding:" +43.640 48.520 f000014 "Pity the world, or else this glutton be," +48.520 53.240 f000015 "To eat the world’s due, by the grave and thee." \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_u.ssvh b/aeneas/tests/res/syncmaps/sonnet001_u.ssvh index d433778d..4d39496c 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_u.ssvh +++ b/aeneas/tests/res/syncmaps/sonnet001_u.ssvh @@ -1,15 +1,15 @@ -00:00:00.000 00:00:02.640 f000001 "I" -00:00:02.640 00:00:05.880 f000002 "From fairest creatures we desire increase," +00:00:00.000 00:00:02.680 f000001 "I" +00:00:02.680 00:00:05.880 f000002 "From fairest creatures we desire increase," 00:00:05.880 00:00:09.240 f000003 "That thereby beauty’s rose might never die," -00:00:09.240 00:00:11.640 f000004 "But as the riper should by time decease," -00:00:11.640 00:00:15.240 f000005 "His tender heir might bear his memory:" -00:00:15.240 00:00:18.560 f000006 "But thou contracted to thine own bright eyes," +00:00:09.240 00:00:11.920 f000004 "But as the riper should by time decease," +00:00:11.920 00:00:15.280 f000005 "His tender heir might bear his memory:" +00:00:15.280 00:00:18.560 f000006 "But thou contracted to thine own bright eyes," 00:00:18.560 00:00:22.800 f000007 "Feed’st thy light’s flame with self-substantial fuel," -00:00:22.800 00:00:25.680 f000008 "Making a famine where abundance lies," -00:00:25.680 00:00:31.240 f000009 "Thy self thy foe, to thy sweet self too cruel:" -00:00:31.240 00:00:34.280 f000010 "Thou that art now the world’s fresh ornament," -00:00:34.280 00:00:36.960 f000011 "And only herald to the gaudy spring," +00:00:22.800 00:00:25.640 f000008 "Making a famine where abundance lies," +00:00:25.640 00:00:31.240 f000009 "Thy self thy foe, to thy sweet self too cruel:" +00:00:31.240 00:00:34.440 f000010 "Thou that art now the world’s fresh ornament," +00:00:34.440 00:00:36.960 f000011 "And only herald to the gaudy spring," 00:00:36.960 00:00:40.680 f000012 "Within thine own bud buriest thy content," -00:00:40.680 00:00:43.600 f000013 "And tender churl mak’st waste in niggarding:" -00:00:43.600 00:00:48.080 f000014 "Pity the world, or else this glutton be," -00:00:48.080 00:00:53.240 f000015 "To eat the world’s due, by the grave and thee." \ No newline at end of file +00:00:40.680 00:00:43.640 f000013 "And tender churl mak’st waste in niggarding:" +00:00:43.640 00:00:48.520 f000014 "Pity the world, or else this glutton be," +00:00:48.520 00:00:53.240 f000015 "To eat the world’s due, by the grave and thee." \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_u.ssvm b/aeneas/tests/res/syncmaps/sonnet001_u.ssvm index 6d48b8de..182e0297 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_u.ssvm +++ b/aeneas/tests/res/syncmaps/sonnet001_u.ssvm @@ -1,15 +1,15 @@ -0.000 2.640 f000001 "I" -2.640 5.880 f000002 "From fairest creatures we desire increase," +0.000 2.680 f000001 "I" +2.680 5.880 f000002 "From fairest creatures we desire increase," 5.880 9.240 f000003 "That thereby beauty’s rose might never die," -9.240 11.640 f000004 "But as the riper should by time decease," -11.640 15.240 f000005 "His tender heir might bear his memory:" -15.240 18.560 f000006 "But thou contracted to thine own bright eyes," +9.240 11.920 f000004 "But as the riper should by time decease," +11.920 15.280 f000005 "His tender heir might bear his memory:" +15.280 18.560 f000006 "But thou contracted to thine own bright eyes," 18.560 22.800 f000007 "Feed’st thy light’s flame with self-substantial fuel," -22.800 25.680 f000008 "Making a famine where abundance lies," -25.680 31.240 f000009 "Thy self thy foe, to thy sweet self too cruel:" -31.240 34.280 f000010 "Thou that art now the world’s fresh ornament," -34.280 36.960 f000011 "And only herald to the gaudy spring," +22.800 25.640 f000008 "Making a famine where abundance lies," +25.640 31.240 f000009 "Thy self thy foe, to thy sweet self too cruel:" +31.240 34.440 f000010 "Thou that art now the world’s fresh ornament," +34.440 36.960 f000011 "And only herald to the gaudy spring," 36.960 40.680 f000012 "Within thine own bud buriest thy content," -40.680 43.600 f000013 "And tender churl mak’st waste in niggarding:" -43.600 48.080 f000014 "Pity the world, or else this glutton be," -48.080 53.240 f000015 "To eat the world’s due, by the grave and thee." \ No newline at end of file +40.680 43.640 f000013 "And tender churl mak’st waste in niggarding:" +43.640 48.520 f000014 "Pity the world, or else this glutton be," +48.520 53.240 f000015 "To eat the world’s due, by the grave and thee." \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_u.sub b/aeneas/tests/res/syncmaps/sonnet001_u.sub index e1872ad8..b31c6bf3 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_u.sub +++ b/aeneas/tests/res/syncmaps/sonnet001_u.sub @@ -1,47 +1,47 @@ [SUBTITLE] -00:00:00.000,00:00:02.640 +00:00:00.000,00:00:02.680 I -00:00:02.640,00:00:05.880 +00:00:02.680,00:00:05.880 From fairest creatures we desire increase, 00:00:05.880,00:00:09.240 That thereby beauty’s rose might never die, -00:00:09.240,00:00:11.640 +00:00:09.240,00:00:11.920 But as the riper should by time decease, -00:00:11.640,00:00:15.240 +00:00:11.920,00:00:15.280 His tender heir might bear his memory: -00:00:15.240,00:00:18.560 +00:00:15.280,00:00:18.560 But thou contracted to thine own bright eyes, 00:00:18.560,00:00:22.800 Feed’st thy light’s flame with self-substantial fuel, -00:00:22.800,00:00:25.680 +00:00:22.800,00:00:25.640 Making a famine where abundance lies, -00:00:25.680,00:00:31.240 +00:00:25.640,00:00:31.240 Thy self thy foe, to thy sweet self too cruel: -00:00:31.240,00:00:34.280 +00:00:31.240,00:00:34.440 Thou that art now the world’s fresh ornament, -00:00:34.280,00:00:36.960 +00:00:34.440,00:00:36.960 And only herald to the gaudy spring, 00:00:36.960,00:00:40.680 Within thine own bud buriest thy content, -00:00:40.680,00:00:43.600 +00:00:40.680,00:00:43.640 And tender churl mak’st waste in niggarding: -00:00:43.600,00:00:48.080 +00:00:43.640,00:00:48.520 Pity the world, or else this glutton be, -00:00:48.080,00:00:53.240 +00:00:48.520,00:00:53.240 To eat the world’s due, by the grave and thee. [END SUBTITLE] diff --git a/aeneas/tests/res/syncmaps/sonnet001_u.tab b/aeneas/tests/res/syncmaps/sonnet001_u.tab index fcd186aa..2c3f0baf 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_u.tab +++ b/aeneas/tests/res/syncmaps/sonnet001_u.tab @@ -1,15 +1,15 @@ -0.000 2.640 f000001 -2.640 5.880 f000002 +0.000 2.680 f000001 +2.680 5.880 f000002 5.880 9.240 f000003 -9.240 11.640 f000004 -11.640 15.240 f000005 -15.240 18.560 f000006 +9.240 11.920 f000004 +11.920 15.280 f000005 +15.280 18.560 f000006 18.560 22.800 f000007 -22.800 25.680 f000008 -25.680 31.240 f000009 -31.240 34.280 f000010 -34.280 36.960 f000011 +22.800 25.640 f000008 +25.640 31.240 f000009 +31.240 34.440 f000010 +34.440 36.960 f000011 36.960 40.680 f000012 -40.680 43.600 f000013 -43.600 48.080 f000014 -48.080 53.240 f000015 \ No newline at end of file +40.680 43.640 f000013 +43.640 48.520 f000014 +48.520 53.240 f000015 \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_u.textgrid b/aeneas/tests/res/syncmaps/sonnet001_u.textgrid new file mode 100644 index 00000000..1fc9ed68 --- /dev/null +++ b/aeneas/tests/res/syncmaps/sonnet001_u.textgrid @@ -0,0 +1,74 @@ +File type = "ooTextFile" +Object class = "TextGrid" + +xmin = 0.0 +xmax = 53.24 +tiers? +size = 1 +item []: + item [1]: + class = "IntervalTier" + name = "Token" + xmin = 0.0 + xmax = 53.24 + intervals: size = 15 + intervals [1]: + xmin = 0.0 + xmax = 2.68 + text = "I" + intervals [2]: + xmin = 2.68 + xmax = 5.88 + text = "From fairest creatures we desire increase," + intervals [3]: + xmin = 5.88 + xmax = 9.24 + text = "That thereby beauty’s rose might never die," + intervals [4]: + xmin = 9.24 + xmax = 11.92 + text = "But as the riper should by time decease," + intervals [5]: + xmin = 11.92 + xmax = 15.28 + text = "His tender heir might bear his memory:" + intervals [6]: + xmin = 15.28 + xmax = 18.56 + text = "But thou contracted to thine own bright eyes," + intervals [7]: + xmin = 18.56 + xmax = 22.8 + text = "Feed’st thy light’s flame with self-substantial fuel," + intervals [8]: + xmin = 22.8 + xmax = 25.64 + text = "Making a famine where abundance lies," + intervals [9]: + xmin = 25.64 + xmax = 31.24 + text = "Thy self thy foe, to thy sweet self too cruel:" + intervals [10]: + xmin = 31.24 + xmax = 34.44 + text = "Thou that art now the world’s fresh ornament," + intervals [11]: + xmin = 34.44 + xmax = 36.96 + text = "And only herald to the gaudy spring," + intervals [12]: + xmin = 36.96 + xmax = 40.68 + text = "Within thine own bud buriest thy content," + intervals [13]: + xmin = 40.68 + xmax = 43.64 + text = "And tender churl mak’st waste in niggarding:" + intervals [14]: + xmin = 43.64 + xmax = 48.52 + text = "Pity the world, or else this glutton be," + intervals [15]: + xmin = 48.52 + xmax = 53.24 + text = "To eat the world’s due, by the grave and thee." \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_u.textgrid_short b/aeneas/tests/res/syncmaps/sonnet001_u.textgrid_short new file mode 100644 index 00000000..ccf93546 --- /dev/null +++ b/aeneas/tests/res/syncmaps/sonnet001_u.textgrid_short @@ -0,0 +1,57 @@ +File type = "ooTextFile" +Object class = "TextGrid" + +0.0 +53.24 + +1 +"IntervalTier" +"Token" +0.0 +53.24 +15 +0.0 +2.68 +"I" +2.68 +5.88 +"From fairest creatures we desire increase," +5.88 +9.24 +"That thereby beauty’s rose might never die," +9.24 +11.92 +"But as the riper should by time decease," +11.92 +15.28 +"His tender heir might bear his memory:" +15.28 +18.56 +"But thou contracted to thine own bright eyes," +18.56 +22.8 +"Feed’st thy light’s flame with self-substantial fuel," +22.8 +25.64 +"Making a famine where abundance lies," +25.64 +31.24 +"Thy self thy foe, to thy sweet self too cruel:" +31.24 +34.44 +"Thou that art now the world’s fresh ornament," +34.44 +36.96 +"And only herald to the gaudy spring," +36.96 +40.68 +"Within thine own bud buriest thy content," +40.68 +43.64 +"And tender churl mak’st waste in niggarding:" +43.64 +48.52 +"Pity the world, or else this glutton be," +48.52 +53.24 +"To eat the world’s due, by the grave and thee." \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_u.tsv b/aeneas/tests/res/syncmaps/sonnet001_u.tsv index fcd186aa..2c3f0baf 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_u.tsv +++ b/aeneas/tests/res/syncmaps/sonnet001_u.tsv @@ -1,15 +1,15 @@ -0.000 2.640 f000001 -2.640 5.880 f000002 +0.000 2.680 f000001 +2.680 5.880 f000002 5.880 9.240 f000003 -9.240 11.640 f000004 -11.640 15.240 f000005 -15.240 18.560 f000006 +9.240 11.920 f000004 +11.920 15.280 f000005 +15.280 18.560 f000006 18.560 22.800 f000007 -22.800 25.680 f000008 -25.680 31.240 f000009 -31.240 34.280 f000010 -34.280 36.960 f000011 +22.800 25.640 f000008 +25.640 31.240 f000009 +31.240 34.440 f000010 +34.440 36.960 f000011 36.960 40.680 f000012 -40.680 43.600 f000013 -43.600 48.080 f000014 -48.080 53.240 f000015 \ No newline at end of file +40.680 43.640 f000013 +43.640 48.520 f000014 +48.520 53.240 f000015 \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_u.tsvh b/aeneas/tests/res/syncmaps/sonnet001_u.tsvh index aafa1972..be8ed5e5 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_u.tsvh +++ b/aeneas/tests/res/syncmaps/sonnet001_u.tsvh @@ -1,15 +1,15 @@ -00:00:00.000 00:00:02.640 f000001 -00:00:02.640 00:00:05.880 f000002 +00:00:00.000 00:00:02.680 f000001 +00:00:02.680 00:00:05.880 f000002 00:00:05.880 00:00:09.240 f000003 -00:00:09.240 00:00:11.640 f000004 -00:00:11.640 00:00:15.240 f000005 -00:00:15.240 00:00:18.560 f000006 +00:00:09.240 00:00:11.920 f000004 +00:00:11.920 00:00:15.280 f000005 +00:00:15.280 00:00:18.560 f000006 00:00:18.560 00:00:22.800 f000007 -00:00:22.800 00:00:25.680 f000008 -00:00:25.680 00:00:31.240 f000009 -00:00:31.240 00:00:34.280 f000010 -00:00:34.280 00:00:36.960 f000011 +00:00:22.800 00:00:25.640 f000008 +00:00:25.640 00:00:31.240 f000009 +00:00:31.240 00:00:34.440 f000010 +00:00:34.440 00:00:36.960 f000011 00:00:36.960 00:00:40.680 f000012 -00:00:40.680 00:00:43.600 f000013 -00:00:43.600 00:00:48.080 f000014 -00:00:48.080 00:00:53.240 f000015 \ No newline at end of file +00:00:40.680 00:00:43.640 f000013 +00:00:43.640 00:00:48.520 f000014 +00:00:48.520 00:00:53.240 f000015 \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_u.tsvm b/aeneas/tests/res/syncmaps/sonnet001_u.tsvm index fcd186aa..2c3f0baf 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_u.tsvm +++ b/aeneas/tests/res/syncmaps/sonnet001_u.tsvm @@ -1,15 +1,15 @@ -0.000 2.640 f000001 -2.640 5.880 f000002 +0.000 2.680 f000001 +2.680 5.880 f000002 5.880 9.240 f000003 -9.240 11.640 f000004 -11.640 15.240 f000005 -15.240 18.560 f000006 +9.240 11.920 f000004 +11.920 15.280 f000005 +15.280 18.560 f000006 18.560 22.800 f000007 -22.800 25.680 f000008 -25.680 31.240 f000009 -31.240 34.280 f000010 -34.280 36.960 f000011 +22.800 25.640 f000008 +25.640 31.240 f000009 +31.240 34.440 f000010 +34.440 36.960 f000011 36.960 40.680 f000012 -40.680 43.600 f000013 -43.600 48.080 f000014 -48.080 53.240 f000015 \ No newline at end of file +40.680 43.640 f000013 +43.640 48.520 f000014 +48.520 53.240 f000015 \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_u.ttml b/aeneas/tests/res/syncmaps/sonnet001_u.ttml index 686dc105..178da1c5 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_u.ttml +++ b/aeneas/tests/res/syncmaps/sonnet001_u.ttml @@ -2,21 +2,21 @@
-

I

-

From fairest creatures we desire increase,

+

I

+

From fairest creatures we desire increase,

That thereby beauty’s rose might never die,

-

But as the riper should by time decease,

-

His tender heir might bear his memory:

-

But thou contracted to thine own bright eyes,

+

But as the riper should by time decease,

+

His tender heir might bear his memory:

+

But thou contracted to thine own bright eyes,

Feed’st thy light’s flame with self-substantial fuel,

-

Making a famine where abundance lies,

-

Thy self thy foe, to thy sweet self too cruel:

-

Thou that art now the world’s fresh ornament,

-

And only herald to the gaudy spring,

+

Making a famine where abundance lies,

+

Thy self thy foe, to thy sweet self too cruel:

+

Thou that art now the world’s fresh ornament,

+

And only herald to the gaudy spring,

Within thine own bud buriest thy content,

-

And tender churl mak’st waste in niggarding:

-

Pity the world, or else this glutton be,

-

To eat the world’s due, by the grave and thee.

+

And tender churl mak’st waste in niggarding:

+

Pity the world, or else this glutton be,

+

To eat the world’s due, by the grave and thee.

diff --git a/aeneas/tests/res/syncmaps/sonnet001_u.txt b/aeneas/tests/res/syncmaps/sonnet001_u.txt index 8cfa9e27..2f319242 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_u.txt +++ b/aeneas/tests/res/syncmaps/sonnet001_u.txt @@ -1,15 +1,15 @@ -f000001 0.000 2.640 "I" -f000002 2.640 5.880 "From fairest creatures we desire increase," +f000001 0.000 2.680 "I" +f000002 2.680 5.880 "From fairest creatures we desire increase," f000003 5.880 9.240 "That thereby beauty’s rose might never die," -f000004 9.240 11.640 "But as the riper should by time decease," -f000005 11.640 15.240 "His tender heir might bear his memory:" -f000006 15.240 18.560 "But thou contracted to thine own bright eyes," +f000004 9.240 11.920 "But as the riper should by time decease," +f000005 11.920 15.280 "His tender heir might bear his memory:" +f000006 15.280 18.560 "But thou contracted to thine own bright eyes," f000007 18.560 22.800 "Feed’st thy light’s flame with self-substantial fuel," -f000008 22.800 25.680 "Making a famine where abundance lies," -f000009 25.680 31.240 "Thy self thy foe, to thy sweet self too cruel:" -f000010 31.240 34.280 "Thou that art now the world’s fresh ornament," -f000011 34.280 36.960 "And only herald to the gaudy spring," +f000008 22.800 25.640 "Making a famine where abundance lies," +f000009 25.640 31.240 "Thy self thy foe, to thy sweet self too cruel:" +f000010 31.240 34.440 "Thou that art now the world’s fresh ornament," +f000011 34.440 36.960 "And only herald to the gaudy spring," f000012 36.960 40.680 "Within thine own bud buriest thy content," -f000013 40.680 43.600 "And tender churl mak’st waste in niggarding:" -f000014 43.600 48.080 "Pity the world, or else this glutton be," -f000015 48.080 53.240 "To eat the world’s due, by the grave and thee." \ No newline at end of file +f000013 40.680 43.640 "And tender churl mak’st waste in niggarding:" +f000014 43.640 48.520 "Pity the world, or else this glutton be," +f000015 48.520 53.240 "To eat the world’s due, by the grave and thee." \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_u.txth b/aeneas/tests/res/syncmaps/sonnet001_u.txth index 06c1a829..8dabc51d 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_u.txth +++ b/aeneas/tests/res/syncmaps/sonnet001_u.txth @@ -1,15 +1,15 @@ -f000001 00:00:00.000 00:00:02.640 "I" -f000002 00:00:02.640 00:00:05.880 "From fairest creatures we desire increase," +f000001 00:00:00.000 00:00:02.680 "I" +f000002 00:00:02.680 00:00:05.880 "From fairest creatures we desire increase," f000003 00:00:05.880 00:00:09.240 "That thereby beauty’s rose might never die," -f000004 00:00:09.240 00:00:11.640 "But as the riper should by time decease," -f000005 00:00:11.640 00:00:15.240 "His tender heir might bear his memory:" -f000006 00:00:15.240 00:00:18.560 "But thou contracted to thine own bright eyes," +f000004 00:00:09.240 00:00:11.920 "But as the riper should by time decease," +f000005 00:00:11.920 00:00:15.280 "His tender heir might bear his memory:" +f000006 00:00:15.280 00:00:18.560 "But thou contracted to thine own bright eyes," f000007 00:00:18.560 00:00:22.800 "Feed’st thy light’s flame with self-substantial fuel," -f000008 00:00:22.800 00:00:25.680 "Making a famine where abundance lies," -f000009 00:00:25.680 00:00:31.240 "Thy self thy foe, to thy sweet self too cruel:" -f000010 00:00:31.240 00:00:34.280 "Thou that art now the world’s fresh ornament," -f000011 00:00:34.280 00:00:36.960 "And only herald to the gaudy spring," +f000008 00:00:22.800 00:00:25.640 "Making a famine where abundance lies," +f000009 00:00:25.640 00:00:31.240 "Thy self thy foe, to thy sweet self too cruel:" +f000010 00:00:31.240 00:00:34.440 "Thou that art now the world’s fresh ornament," +f000011 00:00:34.440 00:00:36.960 "And only herald to the gaudy spring," f000012 00:00:36.960 00:00:40.680 "Within thine own bud buriest thy content," -f000013 00:00:40.680 00:00:43.600 "And tender churl mak’st waste in niggarding:" -f000014 00:00:43.600 00:00:48.080 "Pity the world, or else this glutton be," -f000015 00:00:48.080 00:00:53.240 "To eat the world’s due, by the grave and thee." \ No newline at end of file +f000013 00:00:40.680 00:00:43.640 "And tender churl mak’st waste in niggarding:" +f000014 00:00:43.640 00:00:48.520 "Pity the world, or else this glutton be," +f000015 00:00:48.520 00:00:53.240 "To eat the world’s due, by the grave and thee." \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_u.txtm b/aeneas/tests/res/syncmaps/sonnet001_u.txtm index 8cfa9e27..2f319242 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_u.txtm +++ b/aeneas/tests/res/syncmaps/sonnet001_u.txtm @@ -1,15 +1,15 @@ -f000001 0.000 2.640 "I" -f000002 2.640 5.880 "From fairest creatures we desire increase," +f000001 0.000 2.680 "I" +f000002 2.680 5.880 "From fairest creatures we desire increase," f000003 5.880 9.240 "That thereby beauty’s rose might never die," -f000004 9.240 11.640 "But as the riper should by time decease," -f000005 11.640 15.240 "His tender heir might bear his memory:" -f000006 15.240 18.560 "But thou contracted to thine own bright eyes," +f000004 9.240 11.920 "But as the riper should by time decease," +f000005 11.920 15.280 "His tender heir might bear his memory:" +f000006 15.280 18.560 "But thou contracted to thine own bright eyes," f000007 18.560 22.800 "Feed’st thy light’s flame with self-substantial fuel," -f000008 22.800 25.680 "Making a famine where abundance lies," -f000009 25.680 31.240 "Thy self thy foe, to thy sweet self too cruel:" -f000010 31.240 34.280 "Thou that art now the world’s fresh ornament," -f000011 34.280 36.960 "And only herald to the gaudy spring," +f000008 22.800 25.640 "Making a famine where abundance lies," +f000009 25.640 31.240 "Thy self thy foe, to thy sweet self too cruel:" +f000010 31.240 34.440 "Thou that art now the world’s fresh ornament," +f000011 34.440 36.960 "And only herald to the gaudy spring," f000012 36.960 40.680 "Within thine own bud buriest thy content," -f000013 40.680 43.600 "And tender churl mak’st waste in niggarding:" -f000014 43.600 48.080 "Pity the world, or else this glutton be," -f000015 48.080 53.240 "To eat the world’s due, by the grave and thee." \ No newline at end of file +f000013 40.680 43.640 "And tender churl mak’st waste in niggarding:" +f000014 43.640 48.520 "Pity the world, or else this glutton be," +f000015 48.520 53.240 "To eat the world’s due, by the grave and thee." \ No newline at end of file diff --git a/aeneas/tests/res/syncmaps/sonnet001_u.vtt b/aeneas/tests/res/syncmaps/sonnet001_u.vtt index 47f44a5b..06c09d7d 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_u.vtt +++ b/aeneas/tests/res/syncmaps/sonnet001_u.vtt @@ -1,11 +1,11 @@ WEBVTT 1 -00:00:00.000 --> 00:00:02.640 +00:00:00.000 --> 00:00:02.680 I 2 -00:00:02.640 --> 00:00:05.880 +00:00:02.680 --> 00:00:05.880 From fairest creatures we desire increase, 3 @@ -13,15 +13,15 @@ From fairest creatures we desire increase, That thereby beauty’s rose might never die, 4 -00:00:09.240 --> 00:00:11.640 +00:00:09.240 --> 00:00:11.920 But as the riper should by time decease, 5 -00:00:11.640 --> 00:00:15.240 +00:00:11.920 --> 00:00:15.280 His tender heir might bear his memory: 6 -00:00:15.240 --> 00:00:18.560 +00:00:15.280 --> 00:00:18.560 But thou contracted to thine own bright eyes, 7 @@ -29,19 +29,19 @@ But thou contracted to thine own bright eyes, Feed’st thy light’s flame with self-substantial fuel, 8 -00:00:22.800 --> 00:00:25.680 +00:00:22.800 --> 00:00:25.640 Making a famine where abundance lies, 9 -00:00:25.680 --> 00:00:31.240 +00:00:25.640 --> 00:00:31.240 Thy self thy foe, to thy sweet self too cruel: 10 -00:00:31.240 --> 00:00:34.280 +00:00:31.240 --> 00:00:34.440 Thou that art now the world’s fresh ornament, 11 -00:00:34.280 --> 00:00:36.960 +00:00:34.440 --> 00:00:36.960 And only herald to the gaudy spring, 12 @@ -49,14 +49,14 @@ And only herald to the gaudy spring, Within thine own bud buriest thy content, 13 -00:00:40.680 --> 00:00:43.600 +00:00:40.680 --> 00:00:43.640 And tender churl mak’st waste in niggarding: 14 -00:00:43.600 --> 00:00:48.080 +00:00:43.640 --> 00:00:48.520 Pity the world, or else this glutton be, 15 -00:00:48.080 --> 00:00:53.240 +00:00:48.520 --> 00:00:53.240 To eat the world’s due, by the grave and thee. diff --git a/aeneas/tests/res/syncmaps/sonnet001_u.xml b/aeneas/tests/res/syncmaps/sonnet001_u.xml index 912fecb8..15707cd5 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_u.xml +++ b/aeneas/tests/res/syncmaps/sonnet001_u.xml @@ -1,10 +1,10 @@ - + I - + From fairest creatures we desire increase, @@ -12,15 +12,15 @@ That thereby beauty’s rose might never die, - + But as the riper should by time decease, - + His tender heir might bear his memory: - + But thou contracted to thine own bright eyes, @@ -28,19 +28,19 @@ Feed’st thy light’s flame with self-substantial fuel, - + Making a famine where abundance lies, - + Thy self thy foe, to thy sweet self too cruel: - + Thou that art now the world’s fresh ornament, - + And only herald to the gaudy spring, @@ -48,15 +48,15 @@ Within thine own bud buriest thy content, - + And tender churl mak’st waste in niggarding: - + Pity the world, or else this glutton be, - + To eat the world’s due, by the grave and thee. diff --git a/aeneas/tests/res/syncmaps/sonnet001_u.xml_legacy b/aeneas/tests/res/syncmaps/sonnet001_u.xml_legacy index 63f7b6a9..28fefb9e 100644 --- a/aeneas/tests/res/syncmaps/sonnet001_u.xml_legacy +++ b/aeneas/tests/res/syncmaps/sonnet001_u.xml_legacy @@ -3,11 +3,11 @@ f000001 0.000 - 2.640 + 2.680 f000002 - 2.640 + 2.680 5.880 @@ -18,16 +18,16 @@ f000004 9.240 - 11.640 + 11.920 f000005 - 11.640 - 15.240 + 11.920 + 15.280 f000006 - 15.240 + 15.280 18.560 @@ -38,21 +38,21 @@ f000008 22.800 - 25.680 + 25.640 f000009 - 25.680 + 25.640 31.240 f000010 31.240 - 34.280 + 34.440 f000011 - 34.280 + 34.440 36.960 @@ -63,16 +63,16 @@ f000013 40.680 - 43.600 + 43.640 f000014 - 43.600 - 48.080 + 43.640 + 48.520 f000015 - 48.080 + 48.520 53.240 \ No newline at end of file diff --git a/aeneas_check_setup.py b/aeneas_check_setup.py index 35a648d6..d231cb51 100644 --- a/aeneas_check_setup.py +++ b/aeneas_check_setup.py @@ -44,7 +44,7 @@ """ __license__ = "GNU AGPL 3" __status__ = "Production" -__version__ = "1.6.0" +__version__ = "1.6.1" ANSI_ERROR = u"\033[91m" ANSI_OK = u"\033[92m" diff --git a/bin/aeneas_check_setup.py b/bin/aeneas_check_setup.py index 35a648d6..d231cb51 100755 --- a/bin/aeneas_check_setup.py +++ b/bin/aeneas_check_setup.py @@ -44,7 +44,7 @@ """ __license__ = "GNU AGPL 3" __status__ = "Production" -__version__ = "1.6.0" +__version__ = "1.6.1" ANSI_ERROR = u"\033[91m" ANSI_OK = u"\033[92m" diff --git a/bin/aeneas_convert_syncmap.py b/bin/aeneas_convert_syncmap.py index 3f9da5bd..eb48153b 100755 --- a/bin/aeneas_convert_syncmap.py +++ b/bin/aeneas_convert_syncmap.py @@ -40,7 +40,7 @@ """ __license__ = "GNU AGPL 3" __status__ = "Production" -__version__ = "1.6.0" +__version__ = "1.6.1" def main(): diff --git a/bin/aeneas_download.py b/bin/aeneas_download.py index 4b0a588f..e16a415a 100755 --- a/bin/aeneas_download.py +++ b/bin/aeneas_download.py @@ -40,7 +40,7 @@ """ __license__ = "GNU AGPL 3" __status__ = "Production" -__version__ = "1.6.0" +__version__ = "1.6.1" def main(): diff --git a/bin/aeneas_execute_job.py b/bin/aeneas_execute_job.py index 7a98e04a..b7de0f40 100755 --- a/bin/aeneas_execute_job.py +++ b/bin/aeneas_execute_job.py @@ -42,7 +42,7 @@ """ __license__ = "GNU AGPL 3" __status__ = "Production" -__version__ = "1.6.0" +__version__ = "1.6.1" def main(): diff --git a/bin/aeneas_execute_task.py b/bin/aeneas_execute_task.py index 463eba9c..84ff6ac0 100755 --- a/bin/aeneas_execute_task.py +++ b/bin/aeneas_execute_task.py @@ -41,7 +41,7 @@ """ __license__ = "GNU AGPL 3" __status__ = "Production" -__version__ = "1.6.0" +__version__ = "1.6.1" def main(): diff --git a/bin/aeneas_plot_waveform.py b/bin/aeneas_plot_waveform.py index f8ab4b81..abc0bab1 100755 --- a/bin/aeneas_plot_waveform.py +++ b/bin/aeneas_plot_waveform.py @@ -40,7 +40,7 @@ """ __license__ = "GNU AGPL 3" __status__ = "Production" -__version__ = "1.6.0" +__version__ = "1.6.1" def main(): diff --git a/bin/aeneas_synthesize_text.py b/bin/aeneas_synthesize_text.py index a50dc4de..5e639bad 100755 --- a/bin/aeneas_synthesize_text.py +++ b/bin/aeneas_synthesize_text.py @@ -41,7 +41,7 @@ """ __license__ = "GNU AGPL 3" __status__ = "Production" -__version__ = "1.6.0" +__version__ = "1.6.1" def main(): diff --git a/bin/aeneas_validate.py b/bin/aeneas_validate.py index 6fe762d4..ee7e1f4d 100755 --- a/bin/aeneas_validate.py +++ b/bin/aeneas_validate.py @@ -47,7 +47,7 @@ """ __license__ = "GNU AGPL 3" __status__ = "Production" -__version__ = "1.6.0" +__version__ = "1.6.1" def main(): diff --git a/check_dependencies.py b/check_dependencies.py index 35a648d6..d231cb51 100644 --- a/check_dependencies.py +++ b/check_dependencies.py @@ -44,7 +44,7 @@ """ __license__ = "GNU AGPL 3" __status__ = "Production" -__version__ = "1.6.0" +__version__ = "1.6.1" ANSI_ERROR = u"\033[91m" ANSI_OK = u"\033[92m" diff --git a/docs/source/changelog.rst b/docs/source/changelog.rst index 74662e88..05c6300f 100644 --- a/docs/source/changelog.rst +++ b/docs/source/changelog.rst @@ -1,6 +1,12 @@ Changelog ========= +v1.6.1 (2016-10-??) +------------------- + +#. Added two new output formats: ``TEXTGRID`` (Praat long TextGrid) and ``TEXTGRID_SHORT`` (Praat short TextGrid) +#. Fixed typos in ``SyncMapFormat`` docstrings + v1.6.0.1 (2016-09-30) --------------------- diff --git a/docs/source/conf.py b/docs/source/conf.py index 44c894bd..91243640 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -60,7 +60,7 @@ # The short X.Y version. version = '1.6' # The full version, including alpha/beta/rc tags. -release = '1.6.0' +release = '1.6.1' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/install_dependencies.sh b/install_dependencies.sh index 3d029fa7..9cd3a481 100644 --- a/install_dependencies.sh +++ b/install_dependencies.sh @@ -7,7 +7,7 @@ # Copyright 2015-2016, Alberto Pettarin (www.albertopettarin.it) # """ # __license__ = "GNU AGPL 3" -# __version__ = "1.6.0" +# __version__ = "1.6.1" # __email__ = "aeneas@readbeyond.it" # __status__ = "Production" diff --git a/pyinstaller-aeneas-cli.py b/pyinstaller-aeneas-cli.py index 19048e94..6d09f995 100755 --- a/pyinstaller-aeneas-cli.py +++ b/pyinstaller-aeneas-cli.py @@ -42,7 +42,7 @@ """ __license__ = "GNU AGPL 3" __status__ = "Production" -__version__ = "1.6.0" +__version__ = "1.6.1" def main(): diff --git a/pyinstaller-onedir.spec b/pyinstaller-onedir.spec index 0d976394..e5c72693 100644 --- a/pyinstaller-onedir.spec +++ b/pyinstaller-onedir.spec @@ -9,7 +9,7 @@ #""" #__license__ = "GNU AGPL 3" #__status__ = "Production" -#__version__ = "1.6.0" +#__version__ = "1.6.1" datas = [ # required diff --git a/pyinstaller-onefile.spec b/pyinstaller-onefile.spec index 89c92bbe..aad6dc20 100644 --- a/pyinstaller-onefile.spec +++ b/pyinstaller-onefile.spec @@ -9,7 +9,7 @@ #""" #__license__ = "GNU AGPL 3" #__status__ = "Production" -#__version__ = "1.6.0" +#__version__ = "1.6.1" datas = [ # required diff --git a/run_all_unit_tests.py b/run_all_unit_tests.py index f89871fc..312ab710 100644 --- a/run_all_unit_tests.py +++ b/run_all_unit_tests.py @@ -41,7 +41,7 @@ """ __license__ = "GNU AGPL 3" __status__ = "Production" -__version__ = "1.6.0" +__version__ = "1.6.1" TEST_DIRECTORY = "aeneas/tests" TEST_PATTERN = "test_*.py" diff --git a/setup.py b/setup.py index eff07b93..c44a5364 100644 --- a/setup.py +++ b/setup.py @@ -57,7 +57,7 @@ """ __license__ = "GNU AGPL 3" __status__ = "Production" -__version__ = "1.6.0" +__version__ = "1.6.1" ############################################################################## diff --git a/setupmeta.py b/setupmeta.py index 44c7ca3f..b8407a3f 100644 --- a/setupmeta.py +++ b/setupmeta.py @@ -36,7 +36,7 @@ """ __license__ = "GNU AGPL 3" __status__ = "Production" -__version__ = "1.6.0" +__version__ = "1.6.1" ############################################################################## @@ -47,7 +47,7 @@ # package version # NOTE: generate a new one for each PyPI upload, otherwise it will fail -PKG_VERSION = "1.6.0.1" +PKG_VERSION = "1.6.1.0" # required packages to install # NOTE: always use exact version numbers @@ -61,25 +61,30 @@ # required packages to install extra tools PKG_EXTRAS_REQUIRE = { "full": [ - "pafy>=0.3.74", + "pafy>=0.5.2", "Pillow>=3.1.1", "requests>=2.9.1", - "youtube-dl>=2015.7.21" + "tgt>=1.4.2", + "youtube-dl>=2016.9.27" ], "nopillow": [ - "pafy>=0.3.74", + "pafy>=0.5.2", "requests>=2.9.1", - "youtube-dl>=2015.7.21" + "tgt>=1.4.2", + "youtube-dl>=2016.9.27" ], "pafy": [ - "pafy>=0.3.74", - "youtube-dl>=2015.7.21" + "pafy>=0.5.2", + "youtube-dl>=2016.9.27" ], "pillow": [ "Pillow>=3.1.1" ], "requests": [ "requests>=2.9.1" + ], + "tgt": [ + "tgt>=1.4.2" ] } @@ -204,6 +209,8 @@ "SRT", "SSV", "SUB", + "TextGrid", + "TGT", "TSV", "TTML", "VTT", From f3f0ce3bd63830c05e296e9b611c3be51965f9c2 Mon Sep 17 00:00:00 2001 From: Alberto Pettarin Date: Wed, 19 Oct 2016 16:28:20 +0200 Subject: [PATCH 02/66] Moved syncmap I/O into aeneas.syncmap subpackage --- MANIFEST.in | 1 + aeneas/globalfunctions.py | 12 +- aeneas/syncmap.py | 2142 -------------------- aeneas/syncmap/__init__.py | 348 ++++ aeneas/syncmap/format.py | 125 ++ aeneas/syncmap/fragment.py | 165 ++ aeneas/syncmap/headtailformat.py | 113 ++ aeneas/syncmap/missingparametererror.py | 37 + aeneas/syncmap/smfaudacity.py | 86 + aeneas/syncmap/smfbase.py | 103 + aeneas/syncmap/smfcsv.py | 94 + aeneas/syncmap/smfeaf.py | 159 ++ aeneas/syncmap/smfgsubtitles.py | 229 +++ aeneas/syncmap/smfgtabular.py | 160 ++ aeneas/syncmap/smfgxml.py | 75 + aeneas/syncmap/smfjson.py | 100 + aeneas/syncmap/smfrbse.py | 99 + aeneas/syncmap/smfsmil.py | 216 ++ aeneas/syncmap/smfsrt.py | 83 + aeneas/syncmap/smfssv.py | 96 + aeneas/syncmap/smfsub.py | 112 + aeneas/syncmap/smftextgrid.py | 173 ++ aeneas/syncmap/smftsv.py | 92 + aeneas/syncmap/smfttml.py | 147 ++ aeneas/syncmap/smftxt.py | 95 + aeneas/syncmap/smfvtt.py | 90 + aeneas/syncmap/smfxml.py | 103 + aeneas/syncmap/smfxmllegacy.py | 102 + aeneas/tests/res/syncmaps/sonnet001.eaf | 2 +- aeneas/tests/res/syncmaps/sonnet001.sbv | 3 +- aeneas/tests/res/syncmaps/sonnet001.sub | 3 +- aeneas/tests/res/syncmaps/sonnet001_m.eaf | 2 +- aeneas/tests/res/syncmaps/sonnet001_m.sbv | 3 +- aeneas/tests/res/syncmaps/sonnet001_m.sub | 3 +- aeneas/tests/res/syncmaps/sonnet001_mu.eaf | 2 +- aeneas/tests/res/syncmaps/sonnet001_mu.sbv | 3 +- aeneas/tests/res/syncmaps/sonnet001_mu.sub | 3 +- aeneas/tests/res/syncmaps/sonnet001_u.eaf | 2 +- aeneas/tests/res/syncmaps/sonnet001_u.sbv | 3 +- aeneas/tests/res/syncmaps/sonnet001_u.sub | 3 +- aeneas/tests/test_syncmap.py | 2 +- docs/source/changelog.rst | 2 + setupmeta.py | 4 + 43 files changed, 3241 insertions(+), 2156 deletions(-) delete mode 100644 aeneas/syncmap.py create mode 100644 aeneas/syncmap/__init__.py create mode 100644 aeneas/syncmap/format.py create mode 100644 aeneas/syncmap/fragment.py create mode 100644 aeneas/syncmap/headtailformat.py create mode 100644 aeneas/syncmap/missingparametererror.py create mode 100644 aeneas/syncmap/smfaudacity.py create mode 100644 aeneas/syncmap/smfbase.py create mode 100644 aeneas/syncmap/smfcsv.py create mode 100644 aeneas/syncmap/smfeaf.py create mode 100644 aeneas/syncmap/smfgsubtitles.py create mode 100644 aeneas/syncmap/smfgtabular.py create mode 100644 aeneas/syncmap/smfgxml.py create mode 100644 aeneas/syncmap/smfjson.py create mode 100644 aeneas/syncmap/smfrbse.py create mode 100644 aeneas/syncmap/smfsmil.py create mode 100644 aeneas/syncmap/smfsrt.py create mode 100644 aeneas/syncmap/smfssv.py create mode 100644 aeneas/syncmap/smfsub.py create mode 100644 aeneas/syncmap/smftextgrid.py create mode 100644 aeneas/syncmap/smftsv.py create mode 100644 aeneas/syncmap/smfttml.py create mode 100644 aeneas/syncmap/smftxt.py create mode 100644 aeneas/syncmap/smfvtt.py create mode 100644 aeneas/syncmap/smfxml.py create mode 100644 aeneas/syncmap/smfxmllegacy.py diff --git a/MANIFEST.in b/MANIFEST.in index c1c0c2ce..27cb5af5 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -7,6 +7,7 @@ recursive-include aeneas/cwave * recursive-include aeneas/extra * prune aeneas/extra/ctw_speect recursive-include aeneas/res * +recursive-include aeneas/syncmap * recursive-include aeneas/tools/res * recursive-include aeneas/ttswrappers * include aeneas_check_setup.py diff --git a/aeneas/globalfunctions.py b/aeneas/globalfunctions.py index 7433a0f5..1cf6b324 100644 --- a/aeneas/globalfunctions.py +++ b/aeneas/globalfunctions.py @@ -685,6 +685,16 @@ def time_to_hhmmssmmm(time_value, decimal_separator="."): ) +def time_from_srt(string): + """ + Parse the given ``HH:MM:SS,mmm`` string and return a time value. + + :param string string: the string to be parsed + :rtype: :class:`~aeneas.timevalue.TimeValue` + """ + return time_from_hhmmssmmm(string, decimal_separator=",") + + def time_to_srt(time_value): """ Format the given time value into a ``HH:MM:SS,mmm`` string, @@ -705,7 +715,7 @@ def time_to_srt(time_value): :param float time_value: a time value, in seconds :rtype: string """ - return time_to_hhmmssmmm(time_value, ",") + return time_to_hhmmssmmm(time_value, decimal_separator=",") def split_url(url): diff --git a/aeneas/syncmap.py b/aeneas/syncmap.py deleted file mode 100644 index 815ff86d..00000000 --- a/aeneas/syncmap.py +++ /dev/null @@ -1,2142 +0,0 @@ -#!/usr/bin/env python -# coding=utf-8 - -# aeneas is a Python/C library and a set of tools -# to automagically synchronize audio and text (aka forced alignment) -# -# Copyright (C) 2012-2013, Alberto Pettarin (www.albertopettarin.it) -# Copyright (C) 2013-2015, ReadBeyond Srl (www.readbeyond.it) -# Copyright (C) 2015-2016, Alberto Pettarin (www.albertopettarin.it) -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -""" -A synchronization map, or sync map, -is a map from text fragments to time intervals. - -This module contains the following classes: - -* :class:`~aeneas.syncmap.SyncMap`, represents a sync map as a tree of sync map fragments; -* :class:`~aeneas.syncmap.SyncMapFormat`, an enumeration of the supported output formats; -* :class:`~aeneas.syncmap.SyncMapFragment`, connects a text fragment with a ``begin`` and ``end`` time values; -* :class:`~aeneas.syncmap.SyncMapHeadTailFormat`, an enumeration of the supported formats for the sync map head/tail; -* :class:`~aeneas.syncmap.SyncMapMissingParameterError`, an error raised when reading sync maps from file. - -.. warning:: This module is likely to be refactored in a future version -""" - -from __future__ import absolute_import -from __future__ import print_function -from functools import partial -from itertools import chain -import io -import json -import os - -from aeneas.logger import Loggable -from aeneas.textfile import TextFragment -from aeneas.timevalue import Decimal -from aeneas.timevalue import TimeValue -from aeneas.tree import Tree -import aeneas.globalconstants as gc -import aeneas.globalfunctions as gf - - -class SyncMapMissingParameterError(Exception): - """ - Error raised when a parameter implied by the SyncMapFormat is missing. - """ - pass - - -class SyncMapFormat(object): - """ - Enumeration of the supported output formats - for a synchronization map. - """ - - AUD = "aud" - """ - Alias for AUDM. - """ - - AUDH = "audh" - """ - Tab-separated plain text, - with human-readable time values - and fragment text:: - - 00:00:00.000 00:00:01.234 Text of fragment 1 - 00:00:01.234 00:00:05.678 Text of fragment 2 - 00:00:05.678 00:00:07.890 Text of fragment 3 - - * Multiple levels: no - * Multiple lines: no - - .. versionadded:: 1.5.0 - """ - - AUDM = "audm" - """ - Tab-separated plain text, - with machine-readable time values - and fragment text, - compatible with ``Audacity``:: - - 0.000 1.234 Text fragment 1 - 1.234 5.678 Text fragment 2 - 5.678 7.890 Text fragment 3 - - * Multiple levels: no - * Multiple lines: no - - .. versionadded:: 1.5.0 - """ - - CSV = "csv" - """ - Alias for CSVM. - """ - - CSVH = "csvh" - """ - Comma-separated values (CSV), - with human-readable time values:: - - f001,00:00:00.000,00:00:01.234,"First fragment text" - f002,00:00:01.234,00:00:05.678,"Second fragment text" - f003,00:00:05.678,00:00:07.890,"Third fragment text" - - * Multiple levels: no - * Multiple lines: no - - Please note that the text is assumed to be contained - in double quotes ("..."), - which are stripped when reading from file, - and added back when writing to file. - - .. versionadded:: 1.0.4 - """ - - CSVM = "csvm" - """ - Comma-separated values (CSV), - with machine-readable time values:: - - f001,0.000,1.234,"First fragment text" - f002,1.234,5.678,"Second fragment text" - f003,5.678,7.890,"Third fragment text" - - * Multiple levels: no - * Multiple lines: no - - Please note that the text is assumed to be contained - in double quotes ("..."), - which are stripped when reading from file, - and added back when writing to file. - - .. versionadded:: 1.2.0 - """ - - DFXP = "dfxp" - """ - Alias for TTML. - - .. versionadded:: 1.4.1 - """ - - EAF = "eaf" - """ - ELAN EAF:: - - - -
- - - - - - - - - - - - First fragment text - - - - - First fragment text - - - - - First fragment text - - - - - - - * Multiple levels: no - * Multiple lines: no - - .. versionadded:: 1.5.0 - """ - - JSON = "json" - """ - JSON:: - - { - "fragments": [ - { - "id": "f001", - "language": "en", - "begin": 0.000, - "end": 1.234, - "children": [], - "lines": [ - "First fragment text" - ] - }, - { - "id": "f002", - "language": "en", - "begin": 1.234, - "end": 5.678, - "children": [], - "lines": [ - "Second fragment text", - "Second line of second fragment" - ] - }, - { - "id": "f003", - "language": "en", - "begin": 5.678, - "end": 7.890, - "children": [], - "lines": [ - "Third fragment text", - "Second line of third fragment" - ] - } - ] - } - - * Multiple levels: yes (output only) - * Multiple lines: yes - - .. versionadded:: 1.2.0 - """ - - RBSE = "rbse" - """ - JSON compatible with ``rb_smil_emulator.js``:: - - { - "smil_ids": [ - "f001", - "f002", - "f003", - ], - "smil_data": [ - { "id": "f001", "begin": 0.000, "end": 1.234 }, - { "id": "f002", "begin": 1.234, "end": 5.678 }, - { "id": "f003", "begin": 5.678, "end": 7.890 } - ] - } - - * Multiple levels: no - * Multiple lines: no - - Deprecated, it will be removed in v2.0.0. - - .. deprecated:: 1.5.0 - - .. versionadded:: 1.2.0 - """ - - SBV = "sbv" - """ - SubViewer (SBV/SUB) caption/subtitle format, - with multiple lines per fragment are separated by a newline character:: - - [SUBTITLE] - 00:00:00.000,00:00:01.234 - First fragment text - - 00:00:01.234,00:00:05.678 - Second fragment text - Second line of second fragment - - 00:00:05.678,00:00:07.890 - Third fragment text - Second line of third fragment - - * Multiple levels: no - * Multiple lines: yes - - .. versionadded:: 1.4.1 - """ - - SMIL = "smil" - """ - Alias for SMILH. - """ - - SMILH = "smilh" - """ - SMIL (as in the EPUB 3 Media Overlay specification), - with human-readable time values:: - - - - - - - - - - - - - - - - - - * Multiple levels: yes (output only) - * Multiple lines: no - - .. versionadded:: 1.2.0 - """ - - SMILM = "smilm" - """ - SMIL (as in the EPUB 3 Media Overlay specification), - with machine-readable time values:: - - - - - - - - - - - - - - - - - - * Multiple levels: yes (output only) - * Multiple lines: no - - .. versionadded:: 1.2.0 - """ - - SRT = "srt" - """ - SubRip (SRT) caption/subtitle format - (it might have multiple lines per fragment):: - - 1 - 00:00:00,000 --> 00:00:01,234 - First fragment text - - 2 - 00:00:01,234 --> 00:00:05,678 - Second fragment text - Second line of second fragment - - 3 - 00:00:05,678 --> 00:00:07,890 - Third fragment text - Second line of third fragment - - * Multiple levels: no - * Multiple lines: yes - """ - - SSV = "ssv" - """ - Alias for SSVM. - - .. versionadded:: 1.0.4 - """ - - SSVH = "ssvh" - """ - Space-separated plain text, - with human-readable time values:: - - 00:00:00.000 00:00:01.234 f001 "First fragment text" - 00:00:01.234 00:00:05.678 f002 "Second fragment text" - 00:00:05.678 00:00:07.890 f003 "Third fragment text" - - * Multiple levels: no - * Multiple lines: no - - Please note that the text is assumed to be contained - in double quotes ("..."), - which are stripped when reading from file, - and added back when writing to file. - - .. versionadded:: 1.0.4 - """ - - SSVM = "ssvm" - """ - Space-separated plain text, - with machine-readable time values:: - - 0.000 1.234 f001 "First fragment text" - 1.234 5.678 f002 "Second fragment text" - 5.678 7.890 f003 "Third fragment text" - - * Multiple levels: no - * Multiple lines: no - - Please note that the text is assumed to be contained - in double quotes ("..."), - which are stripped when reading from file, - and added back when writing to file. - - .. versionadded:: 1.2.0 - """ - - SUB = "sub" - """ - SubViewer (SBV/SUB) caption/subtitle format, - with multiple lines per fragment are separated by [br]:: - - [SUBTITLE] - 00:00:00.000,00:00:01.234 - First fragment text - - 00:00:01.234,00:00:05.678 - Second fragment text[br]Second line of second fragment - - 00:00:05.678,00:00:07.890 - Third fragment text[br]Second line of third fragment - - * Multiple levels: no - * Multiple lines: yes - - .. versionadded:: 1.4.1 - """ - - TAB = "tab" - """ - Deprecated, it will be removed in v2.0.0. - Use TSV instead. - - .. deprecated:: 1.0.3 - """ - - TEXTGRID = "textgrid" - """ - Praat long TextGrid format:: - - File type = "ooTextFile" - Object class = "TextGrid" - - xmin = 0.0 - xmax = 7.89 - tiers? - size = 1 - item []: - item [1]: - class = "IntervalTier" - name = "Token" - xmin = 0.0 - xmax = 7.89 - intervals: size = 3 - intervals [1]: - xmin = 0.0 - xmax = 1.234 - text = "First fragment text" - intervals [2]: - xmin = 1.234 - xmax = 5.678 - text = "Second fragment text" - intervals [3]: - xmin = 5.678 - xmax = 7.89 - text = "Third fragment text" - - * Multiple levels: no (not yet) - * Multiple lines: no - - .. versionadded:: 1.6.1 - """ - - TEXTGRID_SHORT = "textgrid_short" - """ - Praat short TextGrid format:: - - File type = "ooTextFile" - Object class = "TextGrid" - - 0.0 - 7.89 - - 1 - "IntervalTier" - "Token" - 0.0 - 7.89 - 3 - 0.0 - 1.234 - "First fragment text" - 1.234 - 5.678 - "Second fragment text" - 5.678 - 7.89 - "Third fragment text" - - * Multiple levels: no (not yet) - * Multiple lines: no - - .. versionadded:: 1.6.1 - """ - - TSV = "tsv" - """ - Alias for TSVM. - """ - - TSVH = "tsvh" - """ - Tab-separated plain text, - with human-readable time values:: - - 00:00:00.000 00:00:01.234 f001 - 00:00:01.234 00:00:05.678 f002 - 00:00:05.678 00:00:07.890 f003 - - * Multiple levels: no - * Multiple lines: no - - .. versionadded:: 1.0.4 - """ - - TSVM = "tsvm" - """ - Tab-separated plain text, - with machine-readable time values, - compatible with ``Audacity``:: - - 0.000 1.234 f001 - 1.234 5.678 f002 - 5.678 7.890 f003 - - * Multiple levels: no - * Multiple lines: no - - .. versionadded:: 1.2.0 - """ - - TTML = "ttml" - """ - TTML caption/subtitle format - (it might have multiple lines per fragment):: - - - - -
-

- First fragment text -

-

- Second fragment text
Second line of second fragment -

-

- Third fragment text
Second line of third fragment -

-
- -
- - * Multiple levels: yes (output only) - * Multiple lines: yes - """ - - TXT = "txt" - """ - Alias for TXTM. - """ - - TXTH = "txth" - """ - Space-separated plain text - with human-readable time values:: - - f001 00:00:00.000 00:00:01.234 "First fragment text" - f002 00:00:01.234 00:00:05.678 "Second fragment text" - f003 00:00:05.678 00:00:07.890 "Third fragment text" - - * Multiple levels: no - * Multiple lines: no - - Please note that the text is assumed to be contained - in double quotes ("..."), - which are stripped when reading from file, - and added back when writing to file. - - .. versionadded:: 1.0.4 - """ - - TXTM = "txtm" - """ - Space-separated plain text, - with machine-readable time values, - compatible with ``SonicVisualizer``:: - - f001 0.000 1.234 "First fragment text" - f002 1.234 5.678 "Second fragment text" - f003 5.678 7.890 "Third fragment text" - - * Multiple levels: no - * Multiple lines: no - - Please note that the text is assumed to be contained - in double quotes ("..."), - which are stripped when reading from file, - and added back when writing to file. - - .. versionadded:: 1.2.0 - """ - - VTT = "vtt" - """ - WebVTT caption/subtitle format:: - - WEBVTT - - 1 - 00:00:00.000 --> 00:00:01.234 - First fragment text - - 2 - 00:00:01.234 --> 00:00:05.678 - Second fragment text - Second line of second fragment - - 3 - 00:00:05.678 --> 00:00:07.890 - Third fragment text - Second line of third fragment - - * Multiple levels: no - * Multiple lines: yes - """ - - XML = "xml" - """ - XML:: - - - - - First fragment text - - - - Second fragment text - Second line of second fragment - - - - Third fragment text - Second line of third fragment - - - - - * Multiple levels: yes (output only) - * Multiple lines: yes - """ - - XML_LEGACY = "xml_legacy" - """ - XML, legacy format:: - - - - - f001 - 0.000 - 1.234 - - - f002 - 1.234 - 5.678 - - - f003 - 5.678 - 7.890 - - - - * Multiple levels: no - * Multiple lines: no - - Deprecated, it will be removed in v2.0.0. - Use XML instead. - - .. deprecated:: 1.2.0 - """ - - ALLOWED_VALUES = [ - AUD, - AUDH, - AUDM, - CSV, - CSVH, - CSVM, - DFXP, - EAF, - JSON, - RBSE, - SBV, - SMIL, - SMILH, - SMILM, - SRT, - SSV, - SSVH, - SSVM, - SUB, - TAB, - TEXTGRID, - TEXTGRID_SHORT, - TSV, - TSVH, - TSVM, - TTML, - TXT, - TXTH, - TXTM, - VTT, - XML, - XML_LEGACY - ] - """ List of all the allowed values """ - - -class SyncMap(Loggable): - """ - A synchronization map, that is, a tree of - :class:`~aeneas.syncmap.SyncMapFragment` - objects. - """ - - FINETUNEAS_REPLACEMENTS = [ - ["", "", "AENEAS_REPLACE_COMMENT_END -->"], - [""], - ["AENEAS_REPLACE_UNCOMMENT_END -->", ""], - ["// AENEAS_REPLACE_SHOW_ID", "showID = true;"], - ["// AENEAS_REPLACE_ALIGN_TEXT", "alignText = \"left\""], - ["// AENEAS_REPLACE_CONTINUOUS_PLAY", "continuousPlay = true;"], - ["// AENEAS_REPLACE_TIME_FORMAT", "timeFormatHHMMSSmmm = true;"], - ] - FINETUNEAS_REPLACE_AUDIOFILEPATH = "// AENEAS_REPLACE_AUDIOFILEPATH" - FINETUNEAS_REPLACE_FRAGMENTS = "// AENEAS_REPLACE_FRAGMENTS" - FINETUNEAS_REPLACE_OUTPUT_FORMAT = "// AENEAS_REPLACE_OUTPUT_FORMAT" - FINETUNEAS_REPLACE_SMIL_AUDIOREF = "// AENEAS_REPLACE_SMIL_AUDIOREF" - FINETUNEAS_REPLACE_SMIL_PAGEREF = "// AENEAS_REPLACE_SMIL_PAGEREF" - FINETUNEAS_ALLOWED_FORMATS = [ - "csv", - "json", - "smil", - "srt", - "ssv", - "ttml", - "tsv", - "txt", - "vtt", - "xml" - ] - FINETUNEAS_PATH = "res/finetuneas.html" - - TAG = u"SyncMap" - - def __init__(self, rconf=None, logger=None): - super(SyncMap, self).__init__(rconf=rconf, logger=logger) - self.fragments_tree = Tree() - - def __len__(self): - return len(self.fragments) - - def __unicode__(self): - return u"\n".join([f.__unicode__() for f in self.fragments]) - - def __str__(self): - return gf.safe_str(self.__unicode__()) - - @property - def fragments_tree(self): - """ - Return the current tree of fragments. - - :rtype: :class:`~aeneas.tree.Tree` - """ - return self.__fragments_tree - - @fragments_tree.setter - def fragments_tree(self, fragments_tree): - self.__fragments_tree = fragments_tree - - @property - def is_single_level(self): - """ - Return ``True`` if the sync map - has only one level, that is, - if it is a list of fragments - rather than a hierarchical tree. - - :rtype: bool - """ - return self.fragments_tree.height <= 2 - - @property - def fragments(self): - """ - The current list of sync map fragments - which are the children of the root node - of the sync map tree. - - :rtype: list of :class:`~aeneas.syncmap.SyncMapFragment` - """ - return self.fragments_tree.vchildren_not_empty - - @property - def json_string(self): - """ - Return a JSON representation of the sync map. - - :rtype: string - - .. versionadded:: 1.3.1 - """ - def visit_children(node): - """ Recursively visit the fragments_tree """ - output_fragments = [] - for child in node.children_not_empty: - fragment = child.value - text = fragment.text_fragment - output_fragments.append({ - "id": text.identifier, - "language": text.language, - "lines": text.lines, - "begin": gf.time_to_ssmmm(fragment.begin), - "end": gf.time_to_ssmmm(fragment.end), - "children": visit_children(child) - }) - return output_fragments - output_fragments = visit_children(self.fragments_tree) - return gf.safe_unicode( - json.dumps({"fragments": output_fragments}, indent=1, sort_keys=True) - ) - - def add_fragment(self, fragment, as_last=True): - """ - Add the given sync map fragment, - as the first or last child of the root node - of the sync map tree. - - :param fragment: the sync map fragment to be added - :type fragment: :class:`~aeneas.syncmap.SyncMapFragment` - :param bool as_last: if ``True``, append fragment; otherwise prepend it - :raises: TypeError: if ``fragment`` is ``None`` or - it is not an instance of :class:`~aeneas.syncmap.SyncMapFragment` - """ - if not isinstance(fragment, SyncMapFragment): - self.log_exc(u"fragment is not an instance of SyncMapFragment", None, True, TypeError) - self.fragments_tree.add_child(Tree(value=fragment), as_last=as_last) - - def clear(self): - """ - Clear the sync map, removing all the current fragments. - """ - self.log(u"Clearing sync map") - self.fragments_tree = Tree() - - def output_html_for_tuning( - self, - audio_file_path, - output_file_path, - parameters=None - ): - """ - Output an HTML file for fine tuning the sync map manually. - - :param string audio_file_path: the path to the associated audio file - :param string output_file_path: the path to the output file to write - :param dict parameters: additional parameters - - .. versionadded:: 1.3.1 - """ - if not gf.file_can_be_written(output_file_path): - self.log_exc(u"Cannot output HTML file '%s'. Wrong permissions?" % (output_file_path), None, True, OSError) - if parameters is None: - parameters = {} - audio_file_path_absolute = gf.fix_slash(os.path.abspath(audio_file_path)) - template_path_absolute = gf.absolute_path(self.FINETUNEAS_PATH, __file__) - with io.open(template_path_absolute, "r", encoding="utf-8") as file_obj: - template = file_obj.read() - for repl in self.FINETUNEAS_REPLACEMENTS: - template = template.replace(repl[0], repl[1]) - template = template.replace( - self.FINETUNEAS_REPLACE_AUDIOFILEPATH, - u"audioFilePath = \"file://%s\";" % audio_file_path_absolute - ) - template = template.replace( - self.FINETUNEAS_REPLACE_FRAGMENTS, - u"fragments = (%s).fragments;" % self.json_string - ) - if gc.PPN_TASK_OS_FILE_FORMAT in parameters: - output_format = parameters[gc.PPN_TASK_OS_FILE_FORMAT] - if output_format in self.FINETUNEAS_ALLOWED_FORMATS: - template = template.replace( - self.FINETUNEAS_REPLACE_OUTPUT_FORMAT, - u"outputFormat = \"%s\";" % output_format - ) - if output_format == "smil": - for key, placeholder, replacement in [ - ( - gc.PPN_TASK_OS_FILE_SMIL_AUDIO_REF, - self.FINETUNEAS_REPLACE_SMIL_AUDIOREF, - "audioref = \"%s\";" - ), - ( - gc.PPN_TASK_OS_FILE_SMIL_PAGE_REF, - self.FINETUNEAS_REPLACE_SMIL_PAGEREF, - "pageref = \"%s\";" - ), - ]: - if key in parameters: - template = template.replace( - placeholder, - replacement % parameters[key] - ) - with io.open(output_file_path, "w", encoding="utf-8") as file_obj: - file_obj.write(template) - - def read(self, sync_map_format, input_file_path, parameters=None): - """ - Read sync map fragments from the given file in the specified format, - and add them the current (this) sync map. - - Return ``True`` if the call succeeded, - ``False`` if an error occurred. - - :param sync_map_format: the format of the sync map - :type sync_map_format: :class:`~aeneas.syncmap.SyncMapFormat` - :param string input_file_path: the path to the input file to read - :param dict parameters: additional parameters (e.g., for ``SMIL`` input) - :raises: ValueError: if ``sync_map_format`` is ``None`` or it is not an allowed value - :raises: OSError: if ``input_file_path`` does not exist - """ - map_read_function = { - SyncMapFormat.AUD: partial(self._read_aud, parse_time=gf.time_from_ssmmm), - SyncMapFormat.AUDH: partial(self._read_aud, parse_time=gf.time_from_hhmmssmmm), - SyncMapFormat.AUDM: partial(self._read_aud, parse_time=gf.time_from_ssmmm), - SyncMapFormat.CSV: partial(self._read_csv, parse_time=gf.time_from_ssmmm), - SyncMapFormat.CSVH: partial(self._read_csv, parse_time=gf.time_from_hhmmssmmm), - SyncMapFormat.CSVM: partial(self._read_csv, parse_time=gf.time_from_ssmmm), - SyncMapFormat.DFXP: self._read_ttml, - SyncMapFormat.EAF: self._read_eaf, - SyncMapFormat.JSON: self._read_json, - SyncMapFormat.RBSE: self._read_rbse, - SyncMapFormat.SBV: partial(self._read_sub, use_newline=True), - SyncMapFormat.SMIL: self._read_smil, - SyncMapFormat.SMILH: self._read_smil, - SyncMapFormat.SMILM: self._read_smil, - SyncMapFormat.SRT: self._read_srt, - SyncMapFormat.SSV: partial(self._read_ssv, parse_time=gf.time_from_ssmmm), - SyncMapFormat.SSVH: partial(self._read_ssv, parse_time=gf.time_from_hhmmssmmm), - SyncMapFormat.SSVM: partial(self._read_ssv, parse_time=gf.time_from_ssmmm), - SyncMapFormat.SUB: partial(self._read_sub, use_newline=False), - SyncMapFormat.TAB: partial(self._read_tsv, parse_time=gf.time_from_ssmmm), - SyncMapFormat.TEXTGRID: self._read_textgrid, - SyncMapFormat.TEXTGRID_SHORT: self._read_textgrid, - SyncMapFormat.TSV: partial(self._read_tsv, parse_time=gf.time_from_ssmmm), - SyncMapFormat.TSVH: partial(self._read_tsv, parse_time=gf.time_from_hhmmssmmm), - SyncMapFormat.TSVM: partial(self._read_tsv, parse_time=gf.time_from_ssmmm), - SyncMapFormat.TTML: self._read_ttml, - SyncMapFormat.TXT: partial(self._read_txt, parse_time=gf.time_from_ssmmm), - SyncMapFormat.TXTH: partial(self._read_txt, parse_time=gf.time_from_hhmmssmmm), - SyncMapFormat.TXTM: partial(self._read_txt, parse_time=gf.time_from_ssmmm), - SyncMapFormat.VTT: self._read_vtt, - SyncMapFormat.XML: self._read_xml, - SyncMapFormat.XML_LEGACY: self._read_xml_legacy, - } - if sync_map_format is None: - self.log_exc(u"Sync map format is None", None, True, ValueError) - if sync_map_format not in map_read_function: - self.log_exc(u"Sync map format '%s' is not allowed" % (sync_map_format), None, True, ValueError) - if not gf.file_can_be_read(input_file_path): - self.log_exc(u"Cannot read sync map file '%s'. Wrong permissions?" % (input_file_path), None, True, OSError) - - self.log([u"Input format: '%s'", sync_map_format]) - self.log([u"Input path: '%s'", input_file_path]) - self.log([u"Input parameters: '%s'", parameters]) - - # open file for reading - self.log(u"Opening input file") - with io.open(input_file_path, "r", encoding="utf-8") as input_file: - map_read_function[sync_map_format](input_file) - - # overwrite language if requested - language = gf.safe_get(parameters, gc.PPN_SYNCMAP_LANGUAGE, None) - if language is not None: - self.log([u"Overwriting language to '%s'", language]) - for fragment in self.fragments: - fragment.text_fragment.language = language - - def write(self, sync_map_format, output_file_path, parameters=None): - """ - Write the current sync map to file in the requested format. - - Return ``True`` if the call succeeded, - ``False`` if an error occurred. - - :param sync_map_format: the format of the sync map - :type sync_map_format: :class:`~aeneas.syncmap.SyncMapFormat` - :param string output_file_path: the path to the output file to write - :param dict parameters: additional parameters (e.g., for ``SMIL`` output) - :raises: ValueError: if ``sync_map_format`` is ``None`` or it is not an allowed value - :raises: TypeError: if a required parameter is missing - :raises: OSError: if ``output_file_path`` cannot be written - """ - map_write_function = { - SyncMapFormat.AUD: partial(self._write_aud, format_time=gf.time_to_ssmmm), - SyncMapFormat.AUDH: partial(self._write_aud, format_time=gf.time_to_hhmmssmmm), - SyncMapFormat.AUDM: partial(self._write_aud, format_time=gf.time_to_ssmmm), - SyncMapFormat.CSV: partial(self._write_csv, format_time=gf.time_to_ssmmm), - SyncMapFormat.CSVH: partial(self._write_csv, format_time=gf.time_to_hhmmssmmm), - SyncMapFormat.CSVM: partial(self._write_csv, format_time=gf.time_to_ssmmm), - SyncMapFormat.DFXP: partial(self._write_ttml, parameters=parameters), - SyncMapFormat.EAF: partial(self._write_eaf, parameters=parameters), - SyncMapFormat.JSON: self._write_json, - SyncMapFormat.RBSE: self._write_rbse, - SyncMapFormat.SBV: partial(self._write_sub, use_newline=True), - SyncMapFormat.SMIL: partial(self._write_smil, format_time=gf.time_to_hhmmssmmm, parameters=parameters), - SyncMapFormat.SMILH: partial(self._write_smil, format_time=gf.time_to_hhmmssmmm, parameters=parameters), - SyncMapFormat.SMILM: partial(self._write_smil, format_time=gf.time_to_ssmmm, parameters=parameters), - SyncMapFormat.SRT: self._write_srt, - SyncMapFormat.SSV: partial(self._write_ssv, format_time=gf.time_to_ssmmm), - SyncMapFormat.SSVH: partial(self._write_ssv, format_time=gf.time_to_hhmmssmmm), - SyncMapFormat.SSVM: partial(self._write_ssv, format_time=gf.time_to_ssmmm), - SyncMapFormat.SUB: partial(self._write_sub, use_newline=False), - SyncMapFormat.TAB: partial(self._write_tsv, format_time=gf.time_to_ssmmm), - SyncMapFormat.TEXTGRID: partial(self._write_textgrid, full=True), - SyncMapFormat.TEXTGRID_SHORT: partial(self._write_textgrid, full=False), - SyncMapFormat.TSV: partial(self._write_tsv, format_time=gf.time_to_ssmmm), - SyncMapFormat.TSVH: partial(self._write_tsv, format_time=gf.time_to_hhmmssmmm), - SyncMapFormat.TSVM: partial(self._write_tsv, format_time=gf.time_to_ssmmm), - SyncMapFormat.TTML: partial(self._write_ttml, parameters=parameters), - SyncMapFormat.TXT: partial(self._write_txt, format_time=gf.time_to_ssmmm), - SyncMapFormat.TXTH: partial(self._write_txt, format_time=gf.time_to_hhmmssmmm), - SyncMapFormat.TXTM: partial(self._write_txt, format_time=gf.time_to_ssmmm), - SyncMapFormat.VTT: self._write_vtt, - SyncMapFormat.XML: self._write_xml, - SyncMapFormat.XML_LEGACY: self._write_xml_legacy, - } - if sync_map_format is None: - self.log_exc(u"Sync map format is None", None, True, ValueError) - if sync_map_format not in map_write_function: - self.log_exc(u"Sync map format '%s' is not allowed" % (sync_map_format), None, True, ValueError) - if not gf.file_can_be_written(output_file_path): - self.log_exc(u"Cannot write sync map file '%s'. Wrong permissions?" % (output_file_path), None, True, OSError) - - self.log([u"Output format: '%s'", sync_map_format]) - self.log([u"Output path: '%s'", output_file_path]) - self.log([u"Output parameters: '%s'", parameters]) - - # create dir hierarchy, if needed - gf.ensure_parent_directory(output_file_path) - - # check required parameters - if sync_map_format in [ - SyncMapFormat.SMIL, - SyncMapFormat.SMILH, - SyncMapFormat.SMILM - ]: - for key in [ - gc.PPN_TASK_OS_FILE_SMIL_PAGE_REF, - gc.PPN_TASK_OS_FILE_SMIL_AUDIO_REF - ]: - if gf.safe_get(parameters, key, None) is None: - self.log_exc(u"Parameter %s must be specified for format %s" % (key, sync_map_format), None, True, SyncMapMissingParameterError) - - # open file for writing - self.log(u"Opening output file") - with io.open(output_file_path, "w", encoding="utf-8") as output_file: - map_write_function[sync_map_format](output_file) - - def _read_aud(self, input_file, parse_time): - """ Read from AUD file """ - for identifier_index, line in enumerate(input_file.readlines(), 1): - split = line.strip().split("\t") - self.add_fragment( - SyncMapFragment( - text_fragment=TextFragment( - identifier=(u"f%06d" % (identifier_index)), - lines=[split[2]] - ), - begin=parse_time(split[0]), - end=parse_time(split[1]) - ) - ) - - def _write_aud(self, output_file, format_time): - """ Write to AUD file """ - msg = [] - for fragment in self.fragments: - msg.append( - u"%s\t%s\t%s" % ( - format_time(fragment.begin), - format_time(fragment.end), - u" ".join(fragment.text_fragment.lines) - ) - ) - output_file.write(u"\n".join(msg)) - - def _read_csv(self, input_file, parse_time): - """ Read from CSV file """ - for line in input_file.readlines(): - split = line.strip().split(u",") - self.add_fragment( - SyncMapFragment( - text_fragment=TextFragment( - identifier=split[0], - lines=[(u",".join(split[3:]))[1:-1]] - ), - begin=parse_time(split[1]), - end=parse_time(split[2]) - ) - ) - - def _write_csv(self, output_file, format_time): - """ Write to CSV file """ - msg = [] - for fragment in self.fragments: - msg.append( - u"%s,%s,%s,\"%s\"" % ( - fragment.text_fragment.identifier, - format_time(fragment.begin), - format_time(fragment.end), - fragment.text_fragment.text - ) - ) - output_file.write(u"\n".join(msg)) - - def _read_eaf(self, input_file): - """ Read from EAF file """ - from lxml import etree - # namespaces - xsi = "http://www.w3.org/2001/XMLSchema-instance" - ns_map = {"xsi": xsi} - # get root - root = etree.fromstring(gf.safe_bytes(input_file.read())) - # get time slots - time_slots = dict() - for ts in root.iter("TIME_SLOT"): - time_slots[ts.get("TIME_SLOT_ID")] = gf.time_from_ssmmm(ts.get("TIME_VALUE")) / 1000 - # parse annotations - for alignable in root.iter("ALIGNABLE_ANNOTATION"): - identifier = gf.safe_unicode(alignable.get("ANNOTATION_ID")) - begin = time_slots[alignable.get("TIME_SLOT_REF1")] - end = time_slots[alignable.get("TIME_SLOT_REF2")] - lines = [] - for value in alignable.iter("ANNOTATION_VALUE"): - lines.append(gf.safe_unicode(value.text)) - self.add_fragment( - SyncMapFragment( - text_fragment=TextFragment( - identifier=identifier, - lines=lines - ), - begin=begin, - end=end - ) - ) - - def _write_eaf(self, output_file, parameters=None): - """ Write to EAF file """ - from lxml import etree - # namespaces - xsi = "http://www.w3.org/2001/XMLSchema-instance" - ns_map = {"xsi": xsi} - # build doc - doc = etree.Element("ANNOTATION_DOCUMENT", nsmap=ns_map) - doc.attrib["{%s}noNamespaceSchemaLocation" % xsi] = "http://www.mpi.nl/tools/elan/EAFv2.8.xsd" - doc.attrib["AUTHOR"] = "aeneas" - doc.attrib["DATE"] = gf.datetime_string(time_zone=True) - doc.attrib["FORMAT"] = "2.8" - doc.attrib["VERSION"] = "2.8" - # header - header = etree.SubElement(doc, "HEADER") - header.attrib["MEDIA_FILE"] = "" - header.attrib["TIME_UNITS"] = "milliseconds" - if (parameters is not None) and (gc.PPN_TASK_OS_FILE_EAF_AUDIO_REF in parameters) and (parameters[gc.PPN_TASK_OS_FILE_EAF_AUDIO_REF] is not None): - media = etree.SubElement(header, "MEDIA_DESCRIPTOR") - media.attrib["MEDIA_URL"] = parameters[gc.PPN_TASK_OS_FILE_EAF_AUDIO_REF] - media.attrib["MIME_TYPE"] = gf.mimetype_from_path(parameters[gc.PPN_TASK_OS_FILE_EAF_AUDIO_REF]) - # time order - time_order = etree.SubElement(doc, "TIME_ORDER") - # tier - tier = etree.SubElement(doc, "TIER") - tier.attrib["LINGUISTIC_TYPE_REF"] = "utterance" - tier.attrib["TIER_ID"] = "tier1" - for i, fragment in enumerate(self.fragments, 1): - # time slots - begin_id = "ts%06db" % i - end_id = "ts%06de" % i - slot = etree.SubElement(time_order, "TIME_SLOT") - slot.attrib["TIME_SLOT_ID"] = begin_id - slot.attrib["TIME_VALUE"] = "%d" % (fragment.begin * 1000) - slot = etree.SubElement(time_order, "TIME_SLOT") - slot.attrib["TIME_SLOT_ID"] = end_id - slot.attrib["TIME_VALUE"] = "%d" % (fragment.end * 1000) - # annotation - annotation = etree.SubElement(tier, "ANNOTATION") - alignable = etree.SubElement(annotation, "ALIGNABLE_ANNOTATION") - alignable.attrib["ANNOTATION_ID"] = fragment.text_fragment.identifier - alignable.attrib["TIME_SLOT_REF1"] = begin_id - alignable.attrib["TIME_SLOT_REF2"] = end_id - value = etree.SubElement(alignable, "ANNOTATION_VALUE") - value.text = u" ".join(fragment.text_fragment.lines) - # linguistic type - ling = etree.SubElement(doc, "LINGUISTIC_TYPE") - ling.attrib["LINGUISTIC_TYPE_ID"] = "utterance" - ling.attrib["TIME_ALIGNABLE"] = "true" - # write tree - self._write_tree_to_file(doc, output_file, xml_declaration=True) - - def _read_json(self, input_file): - """ Read from JSON file """ - contents_dict = json.loads(input_file.read()) - for fragment in contents_dict["fragments"]: - self.add_fragment( - SyncMapFragment( - text_fragment=TextFragment( - identifier=fragment["id"], - language=fragment["language"], - lines=fragment["lines"] - ), - begin=gf.time_from_ssmmm(fragment["begin"]), - end=gf.time_from_ssmmm(fragment["end"]) - ) - ) - - def _write_json(self, output_file): - """ Write to JSON file """ - output_file.write(self.json_string) - - def _read_rbse(self, input_file): - """ Read from RBSE file """ - contents_dict = json.loads(input_file.read()) - for fragment in contents_dict["smil_data"]: - self.add_fragment( - SyncMapFragment( - text_fragment=TextFragment( - identifier=fragment["id"], - lines=[u""] # TODO read text from additional text_file? - ), - begin=gf.time_from_ssmmm(fragment["begin"]), - end=gf.time_from_ssmmm(fragment["end"]) - ) - ) - - def _write_rbse(self, output_file): - """ Write to RBSE file """ - smil_data = [] - smil_ids = [] - for fragment in self.fragments: - text = fragment.text_fragment - smil_data.append({ - "id": text.identifier, - "begin": gf.time_to_ssmmm(fragment.begin), - "end": gf.time_to_ssmmm(fragment.end) - }) - smil_ids.append(text.identifier) - output_file.write( - gf.safe_unicode( - json.dumps( - obj={ - "smil_ids": smil_ids, - "smil_data": smil_data - }, - indent=1, - sort_keys=True - ) - ) - ) - - def _read_smil(self, input_file): - """ - Read from SMIL file. - - Limitations: - 1. parses only elements, in order - 2. timings must have hh:mm:ss.mmm or ss.mmm format (autodetected) - 3. both clipBegin and clipEnd attributes of