from mel2samp import Mel2Samp, load_wav_to_torch, files_to_list
import os
import argparse
import json
import numpy as np
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument('-f', "--filelist_path", required=True)
parser.add_argument('-c', '--config', type=str,
help='JSON file for configuration')
parser.add_argument('-o', '--output_dir', type=str,
help='Output directory')
args = parser.parse_args()
with open(args.config) as f:
data = f.read()
data_config = json.loads(data)["data_config"]
mel2samp = Mel2Samp(**data_config)
filepaths = files_to_list(args.filelist_path)
if not os.path.isdir(args.output_dir):
os.makedirs(args.output_dir)
os.chmod(args.output_dir, 0o775)
for filepath in filepaths:
audio, sr = load_wav_to_torch(filepath)
melspectrogram = mel2samp.get_mel(audio)
filename = os.path.basename(filepath)
new_filepath = args.output_dir + filename + '.bin'
shape_file = args.output_dir + filename + '.txt'
melspectrogram = np.array(melspectrogram, dtype=np.float32)
melspectrogram.tofile(new_filepath)
np.savetxt(shape_file, audio.shape, fmt='%d')
print(new_filepath)