cloudlanguagetools 11.3.1__tar.gz → 11.3.3__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. {cloudlanguagetools-11.3.1 → cloudlanguagetools-11.3.3}/PKG-INFO +2 -1
  2. {cloudlanguagetools-11.3.1 → cloudlanguagetools-11.3.3}/cloudlanguagetools/forvo.py +12 -4
  3. {cloudlanguagetools-11.3.1 → cloudlanguagetools-11.3.3}/cloudlanguagetools/google.py +40 -31
  4. {cloudlanguagetools-11.3.1 → cloudlanguagetools-11.3.3}/cloudlanguagetools.egg-info/PKG-INFO +2 -1
  5. {cloudlanguagetools-11.3.1 → cloudlanguagetools-11.3.3}/cloudlanguagetools.egg-info/SOURCES.txt +9 -1
  6. {cloudlanguagetools-11.3.1 → cloudlanguagetools-11.3.3}/setup.py +1 -1
  7. cloudlanguagetools-11.3.3/tests/test_audio.py +611 -0
  8. cloudlanguagetools-11.3.3/tests/test_breakdown.py +377 -0
  9. cloudlanguagetools-11.3.3/tests/test_chatapi.py +214 -0
  10. cloudlanguagetools-11.3.3/tests/test_dictionary_lookup.py +202 -0
  11. cloudlanguagetools-11.3.3/tests/test_llm.py +66 -0
  12. cloudlanguagetools-11.3.3/tests/test_mock_services.py +106 -0
  13. cloudlanguagetools-11.3.3/tests/test_servicemanager.py +48 -0
  14. cloudlanguagetools-11.3.3/tests/test_translation.py +586 -0
  15. {cloudlanguagetools-11.3.1 → cloudlanguagetools-11.3.3}/LICENSE +0 -0
  16. {cloudlanguagetools-11.3.1 → cloudlanguagetools-11.3.3}/README.rst +0 -0
  17. {cloudlanguagetools-11.3.1 → cloudlanguagetools-11.3.3}/cloudlanguagetools/__init__.py +0 -0
  18. {cloudlanguagetools-11.3.1 → cloudlanguagetools-11.3.3}/cloudlanguagetools/amazon.py +0 -0
  19. {cloudlanguagetools-11.3.1 → cloudlanguagetools-11.3.3}/cloudlanguagetools/argostranslate.py +0 -0
  20. {cloudlanguagetools-11.3.1 → cloudlanguagetools-11.3.3}/cloudlanguagetools/azure.py +0 -0
  21. {cloudlanguagetools-11.3.1 → cloudlanguagetools-11.3.3}/cloudlanguagetools/cereproc.py +0 -0
  22. {cloudlanguagetools-11.3.1 → cloudlanguagetools-11.3.3}/cloudlanguagetools/chatapi.py +0 -0
  23. {cloudlanguagetools-11.3.1 → cloudlanguagetools-11.3.3}/cloudlanguagetools/constants.py +0 -0
  24. {cloudlanguagetools-11.3.1 → cloudlanguagetools-11.3.3}/cloudlanguagetools/deepl.py +0 -0
  25. {cloudlanguagetools-11.3.1 → cloudlanguagetools-11.3.3}/cloudlanguagetools/dictionarylookup.py +0 -0
  26. {cloudlanguagetools-11.3.1 → cloudlanguagetools-11.3.3}/cloudlanguagetools/easypronunciation.py +0 -0
  27. {cloudlanguagetools-11.3.1 → cloudlanguagetools-11.3.3}/cloudlanguagetools/elevenlabs.py +0 -0
  28. {cloudlanguagetools-11.3.1 → cloudlanguagetools-11.3.3}/cloudlanguagetools/encryption.py +0 -0
  29. {cloudlanguagetools-11.3.1 → cloudlanguagetools-11.3.3}/cloudlanguagetools/epitran.py +0 -0
  30. {cloudlanguagetools-11.3.1 → cloudlanguagetools-11.3.3}/cloudlanguagetools/errors.py +0 -0
  31. {cloudlanguagetools-11.3.1 → cloudlanguagetools-11.3.3}/cloudlanguagetools/fptai.py +0 -0
  32. {cloudlanguagetools-11.3.1 → cloudlanguagetools-11.3.3}/cloudlanguagetools/keys.py +0 -0
  33. {cloudlanguagetools-11.3.1 → cloudlanguagetools-11.3.3}/cloudlanguagetools/languages.py +0 -0
  34. {cloudlanguagetools-11.3.1 → cloudlanguagetools-11.3.3}/cloudlanguagetools/libretranslate.py +0 -0
  35. {cloudlanguagetools-11.3.1 → cloudlanguagetools-11.3.3}/cloudlanguagetools/mandarincantonese.py +0 -0
  36. {cloudlanguagetools-11.3.1 → cloudlanguagetools-11.3.3}/cloudlanguagetools/naver.py +0 -0
  37. {cloudlanguagetools-11.3.1 → cloudlanguagetools-11.3.3}/cloudlanguagetools/openai.py +0 -0
  38. {cloudlanguagetools-11.3.1 → cloudlanguagetools-11.3.3}/cloudlanguagetools/options.py +0 -0
  39. {cloudlanguagetools-11.3.1 → cloudlanguagetools-11.3.3}/cloudlanguagetools/pythainlp.py +0 -0
  40. {cloudlanguagetools-11.3.1 → cloudlanguagetools-11.3.3}/cloudlanguagetools/service.py +0 -0
  41. {cloudlanguagetools-11.3.1 → cloudlanguagetools-11.3.3}/cloudlanguagetools/servicemanager.py +0 -0
  42. {cloudlanguagetools-11.3.1 → cloudlanguagetools-11.3.3}/cloudlanguagetools/spacy.py +0 -0
  43. {cloudlanguagetools-11.3.1 → cloudlanguagetools-11.3.3}/cloudlanguagetools/test_services.py +0 -0
  44. {cloudlanguagetools-11.3.1 → cloudlanguagetools-11.3.3}/cloudlanguagetools/tokenization.py +0 -0
  45. {cloudlanguagetools-11.3.1 → cloudlanguagetools-11.3.3}/cloudlanguagetools/translationlanguage.py +0 -0
  46. {cloudlanguagetools-11.3.1 → cloudlanguagetools-11.3.3}/cloudlanguagetools/transliterationlanguage.py +0 -0
  47. {cloudlanguagetools-11.3.1 → cloudlanguagetools-11.3.3}/cloudlanguagetools/ttsvoice.py +0 -0
  48. {cloudlanguagetools-11.3.1 → cloudlanguagetools-11.3.3}/cloudlanguagetools/vocalware.py +0 -0
  49. {cloudlanguagetools-11.3.1 → cloudlanguagetools-11.3.3}/cloudlanguagetools/voicen.py +0 -0
  50. {cloudlanguagetools-11.3.1 → cloudlanguagetools-11.3.3}/cloudlanguagetools/watson.py +0 -0
  51. {cloudlanguagetools-11.3.1 → cloudlanguagetools-11.3.3}/cloudlanguagetools/wenlin.py +0 -0
  52. {cloudlanguagetools-11.3.1 → cloudlanguagetools-11.3.3}/cloudlanguagetools.egg-info/dependency_links.txt +0 -0
  53. {cloudlanguagetools-11.3.1 → cloudlanguagetools-11.3.3}/cloudlanguagetools.egg-info/requires.txt +0 -0
  54. {cloudlanguagetools-11.3.1 → cloudlanguagetools-11.3.3}/cloudlanguagetools.egg-info/top_level.txt +0 -0
  55. {cloudlanguagetools-11.3.1 → cloudlanguagetools-11.3.3}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cloudlanguagetools
