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