- Support srt format;
- Support using srt as reference;
- Support using video as reference (via ffmpeg);
- Support writing to stdout or file (read from stdin not yet supported; can only read from file);
- Misc bugfixes;
- Proper logging;
- Proper version handling;
- Add Chinese to the list of encodings that can be inferred;
- Make srt parsing more robust;
- Get rid of auditok (GPLv3, was hurting alignment algorithm);
- Change to alignment algo: don't penalize matching video non-speech with subtitle speech;
- Developer note: change progress-only to vlc-mode and remove from help docs;
- Allow reading input srt from stdin;
- Allow specifying encodings for reference, input, and output srt;
- Use the same encoding for both input srt and output srt by default;
- Developer note: using sklearn-style data pipelines now;
- Minor change to subtitle speech extraction;
- Add six to requirements.txt;
- Set default encoding to utf8 to ensure non ascii filenames handled properly;
- Clamp subtitles to maximum duration (default 10);
- Fix argument parsing regression;
- Add utf-16 to list of encodings to try for inference purposes;
- Allow user to specify start time (in seconds) for processing;
- Quck and dirty fix to properly handle timestamp ms fields with >3 digits;
- Specify utf-8 encoding at top of file for backcompat with Python2;
- Quick and dirty fix to recover without progress info if ffmpeg.probe raises;
- Clear O_NONBLOCK flag on stdout stream in case it is set;
- Bump min required scikit-learn to 0.20.4;
- Revert changes from 0.2.12 (caused regression on Windows);
- Revert changes from 0.2.9 now that srt parses weird timestamps robustly;
- Try to correct for framerate differences by picking best framerate ratio;
- Better detection of text file encodings;
- ASS / SSA functionality (but currently untested);
- Allow serialize speech with --serialize-speech flag;
- Convenient --make-test-case flag to create test cases when filing sync-related bugs;
- Use utf-8 as default output encoding (instead of using same encoding as input);
- More robust test framework (integration tests!);
- Fix bug when handling ass/ssa input, this format should work now;
- Add ability to merge synced and reference subs into bilingual subs when reference is srt;
- Hotfix for test archive creation bug;
- Attempt speech extraction from subtitle tracks embedded in video first before using VAD;
- Fix corner case bug that occurred when multiple sync attempts were scored the same;
- Fix PyPI issues;
- Remove dependency on scikit-learn;
- Implement PyInstaller / Gooey build process for graphical application on MacOS and Windows;
- Add --reference-stream option for selecting the stream / track from the video reference to use for speech detection;
- Fix Python 2 compatibility bug;
- Fix regression where stdout not used for default output;
- Add ability to specify path to ffmpeg / ffprobe binaries;
- Add ability to overwrite the input / unsynced srt with the --overwrite-input flag;
- Use rich formatting for Python >= 3.6;
- Use versioneer to manage versions;
- Allow MicroDVD input format;
- Use output extension to determine output format;
- Bugfix for writing subs to stdout;
- Misc bugfixes and stability improvements;
- Use webrtcvad-wheels on Windows to eliminate dependency on compiler;
- Make default offset seconds 60 and enforce during alignment as opposed to throwing away alignments with > max_offset_seconds;
- Add experimental section for using golden section search to find framerate ratio;
- Restore ability to read stdin and write stdout after buggy permissions check;
- Exceptions that occur during syncing were mistakenly suppressed; this is now fixed;
- Reduce max_offset_seconds (improves sync in most cases);
- Filter out metadata in subtitles when extracting speech;
- Add experimental --golden-section-search over framerate ratio (off by default);
- Try to improve sync by inferring framerate ratio based on relative duration of synced vs unsynced;
- Misc sync improvements:
- Have webrtcvad use '0' as the non speech label instead of 0.5;
- Allow the vad non speech label to be specified via the --non-speech-label command line parameter;
- Don't try to infer framerate ratio based on length between first and last speech frames for non-subtitle speech detection;