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) | |
) | |