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"} | |