Spaces:
Running
Running
| # This module defines evaluation metrics | |
| from yaml import warnings | |
| warnings({"YAMLLoadWarning": False}) | |
| import panphon | |
| import panphon.distance | |
| ft = panphon.FeatureTable() | |
| panphon_dist = panphon.distance.Distance() | |
| inverse_double_weight_sum = 1 / (sum(ft.weights) * 2) | |
| def per(prediction, ground_truth): | |
| """ | |
| Phoneme Error Rate: the number of edits (substitutions, insertions, deletions) | |
| needed to transform the prediction into the ground truth divided by the length of the ground truth. | |
| """ | |
| return panphon_dist.fast_levenshtein_distance(prediction, ground_truth) / len( | |
| ground_truth | |
| ) | |
| def fer(prediction, ground_truth): | |
| """ | |
| Feature Error Rate: the edits weighted by their acoustic features summed up and divided by the length of the ground truth. | |
| """ | |
| return ( | |
| inverse_double_weight_sum | |
| * panphon_dist.weighted_feature_edit_distance(ground_truth, prediction) | |
| / len(ground_truth) | |
| ) | |