コード例 #1
0
ファイル: Evaluate.py プロジェクト: jdavibedoya/SE_Wave-U-Net
def noisy(model_config, dataset):
    csv_file_name = model_config[
        "estimates_path"] + os.path.sep + "noisy" + "_" + dataset + ".csv"
    with open(csv_file_name, 'w') as csv_file:
        csv_writer = csv.writer(csv_file, delimiter=',')
        csv_writer.writerow(
            ["target_file", "input_file", "pesq", "lsd", "ssnr", "audio_len"])

        # Get test set
        if dataset == "VCTK":
            _, test = Datasets.get_VCTK(
                model_config["preprocessed_data_path"] + "/VCTK_8k_DBE",
                model_config["input"], model_config["target"])
        elif dataset == "DAPS":
            _, test = Datasets.get_DAPS(
                model_config["preprocessed_data_path"] + "/DAPS_8k_DBE",
                model_config["input"], model_config["target"])

        for sample in test:
            # Evaluate
            input_file_name = sample[model_config["input"]]
            print("Test file " + input_file_name)
            target_file_name = sample[model_config["target"]]
            pesq, lsd, ssnr, audio_len = Metrics.Eval(
                target_file_name, input_file_name, model_config['expected_sr'])
            csv_writer.writerow([
                target_file_name, input_file_name, pesq, lsd, ssnr, audio_len
            ])
            print('PESQ:{:.3f} LSD:{:.3f} SSNR:{:.3f}'.format(pesq, lsd, ssnr))

    results_df = pd.read_csv(csv_file_name,
                             usecols=["ssnr", "lsd", "pesq", "audio_len"])
    pesq, lsd, ssnr = (results_df[["pesq", "lsd", "ssnr"]].multiply(
        results_df["audio_len"], axis=0)).sum() / sum(results_df["audio_len"])
    print('Results -> PESQ:{:.3f} LSD:{:.3f} SSNR:{:.3f}'.format(
        pesq, lsd, ssnr))
コード例 #2
0
ファイル: Evaluate.py プロジェクト: jdavibedoya/SE_Wave-U-Net
def evaluate_dataset(model_config, dataset, experiment_id, load_model):
    '''
    For a given input file, saves the prediction made by a given model.
    :param model_config: Model configuration
    :param dataset: Dataset to evaluate
    :param experiment_id: ID of the experiment
    :param load_model: Model checkpoint path
    '''

    output_path = model_config[
        "estimates_path"] + os.path.sep + experiment_id + "_" + dataset

    csv_file_name = model_config[
        "estimates_path"] + os.path.sep + experiment_id + "_" + dataset + ".csv"
    with open(csv_file_name, 'w') as csv_file:
        csv_writer = csv.writer(csv_file, delimiter=',')
        csv_writer.writerow(
            ["target_file", "output_file", "pesq", "lsd", "ssnr", "audio_len"])

        # Get test set
        if dataset == "VCTK":
            _, test = Datasets.get_VCTK(
                model_config["preprocessed_data_path"] + "/VCTK_8k_DBE",
                model_config["input"], model_config["target"])
        elif dataset == "DAPS":
            _, test = Datasets.get_DAPS(
                model_config["preprocessed_data_path"] + "/DAPS_8k_DBE",
                model_config["input"], model_config["target"])

        for sample in test:
            file = sample[model_config["input"]].split("/")[-1]
            print("Producing estimate for file " + file)
            track_audio, sr = Utils.load(sample[model_config["input"]],
                                         sr=model_config['expected_sr'],
                                         mono=True)
            prediction_audio = predict(track_audio, model_config,
                                       load_model)  # Get estimate
            prediction_file_name = os.path.join(output_path,
                                                file) + "_prediction.wav"

            # Save estimate as audio file
            if not os.path.exists(output_path):
                os.makedirs(output_path)
            librosa.output.write_wav(prediction_file_name, prediction_audio,
                                     sr)

            # Evaluate
            target_file_name = sample[model_config["target"]]
            pesq, lsd, ssnr, audio_len = Metrics.Eval(
                target_file_name, prediction_file_name,
                model_config['expected_sr'])
            csv_writer.writerow([
                target_file_name, prediction_file_name, pesq, lsd, ssnr,
                audio_len
            ])
            print('PESQ:{:.3f} LSD:{:.3f} SSNR:{:.3f}'.format(pesq, lsd, ssnr))

    results_df = pd.read_csv(csv_file_name,
                             usecols=["pesq", "lsd", "ssnr", "audio_len"])
    pesq, lsd, ssnr = (results_df[["pesq", "lsd", "ssnr"]].multiply(
        results_df["audio_len"], axis=0)).sum() / sum(results_df["audio_len"])
    print('Results -> PESQ:{:.3f} LSD:{:.3f} SSNR:{:.3f}'.format(
        pesq, lsd, ssnr))