def test_meanvar(): # Pick acoustic features for testing _, X = example_file_data_sources_for_acoustic_model() X = FileSourceDataset(X) lengths = [len(x) for x in X] D = X[0].shape[-1] X_mean, X_var = P.meanvar(X) X_std = np.sqrt(X_var) assert np.isfinite(X_mean).all() assert np.isfinite(X_var).all() assert X_mean.shape[-1] == D assert X_var.shape[-1] == D _, X_std_hat = P.meanstd(X) assert np.allclose(X_std, X_std_hat) x = X[0] x_scaled = P.scale(x, X_mean, X_std) assert np.isfinite(x_scaled).all() # For padded dataset _, X = example_file_data_sources_for_acoustic_model() X = PaddedFileSourceDataset(X, 1000) # Should get same results with padded features X_mean_hat, X_var_hat = P.meanvar(X, lengths) assert np.allclose(X_mean, X_mean_hat) assert np.allclose(X_var, X_var_hat) # Inverse transform x = X[0] x_hat = P.inv_scale(P.scale(x, X_mean, X_std), X_mean, X_std) assert np.allclose(x, x_hat, atol=1e-5)
def test_minmax(): # Pick linguistic features for testing X, _ = example_file_data_sources_for_acoustic_model() X = FileSourceDataset(X) lengths = [len(x) for x in X] D = X[0].shape[-1] X_min, X_max = P.minmax(X) assert np.isfinite(X_min).all() assert np.isfinite(X_max).all() x = X[0] x_scaled = P.minmax_scale(x, X_min, X_max, feature_range=(0, 0.99)) assert np.max(x_scaled) <= 1 assert np.min(x_scaled) >= 0 assert np.isfinite(x_scaled).all() # Need to specify (min, max) or (scale_, min_) @raises(ValueError) def __test_raise1(x, X_min, X_max): P.minmax_scale(x) @raises(ValueError) def __test_raise2(x, X_min, X_max): P.inv_minmax_scale(x) __test_raise1(x, X_min, X_max) __test_raise2(x, X_min, X_max) # Explicit scale_ and min_ min_, scale_ = P.minmax_scale_params(X_min, X_max, feature_range=(0, 0.99)) x_scaled_hat = P.minmax_scale(x, min_=min_, scale_=scale_) assert np.allclose(x_scaled, x_scaled_hat) # For padded dataset X, _ = example_file_data_sources_for_acoustic_model() X = PaddedFileSourceDataset(X, 1000) # Should get same results with padded features X_min_hat, X_max_hat = P.minmax(X, lengths) assert np.allclose(X_min, X_min_hat) assert np.allclose(X_max, X_max_hat) # Inverse transform x = X[0] x_hat = P.inv_minmax_scale(P.minmax_scale(x, X_min, X_max), X_min, X_max) assert np.allclose(x, x_hat) x_hat = P.inv_minmax_scale(P.minmax_scale(x, scale_=scale_, min_=min_), scale_=scale_, min_=min_) assert np.allclose(x, x_hat)
def test_real_metrics(): _, source = example_file_data_sources_for_acoustic_model() X = FileSourceDataset(source) lengths = [len(x) for x in X] X = X.asarray() mgc = X[:, :, :source.mgc_dim // 3] lf0 = X[:, :, source.lf0_start_idx] vuv = (X[:, :, source.vuv_start_idx] > 0).astype(np.int) bap = X[:, :, source.bap_start_idx] mgc_tgt = mgc + 0.01 lf0_tgt = lf0 + 0.01 vuv_tgt = vuv.copy() bap_tgt = bap + 0.01 mcd = metrics.melcd(mgc, mgc_tgt, lengths) bap_mcd = metrics.melcd(bap, bap_tgt, lengths) lf0_mse = metrics.lf0_mean_squared_error(lf0, vuv, lf0_tgt, vuv_tgt, lengths) vuv_err = metrics.vuv_error(vuv, vuv_tgt) assert mcd > 0 assert bap_mcd > 0 assert lf0_mse > 0 assert vuv_err == 0.0
def _get_small_datasets(padded=False, duration=False, padded_length=1000): if duration: X, Y = example_file_data_sources_for_duration_model() else: X, Y = example_file_data_sources_for_acoustic_model() if padded: X = PaddedFileSourceDataset(X, padded_length=padded_length) Y = PaddedFileSourceDataset(Y, padded_length=padded_length) else: X = FileSourceDataset(X) Y = FileSourceDataset(Y) return X, Y