3
- Version: 11.3.1
3
+ Version: 11.3.3
4
4
  Summary: Interface with various cloud APIs for language processing such as translation, text to speech
5
5
  Home-page: https://github.com/Language-Tools/cloud-language-tools-core
6
6
  Author: Luc
@@ -9,6 +9,7 @@ License: GPL
9
9
  Classifier: Programming Language :: Python :: 3.11
10
10
  Classifier: Topic :: Text Processing :: Linguistic
11
11
  License-File: LICENSE
12
+ Requires-Dist: clt_requirements>=1.7
12
13
 
13
14
  # cloud-language-tools
14
15
  Interface with various cloud APIs for translation, text to speech
@@ -170,8 +170,9 @@ class ForvoService(cloudlanguagetools.service.Service):
170
170
  cloudlanguagetools.languages.AudioLanguage.ta_SG: 'SGP',
171
171
  cloudlanguagetools.languages.AudioLanguage.ta_MY: 'MYS',
172
172
 
173
-
174
-
173
+ # portuguese
174
+ cloudlanguagetools.languages.AudioLanguage.pt_PT: 'PRT',
175
+ cloudlanguagetools.languages.AudioLanguage.pt_BR: 'BRA',
175
176
 
176
177
  # arabic
177
178
  cloudlanguagetools.languages.AudioLanguage.ar_AE: 'ARE',
