Spaces:
Runtime error
Runtime error
Upload encoder_preprocess.py with huggingface_hub
Browse files- encoder_preprocess.py +70 -0
encoder_preprocess.py
ADDED
@@ -0,0 +1,70 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from encoder.preprocess import preprocess_librispeech, preprocess_voxceleb1, preprocess_voxceleb2
|
2 |
+
from utils.argutils import print_args
|
3 |
+
from pathlib import Path
|
4 |
+
import argparse
|
5 |
+
|
6 |
+
if __name__ == "__main__":
|
7 |
+
class MyFormatter(argparse.ArgumentDefaultsHelpFormatter, argparse.RawDescriptionHelpFormatter):
|
8 |
+
pass
|
9 |
+
|
10 |
+
parser = argparse.ArgumentParser(
|
11 |
+
description="Preprocesses audio files from datasets, encodes them as mel spectrograms and "
|
12 |
+
"writes them to the disk. This will allow you to train the encoder. The "
|
13 |
+
"datasets required are at least one of VoxCeleb1, VoxCeleb2 and LibriSpeech. "
|
14 |
+
"Ideally, you should have all three. You should extract them as they are "
|
15 |
+
"after having downloaded them and put them in a same directory, e.g.:\n"
|
16 |
+
"-[datasets_root]\n"
|
17 |
+
" -LibriSpeech\n"
|
18 |
+
" -train-other-500\n"
|
19 |
+
" -VoxCeleb1\n"
|
20 |
+
" -wav\n"
|
21 |
+
" -vox1_meta.csv\n"
|
22 |
+
" -VoxCeleb2\n"
|
23 |
+
" -dev",
|
24 |
+
formatter_class=MyFormatter
|
25 |
+
)
|
26 |
+
parser.add_argument("datasets_root", type=Path, help=\
|
27 |
+
"Path to the directory containing your LibriSpeech/TTS and VoxCeleb datasets.")
|
28 |
+
parser.add_argument("-o", "--out_dir", type=Path, default=argparse.SUPPRESS, help=\
|
29 |
+
"Path to the output directory that will contain the mel spectrograms. If left out, "
|
30 |
+
"defaults to <datasets_root>/SV2TTS/encoder/")
|
31 |
+
parser.add_argument("-d", "--datasets", type=str,
|
32 |
+
default="librispeech_other,voxceleb1,voxceleb2", help=\
|
33 |
+
"Comma-separated list of the name of the datasets you want to preprocess. Only the train "
|
34 |
+
"set of these datasets will be used. Possible names: librispeech_other, voxceleb1, "
|
35 |
+
"voxceleb2.")
|
36 |
+
parser.add_argument("-s", "--skip_existing", action="store_true", help=\
|
37 |
+
"Whether to skip existing output files with the same name. Useful if this script was "
|
38 |
+
"interrupted.")
|
39 |
+
parser.add_argument("--no_trim", action="store_true", help=\
|
40 |
+
"Preprocess audio without trimming silences (not recommended).")
|
41 |
+
args = parser.parse_args()
|
42 |
+
|
43 |
+
# Verify webrtcvad is available
|
44 |
+
if not args.no_trim:
|
45 |
+
try:
|
46 |
+
import webrtcvad
|
47 |
+
except:
|
48 |
+
raise ModuleNotFoundError("Package 'webrtcvad' not found. This package enables "
|
49 |
+
"noise removal and is recommended. Please install and try again. If installation fails, "
|
50 |
+
"use --no_trim to disable this error message.")
|
51 |
+
del args.no_trim
|
52 |
+
|
53 |
+
# Process the arguments
|
54 |
+
args.datasets = args.datasets.split(",")
|
55 |
+
if not hasattr(args, "out_dir"):
|
56 |
+
args.out_dir = args.datasets_root.joinpath("SV2TTS", "encoder")
|
57 |
+
assert args.datasets_root.exists()
|
58 |
+
args.out_dir.mkdir(exist_ok=True, parents=True)
|
59 |
+
|
60 |
+
# Preprocess the datasets
|
61 |
+
print_args(args, parser)
|
62 |
+
preprocess_func = {
|
63 |
+
"librispeech_other": preprocess_librispeech,
|
64 |
+
"voxceleb1": preprocess_voxceleb1,
|
65 |
+
"voxceleb2": preprocess_voxceleb2,
|
66 |
+
}
|
67 |
+
args = vars(args)
|
68 |
+
for dataset in args.pop("datasets"):
|
69 |
+
print("Preprocessing %s" % dataset)
|
70 |
+
preprocess_func[dataset](**args)
|