diff --git a/chinese/tts.py b/chinese/tts.py index 4116244..9f12a40 100644 --- a/chinese/tts.py +++ b/chinese/tts.py @@ -6,8 +6,7 @@ # Inspiration: Tymon Warecki # License: GNU AGPL, version 3 or later; http://www.gnu.org/copyleft/agpl.html -from .aws import AWS4Signer - +import ssl from os.path import basename, exists, join from re import sub from urllib.parse import urlencode @@ -18,6 +17,8 @@ from gtts import gTTS from gtts.tts import gTTSError +from .aws import AWS4Signer + requests.packages.urllib3.disable_warnings() @@ -64,19 +65,23 @@ def get_baidu(self): 'lan': self.lang, 'ie': 'UTF-8', 'text': self.text.encode('utf-8'), + 'spd': 2, + 'source': 'web', } - - - url = 'https://fanyi.baidu.com/gettts?lan=zh&text=' + urlencode(query) + '&spd=2&source=web' + + url = 'https://fanyi.baidu.com/gettts?' + urlencode(query) request = Request(url) request.add_header('User-Agent', 'Mozilla/5.0') - response = urlopen(request, timeout=5) - if response.code != 200: - raise ValueError('{}: {}'.format(response.code, response.msg)) + context = ssl.create_default_context() + context.set_alpn_protocols(['http/1.1']) - with open(self.path, 'wb') as audio: - audio.write(response.read()) + with urlopen(request, context=context, timeout=5) as response, open(self.path, 'wb') as audio: + if response.code != 200: + raise ValueError('{}: {}'.format(response.code, response.msg)) + + bytes_response = response.read() + audio.write(bytes_response) def get_aws(self): signer = AWS4Signer(service='polly')