@@ -251,7 +252,14 @@ class ForvoService(cloudlanguagetools.service.Service):
251
252
 
252
253
  logger.debug(f'processing language_enum {language_enum}')
253
254
  audio_language_list = self.audio_language_map[language_enum]
254
-
255
+
256
+ # special handling for portugese. we need to add both countries manually.
257
+ if language_enum == cloudlanguagetools.languages.Language.pt_pt:
258
+ audio_language_list = [
259
+ cloudlanguagetools.languages.AudioLanguage.pt_PT,
260
+ cloudlanguagetools.languages.AudioLanguage.pt_BR
261
+ ]
262
+
255
263
  voices = []
256
264
 
257
265
  for gender in cloudlanguagetools.constants.Gender:
@@ -296,7 +304,7 @@ class ForvoService(cloudlanguagetools.service.Service):
296
304
  language_voice_list = self.get_voices_for_language_entry(language)
297
305
  voice_list.extend(language_voice_list)
298
306
 
299
- # pprint.pprint(data)
307
+ pprint.pprint(data)
300
308
  else:
301
309
  print(response.content)
302
310
 
@@ -13,6 +13,9 @@ import cloudlanguagetools.languages
13
13
 
14
14
  logger = logging.getLogger(__name__)
15
15
 
16
+ # updates on google text to speech:
17
+ # https://cloud.google.com/text-to-speech/docs/release-notes
18
+
16
19
  def language_code_to_enum(language_code):
17
20
  override_map = {
18
21
  'cmn-TW': cloudlanguagetools.languages.AudioLanguage.zh_TW,
@@ -86,6 +89,7 @@ def get_translation_language_enum(language_id):
86
89
  'or': 'or_',
87
90
  'pt': 'pt_br',
88
91
  'pt-pt': 'pt_pt',
92
+ 'pt-PT': 'pt_pt',
89
93
  'sr': 'sr_cyrl',
90
94
  'sr-Cyrl': 'sr_cyrl',
91
95
  'sr-Latn': 'sr_latn',
@@ -145,36 +149,41 @@ class GoogleService(cloudlanguagetools.service.Service):
145
149
  cloudlanguagetools.options.AudioFormat.ogg_opus: google.cloud.texttospeech.AudioEncoding.OGG_OPUS
146
150
  }
147
151
 
