809918bf创建于 2022年12月20日历史提交
# Copyright 2022 Huawei Technologies Co., Ltd

#

# Licensed under the Apache License, Version 2.0 (the "License");

# you may not use this file except in compliance with the License.

# You may obtain a copy of the License at

#

#     http://www.apache.org/licenses/LICENSE-2.0

#

# Unless required by applicable law or agreed to in writing, software

# distributed under the License is distributed on an "AS IS" BASIS,

# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

# See the License for the specific language governing permissions and

# limitations under the License.



from mel2samp import Mel2Samp, load_wav_to_torch, files_to_list

import os

import argparse

import json

import numpy as np



if __name__ == "__main__":

    # Get defaults so it can work with no Sacred

    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)



    # Make directory if it doesn't exist

    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 + '.npy'

        shape_file = args.output_dir + filename + '.txt'



        melspectrogram = np.array(melspectrogram, dtype=np.float32)

        melspectrogram = np.expand_dims(melspectrogram, axis=0)

        np.save(new_filepath, melspectrogram)

        np.savetxt(shape_file, audio.shape, fmt='%d')

        print(new_filepath)