voice-matcher-api / app /passing.py
arnabg95's picture
modification to the params
b82152e
def normalize_euclidean(euclidean, max_value):
"""
Normalize the Euclidean distance to a 0-100 scale, where 0 is the maximum distance
and 100 is the minimum distance.
"""
return max(0, 100 - (euclidean / max_value) * 100)
def calculate_passing(sequence, phonetic, cosine=0, euclidean=0, passing_threshold=40, euclidean_max=200):
# Normalize sequence and phonetic to 0-100 scale
sequence_normalized = sequence * 100
phonetic_normalized = phonetic * 100
# Normalize Euclidean distance to a similarity measure (0-100 scale)
euclidean_similarity = normalize_euclidean(euclidean, euclidean_max)
# Calculate the weighted average
weights = {
'sequence': 0.35,
'phonetic': 0.35,
'cosine': 0,
'euclidean': 0
}
weighted_score = (
sequence_normalized * weights['sequence'] +
phonetic_normalized * weights['phonetic'] +
cosine * weights['cosine'] +
euclidean_similarity * weights['euclidean']
)
# Check if the weighted score meets or exceeds the passing threshold
is_passing = weighted_score >= passing_threshold
return weighted_score, is_passing