Changelog¶
2.0.1 (2018-06-20)¶
2.0.0 (2018-04-30)¶
(#108)
Features¶
- The
gttsmodule- New logger (“gtts”) replaces all occurrences of
print() - Languages list is now obtained automatically (
gtts.lang) (#91, #94, #106) - Added a curated list of language sub-tags that have been observed to provide different dialects or accents (e.g. “en-gb”, “fr-ca”)
- New
gTTS()parameterlang_checkto disable language checking. gTTS()now delegates thetexttokenizing to the API request methods (i.e.write_to_fp(),save()), allowinggTTSinstances to be modified/reused- Rewrote tokenizing and added pre-processing (see below)
- New
gTTS()parameterspre_processor_funcsandtokenizer_functo configure pre-processing and tokenizing (or use a 3rd party tokenizer) - Error handling:
- Added new exception
gTTSErrorraised on API request errors. It attempts to guess what went wrong based on known information and observed behaviour (#60, #106) gTTS.write_to_fp()andgTTS.save()also raisegTTSErroron gtts_token errorgTTS.write_to_fp()raisesTypeErrorwhenfpis not a file-like object or one that doesn’t take bytesgTTS()raisesValueErroron unsupported languages (andlang_checkisTrue)- More fine-grained error handling throughout (e.g. request failed vs. request successful with a bad response)
- Added new exception
- New logger (“gtts”) replaces all occurrences of
- Tokenizer (and new pre-processors):
- Rewrote and greatly expanded tokenizer (
gtts.tokenizer) - Smarter token ‘cleaning’ that will remove tokens that only contain characters that can’t be spoken (i.e. punctuation and whitespace)
- Decoupled token minimizing from tokenizing, making the latter usable in other contexts
- New flexible speech-centric text pre-processing
- New flexible full-featured regex-based tokenizer
(
gtts.tokenizer.core.Tokenizer) - New
RegexBuilder,PreProcessorRegexandPreProcessorSubclasses to make writing regex-powered text pre-processors and tokenizer cases easier - Pre-processors:
- Re-form words cut by end-of-line hyphens
- Remove periods after a (customizable) list of known abbreviations (e.g. “jr”, “sr”, “dr”) that can be spoken the same without a period
- Perform speech corrections by doing word-for-word replacements from a (customizable) list of tuples
- Tokenizing:
- Rewrote and greatly expanded tokenizer (
- The
gtts-clicommand-line tool- Rewrote cli as first-class citizen module (
gtts.cli), powered by Click - Windows support using setuptool’s entry_points
- Better support for Unicode I/O in Python 2
- All arguments are now pre-validated
- New
--nocheckflag to skip language pre-checking - New
--allflag to list all available languages - Either the
--fileoption or the<text>argument can be set to “-” to read fromstdin - The
--debugflag uses logging and doesn’t pollutestdoutanymore
- Rewrote cli as first-class citizen module (
Bugfixes¶
_minimize(): Fixed an infinite recursion loop that would occur when a token started with the miminizing delimiter (i.e. a space) (#86)_minimize(): Handle the case where a token of more than 100 characters did not contain a space (e.g. in Chinese).- Fixed an issue that fused multiline text together if the total number of characters was less than 100
- Fixed
gtts-cliUnicode errors in Python 2.7 (famous last words) (#78, #93, #96)
Deprecations and Removals¶
- Dropped Python 3.3 support
- Removed
debugparameter ofgTTS(in favour of logger) gtts-cli: Changed long option name of-oto--outputinstead of--destinationgTTS()will raise aValueErrorrather than anAssertionErroron unsupported language
Improved Documentation¶
- Rewrote all documentation files as reStructuredText
- Comprehensive documentation writen for Sphinx, published to http://gtts.readthedocs.io
- Changelog built with towncrier
1.2.1 (2017-08-02)¶
1.1.6 (2016-07-20)¶
1.1.5 (2016-05-13)¶
1.1.4 (2016-02-22)¶
Features¶
- Spun-off token calculation to gTTS-Token (#23, #29)