Spaces:
Sleeping
Sleeping
| import copy | |
| from .TTS import synthesize_dictionary_batch, synthesize_dictionary | |
| from .translate import translate_dictionary | |
| from .audio_builder import build_audio | |
| original_language = "en" | |
| batch_tts_synthesize = False | |
| skip_translation = False | |
| stop_after_translation = False | |
| skip_translation = False | |
| skip_synthesize = False | |
| two_pass_voice_synth = False # Azure doesn't need two pass voice synth, so disable it | |
| def manually_prepare_dictionary(dictionaryToPrep): | |
| ### Do additional Processing to match the format produced by translation function | |
| # Create new key 'translated_text' and set it to the value of 'text' | |
| for key, value in dictionaryToPrep.items(): | |
| dictionaryToPrep[key]['translated_text'] = value['text'] | |
| # Convert the keys to integers and return the dictionary | |
| return {int(k): v for k, v in dictionaryToPrep.items()} | |
| # Process a language: Translate, Synthesize, and Build Audio | |
| def process_language(langData, originalLanguageSubsDict, totalAudioLength, translatedSrtFileName, outputFileName, outputFolder): | |
| langDict = { | |
| 'targetLanguage': langData['translation_target_language'], | |
| 'sourceLanguage': langData['translation_source_language'], | |
| 'voiceName': langData['synth_voice_name'], | |
| 'languageCode': langData['synth_language_code'], | |
| 'voiceGender': langData['synth_voice_gender'], | |
| 'translateService': langData['translate_service'], | |
| 'formality': langData['formality'] | |
| } | |
| individualLanguageSubsDict = copy.deepcopy(originalLanguageSubsDict) | |
| # Check for special case where original language is the same as the target language | |
| if langDict['languageCode'].lower() == original_language.lower(): | |
| print("Original language is the same as the target language. Skipping translation.") | |
| individualLanguageSubsDict = manually_prepare_dictionary(individualLanguageSubsDict) | |
| elif skip_translation == False: | |
| # Translate | |
| individualLanguageSubsDict = translate_dictionary(individualLanguageSubsDict, langDict, translatedSrtFileName, skipTranslation=skip_translation) | |
| if stop_after_translation: | |
| print("Stopping at translation is enabled. Skipping TTS and building audio.") | |
| return | |
| # Synthesize | |
| if batch_tts_synthesize == True: | |
| individualLanguageSubsDict = synthesize_dictionary_batch(individualLanguageSubsDict, langDict, skipSynthesize=skip_synthesize) | |
| else: | |
| individualLanguageSubsDict = synthesize_dictionary(individualLanguageSubsDict, langDict, outputFolder, skipSynthesize=skip_synthesize) | |
| print(individualLanguageSubsDict) | |
| # Build audio | |
| individualLanguageSubsDict = build_audio(individualLanguageSubsDict, langDict, totalAudioLength, outputFileName, two_pass_voice_synth) | |