Spaces:
Sleeping
Sleeping
File size: 1,840 Bytes
2f2406a |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
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"}
|