Spaces:
Sleeping
Sleeping
| 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"} | |