NeoPy commited on
Commit
fe7250c
·
verified ·
1 Parent(s): 71ab593

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +156 -3
README.md CHANGED
@@ -1,3 +1,156 @@
1
- ---
2
- license: mit
3
- ---
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: mit
3
+ ---
4
+
5
+
6
+
7
+ # Pitch Detection Algorithm Benchmark Report
8
+
9
+ ## Benchmark Methodology
10
+
11
+ ### Evaluation Setup
12
+ This benchmark evaluates pitch detection algorithms across multiple datasets with different characteristics, including synthetic and real audio from speech and music domains. Each algorithm is tested on noisy audio generated by mixing clean datasets with CHiME background noise at various signal-to-noise ratios (10-30 dB) and voice gain variations (-6 to +6 dB).
13
+
14
+ ### Performance Metric Definition
15
+ The **Overall Performance Rankings** show the **Harmonic Mean (HM)** score as percentages, computed from six complementary components:
16
+
17
+ **HM = 6 / (1/RPA + 1/CA + 1/P + 1/R + 1/OA + 1/GEA)**
18
+
19
+ Where:
20
+ - **RPA** (Raw Pitch Accuracy): Fraction of voiced frames within 50 cents of ground truth
21
+ - **CA** (Cents Accuracy): exp(-mean_cents_error/500), penalizing larger deviations exponentially
22
+ - **P** (Voicing Precision): TP/(TP+FP), fraction of predicted voiced frames that are truly voiced
23
+ - **R** (Voicing Recall): TP/(TP+FN), fraction of truly voiced frames detected
24
+ - **OA** (Octave Accuracy): exp(-10×octave_error_rate), robustness against octave errors
25
+ - **GEA** (Gross Error Accuracy): exp(-5×gross_error_rate), penalizing deviations >200 cents
26
+
27
+ ### Speed Benchmark Details
28
+ CPU timing measurements are performed on 1-second audio signals at 22.05 kHz sample rate with 256-sample hop length. The reported **CPU Time (ms)** represents the average processing time per 1-second audio segment across multiple runs. **Relative Speed** shows performance relative to CREPE as the baseline algorithm.
29
+
30
+ ### Optimal Threshold Analysis
31
+ The **Optimal Threshold** refers to the voicing confidence threshold that maximizes the Harmonic Mean score. Algorithms test multiple thresholds (0.0 to 1.0 in steps of 0.1) and select the one yielding the highest combined score. **CV** stands for Coefficient of Variation (std/mean), measuring consistency across datasets.
32
+
33
+ ## Dataset Descriptions
34
+
35
+ The benchmark evaluates algorithms across diverse datasets covering speech, music, synthetic, and real-world conditions:
36
+
37
+ | **Dataset** | **Domain** | **Type** | **Description** |
38
+ |---|---|---|---|
39
+ | **NSynth** | Music | Synthetic | Single-note synthetic audio from musical instruments with accurate pitch labels. Lacks temporal/spectral complexity of real-world environments. |
40
+ | **PTDB** | Speech | Real | Speech recordings with laryngograph signals capturing vocal fold vibrations. Ground truth derived from high-pass filtered laryngograph signals processed with RAPT algorithm. |
41
+ | **PTDBNoisy** | Speech | Real | Subset of 347 PTDB files (7.4%) with noticeable noise that were excluded from main evaluation. |
42
+ | **MIR1K** | Music | Real | Vocal excerpts with pitch contours initially extracted algorithmically (e.g., YIN) followed by manual correction. Labels still reflect some algorithmic biases. |
43
+ | **MDBStemSynth** | Music | Synthetic | Musically structured synthetic audio with accurate pitch annotations. Valuable for controlled evaluation but lacks real-world acoustic variability. |
44
+ | **Vocadito** | Music | Real | Solo vocal recordings with pitch annotations derived from pYIN algorithm, refined through manual verification process. |
45
+ | **Bach10Synth** | Music | Synthetic | High-quality pitch labels for synthesized musical performances. Similar to MDB-STEM-Synth but focused on Bach compositions. |
46
+ | **SpeechSynth** | Speech | Synthetic | Synthetic Mandarin speech generated using LightSpeech TTS model. Trained on 97.48 hours from AISHELL-3 and Biaobei datasets, providing exact pitch ground truth. |
47
+
48
+ **Key Characteristics:**
49
+ - **Synthetic datasets** provide perfect ground truth but may lack real-world complexity
50
+ - **Real datasets** capture natural acoustic variations but have imperfect ground truth annotations
51
+ - **Speech datasets** focus on vocal pitch tracking challenges
52
+ - **Music datasets** encompass instrumental and vocal music scenarios
53
+ - **SpeechSynth** addresses the gap of lacking synthetic speech data with accurate pitch labels
54
+
55
+ ## Overall Performance Rankings
56
+
57
+ | **Algorithm** | **Bach10Synth** | **MDBStemSynth** | **MIR1K** | **PTDB** | **PTDBNoisy** | **SpeechSynth** | **Vocadito** | **Average** |
58
+ |---|---|---|---|---|---|---|---|---|
59
+ | **HPA_RMVPE_76000** | **99.0%** | **94.0%** | **95.9%** | **92.5%** | **84.3%** | 87.6% | 97.0% | **92.9%** |
60
+ | HPA_RMVPE | 98.7% | 93.4% | 95.8% | 91.7% | 83.2% | 86.8% | 96.9% | 92.4% |
61
+ | RMVPE | 98.3% | 91.7% | **96.0%** | 86.0% | 66.6% | **90.5%** | **97.2%** | 89.5% |
62
+
63
+ No speed benchmark results found.
64
+ ## Detailed Performance Analysis
65
+
66
+ ### Voicing Detection Performance
67
+ Measures how well algorithms distinguish between voiced (pitched) and unvoiced (unpitched) audio segments.
68
+
69
+ | **Algorithm** | **Precision ↑** | **Recall ↑** | **F1-Score ↑** |
70
+ |---|---|---|---|
71
+ | HPA_RMVPE | 0.924 | 0.847 | 0.882 |
72
+ | **HPA_RMVPE_76000** | **0.926** | **0.866** | **0.893** |
73
+ | RMVPE | 0.891 | 0.816 | 0.851 |
74
+
75
+ ### Pitch Accuracy Metrics
76
+ Detailed pitch estimation accuracy across different error types and magnitudes.
77
+
78
+ | **Algorithm** | **RPA ↑** | **RCA ↑** | **Cents Error ↓** | **RMSE (Hz) ↓** | **Octave Error ↓** | **Gross Error ↓** |
79
+ |---|---|---|---|---|---|---|
80
+ | HPA_RMVPE | 0.909 | 0.910 | 22.7 | 10.0 | 0.004 | 0.007 |
81
+ | HPA_RMVPE_76000 | **0.915** | **0.915** | **21.7** | **9.3** | **0.003** | **0.007** |
82
+ | RMVPE | 0.901 | 0.905 | 32.2 | 13.3 | 0.011 | 0.014 |
83
+
84
+ **Additional Metric Definitions:**
85
+ - **RCA** (Raw Chroma Accuracy): Fraction with correct pitch class (note name), ignoring octave
86
+ - **Cents Error**: Mean absolute pitch deviation in cents (raw error, before exponential transform used in CA)
87
+ - **RMSE**: Root Mean Square Error in Hz
88
+
89
+ ### Pitch Contour Smoothness
90
+ Measures the temporal stability and continuity of pitch tracks.
91
+
92
+ | **Algorithm** | **Relative Smoothness ↓** | **Continuity Breaks ↓** | **Overall Smoothness Rank ↓** |
93
+ |---|---|---|---|
94
+ | **RMVPE** | **1.327** | **0.866** | **1.0** |
95
+ | HPA_RMVPE | 1.421 | 0.931 | 2.5 |
96
+ | HPA_RMVPE_76000 | 1.569 | 0.903 | 2.5 |
97
+
98
+ **Metric Definitions:**
99
+ - **Relative Smoothness**: Coefficient of variation of consecutive pitch changes (std/mean of relative frame-to-frame changes)
100
+ - **Continuity Breaks**: Fraction of ground-truth voiced segments where predicted voicing has gaps
101
+ - **Overall Smoothness Rank**: Average rank across both smoothness metrics (1=best, lower is better)
102
+
103
+ ### Optimal Threshold Analysis
104
+ Voicing confidence thresholds that maximize overall performance scores.
105
+
106
+ | **Algorithm** | **Mean Threshold** | **Std Dev ↓** | **Range** |
107
+ |---|---|---|---|
108
+ | HPA_RMVPE | 0.486 | **0.064** | 0.40-0.60 |
109
+ | HPA_RMVPE_76000 | 0.443 | 0.090 | 0.30-0.60 |
110
+ | RMVPE | 0.686 | **0.064** | 0.60-0.80 |
111
+
112
+ ### Algorithm Consistency
113
+ Measures performance stability across different datasets using Coefficient of Variation (CV = std/mean).
114
+
115
+ | **Algorithm** | **Performance CV ↓** | **Threshold CV ↓** |
116
+ |---|---|---|
117
+ | HPA_RMVPE | 0.056 | 0.132 |
118
+ | HPA_RMVPE_76000 | **0.052** | 0.204 |
119
+ | RMVPE | 0.113 | **0.093** |
120
+
121
+ ## Performance by Dataset Subsets
122
+
123
+ ### By Origin
124
+ - **Synthetic**: Bach10Synth, MDBStemSynth, SpeechSynth, NSynth
125
+ - **Real**: MIR1K, PTDB, PTDBNoisy, Vocadito
126
+
127
+ | **Algorithm** | **Synthetic** | **Real** |
128
+ |---|---|---|
129
+ | HPA_RMVPE | 93.0% | 91.9% |
130
+ | **HPA_RMVPE_76000** | **93.5%** | **92.4%** |
131
+ | **RMVPE** | **93.5%** | 86.4% |
132
+
133
+ ### By Domain
134
+ - **Speech**: PTDB, PTDBNoisy, SpeechSynth
135
+ - **Music**: Bach10Synth, MDBStemSynth, NSynth, Vocadito, MIR1K
136
+
137
+ | **Algorithm** | **Speech** | **Music** |
138
+ |---|---|---|
139
+ | HPA_RMVPE | 87.2% | 96.2% |
140
+ | **HPA_RMVPE_76000** | **88.1%** | **96.5%** |
141
+ | RMVPE | 81.0% | 95.8% |
142
+
143
+ ### By Cross-Dimension
144
+ - **Synthetic + Speech**: SpeechSynth
145
+ - **Synthetic + Music**: Bach10Synth, MDBStemSynth, NSynth
146
+ - **Real + Speech**: PTDB, PTDBNoisy
147
+ - **Real + Music**: Vocadito, MIR1K
148
+
149
+ | **Algorithm** | **Synthetic + Speech** | **Synthetic + Music** | **Real + Speech** | **Real + Music** |
150
+ |---|---|---|---|---|
151
+ | HPA_RMVPE | 86.8% | 96.1% | 87.4% | 96.3% |
152
+ | HPA_RMVPE_76000 | 87.6% | **96.5%** | **88.4%** | **96.5%** |
153
+ | **RMVPE** | **90.5%** | 95.0% | 76.3% | **96.6%** |
154
+
155
+
156
+