File size: 1,272 Bytes
a8c8d73
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
57
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import argparse

import os
from ffmpy import FFmpeg

from project_settings import project_path


def get_args():
    parser = argparse.ArgumentParser()
    parser.add_argument(
        "--filename",
        default=(project_path / "data/voice_clone_audio/e2_tts/audio_0_3_clone_from_audio_0_2.wav").as_posix(),
        type=str,
    )
    parser.add_argument(
        "--output_file",
        default="temp.wav",
        type=str,
    )
    parser.add_argument("--change_by_db", default=-10, type=int)
    args = parser.parse_args()
    return args


def change_by_decibel(audio_path: str, output_file: str, decibel):
    ext = os.path.basename(audio_path).strip().split(".")[-1]
    if ext not in ["wav", "mp3"]:
        raise Exception("format error")
    if os.path.exists(output_file):
        os.remove(output_file)
    ff = FFmpeg(
        inputs={audio_path: None},
        outputs={output_file: f'-filter:a "volume={decibel}dB"'}
    )
    ff.run()
    return output_file


def main():
    args = get_args()

    output_file = change_by_decibel(
        args.filename,
        args.output_file,
        args.change_by_db,
    )
    print(f"output_file: {output_file}")

    return


if __name__ == "__main__":
    main()