from .audio import process_language from .srt import parse_srt_file, get_duration import langcodes import pathlib import os def synthesise_audio( srt_file, video_file, output_folder, language_code="hi-IN", voice_name="hi-IN-MadhurNeural", from_lang="en", to_lang="hi", gender="MALE", ): langData = { "synth_language_code": language_code, "synth_voice_name": voice_name, "translation_source_language": from_lang, "translation_target_language": to_lang, "synth_voice_gender": gender, "translate_service": "azure", "formality": None, } with open(srt_file, "r", encoding="utf-8-sig") as f: originalSubLines = f.readlines() originalLanguageSubsDict = parse_srt_file(originalSubLines) totalAudioLength = get_duration(video_file) # Use video file name to use in the name of the translate srt file, also display regular language name lang = langcodes.get(to_lang).display_name() translatedSrtFileName = pathlib.Path(video_file).stem + f" - {lang} - {to_lang}.srt" # Set path to save translated srt file translatedSrtFileName = f"{output_folder}/{translatedSrtFileName}" lang = langcodes.get(langData['synth_language_code']) langName = langcodes.get(langData['synth_language_code']).get(lang.to_alpha3()).display_name() outputFileName = pathlib.Path(video_file).stem + f" - {langName} - {langData['synth_language_code']}." # Set output path outputFileName = os.path.join(output_folder, outputFileName) process_language( langData, originalLanguageSubsDict, totalAudioLength, translatedSrtFileName, outputFileName, output_folder ) return {"translated_subtitle": translatedSrtFileName, "translated_audio": outputFileName+"mp3"}