vidverse / app /scripts /__init__.py
badal
feat: initial commit
2f2406a
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"}