148
- client = self.get_client()
149
-
150
- ssml_text = '<speak>' + text + '</speak>'
151
- input_text = google.cloud.texttospeech.SynthesisInput(ssml=ssml_text)
152
-
153
- # Note: the voice can also be specified by name.
154
- # Names of voices can be retrieved with client.list_voices().
155
- voice = google.cloud.texttospeech.VoiceSelectionParams(
156
- name=voice_key['name'],
157
- language_code=voice_key['language_code'],
158
- ssml_gender=google.cloud.texttospeech.SsmlVoiceGender[voice_key['ssml_gender']]
159
- )
160
-
161
- audio_config = google.cloud.texttospeech.AudioConfig(
162
- audio_encoding=audio_format_map[audio_format],
163
- speaking_rate=options.get('speaking_rate', 1.0),
164
- pitch=options.get('pitch', 0.0)
165
- )
166
-
167
- response = client.synthesize_speech(
168
- request={"input": input_text, "voice": voice, "audio_config": audio_config}
169
- )
170
-
171
- # The response's audio_content is binary.
172
- output_temp_file = tempfile.NamedTemporaryFile()
173
- output_temp_filename = output_temp_file.name
174
- with open(output_temp_filename, "wb") as out:
175
- out.write(response.audio_content)
176
-
177
- return output_temp_file
152
+ try:
153
+ client = self.get_client()
154
+
155
+ ssml_text = '<speak>' + text + '</speak>'
156
+ input_text = google.cloud.texttospeech.SynthesisInput(ssml=ssml_text)
157
+
158
+ # Note: the voice can also be specified by name.
159
+ # Names of voices can be retrieved with client.list_voices().
160
+ voice = google.cloud.texttospeech.VoiceSelectionParams(
161
+ name=voice_key['name'],
162
+ language_code=voice_key['language_code'],
163
+ ssml_gender=google.cloud.texttospeech.SsmlVoiceGender[voice_key['ssml_gender']]
164
+ )
165
+
166
+ audio_config = google.cloud.texttospeech.AudioConfig(
167
+ audio_encoding=audio_format_map[audio_format],
168
+ speaking_rate=options.get('speaking_rate', 1.0),
169
+ pitch=options.get('pitch', 0.0)
170
+ )
171
+
172
+ response = client.synthesize_speech(
173
+ request={"input": input_text, "voice": voice, "audio_config": audio_config}
174
+ )
175
+
176
+ # The response's audio_content is binary.
177
+ output_temp_file = tempfile.NamedTemporaryFile()
178
+ output_temp_filename = output_temp_file.name
179
+ with open(output_temp_filename, "wb") as out:
180
+ out.write(response.audio_content)
181
+
182
+ return output_temp_file
183
+ except google.api_core.exceptions.BadRequest as bad_request_exception:
184
+ logger.exception(bad_request_exception)
185
+ error_message = f'Could not generate audio: {str(bad_request_exception)}'
186
+ raise cloudlanguagetools.errors.RequestError(error_message)
178
187
 
179
188
 
180
189
  def get_tts_voice_list(self):
@@ -201,7 +210,7 @@ class GoogleService(cloudlanguagetools.service.Service):
201
210
  translation_language = GoogleTranslationLanguage(entry['language'])
202
211
  result_dict[translation_language.get_language_code()] = translation_language
203
212
  except KeyError:
204
- logging.error(f'could not process translation language for {entry}', exc_info=True)
213
+ logging.warning(f'could not process translation language for {entry}', exc_info=True)
205
214
  return result_dict.values()
206
215
 
207
216
  def get_transliteration_language_list(self):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cloudlanguagetools
3
- Version: 11.3.1
3
+ Version: 11.3.3
4
4
  Summary: Interface with various cloud APIs for language processing such as translation, text to speech
5
5
  Home-page: https://github.com/Language-Tools/cloud-language-tools-core
6
6
  Author: Luc
@@ -9,6 +9,7 @@ License: GPL
9
9
  Classifier: Programming Language :: Python :: 3.11
10
10
  Classifier: Topic :: Text Processing :: Linguistic
11
11
  License-File: LICENSE
12
+ Requires-Dist: clt_requirements>=1.7
12
13
 
13
14
  # cloud-language-tools
14
15
  Interface with various cloud APIs for translation, text to speech
@@ -42,4 +42,12 @@ cloudlanguagetools.egg-info/PKG-INFO
42
42
  cloudlanguagetools.egg-info/SOURCES.txt
43
43
  cloudlanguagetools.egg-info/dependency_links.txt
44
44
  cloudlanguagetools.egg-info/requires.txt
45
- cloudlanguagetools.egg-info/top_level.txt
45
+ cloudlanguagetools.egg-info/top_level.txt
46
+ tests/test_audio.py
47
+ tests/test_breakdown.py
48
+ tests/test_chatapi.py
49
+ tests/test_dictionary_lookup.py
50
+ tests/test_llm.py
51
+ tests/test_mock_services.py
52
+ tests/test_servicemanager.py
53
+ tests/test_translation.py
@@ -6,7 +6,7 @@ from setuptools.command.install import install
6
6
  # twine upload dist/*
7
7
 
8
8
  setup(name='cloudlanguagetools',
9
- version='11.3.1',
9
+ version='11.3.3',
10
10
  description='Interface with various cloud APIs for language processing such as translation, text to speech',
11
11
  long_description=open('README.rst', encoding='utf-8').read(),
12
12
  url='https://github.com/Language-Tools/cloud-language-tools-core',