Changelog¶
2.1.0 (2020-01-01)¶
Features¶
The
gtts
moduleAdded the ability to customize the Google Translate URL hostname. This is useful when
google.com
might be blocked within a network but a local or different Google host (e.g.google.cn
) is not (#143, #203):New
gTTS()
parametertld
to specify the top-level domain to use for the Google hostname, i.ehttps://translate.google.<tld>
(default:com
).Languages are also now fetched using the same customized hostname.
Pre-generated TTS API request URLs can now be obtained instead of writing an
mp3
file to disk (for example to be used in an external program):New
get_urls()
method returns the list of URLs generated bygTTS
, which can be used in lieu ofwrite_to_fp()
orsave()
.
The
gtts-cli
command-line toolOther
Added Python 3.8 support (#204)
2.0.4 (2019-08-29)¶
2.0.3 (2018-12-15)¶
2.0.2 (2018-12-09)¶
2.0.1 (2018-06-20)¶
2.0.0 (2018-04-30)¶
(#108)
Features¶
The
gtts
moduleNew 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_check
to disable language checking.gTTS()
now delegates thetext
tokenizing to the API request methods (i.e.write_to_fp()
,save()
), allowinggTTS
instances to be modified/reusedRewrote tokenizing and added pre-processing (see below)
New
gTTS()
parameterspre_processor_funcs
andtokenizer_func
to configure pre-processing and tokenizing (or use a 3rd party tokenizer)Error handling:
Added new exception
gTTSError
raised 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 raisegTTSError
on gtts_token errorgTTS.write_to_fp()
raisesTypeError
whenfp
is not a file-like object or one that doesn’t take bytesgTTS()
raisesValueError
on unsupported languages (andlang_check
isTrue
)More fine-grained error handling throughout (e.g. request failed vs. request successful with a bad response)
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
,PreProcessorRegex
andPreProcessorSub
classes to make writing regex-powered text pre-processors and tokenizer cases easierPre-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:
The
gtts-cli
command-line toolRewrote cli as first-class citizen module (
gtts.cli
), powered by ClickWindows support using setuptool’s entry_points
Better support for Unicode I/O in Python 2
All arguments are now pre-validated
New
--nocheck
flag to skip language pre-checkingNew
--all
flag to list all available languagesEither the
--file
option or the<text>
argument can be set to “-” to read fromstdin
The
--debug
flag uses logging and doesn’t pollutestdout
anymore
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-cli
Unicode errors in Python 2.7 (famous last words) (#78, #93, #96)
Deprecations and Removals¶
Dropped Python 3.3 support
Removed
debug
parameter ofgTTS
(in favour of logger)gtts-cli
: Changed long option name of-o
to--output
instead of--destination
gTTS()
will raise aValueError
rather than anAssertionError
on 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)