File size: 2,454 Bytes
89f4dba
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
def compute_quality_score(issues):
    """
    Compute the weighted quality score based on detected issues.
    Logic is identical to your original implementation.
    """

    # Count severities
    critical = sum(1 for _, sev, _ in issues if sev == "CRITICAL")
    high = sum(1 for _, sev, _ in issues if sev == "HIGH")
    medium = sum(1 for _, sev, _ in issues if sev == "MEDIUM")
    low = sum(1 for _, sev, _ in issues if sev == "LOW")

    # ============================================
    # Weighted scoring 
    # ============================================

    score = 100
    score -= critical * 35
    score -= high * 20
    score -= medium * 8
    score -= low * 3

    # Heavy processing penalties
    if len(issues) >= 6:
        score -= 10

    if (critical + high) >= 3:
        score -= 10

    # Clean bonus
    if len(issues) == 0:
        score += 5

    score = max(0, min(score, 100))

    # ============================================
    # Grade Mapping
    # ============================================

    if score >= 90:
        grade = "A"
        quality = "EXCELLENT"
        color = "#00C853"
        recommendation = "Excellent for TTS dataset"

    elif score >= 75:
        grade = "B"
        quality = "GOOD"
        color = "#64DD17"
        recommendation = "Very good quality; suitable for TTS"

    elif score >= 60:
        grade = "C"
        quality = "FAIR"
        color = "#FFD600"
        recommendation = "Usable but may contain processing artifacts"

    elif score >= 40:
        grade = "D"
        quality = "POOR"
        color = "#FF6D00"
        recommendation = "Not recommended for TTS (heavy processing)"

    else:
        grade = "F"
        quality = "CRITICAL"
        color = "#D50000"
        recommendation = "Severely degraded or processed; avoid for TTS"

    # ============================================
    # Cleanliness + Processing Index
    # ============================================

    cleanliness_score = max(0, 100 - (medium * 5 + low * 3))
    processing_severity = (critical * 3) + (high * 2) + medium

    return {
        "score": score,
        "grade": grade,
        "quality": quality,
        "color": color,
        "recommendation": recommendation,
        "cleanliness_score": cleanliness_score,
        "processing_severity": processing_severity,
        "critical": critical,
        "high": high,
        "medium": medium,
        "low": low
    }