Spaces:
Running
Running
Merge pull request #7 from argmaxinc/SW-576-update-hf-benchmarks-webpage-with-measured-wer-instead-of-benchmarked-from-whisperkittools
Browse files- .github/scripts/check_dataset_update.py +15 -10
- Makefile +0 -5
- README.md +1 -1
- constants.py +8 -21
- dashboard_data/Mac.json +241 -0
- dashboard_data/config.json +222 -39
- dashboard_data/iPad.json +206 -0
- dashboard_data/iPhone.json +151 -0
- dashboard_data/multilingual_confusion_matrices.json +0 -0
- dashboard_data/performance_data.json +0 -0
- dashboard_data/quality_data.json +1 -1
- dashboard_data/support_data_11a1fab.csv +8 -8
- dashboard_data/support_data_8c0acbd.csv +12 -12
- dashboard_data/support_data_a9b92c4.csv +8 -8
- dashboard_data/support_data_c814cae.csv +22 -22
- dashboard_data/test_coverage_112a023.json +239 -0
- dashboard_data/test_coverage_11a1fab.json +233 -0
- dashboard_data/test_coverage_8c0acbd.json +234 -0
- dashboard_data/test_coverage_a9b92c4.json +239 -0
- dashboard_data/test_coverage_c814cae.json +233 -0
- dashboard_data/test_coverage_ca49596.json +237 -0
- main.py +327 -415
- multilingual_generate.py +0 -133
- performance_generate.py +492 -17
- quality_generate.py +0 -186
- utils.py +69 -41
.github/scripts/check_dataset_update.py
CHANGED
@@ -1,8 +1,8 @@
|
|
1 |
import json
|
2 |
import os
|
|
|
3 |
|
4 |
from github import Github
|
5 |
-
from datetime import datetime, timedelta
|
6 |
from huggingface_hub import HfApi, login
|
7 |
|
8 |
|
@@ -16,12 +16,17 @@ def check_dataset_updates(dataset_id):
|
|
16 |
last_modified = dataset_info.lastModified.isoformat()
|
17 |
current_sha = dataset_info.sha
|
18 |
|
19 |
-
repo_tree = api.list_repo_tree(
|
|
|
|
|
|
|
|
|
|
|
20 |
cutoff_date = datetime.now(dataset_info.lastModified.tzinfo) - timedelta(weeks=6)
|
21 |
|
22 |
commit_dates_hashes = [item.path.split("/")[-1] for item in repo_tree]
|
23 |
new_commit_hashes = []
|
24 |
-
|
25 |
for commit_date_hash in commit_dates_hashes:
|
26 |
commit_date, commit_hash = commit_date_hash.split("_")
|
27 |
commit_date = datetime.strptime(commit_date, "%Y-%m-%dT%H%M%S").replace(
|
@@ -42,10 +47,10 @@ def check_dataset_updates(dataset_id):
|
|
42 |
except Exception as e:
|
43 |
print(f"Error processing commit {commit_hash}: {str(e)}")
|
44 |
continue
|
45 |
-
|
46 |
# Sort by commit date
|
47 |
commit_info.sort(key=lambda x: x[1])
|
48 |
-
|
49 |
# Extract sorted commits and versions
|
50 |
new_releases = [info[0] for info in commit_info]
|
51 |
new_versions = [info[2] for info in commit_info]
|
@@ -94,15 +99,15 @@ def get_commit_version(repo, commit_hash):
|
|
94 |
try:
|
95 |
releases = list(repo.get_releases())
|
96 |
releases.sort(key=lambda x: x.created_at)
|
97 |
-
|
98 |
commit = repo.get_commit(commit_hash)
|
99 |
commit_date = commit.commit.author.date
|
100 |
-
|
101 |
for i, release in enumerate(releases):
|
102 |
if commit_date <= release.created_at:
|
103 |
-
return releases[i].tag_name.lstrip(
|
104 |
-
|
105 |
-
return releases[-1].tag_name.lstrip(
|
106 |
except Exception as e:
|
107 |
print(f"Error processing commit {commit_hash}: {str(e)}")
|
108 |
return None
|
|
|
1 |
import json
|
2 |
import os
|
3 |
+
from datetime import datetime, timedelta
|
4 |
|
5 |
from github import Github
|
|
|
6 |
from huggingface_hub import HfApi, login
|
7 |
|
8 |
|
|
|
16 |
last_modified = dataset_info.lastModified.isoformat()
|
17 |
current_sha = dataset_info.sha
|
18 |
|
19 |
+
repo_tree = api.list_repo_tree(
|
20 |
+
repo_id=dataset_id,
|
21 |
+
repo_type="dataset",
|
22 |
+
path_in_repo="benchmark_data",
|
23 |
+
recursive=False,
|
24 |
+
)
|
25 |
cutoff_date = datetime.now(dataset_info.lastModified.tzinfo) - timedelta(weeks=6)
|
26 |
|
27 |
commit_dates_hashes = [item.path.split("/")[-1] for item in repo_tree]
|
28 |
new_commit_hashes = []
|
29 |
+
|
30 |
for commit_date_hash in commit_dates_hashes:
|
31 |
commit_date, commit_hash = commit_date_hash.split("_")
|
32 |
commit_date = datetime.strptime(commit_date, "%Y-%m-%dT%H%M%S").replace(
|
|
|
47 |
except Exception as e:
|
48 |
print(f"Error processing commit {commit_hash}: {str(e)}")
|
49 |
continue
|
50 |
+
|
51 |
# Sort by commit date
|
52 |
commit_info.sort(key=lambda x: x[1])
|
53 |
+
|
54 |
# Extract sorted commits and versions
|
55 |
new_releases = [info[0] for info in commit_info]
|
56 |
new_versions = [info[2] for info in commit_info]
|
|
|
99 |
try:
|
100 |
releases = list(repo.get_releases())
|
101 |
releases.sort(key=lambda x: x.created_at)
|
102 |
+
|
103 |
commit = repo.get_commit(commit_hash)
|
104 |
commit_date = commit.commit.author.date
|
105 |
+
|
106 |
for i, release in enumerate(releases):
|
107 |
if commit_date <= release.created_at:
|
108 |
+
return releases[i].tag_name.lstrip("v")
|
109 |
+
|
110 |
+
return releases[-1].tag_name.lstrip("v")
|
111 |
except Exception as e:
|
112 |
print(f"Error processing commit {commit_hash}: {str(e)}")
|
113 |
return None
|
Makefile
CHANGED
@@ -4,12 +4,7 @@ format:
|
|
4 |
@pre-commit run --all-files
|
5 |
|
6 |
use-huggingface-data:
|
7 |
-
@python multilingual_generate.py download
|
8 |
@python performance_generate.py download
|
9 |
-
@python quality_generate.py
|
10 |
|
11 |
use-local-data:
|
12 |
@python performance_generate.py
|
13 |
-
|
14 |
-
update-performance-data:
|
15 |
-
@python performance_generate.py download
|
|
|
4 |
@pre-commit run --all-files
|
5 |
|
6 |
use-huggingface-data:
|
|
|
7 |
@python performance_generate.py download
|
|
|
8 |
|
9 |
use-local-data:
|
10 |
@python performance_generate.py
|
|
|
|
|
|
README.md
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
---
|
2 |
-
title:
|
3 |
emoji: 🏆
|
4 |
colorFrom: green
|
5 |
colorTo: indigo
|
|
|
1 |
---
|
2 |
+
title: Argmax Open Source Regression Tests
|
3 |
emoji: 🏆
|
4 |
colorFrom: green
|
5 |
colorTo: indigo
|
constants.py
CHANGED
@@ -4,18 +4,12 @@ from iso639 import Lang
|
|
4 |
|
5 |
BANNER_TEXT = """
|
6 |
<div style="text-align: center;">
|
7 |
-
<h1><a href='https://github.com/argmaxinc/WhisperKit'>
|
8 |
</div>
|
9 |
"""
|
10 |
|
11 |
|
12 |
-
|
13 |
-
"a9b92c4": "0.9.1",
|
14 |
-
"112a023": "0.10.1",
|
15 |
-
}
|
16 |
-
|
17 |
-
|
18 |
-
INTRO_LABEL = """We present comprehensive benchmarks for WhisperKit, our on-device ASR solution, compared against a reference implementation. These benchmarks aim to help developers and enterprises make informed decisions when choosing optimized or compressed variants of machine learning models for production use. Show more."""
|
19 |
|
20 |
|
21 |
INTRO_TEXT = """
|
@@ -30,7 +24,7 @@ Tokens per Second (⬆️): The number of output tokens generated per second. Hi
|
|
30 |
Speed (⬆️): Input audio seconds transcribed per second. Higher is better.
|
31 |
|
32 |
🎯 WhisperKit is evaluated across different datasets, with a focus on per-example no-regressions (QoI) and overall accuracy (WER).
|
33 |
-
\n💻 Our
|
34 |
Reference: <a href='https://platform.openai.com/docs/guides/speech-to-text'>WhisperOpenAIAPI</a> (OpenAI's Whisper API)
|
35 |
On-device: <a href='https://github.com/argmaxinc/WhisperKit'>WhisperKit</a> (various versions and optimizations)
|
36 |
|
@@ -40,11 +34,6 @@ On-device: <a href='https://github.com/argmaxinc/WhisperKit'>WhisperKit</a> (var
|
|
40 |
<a href='https://huggingface.co/datasets/argmaxinc/librispeech'>LibriSpeech</a>: ~5 hours of short English audio clips
|
41 |
<a href='https://huggingface.co/datasets/argmaxinc/earnings22'>Earnings22</a>: ~120 hours of English audio from earnings calls
|
42 |
|
43 |
-
🌐 Multilingual Benchmarks:
|
44 |
-
These benchmarks aim to demonstrate WhisperKit's capabilities across diverse languages, helping developers assess its suitability for multilingual applications.
|
45 |
-
\nDataset:
|
46 |
-
<a href='https://huggingface.co/datasets/argmaxinc/whisperkit-evals-multilingual'>Common Voice 17.0</a>: Short-form audio files (<30s/clip) for a maximum of 400 samples per language from Common Voice 17.0. Test set covers a wide range of languages to test model's versatility.
|
47 |
-
|
48 |
\nMetrics:
|
49 |
Average WER: Provides an overall measure of model performance across all languages.
|
50 |
Language-specific WER: Allows for detailed analysis of model performance for each supported language.
|
@@ -59,7 +48,6 @@ Results are shown for both forced (correct language given as input) and unforced
|
|
59 |
- <a href='https://github.com/argmaxinc/whisperkittools'>whisperkittools</a>
|
60 |
- <a href='https://huggingface.co/datasets/argmaxinc/librispeech'>LibriSpeech</a>
|
61 |
- <a href='https://huggingface.co/datasets/argmaxinc/earnings22'>Earnings22</a>
|
62 |
-
- <a href='https://huggingface.co/datasets/argmaxinc/whisperkit-evals-multilingual'>Common Voice 17.0</a>
|
63 |
- <a href='https://platform.openai.com/docs/guides/speech-to-text'>WhisperOpenAIAPI</a>
|
64 |
"""
|
65 |
|
@@ -69,7 +57,7 @@ METHODOLOGY_TEXT = dedent(
|
|
69 |
# Methodology
|
70 |
|
71 |
## Overview
|
72 |
-
|
73 |
|
74 |
## Metrics
|
75 |
|
@@ -77,16 +65,15 @@ METHODOLOGY_TEXT = dedent(
|
|
77 |
- **Tok/s (Tokens per second)** (⬆️): Total number of text decoder forward passes divided by the end-to-end processing time.
|
78 |
- This metric varies with input data given that the pace of speech changes the text decoder % of overall latency. This metric should not be confused with the reciprocal of the text decoder latency which is constant across input files.
|
79 |
- **WER (Word Error Rate)** (⬇️): The ratio of words incorrectly transcribed when comparing the model's output to reference transcriptions, with lower values indicating better accuracy.
|
|
|
80 |
- **QoI (Quality of Inference)** (⬆️): The ratio of examples where WhisperKit performs no worse than the reference model.
|
81 |
- This metric does not capture improvements to the reference. It only measures potential regressions.
|
82 |
-
- **Multilingual results**: Separated into "language hinted" and "language predicted" categories to evaluate performance with and without prior knowledge of the input language.
|
83 |
|
84 |
## Data
|
85 |
|
86 |
- **Short-form**: 5 hours of English audiobook clips with 30s/clip comprising the [librispeech test set](https://huggingface.co/datasets/argmaxinc/librispeech). Proxy for average streaming performance.
|
87 |
- **Long-form**: 12 hours of earnings call recordings with ~1hr/clip in English with various accents. Built by randomly selecting 10% of the [earnings22 test set](https://huggingface.co/datasets/argmaxinc/earnings22-12hours). Proxy for average from-file performance.
|
88 |
- Full datasets are used for English Quality tests and random 10-minute subsets are used for Performance tests.
|
89 |
-
- **Multilingual**: Max 400 samples per language with <30s/clip from [Common Voice 17.0 Test Set](https://huggingface.co/datasets/argmaxinc/common_voice_17_0-argmax_subset-400). Common Voice covers 77 of the 99 languages supported by Whisper.
|
90 |
|
91 |
## Performance Measurement
|
92 |
|
@@ -100,9 +87,8 @@ METHODOLOGY_TEXT = dedent(
|
|
100 |
|
101 |
- Performance: Interactive filtering by model, device, OS, and performance metrics
|
102 |
- Timeline: Visualizations of performance trends
|
103 |
-
- English Quality: English transcription quality on short- and long-form audio
|
104 |
-
- Multilingual Quality: Multilingual (77) transcription quality on short-form audio with and without language prediction
|
105 |
- Device Support: Matrix of supported device, OS and model version combinations. Unsupported combinations are marked with :warning:.
|
|
|
106 |
- This methodology ensures a comprehensive and fair evaluation of speech recognition models supported by WhisperKit across a wide range of scenarios and use cases.
|
107 |
"""
|
108 |
)
|
@@ -112,6 +98,7 @@ PERFORMANCE_TEXT = dedent(
|
|
112 |
## Metrics
|
113 |
- **Speed factor** (⬆️): Computed as the ratio of input audio length to end-to-end WhisperKit latency for transcribing that audio. A speed factor of N means N seconds of input audio was transcribed in 1 second.
|
114 |
- **Tok/s (Tokens per second)** (⬆️): Total number of text decoder forward passes divided by the end-to-end processing time.
|
|
|
115 |
|
116 |
## Data
|
117 |
|
@@ -141,7 +128,7 @@ COL_NAMES = {
|
|
141 |
"device": "Device",
|
142 |
"os": "OS",
|
143 |
"english_wer": "English WER",
|
144 |
-
"
|
145 |
}
|
146 |
|
147 |
|
|
|
4 |
|
5 |
BANNER_TEXT = """
|
6 |
<div style="text-align: center;">
|
7 |
+
<h1><a href='https://github.com/argmaxinc/WhisperKit'>Argmax Open Source Regression Tests</a></h1>
|
8 |
</div>
|
9 |
"""
|
10 |
|
11 |
|
12 |
+
INTRO_LABEL = """We present comprehensive regression tests for WhisperKit, our on-device ASR solution. These tests aim to help developers and enterprises make informed decisions when choosing optimized or compressed variants of machine learning models for production use. Show more."""
|
|
|
|
|
|
|
|
|
|
|
|
|
13 |
|
14 |
|
15 |
INTRO_TEXT = """
|
|
|
24 |
Speed (⬆️): Input audio seconds transcribed per second. Higher is better.
|
25 |
|
26 |
🎯 WhisperKit is evaluated across different datasets, with a focus on per-example no-regressions (QoI) and overall accuracy (WER).
|
27 |
+
\n💻 Our regression tests include:
|
28 |
Reference: <a href='https://platform.openai.com/docs/guides/speech-to-text'>WhisperOpenAIAPI</a> (OpenAI's Whisper API)
|
29 |
On-device: <a href='https://github.com/argmaxinc/WhisperKit'>WhisperKit</a> (various versions and optimizations)
|
30 |
|
|
|
34 |
<a href='https://huggingface.co/datasets/argmaxinc/librispeech'>LibriSpeech</a>: ~5 hours of short English audio clips
|
35 |
<a href='https://huggingface.co/datasets/argmaxinc/earnings22'>Earnings22</a>: ~120 hours of English audio from earnings calls
|
36 |
|
|
|
|
|
|
|
|
|
|
|
37 |
\nMetrics:
|
38 |
Average WER: Provides an overall measure of model performance across all languages.
|
39 |
Language-specific WER: Allows for detailed analysis of model performance for each supported language.
|
|
|
48 |
- <a href='https://github.com/argmaxinc/whisperkittools'>whisperkittools</a>
|
49 |
- <a href='https://huggingface.co/datasets/argmaxinc/librispeech'>LibriSpeech</a>
|
50 |
- <a href='https://huggingface.co/datasets/argmaxinc/earnings22'>Earnings22</a>
|
|
|
51 |
- <a href='https://platform.openai.com/docs/guides/speech-to-text'>WhisperOpenAIAPI</a>
|
52 |
"""
|
53 |
|
|
|
57 |
# Methodology
|
58 |
|
59 |
## Overview
|
60 |
+
Argmax Open Source Regression Tests is the one-stop shop for on-device performance testing of WhisperKit models across supported devices, OS versions and audio datasets.
|
61 |
|
62 |
## Metrics
|
63 |
|
|
|
65 |
- **Tok/s (Tokens per second)** (⬆️): Total number of text decoder forward passes divided by the end-to-end processing time.
|
66 |
- This metric varies with input data given that the pace of speech changes the text decoder % of overall latency. This metric should not be confused with the reciprocal of the text decoder latency which is constant across input files.
|
67 |
- **WER (Word Error Rate)** (⬇️): The ratio of words incorrectly transcribed when comparing the model's output to reference transcriptions, with lower values indicating better accuracy.
|
68 |
+
- **Parity**: The difference between measured WER and ground truth WER (Measured - Ground Truth). Values near zero indicate device performance matches expectations.
|
69 |
- **QoI (Quality of Inference)** (⬆️): The ratio of examples where WhisperKit performs no worse than the reference model.
|
70 |
- This metric does not capture improvements to the reference. It only measures potential regressions.
|
|
|
71 |
|
72 |
## Data
|
73 |
|
74 |
- **Short-form**: 5 hours of English audiobook clips with 30s/clip comprising the [librispeech test set](https://huggingface.co/datasets/argmaxinc/librispeech). Proxy for average streaming performance.
|
75 |
- **Long-form**: 12 hours of earnings call recordings with ~1hr/clip in English with various accents. Built by randomly selecting 10% of the [earnings22 test set](https://huggingface.co/datasets/argmaxinc/earnings22-12hours). Proxy for average from-file performance.
|
76 |
- Full datasets are used for English Quality tests and random 10-minute subsets are used for Performance tests.
|
|
|
77 |
|
78 |
## Performance Measurement
|
79 |
|
|
|
87 |
|
88 |
- Performance: Interactive filtering by model, device, OS, and performance metrics
|
89 |
- Timeline: Visualizations of performance trends
|
|
|
|
|
90 |
- Device Support: Matrix of supported device, OS and model version combinations. Unsupported combinations are marked with :warning:.
|
91 |
+
- Test Coverage: Analysis of testing completeness across Apple devices, OS versions, and chips with coverage percentages.
|
92 |
- This methodology ensures a comprehensive and fair evaluation of speech recognition models supported by WhisperKit across a wide range of scenarios and use cases.
|
93 |
"""
|
94 |
)
|
|
|
98 |
## Metrics
|
99 |
- **Speed factor** (⬆️): Computed as the ratio of input audio length to end-to-end WhisperKit latency for transcribing that audio. A speed factor of N means N seconds of input audio was transcribed in 1 second.
|
100 |
- **Tok/s (Tokens per second)** (⬆️): Total number of text decoder forward passes divided by the end-to-end processing time.
|
101 |
+
- **Parity**: Difference between measured WER and ground truth WER (Measured - Ground Truth). Positive values indicate performance is worse than expected, negative values indicate better than expected performance.
|
102 |
|
103 |
## Data
|
104 |
|
|
|
128 |
"device": "Device",
|
129 |
"os": "OS",
|
130 |
"english_wer": "English WER",
|
131 |
+
"parity": "Parity",
|
132 |
}
|
133 |
|
134 |
|
dashboard_data/Mac.json
ADDED
@@ -0,0 +1,241 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"date_generated": "2025-06-16T15:52:13.069236",
|
3 |
+
"xcode_version": "Developer",
|
4 |
+
"total_menu": {
|
5 |
+
"MacBook Pro 14\" (M4, 2024)": {
|
6 |
+
"sku": "Mac16,10",
|
7 |
+
"chip": "M4",
|
8 |
+
"ram": "16 GB"
|
9 |
+
},
|
10 |
+
"MacBook Pro 16\" (M4, 2024)": {
|
11 |
+
"sku": "Mac16,11",
|
12 |
+
"chip": "M4",
|
13 |
+
"ram": "16 GB"
|
14 |
+
},
|
15 |
+
"MacBook Pro 14\" (M4 Pro, 2024)": {
|
16 |
+
"sku": "Mac16,12",
|
17 |
+
"chip": "M4",
|
18 |
+
"ram": "24 GB"
|
19 |
+
},
|
20 |
+
"MacBook Pro 16\" (M4 Pro, 2024)": {
|
21 |
+
"sku": "Mac16,13",
|
22 |
+
"chip": "M4",
|
23 |
+
"ram": "24 GB"
|
24 |
+
},
|
25 |
+
"iMac 24\" (M4, 2024)": {
|
26 |
+
"sku": "Mac16,1",
|
27 |
+
"chip": "M4",
|
28 |
+
"ram": "16 GB"
|
29 |
+
},
|
30 |
+
"iMac 24\" (M4, 2024) - Higher Config": {
|
31 |
+
"sku": "Mac16,2",
|
32 |
+
"chip": "M4",
|
33 |
+
"ram": "24 GB"
|
34 |
+
},
|
35 |
+
"Mac mini (M4, 2024)": {
|
36 |
+
"sku": "Mac16,3",
|
37 |
+
"chip": "M4",
|
38 |
+
"ram": "16 GB"
|
39 |
+
},
|
40 |
+
"Mac mini (M4 Pro, 2024)": {
|
41 |
+
"sku": "Mac16,5",
|
42 |
+
"chip": "M4",
|
43 |
+
"ram": "24 GB"
|
44 |
+
},
|
45 |
+
"MacBook Air 13\" (M4, 2024)": {
|
46 |
+
"sku": "Mac16,6",
|
47 |
+
"chip": "M4",
|
48 |
+
"ram": "16 GB"
|
49 |
+
},
|
50 |
+
"MacBook Air 15\" (M4, 2024)": {
|
51 |
+
"sku": "Mac16,7",
|
52 |
+
"chip": "M4",
|
53 |
+
"ram": "16 GB"
|
54 |
+
},
|
55 |
+
"Mac Pro (M2 Ultra, 2023)": {
|
56 |
+
"sku": "Mac16,8",
|
57 |
+
"chip": "M2",
|
58 |
+
"ram": "64 GB"
|
59 |
+
},
|
60 |
+
"Mac Pro (M2 Ultra, 2023) - Higher Config": {
|
61 |
+
"sku": "Mac16,9",
|
62 |
+
"chip": "M2",
|
63 |
+
"ram": "128 GB"
|
64 |
+
},
|
65 |
+
"MacBook Pro 14\" (M3, 2023)": {
|
66 |
+
"sku": "Mac15,3",
|
67 |
+
"chip": "M3",
|
68 |
+
"ram": "16 GB"
|
69 |
+
},
|
70 |
+
"MacBook Pro 16\" (M3, 2023)": {
|
71 |
+
"sku": "Mac15,4",
|
72 |
+
"chip": "M3",
|
73 |
+
"ram": "16 GB"
|
74 |
+
},
|
75 |
+
"MacBook Pro 14\" (M3 Pro, 2023)": {
|
76 |
+
"sku": "Mac15,5",
|
77 |
+
"chip": "M3",
|
78 |
+
"ram": "24 GB"
|
79 |
+
},
|
80 |
+
"MacBook Pro 16\" (M3 Pro, 2023)": {
|
81 |
+
"sku": "Mac15,6",
|
82 |
+
"chip": "M3",
|
83 |
+
"ram": "24 GB"
|
84 |
+
},
|
85 |
+
"MacBook Pro 14\" (M3 Max, 2023)": {
|
86 |
+
"sku": "Mac15,7",
|
87 |
+
"chip": "M3",
|
88 |
+
"ram": "32 GB"
|
89 |
+
},
|
90 |
+
"MacBook Pro 16\" (M3 Max, 2023)": {
|
91 |
+
"sku": "Mac15,8",
|
92 |
+
"chip": "M3",
|
93 |
+
"ram": "32 GB"
|
94 |
+
},
|
95 |
+
"iMac 24\" (M3, 2023)": {
|
96 |
+
"sku": "Mac15,9",
|
97 |
+
"chip": "M3",
|
98 |
+
"ram": "16 GB"
|
99 |
+
},
|
100 |
+
"iMac 24\" (M3, 2023) - Higher Config": {
|
101 |
+
"sku": "Mac15,10",
|
102 |
+
"chip": "M3",
|
103 |
+
"ram": "24 GB"
|
104 |
+
},
|
105 |
+
"MacBook Air 13\" (M3, 2024)": {
|
106 |
+
"sku": "Mac15,11",
|
107 |
+
"chip": "M3",
|
108 |
+
"ram": "16 GB"
|
109 |
+
},
|
110 |
+
"MacBook Air 15\" (M3, 2024)": {
|
111 |
+
"sku": "Mac15,12",
|
112 |
+
"chip": "M3",
|
113 |
+
"ram": "16 GB"
|
114 |
+
},
|
115 |
+
"Mac mini (M3, 2024)": {
|
116 |
+
"sku": "Mac15,13",
|
117 |
+
"chip": "M3",
|
118 |
+
"ram": "16 GB"
|
119 |
+
},
|
120 |
+
"MacBook Air 13\" (M2, 2022)": {
|
121 |
+
"sku": "Mac14,2",
|
122 |
+
"chip": "M2",
|
123 |
+
"ram": "16 GB"
|
124 |
+
},
|
125 |
+
"MacBook Pro 13\" (M2, 2022)": {
|
126 |
+
"sku": "Mac14,3",
|
127 |
+
"chip": "M2",
|
128 |
+
"ram": "16 GB"
|
129 |
+
},
|
130 |
+
"Mac mini (M2, 2023)": {
|
131 |
+
"sku": "Mac14,4",
|
132 |
+
"chip": "M2",
|
133 |
+
"ram": "16 GB"
|
134 |
+
},
|
135 |
+
"MacBook Pro 14\" (M2, 2023)": {
|
136 |
+
"sku": "Mac14,5",
|
137 |
+
"chip": "M2",
|
138 |
+
"ram": "16 GB"
|
139 |
+
},
|
140 |
+
"MacBook Pro 16\" (M2, 2023)": {
|
141 |
+
"sku": "Mac14,6",
|
142 |
+
"chip": "M2",
|
143 |
+
"ram": "16 GB"
|
144 |
+
},
|
145 |
+
"MacBook Pro 14\" (M2 Pro, 2023)": {
|
146 |
+
"sku": "Mac14,7",
|
147 |
+
"chip": "M2",
|
148 |
+
"ram": "24 GB"
|
149 |
+
},
|
150 |
+
"MacBook Pro 16\" (M2 Pro, 2023)": {
|
151 |
+
"sku": "Mac14,8",
|
152 |
+
"chip": "M2",
|
153 |
+
"ram": "24 GB"
|
154 |
+
},
|
155 |
+
"MacBook Pro 14\" (M2 Max, 2023)": {
|
156 |
+
"sku": "Mac14,9",
|
157 |
+
"chip": "M2",
|
158 |
+
"ram": "32 GB"
|
159 |
+
},
|
160 |
+
"MacBook Pro 16\" (M2 Max, 2023)": {
|
161 |
+
"sku": "Mac14,10",
|
162 |
+
"chip": "M2",
|
163 |
+
"ram": "32 GB"
|
164 |
+
},
|
165 |
+
"Mac mini (M2 Pro, 2023)": {
|
166 |
+
"sku": "Mac14,12",
|
167 |
+
"chip": "M2",
|
168 |
+
"ram": "24 GB"
|
169 |
+
},
|
170 |
+
"Mac Studio (M2 Max, 2023)": {
|
171 |
+
"sku": "Mac14,13",
|
172 |
+
"chip": "M2",
|
173 |
+
"ram": "32 GB"
|
174 |
+
},
|
175 |
+
"Mac Studio (M2 Ultra, 2023)": {
|
176 |
+
"sku": "Mac14,14",
|
177 |
+
"chip": "M2",
|
178 |
+
"ram": "64 GB"
|
179 |
+
},
|
180 |
+
"MacBook Air 15\" (M2, 2023)": {
|
181 |
+
"sku": "Mac14,15",
|
182 |
+
"chip": "M2",
|
183 |
+
"ram": "16 GB"
|
184 |
+
},
|
185 |
+
"MacBook Pro 13\" (M1, 2020)": {
|
186 |
+
"sku": "MacBookPro17,1",
|
187 |
+
"chip": "M1",
|
188 |
+
"ram": "16 GB"
|
189 |
+
},
|
190 |
+
"MacBook Pro 14\" (M1 Pro, 2021)": {
|
191 |
+
"sku": "MacBookPro18,1",
|
192 |
+
"chip": "M1",
|
193 |
+
"ram": "24 GB"
|
194 |
+
},
|
195 |
+
"MacBook Pro 16\" (M1 Pro, 2021)": {
|
196 |
+
"sku": "MacBookPro18,2",
|
197 |
+
"chip": "M1",
|
198 |
+
"ram": "24 GB"
|
199 |
+
},
|
200 |
+
"MacBook Pro 14\" (M1 Max, 2021)": {
|
201 |
+
"sku": "MacBookPro18,3",
|
202 |
+
"chip": "M1",
|
203 |
+
"ram": "32 GB"
|
204 |
+
},
|
205 |
+
"MacBook Pro 16\" (M1 Max, 2021)": {
|
206 |
+
"sku": "MacBookPro18,4",
|
207 |
+
"chip": "M1",
|
208 |
+
"ram": "32 GB"
|
209 |
+
},
|
210 |
+
"MacBook Air 13\" (M1, 2020)": {
|
211 |
+
"sku": "MacBookAir10,1",
|
212 |
+
"chip": "M1",
|
213 |
+
"ram": "16 GB"
|
214 |
+
},
|
215 |
+
"Mac mini (M1, 2020)": {
|
216 |
+
"sku": "Macmini9,1",
|
217 |
+
"chip": "M1",
|
218 |
+
"ram": "16 GB"
|
219 |
+
},
|
220 |
+
"iMac 24\" (M1, 2021)": {
|
221 |
+
"sku": "iMac21,1",
|
222 |
+
"chip": "M1",
|
223 |
+
"ram": "16 GB"
|
224 |
+
},
|
225 |
+
"iMac 24\" (M1, 2021) - Higher Config": {
|
226 |
+
"sku": "iMac21,2",
|
227 |
+
"chip": "M1",
|
228 |
+
"ram": "24 GB"
|
229 |
+
},
|
230 |
+
"Mac Studio (M1 Max, 2022)": {
|
231 |
+
"sku": "Mac13,1",
|
232 |
+
"chip": "M1",
|
233 |
+
"ram": "32 GB"
|
234 |
+
},
|
235 |
+
"Mac Studio (M1 Ultra, 2022)": {
|
236 |
+
"sku": "Mac13,2",
|
237 |
+
"chip": "M1",
|
238 |
+
"ram": "64 GB"
|
239 |
+
}
|
240 |
+
}
|
241 |
+
}
|
dashboard_data/config.json
CHANGED
@@ -1,9 +1,43 @@
|
|
1 |
{
|
2 |
-
"name": "
|
3 |
-
"version": "0.
|
4 |
"device_support": [
|
5 |
{
|
6 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
"models": {
|
8 |
"default": "openai_whisper-tiny",
|
9 |
"supported": [
|
@@ -15,27 +49,23 @@
|
|
15 |
}
|
16 |
},
|
17 |
{
|
18 |
-
"
|
19 |
-
"models": {
|
20 |
-
"default": "openai_whisper-base",
|
21 |
-
"supported": [
|
22 |
-
"openai_whisper-tiny",
|
23 |
-
"openai_whisper-tiny.en",
|
24 |
-
"openai_whisper-base",
|
25 |
-
"openai_whisper-base.en",
|
26 |
-
"openai_whisper-small",
|
27 |
-
"openai_whisper-small.en"
|
28 |
-
]
|
29 |
-
}
|
30 |
-
},
|
31 |
-
{
|
32 |
"identifiers": [
|
33 |
-
"
|
34 |
-
"iPhone15",
|
35 |
-
"
|
36 |
-
"
|
37 |
-
"
|
38 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
39 |
],
|
40 |
"models": {
|
41 |
"default": "openai_whisper-base",
|
@@ -46,6 +76,8 @@
|
|
46 |
"openai_whisper-base.en",
|
47 |
"openai_whisper-small",
|
48 |
"openai_whisper-small.en",
|
|
|
|
|
49 |
"openai_whisper-large-v2_949MB",
|
50 |
"openai_whisper-large-v2_turbo_955MB",
|
51 |
"openai_whisper-large-v3_947MB",
|
@@ -53,24 +85,38 @@
|
|
53 |
"distil-whisper_distil-large-v3_594MB",
|
54 |
"distil-whisper_distil-large-v3_turbo_600MB",
|
55 |
"openai_whisper-large-v3-v20240930_626MB",
|
56 |
-
"openai_whisper-large-v3-v20240930_turbo_632MB"
|
|
|
57 |
]
|
58 |
}
|
59 |
},
|
60 |
{
|
|
|
61 |
"identifiers": [
|
62 |
-
"
|
63 |
-
"
|
|
|
|
|
|
|
64 |
"MacBookAir10,1",
|
65 |
-
"
|
66 |
-
"
|
67 |
-
"
|
68 |
-
"
|
|
|
69 |
"iPad13,4",
|
70 |
-
"iPad13,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
71 |
],
|
72 |
"models": {
|
73 |
-
"default": "openai_whisper-large-v3-
|
74 |
"supported": [
|
75 |
"openai_whisper-tiny",
|
76 |
"openai_whisper-tiny.en",
|
@@ -78,6 +124,8 @@
|
|
78 |
"openai_whisper-base.en",
|
79 |
"openai_whisper-small",
|
80 |
"openai_whisper-small.en",
|
|
|
|
|
81 |
"openai_whisper-large-v2",
|
82 |
"openai_whisper-large-v2_949MB",
|
83 |
"openai_whisper-large-v3",
|
@@ -85,15 +133,51 @@
|
|
85 |
"distil-whisper_distil-large-v3",
|
86 |
"distil-whisper_distil-large-v3_594MB",
|
87 |
"openai_whisper-large-v3-v20240930",
|
88 |
-
"openai_whisper-large-v3-v20240930_626MB"
|
|
|
|
|
89 |
]
|
90 |
}
|
91 |
},
|
92 |
{
|
|
|
93 |
"identifiers": [
|
94 |
-
"Mac14",
|
95 |
-
"
|
96 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
97 |
"iPad14,3",
|
98 |
"iPad14,4",
|
99 |
"iPad14,5",
|
@@ -102,7 +186,14 @@
|
|
102 |
"iPad14,9",
|
103 |
"iPad14,10",
|
104 |
"iPad14,11",
|
105 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
106 |
],
|
107 |
"models": {
|
108 |
"default": "openai_whisper-large-v3-v20240930",
|
@@ -113,6 +204,8 @@
|
|
113 |
"openai_whisper-base.en",
|
114 |
"openai_whisper-small",
|
115 |
"openai_whisper-small.en",
|
|
|
|
|
116 |
"openai_whisper-large-v2",
|
117 |
"openai_whisper-large-v2_949MB",
|
118 |
"openai_whisper-large-v2_turbo",
|
@@ -128,9 +221,99 @@
|
|
128 |
"openai_whisper-large-v3-v20240930",
|
129 |
"openai_whisper-large-v3-v20240930_turbo",
|
130 |
"openai_whisper-large-v3-v20240930_626MB",
|
131 |
-
"openai_whisper-large-v3-v20240930_turbo_632MB"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
132 |
]
|
133 |
}
|
134 |
}
|
135 |
-
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
136 |
}
|
|
|
1 |
{
|
2 |
+
"name": "argmax-pro-sdk",
|
3 |
+
"version": "0.5",
|
4 |
"device_support": [
|
5 |
{
|
6 |
+
"chips": "A12, A13, S9, S10",
|
7 |
+
"identifiers": [
|
8 |
+
"iPhone11,2",
|
9 |
+
"iPhone11,3",
|
10 |
+
"iPhone11,4",
|
11 |
+
"iPhone11,5",
|
12 |
+
"iPhone11,6",
|
13 |
+
"iPhone11,8",
|
14 |
+
"iPhone12,1",
|
15 |
+
"iPhone12,2",
|
16 |
+
"iPhone12,3",
|
17 |
+
"iPhone12,4",
|
18 |
+
"iPhone12,5",
|
19 |
+
"iPhone12,8",
|
20 |
+
"iPad8,1",
|
21 |
+
"iPad8,2",
|
22 |
+
"iPad8,3",
|
23 |
+
"iPad8,4",
|
24 |
+
"iPad8,5",
|
25 |
+
"iPad8,6",
|
26 |
+
"iPad8,7",
|
27 |
+
"iPad8,8",
|
28 |
+
"iPad8,9",
|
29 |
+
"iPad8,10",
|
30 |
+
"iPad8,11",
|
31 |
+
"iPad8,12",
|
32 |
+
"iPad11,1",
|
33 |
+
"iPad11,2",
|
34 |
+
"iPad11,3",
|
35 |
+
"iPad11,4",
|
36 |
+
"iPad11,6",
|
37 |
+
"iPad11,7",
|
38 |
+
"iPad12,1",
|
39 |
+
"iPad12,2"
|
40 |
+
],
|
41 |
"models": {
|
42 |
"default": "openai_whisper-tiny",
|
43 |
"supported": [
|
|
|
49 |
}
|
50 |
},
|
51 |
{
|
52 |
+
"chips": "A16, A17 Pro, A18, A18 Pro",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
53 |
"identifiers": [
|
54 |
+
"iPhone15,2",
|
55 |
+
"iPhone15,3",
|
56 |
+
"iPhone15,4",
|
57 |
+
"iPhone15,5",
|
58 |
+
"iPhone16,1",
|
59 |
+
"iPhone16,2",
|
60 |
+
"iPhone17,1",
|
61 |
+
"iPhone17,2",
|
62 |
+
"iPhone17,3",
|
63 |
+
"iPhone17,4",
|
64 |
+
"iPhone17,5",
|
65 |
+
"iPad15,7",
|
66 |
+
"iPad15,8",
|
67 |
+
"iPad16,1",
|
68 |
+
"iPad16,2"
|
69 |
],
|
70 |
"models": {
|
71 |
"default": "openai_whisper-base",
|
|
|
76 |
"openai_whisper-base.en",
|
77 |
"openai_whisper-small",
|
78 |
"openai_whisper-small.en",
|
79 |
+
"openai_whisper-small_216MB",
|
80 |
+
"openai_whisper-small.en_217MB",
|
81 |
"openai_whisper-large-v2_949MB",
|
82 |
"openai_whisper-large-v2_turbo_955MB",
|
83 |
"openai_whisper-large-v3_947MB",
|
|
|
85 |
"distil-whisper_distil-large-v3_594MB",
|
86 |
"distil-whisper_distil-large-v3_turbo_600MB",
|
87 |
"openai_whisper-large-v3-v20240930_626MB",
|
88 |
+
"openai_whisper-large-v3-v20240930_turbo_632MB",
|
89 |
+
"nvidia_parakeet-v2_476MB"
|
90 |
]
|
91 |
}
|
92 |
},
|
93 |
{
|
94 |
+
"chips": "M1",
|
95 |
"identifiers": [
|
96 |
+
"MacBookPro17,1",
|
97 |
+
"MacBookPro18,1",
|
98 |
+
"MacBookPro18,2",
|
99 |
+
"MacBookPro18,3",
|
100 |
+
"MacBookPro18,4",
|
101 |
"MacBookAir10,1",
|
102 |
+
"Macmini9,1",
|
103 |
+
"iMac21,1",
|
104 |
+
"iMac21,2",
|
105 |
+
"Mac13,1",
|
106 |
+
"Mac13,2",
|
107 |
"iPad13,4",
|
108 |
+
"iPad13,5",
|
109 |
+
"iPad13,6",
|
110 |
+
"iPad13,7",
|
111 |
+
"iPad13,8",
|
112 |
+
"iPad13,9",
|
113 |
+
"iPad13,10",
|
114 |
+
"iPad13,11",
|
115 |
+
"iPad13,16",
|
116 |
+
"iPad13,17"
|
117 |
],
|
118 |
"models": {
|
119 |
+
"default": "openai_whisper-large-v3-v20240930_626MB",
|
120 |
"supported": [
|
121 |
"openai_whisper-tiny",
|
122 |
"openai_whisper-tiny.en",
|
|
|
124 |
"openai_whisper-base.en",
|
125 |
"openai_whisper-small",
|
126 |
"openai_whisper-small.en",
|
127 |
+
"openai_whisper-small_216MB",
|
128 |
+
"openai_whisper-small.en_217MB",
|
129 |
"openai_whisper-large-v2",
|
130 |
"openai_whisper-large-v2_949MB",
|
131 |
"openai_whisper-large-v3",
|
|
|
133 |
"distil-whisper_distil-large-v3",
|
134 |
"distil-whisper_distil-large-v3_594MB",
|
135 |
"openai_whisper-large-v3-v20240930",
|
136 |
+
"openai_whisper-large-v3-v20240930_626MB",
|
137 |
+
"nvidia_parakeet-v2_476MB",
|
138 |
+
"nvidia_parakeet-v2"
|
139 |
]
|
140 |
}
|
141 |
},
|
142 |
{
|
143 |
+
"chips": "M2, M3, M4",
|
144 |
"identifiers": [
|
145 |
+
"Mac14,2",
|
146 |
+
"Mac14,3",
|
147 |
+
"Mac14,4",
|
148 |
+
"Mac14,5",
|
149 |
+
"Mac14,6",
|
150 |
+
"Mac14,7",
|
151 |
+
"Mac14,8",
|
152 |
+
"Mac14,9",
|
153 |
+
"Mac14,10",
|
154 |
+
"Mac14,12",
|
155 |
+
"Mac14,13",
|
156 |
+
"Mac14,14",
|
157 |
+
"Mac14,15",
|
158 |
+
"Mac15,3",
|
159 |
+
"Mac15,4",
|
160 |
+
"Mac15,5",
|
161 |
+
"Mac15,6",
|
162 |
+
"Mac15,7",
|
163 |
+
"Mac15,8",
|
164 |
+
"Mac15,9",
|
165 |
+
"Mac15,10",
|
166 |
+
"Mac15,11",
|
167 |
+
"Mac15,12",
|
168 |
+
"Mac15,13",
|
169 |
+
"Mac16,1",
|
170 |
+
"Mac16,2",
|
171 |
+
"Mac16,3",
|
172 |
+
"Mac16,5",
|
173 |
+
"Mac16,6",
|
174 |
+
"Mac16,7",
|
175 |
+
"Mac16,8",
|
176 |
+
"Mac16,9",
|
177 |
+
"Mac16,10",
|
178 |
+
"Mac16,11",
|
179 |
+
"Mac16,12",
|
180 |
+
"Mac16,13",
|
181 |
"iPad14,3",
|
182 |
"iPad14,4",
|
183 |
"iPad14,5",
|
|
|
186 |
"iPad14,9",
|
187 |
"iPad14,10",
|
188 |
"iPad14,11",
|
189 |
+
"iPad15,3",
|
190 |
+
"iPad15,4",
|
191 |
+
"iPad15,5",
|
192 |
+
"iPad15,6",
|
193 |
+
"iPad16,3",
|
194 |
+
"iPad16,4",
|
195 |
+
"iPad16,5",
|
196 |
+
"iPad16,6"
|
197 |
],
|
198 |
"models": {
|
199 |
"default": "openai_whisper-large-v3-v20240930",
|
|
|
204 |
"openai_whisper-base.en",
|
205 |
"openai_whisper-small",
|
206 |
"openai_whisper-small.en",
|
207 |
+
"openai_whisper-small_216MB",
|
208 |
+
"openai_whisper-small.en_217MB",
|
209 |
"openai_whisper-large-v2",
|
210 |
"openai_whisper-large-v2_949MB",
|
211 |
"openai_whisper-large-v2_turbo",
|
|
|
221 |
"openai_whisper-large-v3-v20240930",
|
222 |
"openai_whisper-large-v3-v20240930_turbo",
|
223 |
"openai_whisper-large-v3-v20240930_626MB",
|
224 |
+
"openai_whisper-large-v3-v20240930_turbo_632MB",
|
225 |
+
"nvidia_parakeet-v2_476MB",
|
226 |
+
"nvidia_parakeet-v2"
|
227 |
+
]
|
228 |
+
}
|
229 |
+
},
|
230 |
+
{
|
231 |
+
"chips": "A14",
|
232 |
+
"identifiers": [
|
233 |
+
"iPhone13,1",
|
234 |
+
"iPhone13,2",
|
235 |
+
"iPhone13,3",
|
236 |
+
"iPhone13,4",
|
237 |
+
"iPad13,1",
|
238 |
+
"iPad13,2",
|
239 |
+
"iPad13,18",
|
240 |
+
"iPad13,19"
|
241 |
+
],
|
242 |
+
"models": {
|
243 |
+
"default": "openai_whisper-base",
|
244 |
+
"supported": [
|
245 |
+
"openai_whisper-tiny",
|
246 |
+
"openai_whisper-tiny.en",
|
247 |
+
"openai_whisper-base",
|
248 |
+
"openai_whisper-base.en",
|
249 |
+
"openai_whisper-small",
|
250 |
+
"openai_whisper-small.en",
|
251 |
+
"openai_whisper-small_216MB",
|
252 |
+
"openai_whisper-small.en_217MB",
|
253 |
+
"nvidia_parakeet-v2_476MB"
|
254 |
+
]
|
255 |
+
}
|
256 |
+
},
|
257 |
+
{
|
258 |
+
"chips": "A15",
|
259 |
+
"identifiers": [
|
260 |
+
"iPhone14,2",
|
261 |
+
"iPhone14,3",
|
262 |
+
"iPhone14,4",
|
263 |
+
"iPhone14,5",
|
264 |
+
"iPhone14,6",
|
265 |
+
"iPhone14,7",
|
266 |
+
"iPhone14,8",
|
267 |
+
"iPad14,1",
|
268 |
+
"iPad14,2"
|
269 |
+
],
|
270 |
+
"models": {
|
271 |
+
"default": "openai_whisper-base",
|
272 |
+
"supported": [
|
273 |
+
"openai_whisper-tiny",
|
274 |
+
"openai_whisper-tiny.en",
|
275 |
+
"openai_whisper-base",
|
276 |
+
"openai_whisper-base.en",
|
277 |
+
"openai_whisper-small",
|
278 |
+
"openai_whisper-small.en",
|
279 |
+
"openai_whisper-small_216MB",
|
280 |
+
"openai_whisper-small.en_217MB",
|
281 |
+
"openai_whisper-large-v2_949MB",
|
282 |
+
"openai_whisper-large-v2_turbo_955MB",
|
283 |
+
"openai_whisper-large-v3_947MB",
|
284 |
+
"openai_whisper-large-v3_turbo_954MB",
|
285 |
+
"distil-whisper_distil-large-v3_594MB",
|
286 |
+
"distil-whisper_distil-large-v3_turbo_600MB",
|
287 |
+
"openai_whisper-large-v3-v20240930_626MB",
|
288 |
+
"openai_whisper-large-v3-v20240930_turbo_632MB",
|
289 |
+
"nvidia_parakeet-v2_476MB"
|
290 |
]
|
291 |
}
|
292 |
}
|
293 |
+
],
|
294 |
+
"model_checksums": {
|
295 |
+
"distil-whisper_distil-large-v3": "9cd8271143b919402ae776c30b479565",
|
296 |
+
"distil-whisper_distil-large-v3_594MB": "ca532f45ddbf8a3d241132cc5cf41639",
|
297 |
+
"distil-whisper_distil-large-v3_turbo": "b8638452c6568dfe33a33bfcc2bc6aca",
|
298 |
+
"distil-whisper_distil-large-v3_turbo_600MB": "81746b4b1afbbb01a8ae9ea452460d88",
|
299 |
+
"openai_whisper-base.en": "fbcfd586f15e2952251b1d3257f18471",
|
300 |
+
"openai_whisper-base": "36e60501ad0f01c1a5719e83a1f63f20",
|
301 |
+
"openai_whisper-large-v2": "21b86c07318aeeef54598f15b7903979",
|
302 |
+
"openai_whisper-large-v2_949MB": "71bad4e1566749d1060eda42308d9fb4",
|
303 |
+
"openai_whisper-large-v2_turbo": "7734959b6550e7b5c2d732bf2b7acd23",
|
304 |
+
"openai_whisper-large-v2_turbo_955MB": "cb6411862a48ec75325572081f01e5b5",
|
305 |
+
"openai_whisper-large-v3-v20240930": "17ebd78ff7edfa59001b554e9cc4c021",
|
306 |
+
"openai_whisper-large-v3-v20240930_547MB": "c945dad68449ac3c78ecb2d561ac189d",
|
307 |
+
"openai_whisper-large-v3-v20240930_626MB": "578fe5a07f4eb7e4187c920bca571aa5",
|
308 |
+
"openai_whisper-large-v3-v20240930_turbo": "dfbf09ab741af1d5400ddbd07bb37dad",
|
309 |
+
"openai_whisper-large-v3-v20240930_turbo_632MB": "33954440dbd785ca1828afe25514f5a5",
|
310 |
+
"openai_whisper-large-v3": "a6f24dc72785722e9cea89e227856dfe",
|
311 |
+
"openai_whisper-large-v3_947MB": "ef6b0e9622a046ce2361b4c72307877f",
|
312 |
+
"openai_whisper-large-v3_turbo": "c550fbdea70c5784d322c0a427f8b5cd",
|
313 |
+
"openai_whisper-large-v3_turbo_954MB": "e639c4bb98d905064ef5dd38757dd9d1",
|
314 |
+
"openai_whisper-small.en": "38efe6a00706bbdb995795c67a836e5e",
|
315 |
+
"openai_whisper-small": "f1d21adb950bc9be5d5343bcdeccd23b",
|
316 |
+
"openai_whisper-tiny.en": "e1183fd55448923b1ce43a2da67aa21f",
|
317 |
+
"openai_whisper-tiny": "7147518a3d68ddbea0691e04cfffa4ff"
|
318 |
+
}
|
319 |
}
|
dashboard_data/iPad.json
ADDED
@@ -0,0 +1,206 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"date_generated": "2025-06-23T18:22:05.764459",
|
3 |
+
"xcode_version": "Version 26.0 (17A5241e)",
|
4 |
+
"total_menu": {
|
5 |
+
"iPad Pro (11-inch) (2nd generation)": {
|
6 |
+
"sku": [
|
7 |
+
"iPad8,9",
|
8 |
+
"iPad8,10"
|
9 |
+
],
|
10 |
+
"chip": "A12Z",
|
11 |
+
"ram": "6 GB"
|
12 |
+
},
|
13 |
+
"iPad Pro (12.9-inch) (3rd generation)": {
|
14 |
+
"sku": [
|
15 |
+
"iPad8,5",
|
16 |
+
"iPad8,6",
|
17 |
+
"iPad8,7",
|
18 |
+
"iPad8,8"
|
19 |
+
],
|
20 |
+
"chip": "A12X",
|
21 |
+
"ram": "4 GB"
|
22 |
+
},
|
23 |
+
"iPad Pro (11-inch)": {
|
24 |
+
"sku": [
|
25 |
+
"iPad8,1",
|
26 |
+
"iPad8,2",
|
27 |
+
"iPad8,3",
|
28 |
+
"iPad8,4"
|
29 |
+
],
|
30 |
+
"chip": "A12X",
|
31 |
+
"ram": "4 GB"
|
32 |
+
},
|
33 |
+
"iPad Pro (12.9-inch) (4th generation)": {
|
34 |
+
"sku": [
|
35 |
+
"iPad8,11",
|
36 |
+
"iPad8,12"
|
37 |
+
],
|
38 |
+
"chip": "A12Z",
|
39 |
+
"ram": "6 GB"
|
40 |
+
},
|
41 |
+
"iPad Pro 13-inch (M4)": {
|
42 |
+
"sku": [
|
43 |
+
"iPad16,5",
|
44 |
+
"iPad16,6"
|
45 |
+
],
|
46 |
+
"chip": "M4",
|
47 |
+
"ram": "8 GB"
|
48 |
+
},
|
49 |
+
"iPad Pro 11-inch (M4)": {
|
50 |
+
"sku": [
|
51 |
+
"iPad16,3",
|
52 |
+
"iPad16,4"
|
53 |
+
],
|
54 |
+
"chip": "M4",
|
55 |
+
"ram": "8 GB"
|
56 |
+
},
|
57 |
+
"iPad mini (A17 Pro)": {
|
58 |
+
"sku": [
|
59 |
+
"iPad16,1",
|
60 |
+
"iPad16,2"
|
61 |
+
],
|
62 |
+
"chip": "A17 Pro",
|
63 |
+
"ram": "8 GB"
|
64 |
+
},
|
65 |
+
"iPad (A16)": {
|
66 |
+
"sku": [
|
67 |
+
"iPad15,7",
|
68 |
+
"iPad15,8"
|
69 |
+
],
|
70 |
+
"chip": "A16",
|
71 |
+
"ram": "8 GB"
|
72 |
+
},
|
73 |
+
"iPad Air 13-inch (M3)": {
|
74 |
+
"sku": [
|
75 |
+
"iPad15,5",
|
76 |
+
"iPad15,6"
|
77 |
+
],
|
78 |
+
"chip": "M3",
|
79 |
+
"ram": "8 GB"
|
80 |
+
},
|
81 |
+
"iPad Air 11-inch (M3)": {
|
82 |
+
"sku": [
|
83 |
+
"iPad15,3",
|
84 |
+
"iPad15,4"
|
85 |
+
],
|
86 |
+
"chip": "M3",
|
87 |
+
"ram": "8 GB"
|
88 |
+
},
|
89 |
+
"iPad Air 11-inch (M2)": {
|
90 |
+
"sku": [
|
91 |
+
"iPad14,8",
|
92 |
+
"iPad14,9"
|
93 |
+
],
|
94 |
+
"chip": "M2",
|
95 |
+
"ram": "8 GB"
|
96 |
+
},
|
97 |
+
"iPad Pro (12.9-inch) (6th generation)": {
|
98 |
+
"sku": [
|
99 |
+
"iPad14,5",
|
100 |
+
"iPad14,6"
|
101 |
+
],
|
102 |
+
"chip": "M2",
|
103 |
+
"ram": "8 GB"
|
104 |
+
},
|
105 |
+
"iPad Pro (11-inch) (4th generation)": {
|
106 |
+
"sku": [
|
107 |
+
"iPad14,3",
|
108 |
+
"iPad14,4"
|
109 |
+
],
|
110 |
+
"chip": "M2",
|
111 |
+
"ram": "8 GB"
|
112 |
+
},
|
113 |
+
"iPad mini (6th generation)": {
|
114 |
+
"sku": [
|
115 |
+
"iPad14,1",
|
116 |
+
"iPad14,2"
|
117 |
+
],
|
118 |
+
"chip": "A15",
|
119 |
+
"ram": "4 GB"
|
120 |
+
},
|
121 |
+
"iPad Air 13-inch (M2)": {
|
122 |
+
"sku": [
|
123 |
+
"iPad14,10",
|
124 |
+
"iPad14,11"
|
125 |
+
],
|
126 |
+
"chip": "M2",
|
127 |
+
"ram": "8 GB"
|
128 |
+
},
|
129 |
+
"iPad Pro (12.9-inch) (5th generation)": {
|
130 |
+
"sku": [
|
131 |
+
"iPad13,8",
|
132 |
+
"iPad13,9",
|
133 |
+
"iPad13,10",
|
134 |
+
"iPad13,11"
|
135 |
+
],
|
136 |
+
"chip": "M1",
|
137 |
+
"ram": "8 GB"
|
138 |
+
},
|
139 |
+
"iPad Pro (11-inch) (3rd generation)": {
|
140 |
+
"sku": [
|
141 |
+
"iPad13,4",
|
142 |
+
"iPad13,5",
|
143 |
+
"iPad13,6",
|
144 |
+
"iPad13,7"
|
145 |
+
],
|
146 |
+
"chip": "M1",
|
147 |
+
"ram": "8 GB"
|
148 |
+
},
|
149 |
+
"iPad Air (4th generation)": {
|
150 |
+
"sku": [
|
151 |
+
"iPad13,1",
|
152 |
+
"iPad13,2"
|
153 |
+
],
|
154 |
+
"chip": "A14",
|
155 |
+
"ram": "4 GB"
|
156 |
+
},
|
157 |
+
"iPad (10th generation)": {
|
158 |
+
"sku": [
|
159 |
+
"iPad13,18",
|
160 |
+
"iPad13,19"
|
161 |
+
],
|
162 |
+
"chip": "A14",
|
163 |
+
"ram": "4 GB"
|
164 |
+
},
|
165 |
+
"iPad Air (5th generation)": {
|
166 |
+
"sku": [
|
167 |
+
"iPad13,16",
|
168 |
+
"iPad13,17"
|
169 |
+
],
|
170 |
+
"chip": "M1",
|
171 |
+
"ram": "8 GB"
|
172 |
+
},
|
173 |
+
"iPad (9th generation)": {
|
174 |
+
"sku": [
|
175 |
+
"iPad12,1",
|
176 |
+
"iPad12,2"
|
177 |
+
],
|
178 |
+
"chip": "A13",
|
179 |
+
"ram": "3 GB"
|
180 |
+
},
|
181 |
+
"iPad (8th generation)": {
|
182 |
+
"sku": [
|
183 |
+
"iPad11,6",
|
184 |
+
"iPad11,7"
|
185 |
+
],
|
186 |
+
"chip": "A12",
|
187 |
+
"ram": "3 GB"
|
188 |
+
},
|
189 |
+
"iPad Air (3rd generation)": {
|
190 |
+
"sku": [
|
191 |
+
"iPad11,3",
|
192 |
+
"iPad11,4"
|
193 |
+
],
|
194 |
+
"chip": "A12",
|
195 |
+
"ram": "3 GB"
|
196 |
+
},
|
197 |
+
"iPad mini (5th generation)": {
|
198 |
+
"sku": [
|
199 |
+
"iPad11,1",
|
200 |
+
"iPad11,2"
|
201 |
+
],
|
202 |
+
"chip": "A12",
|
203 |
+
"ram": "3 GB"
|
204 |
+
}
|
205 |
+
}
|
206 |
+
}
|
dashboard_data/iPhone.json
ADDED
@@ -0,0 +1,151 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"date_generated": "2025-06-16T15:52:13.069236",
|
3 |
+
"xcode_version": "Developer",
|
4 |
+
"total_menu": {
|
5 |
+
"iPhone 16e": {
|
6 |
+
"sku": "iPhone17,5",
|
7 |
+
"chip": "A18",
|
8 |
+
"ram": "8 GB"
|
9 |
+
},
|
10 |
+
"iPhone 16 Plus": {
|
11 |
+
"sku": "iPhone17,4",
|
12 |
+
"chip": "A18",
|
13 |
+
"ram": "8 GB"
|
14 |
+
},
|
15 |
+
"iPhone 16": {
|
16 |
+
"sku": "iPhone17,3",
|
17 |
+
"chip": "A18",
|
18 |
+
"ram": "8 GB"
|
19 |
+
},
|
20 |
+
"iPhone 16 Pro Max": {
|
21 |
+
"sku": "iPhone17,2",
|
22 |
+
"chip": "A18 Pro",
|
23 |
+
"ram": "8 GB"
|
24 |
+
},
|
25 |
+
"iPhone 16 Pro": {
|
26 |
+
"sku": "iPhone17,1",
|
27 |
+
"chip": "A18 Pro",
|
28 |
+
"ram": "8 GB"
|
29 |
+
},
|
30 |
+
"iPhone 15 Pro Max": {
|
31 |
+
"sku": "iPhone16,2",
|
32 |
+
"chip": "A17 Pro",
|
33 |
+
"ram": "8 GB"
|
34 |
+
},
|
35 |
+
"iPhone 15 Pro": {
|
36 |
+
"sku": "iPhone16,1",
|
37 |
+
"chip": "A17 Pro",
|
38 |
+
"ram": "8 GB"
|
39 |
+
},
|
40 |
+
"iPhone 15 Plus": {
|
41 |
+
"sku": "iPhone15,5",
|
42 |
+
"chip": "A16",
|
43 |
+
"ram": "6 GB"
|
44 |
+
},
|
45 |
+
"iPhone 15": {
|
46 |
+
"sku": "iPhone15,4",
|
47 |
+
"chip": "A16",
|
48 |
+
"ram": "6 GB"
|
49 |
+
},
|
50 |
+
"iPhone 14 Pro Max": {
|
51 |
+
"sku": "iPhone15,3",
|
52 |
+
"chip": "A16",
|
53 |
+
"ram": "6 GB"
|
54 |
+
},
|
55 |
+
"iPhone 14 Pro": {
|
56 |
+
"sku": "iPhone15,2",
|
57 |
+
"chip": "A16",
|
58 |
+
"ram": "6 GB"
|
59 |
+
},
|
60 |
+
"iPhone 14 Plus": {
|
61 |
+
"sku": "iPhone14,8",
|
62 |
+
"chip": "A15",
|
63 |
+
"ram": "6 GB"
|
64 |
+
},
|
65 |
+
"iPhone 14": {
|
66 |
+
"sku": "iPhone14,7",
|
67 |
+
"chip": "A15",
|
68 |
+
"ram": "6 GB"
|
69 |
+
},
|
70 |
+
"iPhone SE (3rd generation)": {
|
71 |
+
"sku": "iPhone14,6",
|
72 |
+
"chip": "A15",
|
73 |
+
"ram": "4 GB"
|
74 |
+
},
|
75 |
+
"iPhone 13": {
|
76 |
+
"sku": "iPhone14,5",
|
77 |
+
"chip": "A15",
|
78 |
+
"ram": "4 GB"
|
79 |
+
},
|
80 |
+
"iPhone 13 mini": {
|
81 |
+
"sku": "iPhone14,4",
|
82 |
+
"chip": "A15",
|
83 |
+
"ram": "4 GB"
|
84 |
+
},
|
85 |
+
"iPhone 13 Pro Max": {
|
86 |
+
"sku": "iPhone14,3",
|
87 |
+
"chip": "A15",
|
88 |
+
"ram": "6 GB"
|
89 |
+
},
|
90 |
+
"iPhone 13 Pro": {
|
91 |
+
"sku": "iPhone14,2",
|
92 |
+
"chip": "A15",
|
93 |
+
"ram": "6 GB"
|
94 |
+
},
|
95 |
+
"iPhone 12 Pro Max": {
|
96 |
+
"sku": "iPhone13,4",
|
97 |
+
"chip": "A14",
|
98 |
+
"ram": "6 GB"
|
99 |
+
},
|
100 |
+
"iPhone 12 Pro": {
|
101 |
+
"sku": "iPhone13,3",
|
102 |
+
"chip": "A14",
|
103 |
+
"ram": "6 GB"
|
104 |
+
},
|
105 |
+
"iPhone 12": {
|
106 |
+
"sku": "iPhone13,2",
|
107 |
+
"chip": "A14",
|
108 |
+
"ram": "4 GB"
|
109 |
+
},
|
110 |
+
"iPhone 12 mini": {
|
111 |
+
"sku": "iPhone13,1",
|
112 |
+
"chip": "A14",
|
113 |
+
"ram": "4 GB"
|
114 |
+
},
|
115 |
+
"iPhone SE (2nd generation)": {
|
116 |
+
"sku": "iPhone12,8",
|
117 |
+
"chip": "A13",
|
118 |
+
"ram": "3 GB"
|
119 |
+
},
|
120 |
+
"iPhone 11 Pro Max": {
|
121 |
+
"sku": "iPhone12,5",
|
122 |
+
"chip": "A13",
|
123 |
+
"ram": "4 GB"
|
124 |
+
},
|
125 |
+
"iPhone 11 Pro": {
|
126 |
+
"sku": "iPhone12,3",
|
127 |
+
"chip": "A13",
|
128 |
+
"ram": "4 GB"
|
129 |
+
},
|
130 |
+
"iPhone 11": {
|
131 |
+
"sku": "iPhone12,1",
|
132 |
+
"chip": "A13",
|
133 |
+
"ram": "4 GB"
|
134 |
+
},
|
135 |
+
"iPhone XR": {
|
136 |
+
"sku": "iPhone11,8",
|
137 |
+
"chip": "A12",
|
138 |
+
"ram": "3 GB"
|
139 |
+
},
|
140 |
+
"iPhone XS Max": {
|
141 |
+
"sku": "iPhone11,4",
|
142 |
+
"chip": "A12",
|
143 |
+
"ram": "4 GB"
|
144 |
+
},
|
145 |
+
"iPhone XS": {
|
146 |
+
"sku": "iPhone11,2",
|
147 |
+
"chip": "A12",
|
148 |
+
"ram": "4 GB"
|
149 |
+
}
|
150 |
+
}
|
151 |
+
}
|
dashboard_data/multilingual_confusion_matrices.json
DELETED
The diff for this file is too large to render.
See raw diff
|
|
dashboard_data/performance_data.json
CHANGED
The diff for this file is too large to render.
See raw diff
|
|
dashboard_data/quality_data.json
CHANGED
@@ -20,4 +20,4 @@
|
|
20 |
{"model": "openai/whisper-small.en", "timestamp": "2024-10-18_15:39:48_GMT-0400", "average_wer": 7.85, "dataset_wer": {"librispeech": 2.88, "earnings22-12hours": 12.82}, "qoi": 0.86}
|
21 |
{"model": "distil-whisper/distil-large-v3/turbo", "timestamp": "2024-10-20_12:45:20_GMT-0700", "average_wer": 7.2, "dataset_wer": {"librispeech": 2.35, "earnings22-12hours": 12.05}, "qoi": 0.9}
|
22 |
{"model": "openai/whisper-base", "timestamp": "2024-10-18_20:25:50_GMT-0700", "average_wer": 10.67, "dataset_wer": {"librispeech": 4.94, "earnings22-12hours": 16.4}, "qoi": 0.67}
|
23 |
-
{"model": "openai/whisper-large-v3/turbo", "timestamp": "2024-10-20_16:58:25_GMT-0400", "average_wer": 6.86, "dataset_wer": {"librispeech": 1.97, "earnings22-12hours": 11.74}, "qoi": 0.95}
|
|
|
20 |
{"model": "openai/whisper-small.en", "timestamp": "2024-10-18_15:39:48_GMT-0400", "average_wer": 7.85, "dataset_wer": {"librispeech": 2.88, "earnings22-12hours": 12.82}, "qoi": 0.86}
|
21 |
{"model": "distil-whisper/distil-large-v3/turbo", "timestamp": "2024-10-20_12:45:20_GMT-0700", "average_wer": 7.2, "dataset_wer": {"librispeech": 2.35, "earnings22-12hours": 12.05}, "qoi": 0.9}
|
22 |
{"model": "openai/whisper-base", "timestamp": "2024-10-18_20:25:50_GMT-0700", "average_wer": 10.67, "dataset_wer": {"librispeech": 4.94, "earnings22-12hours": 16.4}, "qoi": 0.67}
|
23 |
+
{"model": "openai/whisper-large-v3/turbo", "timestamp": "2024-10-20_16:58:25_GMT-0400", "average_wer": 6.86, "dataset_wer": {"librispeech": 1.97, "earnings22-12hours": 11.74}, "qoi": 0.95}
|
dashboard_data/support_data_11a1fab.csv
CHANGED
@@ -1,21 +1,21 @@
|
|
1 |
,Model,"Apple M4 (Mac16,10)","iPad (10th generation) (iPad13,18)","iPad Air 11-inch (M3) (iPad15,3)","iPad (A16) (iPad15,7)","iPad mini (A17 Pro) (iPad16,1)"
|
2 |
-
distil-whisper_distil-large-v3,distil-whisper_distil-large-v3,✅ macOS 15.4,Not Supported,✅ iPadOS 18.3.2
|
3 |
distil-whisper_distil-large-v3_594MB,distil-whisper_distil-large-v3_594MB,✅ macOS 15.4,Not Supported,✅ iPadOS 18.3.2,✅ iPadOS 18.4,✅ iPadOS 18.4
|
4 |
-
distil-whisper_distil-large-v3_turbo,distil-whisper_distil-large-v3_turbo,✅ macOS 15.4,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-04-15T183244_11a1fab/iPad15%2C3_summary_2025-04-16T013539.json>iPadOS 18.3.2</a
|
5 |
distil-whisper_distil-large-v3_turbo_600MB,distil-whisper_distil-large-v3_turbo_600MB,✅ macOS 15.4,Not Supported,✅ iPadOS 18.3.2,✅ iPadOS 18.4,✅ iPadOS 18.4
|
6 |
openai_whisper-base,openai_whisper-base,✅ macOS 15.4,✅ iPadOS 18.4,✅ iPadOS 18.3.2,✅ iPadOS 18.4,✅ iPadOS 18.4
|
7 |
openai_whisper-base.en,openai_whisper-base.en,✅ macOS 15.4,✅ iPadOS 18.4,✅ iPadOS 18.3.2,✅ iPadOS 18.4,✅ iPadOS 18.4
|
8 |
-
openai_whisper-large-v2,openai_whisper-large-v2,✅ macOS 15.4,Not Supported,✅ iPadOS 18.3.2
|
9 |
openai_whisper-large-v2_949MB,openai_whisper-large-v2_949MB,✅ macOS 15.4,Not Supported,✅ iPadOS 18.3.2,✅ iPadOS 18.4,✅ iPadOS 18.4
|
10 |
-
openai_whisper-large-v2_turbo,openai_whisper-large-v2_turbo,✅ macOS 15.4,Not Supported,✅ iPadOS 18.3.2
|
11 |
openai_whisper-large-v2_turbo_955MB,openai_whisper-large-v2_turbo_955MB,✅ macOS 15.4,Not Supported,✅ iPadOS 18.3.2,✅ iPadOS 18.4,✅ iPadOS 18.4
|
12 |
-
openai_whisper-large-v3,openai_whisper-large-v3,✅ macOS 15.4,Not Supported,✅ iPadOS 18.3.2
|
13 |
-
openai_whisper-large-v3-v20240930,openai_whisper-large-v3-v20240930,✅ macOS 15.4,Not Supported,? iPadOS 18.3.2
|
14 |
openai_whisper-large-v3-v20240930_626MB,openai_whisper-large-v3-v20240930_626MB,✅ macOS 15.4,Not Supported,✅ iPadOS 18.3.2,✅ iPadOS 18.4,✅ iPadOS 18.4
|
15 |
-
openai_whisper-large-v3-v20240930_turbo,openai_whisper-large-v3-v20240930_turbo,✅ macOS 15.4,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-04-15T183244_11a1fab/iPad15%2C3_summary_2025-04-16T013539.json>iPadOS 18.3.2</a
|
16 |
openai_whisper-large-v3-v20240930_turbo_632MB,openai_whisper-large-v3-v20240930_turbo_632MB,✅ macOS 15.4,Not Supported,✅ iPadOS 18.3.2,✅ iPadOS 18.4,✅ iPadOS 18.4
|
17 |
openai_whisper-large-v3_947MB,openai_whisper-large-v3_947MB,✅ macOS 15.4,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-04-15T183244_11a1fab/iPad15%2C3_summary_2025-04-16T013539.json>iPadOS 18.3.2</a>,✅ iPadOS 18.4,✅ iPadOS 18.4
|
18 |
-
openai_whisper-large-v3_turbo,openai_whisper-large-v3_turbo,✅ macOS 15.4,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-04-15T183244_11a1fab/iPad15%2C3_summary_2025-04-16T013539.json>iPadOS 18.3.2</a
|
19 |
openai_whisper-large-v3_turbo_954MB,openai_whisper-large-v3_turbo_954MB,✅ macOS 15.4,Not Supported,✅ iPadOS 18.3.2,✅ iPadOS 18.4,✅ iPadOS 18.4
|
20 |
openai_whisper-small,openai_whisper-small,✅ macOS 15.4,✅ iPadOS 18.4,✅ iPadOS 18.3.2,✅ iPadOS 18.4,✅ iPadOS 18.4
|
21 |
openai_whisper-small.en,openai_whisper-small.en,✅ macOS 15.4,✅ iPadOS 18.4,✅ iPadOS 18.3.2,✅ iPadOS 18.4,✅ iPadOS 18.4
|
|
|
1 |
,Model,"Apple M4 (Mac16,10)","iPad (10th generation) (iPad13,18)","iPad Air 11-inch (M3) (iPad15,3)","iPad (A16) (iPad15,7)","iPad mini (A17 Pro) (iPad16,1)"
|
2 |
+
distil-whisper_distil-large-v3,distil-whisper_distil-large-v3,✅ macOS 15.4,Not Supported,✅ iPadOS 18.3.2,Not Supported,Not Supported
|
3 |
distil-whisper_distil-large-v3_594MB,distil-whisper_distil-large-v3_594MB,✅ macOS 15.4,Not Supported,✅ iPadOS 18.3.2,✅ iPadOS 18.4,✅ iPadOS 18.4
|
4 |
+
distil-whisper_distil-large-v3_turbo,distil-whisper_distil-large-v3_turbo,✅ macOS 15.4,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-04-15T183244_11a1fab/iPad15%2C3_summary_2025-04-16T013539.json>iPadOS 18.3.2</a>,Not Supported,Not Supported
|
5 |
distil-whisper_distil-large-v3_turbo_600MB,distil-whisper_distil-large-v3_turbo_600MB,✅ macOS 15.4,Not Supported,✅ iPadOS 18.3.2,✅ iPadOS 18.4,✅ iPadOS 18.4
|
6 |
openai_whisper-base,openai_whisper-base,✅ macOS 15.4,✅ iPadOS 18.4,✅ iPadOS 18.3.2,✅ iPadOS 18.4,✅ iPadOS 18.4
|
7 |
openai_whisper-base.en,openai_whisper-base.en,✅ macOS 15.4,✅ iPadOS 18.4,✅ iPadOS 18.3.2,✅ iPadOS 18.4,✅ iPadOS 18.4
|
8 |
+
openai_whisper-large-v2,openai_whisper-large-v2,✅ macOS 15.4,Not Supported,✅ iPadOS 18.3.2,Not Supported,Not Supported
|
9 |
openai_whisper-large-v2_949MB,openai_whisper-large-v2_949MB,✅ macOS 15.4,Not Supported,✅ iPadOS 18.3.2,✅ iPadOS 18.4,✅ iPadOS 18.4
|
10 |
+
openai_whisper-large-v2_turbo,openai_whisper-large-v2_turbo,✅ macOS 15.4,Not Supported,✅ iPadOS 18.3.2,Not Supported,Not Supported
|
11 |
openai_whisper-large-v2_turbo_955MB,openai_whisper-large-v2_turbo_955MB,✅ macOS 15.4,Not Supported,✅ iPadOS 18.3.2,✅ iPadOS 18.4,✅ iPadOS 18.4
|
12 |
+
openai_whisper-large-v3,openai_whisper-large-v3,✅ macOS 15.4,Not Supported,✅ iPadOS 18.3.2,Not Supported,Not Supported
|
13 |
+
openai_whisper-large-v3-v20240930,openai_whisper-large-v3-v20240930,✅ macOS 15.4,Not Supported,? iPadOS 18.3.2,Not Supported,Not Supported
|
14 |
openai_whisper-large-v3-v20240930_626MB,openai_whisper-large-v3-v20240930_626MB,✅ macOS 15.4,Not Supported,✅ iPadOS 18.3.2,✅ iPadOS 18.4,✅ iPadOS 18.4
|
15 |
+
openai_whisper-large-v3-v20240930_turbo,openai_whisper-large-v3-v20240930_turbo,✅ macOS 15.4,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-04-15T183244_11a1fab/iPad15%2C3_summary_2025-04-16T013539.json>iPadOS 18.3.2</a>,Not Supported,Not Supported
|
16 |
openai_whisper-large-v3-v20240930_turbo_632MB,openai_whisper-large-v3-v20240930_turbo_632MB,✅ macOS 15.4,Not Supported,✅ iPadOS 18.3.2,✅ iPadOS 18.4,✅ iPadOS 18.4
|
17 |
openai_whisper-large-v3_947MB,openai_whisper-large-v3_947MB,✅ macOS 15.4,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-04-15T183244_11a1fab/iPad15%2C3_summary_2025-04-16T013539.json>iPadOS 18.3.2</a>,✅ iPadOS 18.4,✅ iPadOS 18.4
|
18 |
+
openai_whisper-large-v3_turbo,openai_whisper-large-v3_turbo,✅ macOS 15.4,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-04-15T183244_11a1fab/iPad15%2C3_summary_2025-04-16T013539.json>iPadOS 18.3.2</a>,Not Supported,Not Supported
|
19 |
openai_whisper-large-v3_turbo_954MB,openai_whisper-large-v3_turbo_954MB,✅ macOS 15.4,Not Supported,✅ iPadOS 18.3.2,✅ iPadOS 18.4,✅ iPadOS 18.4
|
20 |
openai_whisper-small,openai_whisper-small,✅ macOS 15.4,✅ iPadOS 18.4,✅ iPadOS 18.3.2,✅ iPadOS 18.4,✅ iPadOS 18.4
|
21 |
openai_whisper-small.en,openai_whisper-small.en,✅ macOS 15.4,✅ iPadOS 18.4,✅ iPadOS 18.3.2,✅ iPadOS 18.4,✅ iPadOS 18.4
|
dashboard_data/support_data_8c0acbd.csv
CHANGED
@@ -1,22 +1,22 @@
|
|
1 |
,Model,"Apple M2 Pro (Mac14,12)","Apple M3 Max (Mac15,10)","iPad Air (5th generation) (iPad13,16)","iPad Pro (11-inch) (3rd generation) (iPad13,6)","iPad mini (6th generation) (iPad14,1)","iPad Air 11-inch (M2) (iPad14,8)","iPad Air 11-inch (M3) (iPad15,3)","iPad (A16) (iPad15,7)","iPad mini (A17 Pro) (iPad16,1)","iPad Pro 11-inch (M4) (iPad16,3)","iPhone 11 (iPhone12,1)","iPhone 12 mini (iPhone13,1)","iPhone 13 Pro (iPhone14,2)","iPhone 13 (iPhone14,5)","iPhone 14 (iPhone14,7)","iPhone 15 (iPhone15,4)","iPhone 15 Pro Max (iPhone16,2)","iPhone 16 (iPhone17,3)","iPhone 16e (iPhone17,5)"
|
2 |
-
distil-whisper_distil-large-v3,distil-whisper_distil-large-v3,✅ macOS 15.5,✅ macOS 15.5,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad13%2C6_summary_2025-06-17T205025.json>iPadOS 18.4</a>,Not Supported,✅ iPadOS 18.5,✅ iPadOS 26.0
|
3 |
distil-whisper_distil-large-v3_594MB,distil-whisper_distil-large-v3_594MB,✅ macOS 15.5,✅ macOS 15.5,Not Supported,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.5,✅ iPadOS 26.0,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.4.1,Not Supported,Not Supported,✅ iOS 18.1,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.4.1,✅ iOS 18.5
|
4 |
-
distil-whisper_distil-large-v3_turbo,distil-whisper_distil-large-v3_turbo,✅ macOS 15.5,✅ macOS 15.5,Not Supported
|
5 |
-
distil-whisper_distil-large-v3_turbo_600MB,distil-whisper_distil-large-v3_turbo_600MB,✅ macOS 15.5,✅ macOS 15.5,Not Supported
|
6 |
openai_whisper-base,openai_whisper-base,✅ macOS 15.5,✅ macOS 15.5,✅ iPadOS 18.4.1,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.5,✅ iPadOS 26.0,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.4.1,✅ iOS 26.0,✅ iOS 18.4.1,✅ iOS 18.1,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.4.1,✅ iOS 18.5
|
7 |
openai_whisper-base.en,openai_whisper-base.en,✅ macOS 15.5,✅ macOS 15.5,✅ iPadOS 18.4.1,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.5,✅ iPadOS 26.0,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.4.1,✅ iOS 26.0,✅ iOS 18.4.1,✅ iOS 18.1,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.4.1,✅ iOS 18.5
|
8 |
-
openai_whisper-large-v2,openai_whisper-large-v2,✅ macOS 15.5,✅ macOS 15.5,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad13%2C6_summary_2025-06-17T205025.json>iPadOS 18.4</a>,Not Supported,✅ iPadOS 18.5,✅ iPadOS 26.0
|
9 |
openai_whisper-large-v2_949MB,openai_whisper-large-v2_949MB,✅ macOS 15.5,✅ macOS 15.5,Not Supported,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.5,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad15%2C3_summary_2025-06-17T205025.json>iPadOS 26.0</a>,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.4.1,Not Supported,Not Supported,✅ iOS 18.1,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.4.1,✅ iOS 18.5
|
10 |
-
openai_whisper-large-v2_turbo,openai_whisper-large-v2_turbo,✅ macOS 15.5,✅ macOS 15.5,Not Supported
|
11 |
-
openai_whisper-large-v2_turbo_955MB,openai_whisper-large-v2_turbo_955MB,✅ macOS 15.5,✅ macOS 15.5,Not Supported
|
12 |
-
openai_whisper-large-v3,openai_whisper-large-v3,✅ macOS 15.5,✅ macOS 15.5,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad13%2C6_summary_2025-06-17T205025.json>iPadOS 18.4</a>,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad14%2C8_summary_2025-06-16T192343.json>iPadOS 18.5</a>,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad15%2C3_summary_2025-06-17T205025.json>iPadOS 26.0</a
|
13 |
-
openai_whisper-large-v3-v20240930,openai_whisper-large-v3-v20240930,✅ macOS 15.5,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/Mac15%2C10_summary_2025-06-15T230300.json>macOS 15.5</a>,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad13%2C6_summary_2025-06-17T205025.json>iPadOS 18.4</a>,Not Supported,? iPadOS 18.5,? iPadOS 26.0
|
14 |
openai_whisper-large-v3-v20240930_626MB,openai_whisper-large-v3-v20240930_626MB,✅ macOS 15.5,✅ macOS 15.5,Not Supported,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.5,✅ iPadOS 26.0,✅ iPadOS 18.4,✅ iPadOS 18.4,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad16%2C3_summary_2025-06-16T220810.json>iPadOS 18.4.1</a>,Not Supported,Not Supported,✅ iOS 18.1,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.4.1,✅ iOS 18.5
|
15 |
-
openai_whisper-large-v3-v20240930_turbo,openai_whisper-large-v3-v20240930_turbo,✅ macOS 15.5,✅ macOS 15.5,Not Supported
|
16 |
-
openai_whisper-large-v3-v20240930_turbo_632MB,openai_whisper-large-v3-v20240930_turbo_632MB,✅ macOS 15.5,✅ macOS 15.5,Not Supported
|
17 |
openai_whisper-large-v3_947MB,openai_whisper-large-v3_947MB,✅ macOS 15.5,✅ macOS 15.5,Not Supported,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.5,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad15%2C3_summary_2025-06-17T205025.json>iPadOS 26.0</a>,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.4.1,Not Supported,Not Supported,✅ iOS 18.1,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.4.1,✅ iOS 18.5
|
18 |
-
openai_whisper-large-v3_turbo,openai_whisper-large-v3_turbo,✅ macOS 15.5,✅ macOS 15.5,Not Supported
|
19 |
-
openai_whisper-large-v3_turbo_954MB,openai_whisper-large-v3_turbo_954MB,✅ macOS 15.5,✅ macOS 15.5,Not Supported
|
20 |
openai_whisper-small,openai_whisper-small,✅ macOS 15.5,✅ macOS 15.5,✅ iPadOS 18.4.1,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.5,✅ iPadOS 26.0,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.4.1,Not Supported,✅ iOS 18.4.1,✅ iOS 18.1,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.4.1,✅ iOS 18.5
|
21 |
openai_whisper-small.en,openai_whisper-small.en,✅ macOS 15.5,✅ macOS 15.5,✅ iPadOS 18.4.1,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.5,✅ iPadOS 26.0,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.4.1,Not Supported,✅ iOS 18.4.1,✅ iOS 18.1,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.4.1,✅ iOS 18.5
|
22 |
openai_whisper-tiny,openai_whisper-tiny,✅ macOS 15.5,✅ macOS 15.5,✅ iPadOS 18.4.1,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.5,✅ iPadOS 26.0,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.4.1,✅ iOS 26.0,✅ iOS 18.4.1,✅ iOS 18.1,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.4.1,✅ iOS 18.5
|
|
|
1 |
,Model,"Apple M2 Pro (Mac14,12)","Apple M3 Max (Mac15,10)","iPad Air (5th generation) (iPad13,16)","iPad Pro (11-inch) (3rd generation) (iPad13,6)","iPad mini (6th generation) (iPad14,1)","iPad Air 11-inch (M2) (iPad14,8)","iPad Air 11-inch (M3) (iPad15,3)","iPad (A16) (iPad15,7)","iPad mini (A17 Pro) (iPad16,1)","iPad Pro 11-inch (M4) (iPad16,3)","iPhone 11 (iPhone12,1)","iPhone 12 mini (iPhone13,1)","iPhone 13 Pro (iPhone14,2)","iPhone 13 (iPhone14,5)","iPhone 14 (iPhone14,7)","iPhone 15 (iPhone15,4)","iPhone 15 Pro Max (iPhone16,2)","iPhone 16 (iPhone17,3)","iPhone 16e (iPhone17,5)"
|
2 |
+
distil-whisper_distil-large-v3,distil-whisper_distil-large-v3,✅ macOS 15.5,✅ macOS 15.5,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad13%2C6_summary_2025-06-17T205025.json>iPadOS 18.4</a>,Not Supported,✅ iPadOS 18.5,✅ iPadOS 26.0,Not Supported,Not Supported,✅ iPadOS 18.4.1,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported
|
3 |
distil-whisper_distil-large-v3_594MB,distil-whisper_distil-large-v3_594MB,✅ macOS 15.5,✅ macOS 15.5,Not Supported,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.5,✅ iPadOS 26.0,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.4.1,Not Supported,Not Supported,✅ iOS 18.1,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.4.1,✅ iOS 18.5
|
4 |
+
distil-whisper_distil-large-v3_turbo,distil-whisper_distil-large-v3_turbo,✅ macOS 15.5,✅ macOS 15.5,Not Supported,Not Supported,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad14%2C8_summary_2025-06-16T192343.json>iPadOS 18.5</a>,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad15%2C3_summary_2025-06-17T205025.json>iPadOS 26.0</a>,Not Supported,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad16%2C3_summary_2025-06-16T220810.json>iPadOS 18.4.1</a>,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported
|
5 |
+
distil-whisper_distil-large-v3_turbo_600MB,distil-whisper_distil-large-v3_turbo_600MB,✅ macOS 15.5,✅ macOS 15.5,Not Supported,Not Supported,✅ iPadOS 18.4,✅ iPadOS 18.5,✅ iPadOS 26.0,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.4.1,Not Supported,Not Supported,✅ iOS 18.1,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.4.1,✅ iOS 18.5
|
6 |
openai_whisper-base,openai_whisper-base,✅ macOS 15.5,✅ macOS 15.5,✅ iPadOS 18.4.1,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.5,✅ iPadOS 26.0,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.4.1,✅ iOS 26.0,✅ iOS 18.4.1,✅ iOS 18.1,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.4.1,✅ iOS 18.5
|
7 |
openai_whisper-base.en,openai_whisper-base.en,✅ macOS 15.5,✅ macOS 15.5,✅ iPadOS 18.4.1,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.5,✅ iPadOS 26.0,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.4.1,✅ iOS 26.0,✅ iOS 18.4.1,✅ iOS 18.1,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.4.1,✅ iOS 18.5
|
8 |
+
openai_whisper-large-v2,openai_whisper-large-v2,✅ macOS 15.5,✅ macOS 15.5,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad13%2C6_summary_2025-06-17T205025.json>iPadOS 18.4</a>,Not Supported,✅ iPadOS 18.5,✅ iPadOS 26.0,Not Supported,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad16%2C3_summary_2025-06-16T220810.json>iPadOS 18.4.1</a>,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported
|
9 |
openai_whisper-large-v2_949MB,openai_whisper-large-v2_949MB,✅ macOS 15.5,✅ macOS 15.5,Not Supported,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.5,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad15%2C3_summary_2025-06-17T205025.json>iPadOS 26.0</a>,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.4.1,Not Supported,Not Supported,✅ iOS 18.1,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.4.1,✅ iOS 18.5
|
10 |
+
openai_whisper-large-v2_turbo,openai_whisper-large-v2_turbo,✅ macOS 15.5,✅ macOS 15.5,Not Supported,Not Supported,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad14%2C8_summary_2025-06-16T192343.json>iPadOS 18.5</a>,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad15%2C3_summary_2025-06-17T205025.json>iPadOS 26.0</a>,Not Supported,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad16%2C3_summary_2025-06-16T220810.json>iPadOS 18.4.1</a>,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported
|
11 |
+
openai_whisper-large-v2_turbo_955MB,openai_whisper-large-v2_turbo_955MB,✅ macOS 15.5,✅ macOS 15.5,Not Supported,Not Supported,✅ iPadOS 18.4,✅ iPadOS 18.5,✅ iPadOS 26.0,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.4.1,Not Supported,Not Supported,✅ iOS 18.1,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.4.1,✅ iOS 18.5
|
12 |
+
openai_whisper-large-v3,openai_whisper-large-v3,✅ macOS 15.5,✅ macOS 15.5,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad13%2C6_summary_2025-06-17T205025.json>iPadOS 18.4</a>,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad14%2C8_summary_2025-06-16T192343.json>iPadOS 18.5</a>,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad15%2C3_summary_2025-06-17T205025.json>iPadOS 26.0</a>,Not Supported,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad16%2C3_summary_2025-06-16T220810.json>iPadOS 18.4.1</a>,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported
|
13 |
+
openai_whisper-large-v3-v20240930,openai_whisper-large-v3-v20240930,✅ macOS 15.5,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/Mac15%2C10_summary_2025-06-15T230300.json>macOS 15.5</a>,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad13%2C6_summary_2025-06-17T205025.json>iPadOS 18.4</a>,Not Supported,? iPadOS 18.5,? iPadOS 26.0,Not Supported,Not Supported,? iPadOS 18.4.1,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported
|
14 |
openai_whisper-large-v3-v20240930_626MB,openai_whisper-large-v3-v20240930_626MB,✅ macOS 15.5,✅ macOS 15.5,Not Supported,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.5,✅ iPadOS 26.0,✅ iPadOS 18.4,✅ iPadOS 18.4,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad16%2C3_summary_2025-06-16T220810.json>iPadOS 18.4.1</a>,Not Supported,Not Supported,✅ iOS 18.1,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.4.1,✅ iOS 18.5
|
15 |
+
openai_whisper-large-v3-v20240930_turbo,openai_whisper-large-v3-v20240930_turbo,✅ macOS 15.5,✅ macOS 15.5,Not Supported,Not Supported,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad14%2C8_summary_2025-06-16T192343.json>iPadOS 18.5</a>,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad15%2C3_summary_2025-06-17T205025.json>iPadOS 26.0</a>,Not Supported,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad16%2C3_summary_2025-06-16T220810.json>iPadOS 18.4.1</a>,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported
|
16 |
+
openai_whisper-large-v3-v20240930_turbo_632MB,openai_whisper-large-v3-v20240930_turbo_632MB,✅ macOS 15.5,✅ macOS 15.5,Not Supported,Not Supported,✅ iPadOS 18.4,✅ iPadOS 18.5,✅ iPadOS 26.0,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.4.1,Not Supported,Not Supported,✅ iOS 18.1,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPhone16%2C2_summary_2025-06-16T135523.json>iOS 18.5</a>,✅ iOS 18.4.1,✅ iOS 18.5
|
17 |
openai_whisper-large-v3_947MB,openai_whisper-large-v3_947MB,✅ macOS 15.5,✅ macOS 15.5,Not Supported,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.5,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad15%2C3_summary_2025-06-17T205025.json>iPadOS 26.0</a>,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.4.1,Not Supported,Not Supported,✅ iOS 18.1,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.4.1,✅ iOS 18.5
|
18 |
+
openai_whisper-large-v3_turbo,openai_whisper-large-v3_turbo,✅ macOS 15.5,✅ macOS 15.5,Not Supported,Not Supported,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad14%2C8_summary_2025-06-16T192343.json>iPadOS 18.5</a>,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad15%2C3_summary_2025-06-17T205025.json>iPadOS 26.0</a>,Not Supported,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad16%2C3_summary_2025-06-16T220810.json>iPadOS 18.4.1</a>,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported
|
19 |
+
openai_whisper-large-v3_turbo_954MB,openai_whisper-large-v3_turbo_954MB,✅ macOS 15.5,✅ macOS 15.5,Not Supported,Not Supported,✅ iPadOS 18.4,✅ iPadOS 18.5,✅ iPadOS 26.0,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.4.1,Not Supported,Not Supported,✅ iOS 18.1,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.4.1,✅ iOS 18.5
|
20 |
openai_whisper-small,openai_whisper-small,✅ macOS 15.5,✅ macOS 15.5,✅ iPadOS 18.4.1,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.5,✅ iPadOS 26.0,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.4.1,Not Supported,✅ iOS 18.4.1,✅ iOS 18.1,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.4.1,✅ iOS 18.5
|
21 |
openai_whisper-small.en,openai_whisper-small.en,✅ macOS 15.5,✅ macOS 15.5,✅ iPadOS 18.4.1,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.5,✅ iPadOS 26.0,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.4.1,Not Supported,✅ iOS 18.4.1,✅ iOS 18.1,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.4.1,✅ iOS 18.5
|
22 |
openai_whisper-tiny,openai_whisper-tiny,✅ macOS 15.5,✅ macOS 15.5,✅ iPadOS 18.4.1,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.5,✅ iPadOS 26.0,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.4.1,✅ iOS 26.0,✅ iOS 18.4.1,✅ iOS 18.1,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.4.1,✅ iOS 18.5
|
dashboard_data/support_data_a9b92c4.csv
CHANGED
@@ -1,21 +1,21 @@
|
|
1 |
,Model,"Apple M2 Pro (Mac14,12)","Apple M2 Ultra (Mac14,14)","Apple M2 (Mac14,2)","Apple M3 Max (Mac15,10)","Apple M3 Pro (Mac15,6)","Apple M3 Max (Mac15,9)","Apple M4 (Mac16,10)","Apple M4 (Mac16,3)","Apple M1 (MacBookAir10,1)","iPad Air (5th generation) (iPad13,16)","iPad Air 11-inch (M2) (iPad14,8)","iPad mini (A17 Pro) (iPad16,1)","iPad Pro 11-inch (M4) (iPad16,3)","iPhone 11 (iPhone12,1)","iPhone 12 mini (iPhone13,1)","iPhone 12 (iPhone13,2)","iPhone 12 Pro Max (iPhone13,4)","iPhone 13 Pro (iPhone14,2)","iPhone 13 (iPhone14,5)","iPhone 14 (iPhone14,7)","iPhone 15 Pro (iPhone16,1)","iPhone 15 Pro Max (iPhone16,2)","iPhone 16 Pro (iPhone17,1)","iPhone 16 (iPhone17,3)","iPhone 16 Plus (iPhone17,4)"
|
2 |
-
distil-whisper_distil-large-v3,distil-whisper_distil-large-v3,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/MacBookAir10%2C1_summary_2024-10-30T012535.json>macOS 15.1</a>,Not Supported,✅ iPadOS 17.6.1
|
3 |
distil-whisper_distil-large-v3_594MB,distil-whisper_distil-large-v3_594MB,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,✅ macOS 15.1,Not Supported,✅ iPadOS 17.6.1,✅ iPadOS 18.0.1,✅ iPadOS 18.1,Not Supported,Not Supported,Not Supported,Not Supported,✅ iOS 18.1,✅ iOS 17.3,✅ iOS 17.3,✅ iOS 18.1,✅ iOS 18.2,✅ iOS 18.0,✅ iOS 18.0.1,✅ iOS 18.0.1
|
4 |
-
distil-whisper_distil-large-v3_turbo,distil-whisper_distil-large-v3_turbo,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,Not Supported,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPad14%2C8_summary_2024-10-30T073931.json>iPadOS 17.6.1</a
|
5 |
distil-whisper_distil-large-v3_turbo_600MB,distil-whisper_distil-large-v3_turbo_600MB,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,Not Supported,Not Supported,✅ iPadOS 17.6.1,✅ iPadOS 18.0.1,✅ iPadOS 18.1,Not Supported,Not Supported,Not Supported,Not Supported,✅ iOS 18.1,✅ iOS 17.3,✅ iOS 17.3,✅ iOS 18.1,✅ iOS 18.2,✅ iOS 18.0,✅ iOS 18.0.1,✅ iOS 18.0.1
|
6 |
openai_whisper-base,openai_whisper-base,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,✅ macOS 15.1,✅ iPadOS 18.1,✅ iPadOS 17.6.1,✅ iPadOS 18.0.1,✅ iPadOS 18.1,✅ iOS 17.6.1,✅ iOS 17.7,✅ iOS 17.2.1,✅ iOS 18.1,✅ iOS 18.1,✅ iOS 17.3,✅ iOS 17.3,✅ iOS 18.1,✅ iOS 18.2,✅ iOS 18.0,✅ iOS 18.0.1,✅ iOS 18.0.1
|
7 |
openai_whisper-base.en,openai_whisper-base.en,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,✅ macOS 15.1,✅ iPadOS 18.1,✅ iPadOS 17.6.1,✅ iPadOS 18.0.1,✅ iPadOS 18.1,✅ iOS 17.6.1,✅ iOS 17.7,✅ iOS 17.2.1,✅ iOS 18.1,✅ iOS 18.1,✅ iOS 17.3,✅ iOS 17.3,✅ iOS 18.1,✅ iOS 18.2,✅ iOS 18.0,✅ iOS 18.0.1,✅ iOS 18.0.1
|
8 |
-
openai_whisper-large-v2,openai_whisper-large-v2,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/MacBookAir10%2C1_summary_2024-10-30T012535.json>macOS 15.1</a>,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPad14%2C8_summary_2024-10-30T073931.json>iPadOS 17.6.1</a
|
9 |
openai_whisper-large-v2_949MB,openai_whisper-large-v2_949MB,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,✅ macOS 15.1,Not Supported,✅ iPadOS 17.6.1,✅ iPadOS 18.0.1,✅ iPadOS 18.1,Not Supported,Not Supported,Not Supported,Not Supported,✅ iOS 18.1,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPhone14%2C5_summary_2024-10-30T073931.json>iOS 17.3</a>,✅ iOS 17.3,✅ iOS 18.1,✅ iOS 18.2,✅ iOS 18.0,✅ iOS 18.0.1,✅ iOS 18.0.1
|
10 |
-
openai_whisper-large-v2_turbo,openai_whisper-large-v2_turbo,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,Not Supported,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPad14%2C8_summary_2024-10-30T073931.json>iPadOS 17.6.1</a
|
11 |
openai_whisper-large-v2_turbo_955MB,openai_whisper-large-v2_turbo_955MB,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,Not Supported,Not Supported,✅ iPadOS 17.6.1,✅ iPadOS 18.0.1,✅ iPadOS 18.1,Not Supported,Not Supported,Not Supported,Not Supported,✅ iOS 18.1,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPhone14%2C5_summary_2024-10-30T073931.json>iOS 17.3</a>,✅ iOS 17.3,✅ iOS 18.1,✅ iOS 18.2,✅ iOS 18.0,✅ iOS 18.0.1,✅ iOS 18.0.1
|
12 |
-
openai_whisper-large-v3,openai_whisper-large-v3,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/MacBookAir10%2C1_summary_2024-10-30T012535.json>macOS 15.1</a>,Not Supported,✅ iPadOS 17.6.1
|
13 |
-
openai_whisper-large-v3-v20240930,openai_whisper-large-v3-v20240930,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/MacBookAir10%2C1_summary_2024-10-30T012535.json>macOS 15.1</a>,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPad14%2C8_summary_2024-10-30T073931.json>iPadOS 17.6.1</a
|
14 |
openai_whisper-large-v3-v20240930_626MB,openai_whisper-large-v3-v20240930_626MB,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,✅ macOS 15.1,Not Supported,✅ iPadOS 17.6.1,✅ iPadOS 18.0.1,✅ iPadOS 18.1,Not Supported,Not Supported,Not Supported,Not Supported,✅ iOS 18.1,✅ iOS 17.3,✅ iOS 17.3,✅ iOS 18.1,✅ iOS 18.2,✅ iOS 18.0,✅ iOS 18.0.1,✅ iOS 18.0.1
|
15 |
-
openai_whisper-large-v3-v20240930_turbo,openai_whisper-large-v3-v20240930_turbo,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,Not Supported,Not Supported,✅ iPadOS 17.6.1,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPad16%
|
16 |
openai_whisper-large-v3-v20240930_turbo_632MB,openai_whisper-large-v3-v20240930_turbo_632MB,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,Not Supported,Not Supported,✅ iPadOS 17.6.1,✅ iPadOS 18.0.1,✅ iPadOS 18.1,Not Supported,Not Supported,Not Supported,Not Supported,✅ iOS 18.1,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPhone14%2C5_summary_2024-10-30T073931.json>iOS 17.3</a>,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPhone14%2C7_summary_2024-10-30T073931.json>iOS 17.3</a>,✅ iOS 18.1,✅ iOS 18.2,✅ iOS 18.0,✅ iOS 18.0.1,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPhone17%2C4_summary_2024-10-30T132649.json>iOS 18.0.1</a>
|
17 |
openai_whisper-large-v3_947MB,openai_whisper-large-v3_947MB,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,✅ macOS 15.1,Not Supported,✅ iPadOS 17.6.1,✅ iPadOS 18.0.1,✅ iPadOS 18.1,Not Supported,Not Supported,Not Supported,Not Supported,✅ iOS 18.1,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPhone14%2C5_summary_2024-10-30T073931.json>iOS 17.3</a>,✅ iOS 17.3,✅ iOS 18.1,✅ iOS 18.2,✅ iOS 18.0,✅ iOS 18.0.1,✅ iOS 18.0.1
|
18 |
-
openai_whisper-large-v3_turbo,openai_whisper-large-v3_turbo,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,Not Supported,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPad14%2C8_summary_2024-10-30T073931.json>iPadOS 17.6.1</a
|
19 |
openai_whisper-large-v3_turbo_954MB,openai_whisper-large-v3_turbo_954MB,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,Not Supported,Not Supported,✅ iPadOS 17.6.1,✅ iPadOS 18.0.1,✅ iPadOS 18.1,Not Supported,Not Supported,Not Supported,Not Supported,✅ iOS 18.1,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPhone14%2C5_summary_2024-10-30T073931.json>iOS 17.3</a>,✅ iOS 17.3,✅ iOS 18.1,✅ iOS 18.2,✅ iOS 18.0,✅ iOS 18.0.1,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPhone17%2C4_summary_2024-10-30T132649.json>iOS 18.0.1</a>
|
20 |
openai_whisper-small,openai_whisper-small,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,✅ macOS 15.1,✅ iPadOS 18.1,✅ iPadOS 17.6.1,✅ iPadOS 18.0.1,✅ iPadOS 18.1,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPhone13%2C1_summary_2024-10-30T022739.json>iOS 17.7</a>,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPhone13%2C2_summary_2024-10-30T152729.json>iOS 17.2.1</a>,✅ iOS 18.1,✅ iOS 18.1,✅ iOS 17.3,✅ iOS 17.3,✅ iOS 18.1,✅ iOS 18.2,✅ iOS 18.0,✅ iOS 18.0.1,✅ iOS 18.0.1
|
21 |
openai_whisper-small.en,openai_whisper-small.en,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,✅ macOS 15.1,✅ iPadOS 18.1,✅ iPadOS 17.6.1,✅ iPadOS 18.0.1,✅ iPadOS 18.1,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPhone13%2C1_summary_2024-10-30T022739.json>iOS 17.7</a>,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPhone13%2C2_summary_2024-10-30T152729.json>iOS 17.2.1</a>,✅ iOS 18.1,✅ iOS 18.1,✅ iOS 17.3,✅ iOS 17.3,✅ iOS 18.1,✅ iOS 18.2,✅ iOS 18.0,✅ iOS 18.0.1,✅ iOS 18.0.1
|
|
|
1 |
,Model,"Apple M2 Pro (Mac14,12)","Apple M2 Ultra (Mac14,14)","Apple M2 (Mac14,2)","Apple M3 Max (Mac15,10)","Apple M3 Pro (Mac15,6)","Apple M3 Max (Mac15,9)","Apple M4 (Mac16,10)","Apple M4 (Mac16,3)","Apple M1 (MacBookAir10,1)","iPad Air (5th generation) (iPad13,16)","iPad Air 11-inch (M2) (iPad14,8)","iPad mini (A17 Pro) (iPad16,1)","iPad Pro 11-inch (M4) (iPad16,3)","iPhone 11 (iPhone12,1)","iPhone 12 mini (iPhone13,1)","iPhone 12 (iPhone13,2)","iPhone 12 Pro Max (iPhone13,4)","iPhone 13 Pro (iPhone14,2)","iPhone 13 (iPhone14,5)","iPhone 14 (iPhone14,7)","iPhone 15 Pro (iPhone16,1)","iPhone 15 Pro Max (iPhone16,2)","iPhone 16 Pro (iPhone17,1)","iPhone 16 (iPhone17,3)","iPhone 16 Plus (iPhone17,4)"
|
2 |
+
distil-whisper_distil-large-v3,distil-whisper_distil-large-v3,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/MacBookAir10%2C1_summary_2024-10-30T012535.json>macOS 15.1</a>,Not Supported,✅ iPadOS 17.6.1,Not Supported,✅ iPadOS 18.1,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported
|
3 |
distil-whisper_distil-large-v3_594MB,distil-whisper_distil-large-v3_594MB,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,✅ macOS 15.1,Not Supported,✅ iPadOS 17.6.1,✅ iPadOS 18.0.1,✅ iPadOS 18.1,Not Supported,Not Supported,Not Supported,Not Supported,✅ iOS 18.1,✅ iOS 17.3,✅ iOS 17.3,✅ iOS 18.1,✅ iOS 18.2,✅ iOS 18.0,✅ iOS 18.0.1,✅ iOS 18.0.1
|
4 |
+
distil-whisper_distil-large-v3_turbo,distil-whisper_distil-large-v3_turbo,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,Not Supported,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPad14%2C8_summary_2024-10-30T073931.json>iPadOS 17.6.1</a>,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPad16%2C3_summary_2024-10-30T073931.json>iPadOS 18.1</a>,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported
|
5 |
distil-whisper_distil-large-v3_turbo_600MB,distil-whisper_distil-large-v3_turbo_600MB,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,Not Supported,Not Supported,✅ iPadOS 17.6.1,✅ iPadOS 18.0.1,✅ iPadOS 18.1,Not Supported,Not Supported,Not Supported,Not Supported,✅ iOS 18.1,✅ iOS 17.3,✅ iOS 17.3,✅ iOS 18.1,✅ iOS 18.2,✅ iOS 18.0,✅ iOS 18.0.1,✅ iOS 18.0.1
|
6 |
openai_whisper-base,openai_whisper-base,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,✅ macOS 15.1,✅ iPadOS 18.1,✅ iPadOS 17.6.1,✅ iPadOS 18.0.1,✅ iPadOS 18.1,✅ iOS 17.6.1,✅ iOS 17.7,✅ iOS 17.2.1,✅ iOS 18.1,✅ iOS 18.1,✅ iOS 17.3,✅ iOS 17.3,✅ iOS 18.1,✅ iOS 18.2,✅ iOS 18.0,✅ iOS 18.0.1,✅ iOS 18.0.1
|
7 |
openai_whisper-base.en,openai_whisper-base.en,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,✅ macOS 15.1,✅ iPadOS 18.1,✅ iPadOS 17.6.1,✅ iPadOS 18.0.1,✅ iPadOS 18.1,✅ iOS 17.6.1,✅ iOS 17.7,✅ iOS 17.2.1,✅ iOS 18.1,✅ iOS 18.1,✅ iOS 17.3,✅ iOS 17.3,✅ iOS 18.1,✅ iOS 18.2,✅ iOS 18.0,✅ iOS 18.0.1,✅ iOS 18.0.1
|
8 |
+
openai_whisper-large-v2,openai_whisper-large-v2,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/MacBookAir10%2C1_summary_2024-10-30T012535.json>macOS 15.1</a>,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPad14%2C8_summary_2024-10-30T073931.json>iPadOS 17.6.1</a>,Not Supported,✅ iPadOS 18.1,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported
|
9 |
openai_whisper-large-v2_949MB,openai_whisper-large-v2_949MB,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,✅ macOS 15.1,Not Supported,✅ iPadOS 17.6.1,✅ iPadOS 18.0.1,✅ iPadOS 18.1,Not Supported,Not Supported,Not Supported,Not Supported,✅ iOS 18.1,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPhone14%2C5_summary_2024-10-30T073931.json>iOS 17.3</a>,✅ iOS 17.3,✅ iOS 18.1,✅ iOS 18.2,✅ iOS 18.0,✅ iOS 18.0.1,✅ iOS 18.0.1
|
10 |
+
openai_whisper-large-v2_turbo,openai_whisper-large-v2_turbo,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,Not Supported,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPad14%2C8_summary_2024-10-30T073931.json>iPadOS 17.6.1</a>,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPad16%2C3_summary_2024-10-30T073931.json>iPadOS 18.1</a>,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported
|
11 |
openai_whisper-large-v2_turbo_955MB,openai_whisper-large-v2_turbo_955MB,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,Not Supported,Not Supported,✅ iPadOS 17.6.1,✅ iPadOS 18.0.1,✅ iPadOS 18.1,Not Supported,Not Supported,Not Supported,Not Supported,✅ iOS 18.1,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPhone14%2C5_summary_2024-10-30T073931.json>iOS 17.3</a>,✅ iOS 17.3,✅ iOS 18.1,✅ iOS 18.2,✅ iOS 18.0,✅ iOS 18.0.1,✅ iOS 18.0.1
|
12 |
+
openai_whisper-large-v3,openai_whisper-large-v3,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/MacBookAir10%2C1_summary_2024-10-30T012535.json>macOS 15.1</a>,Not Supported,✅ iPadOS 17.6.1,Not Supported,✅ iPadOS 18.1,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported
|
13 |
+
openai_whisper-large-v3-v20240930,openai_whisper-large-v3-v20240930,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/MacBookAir10%2C1_summary_2024-10-30T012535.json>macOS 15.1</a>,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPad14%2C8_summary_2024-10-30T073931.json>iPadOS 17.6.1</a>,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPad16%2C3_summary_2024-10-30T073931.json>iPadOS 18.1</a>,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported
|
14 |
openai_whisper-large-v3-v20240930_626MB,openai_whisper-large-v3-v20240930_626MB,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,✅ macOS 15.1,Not Supported,✅ iPadOS 17.6.1,✅ iPadOS 18.0.1,✅ iPadOS 18.1,Not Supported,Not Supported,Not Supported,Not Supported,✅ iOS 18.1,✅ iOS 17.3,✅ iOS 17.3,✅ iOS 18.1,✅ iOS 18.2,✅ iOS 18.0,✅ iOS 18.0.1,✅ iOS 18.0.1
|
15 |
+
openai_whisper-large-v3-v20240930_turbo,openai_whisper-large-v3-v20240930_turbo,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,Not Supported,Not Supported,✅ iPadOS 17.6.1,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPad16%2C3_summary_2024-10-30T073931.json>iPadOS 18.1</a>,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported
|
16 |
openai_whisper-large-v3-v20240930_turbo_632MB,openai_whisper-large-v3-v20240930_turbo_632MB,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,Not Supported,Not Supported,✅ iPadOS 17.6.1,✅ iPadOS 18.0.1,✅ iPadOS 18.1,Not Supported,Not Supported,Not Supported,Not Supported,✅ iOS 18.1,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPhone14%2C5_summary_2024-10-30T073931.json>iOS 17.3</a>,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPhone14%2C7_summary_2024-10-30T073931.json>iOS 17.3</a>,✅ iOS 18.1,✅ iOS 18.2,✅ iOS 18.0,✅ iOS 18.0.1,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPhone17%2C4_summary_2024-10-30T132649.json>iOS 18.0.1</a>
|
17 |
openai_whisper-large-v3_947MB,openai_whisper-large-v3_947MB,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,✅ macOS 15.1,Not Supported,✅ iPadOS 17.6.1,✅ iPadOS 18.0.1,✅ iPadOS 18.1,Not Supported,Not Supported,Not Supported,Not Supported,✅ iOS 18.1,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPhone14%2C5_summary_2024-10-30T073931.json>iOS 17.3</a>,✅ iOS 17.3,✅ iOS 18.1,✅ iOS 18.2,✅ iOS 18.0,✅ iOS 18.0.1,✅ iOS 18.0.1
|
18 |
+
openai_whisper-large-v3_turbo,openai_whisper-large-v3_turbo,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,Not Supported,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPad14%2C8_summary_2024-10-30T073931.json>iPadOS 17.6.1</a>,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPad16%2C3_summary_2024-10-30T073931.json>iPadOS 18.1</a>,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported
|
19 |
openai_whisper-large-v3_turbo_954MB,openai_whisper-large-v3_turbo_954MB,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,Not Supported,Not Supported,✅ iPadOS 17.6.1,✅ iPadOS 18.0.1,✅ iPadOS 18.1,Not Supported,Not Supported,Not Supported,Not Supported,✅ iOS 18.1,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPhone14%2C5_summary_2024-10-30T073931.json>iOS 17.3</a>,✅ iOS 17.3,✅ iOS 18.1,✅ iOS 18.2,✅ iOS 18.0,✅ iOS 18.0.1,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPhone17%2C4_summary_2024-10-30T132649.json>iOS 18.0.1</a>
|
20 |
openai_whisper-small,openai_whisper-small,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,✅ macOS 15.1,✅ iPadOS 18.1,✅ iPadOS 17.6.1,✅ iPadOS 18.0.1,✅ iPadOS 18.1,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPhone13%2C1_summary_2024-10-30T022739.json>iOS 17.7</a>,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPhone13%2C2_summary_2024-10-30T152729.json>iOS 17.2.1</a>,✅ iOS 18.1,✅ iOS 18.1,✅ iOS 17.3,✅ iOS 17.3,✅ iOS 18.1,✅ iOS 18.2,✅ iOS 18.0,✅ iOS 18.0.1,✅ iOS 18.0.1
|
21 |
openai_whisper-small.en,openai_whisper-small.en,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,✅ macOS 15.1,✅ iPadOS 18.1,✅ iPadOS 17.6.1,✅ iPadOS 18.0.1,✅ iPadOS 18.1,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPhone13%2C1_summary_2024-10-30T022739.json>iOS 17.7</a>,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPhone13%2C2_summary_2024-10-30T152729.json>iOS 17.2.1</a>,✅ iOS 18.1,✅ iOS 18.1,✅ iOS 17.3,✅ iOS 17.3,✅ iOS 18.1,✅ iOS 18.2,✅ iOS 18.0,✅ iOS 18.0.1,✅ iOS 18.0.1
|
dashboard_data/support_data_c814cae.csv
CHANGED
@@ -1,23 +1,23 @@
|
|
1 |
,Model,"Apple M2 (Mac14,3)","Apple M4 (Mac16,10)","Apple M1 (Macmini9,1)","iPad Pro (11-inch) (3rd generation) (iPad13,6)","iPad Air 11-inch (M2) (iPad14,8)","iPad Air 13-inch (M3) (iPad15,5)","iPad (A16) (iPad15,7)","iPad mini (A17 Pro) (iPad16,1)","iPad Pro 11-inch (M4) (iPad16,3)","iPhone 15 (iPhone15,4)","iPhone 16 Pro (iPhone17,1)","iPhone 16e (iPhone17,5)"
|
2 |
-
distil-whisper_distil-large-v3,distil-whisper_distil-large-v3,✅ macOS 26.0,✅ macOS 26.0<p>✅ macOS 15.5</p>,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/Macmini9%2C1_summary_2025-08-29T100943.json>macOS 26.0</a>,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/iPad13%2C6_summary_2025-08-04T202532.json>iPadOS 18.5</a
|
3 |
-
distil-whisper_distil-large-v3_594MB,distil-whisper_distil-large-v3_594MB,✅ macOS 26.0,✅ macOS 26.0<p>✅ macOS 15.5</p>,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/Macmini9%2C1_summary_2025-08-29T100943.json>macOS 26.0</a>,✅ iPadOS 18.5
|
4 |
-
distil-whisper_distil-large-v3_turbo,distil-whisper_distil-large-v3_turbo,✅ macOS 26.0,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/Mac16%2C10_summary_2025-08-29T104851.json>macOS 26.0</a><p>✅ macOS 15.5</p>,Not Supported
|
5 |
-
distil-whisper_distil-large-v3_turbo_600MB,distil-whisper_distil-large-v3_turbo_600MB,✅ macOS 26.0,✅ macOS 26.0<p>✅ macOS 15.5</p>,Not Supported
|
6 |
-
openai_whisper-base,openai_whisper-base,✅ macOS 26.0,✅ macOS 26.0<p>✅ macOS 15.5</p>,✅ macOS 26.0,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/iPad13%2C6_summary_2025-08-04T202532.json>iPadOS 18.5</a
|
7 |
-
openai_whisper-base.en,openai_whisper-base.en,✅ macOS 26.0,✅ macOS 26.0<p>✅ macOS 15.5</p>,✅ macOS 26.0,✅ iPadOS 18.5
|
8 |
-
openai_whisper-large-v2,openai_whisper-large-v2,✅ macOS 26.0,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/Mac16%2C10_summary_2025-08-29T104851.json>macOS 26.0</a><p>✅ macOS 15.5</p>,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/Macmini9%2C1_summary_2025-08-29T100943.json>macOS 26.0</a>,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/iPad13%2C6_summary_2025-08-04T202532.json>iPadOS 18.5</a
|
9 |
-
openai_whisper-large-v2_949MB,openai_whisper-large-v2_949MB,✅ macOS 26.0,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/Mac16%2C10_summary_2025-08-29T104851.json>macOS 26.0</a><p>✅ macOS 15.5</p>,✅ macOS 26.0,✅ iPadOS 18.5
|
10 |
-
openai_whisper-large-v2_turbo,openai_whisper-large-v2_turbo,✅ macOS 26.0,✅ macOS 26.0<p>✅ macOS 15.5</p>,Not Supported
|
11 |
-
openai_whisper-large-v2_turbo_955MB,openai_whisper-large-v2_turbo_955MB,✅ macOS 26.0,✅ macOS 26.0<p>✅ macOS 15.5</p>,Not Supported
|
12 |
-
openai_whisper-large-v3,openai_whisper-large-v3,✅ macOS 26.0,✅ macOS 26.0<p>✅ macOS 15.5</p>,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/Macmini9%2C1_summary_2025-08-29T100943.json>macOS 26.0</a>,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/iPad13%2C6_summary_2025-08-04T202532.json>iPadOS 18.5</a
|
13 |
-
openai_whisper-large-v3-v20240930,openai_whisper-large-v3-v20240930,✅ macOS 26.0,✅ macOS 26.0<p>✅ macOS 15.5</p>,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/Macmini9%2C1_summary_2025-08-29T100943.json>macOS 26.0</a>,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/iPad13%2C6_summary_2025-08-04T202532.json>iPadOS 18.5</a
|
14 |
-
openai_whisper-large-v3-v20240930_626MB,openai_whisper-large-v3-v20240930_626MB,✅ macOS 26.0,✅ macOS 26.0<p>✅ macOS 15.5</p>,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/Macmini9%2C1_summary_2025-08-29T100943.json>macOS 26.0</a>,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/iPad13%2C6_summary_2025-08-04T202532.json>iPadOS 18.5</a
|
15 |
-
openai_whisper-large-v3-v20240930_turbo,openai_whisper-large-v3-v20240930_turbo,✅ macOS 26.0,✅ macOS 26.0<p>✅ macOS 15.5</p>,Not Supported
|
16 |
-
openai_whisper-large-v3-v20240930_turbo_632MB,openai_whisper-large-v3-v20240930_turbo_632MB,✅ macOS 26.0,✅ macOS 26.0<p>✅ macOS 15.5</p>,Not Supported
|
17 |
-
openai_whisper-large-v3_947MB,openai_whisper-large-v3_947MB,✅ macOS 26.0,✅ macOS 26.0<p>✅ macOS 15.5</p>,✅ macOS 26.0,✅ iPadOS 18.5
|
18 |
-
openai_whisper-large-v3_turbo,openai_whisper-large-v3_turbo,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/Mac14%2C3_summary_2025-08-27T130519.json>macOS 26.0</a>,✅ macOS 26.0<p>✅ macOS 15.5</p>,Not Supported
|
19 |
-
openai_whisper-large-v3_turbo_954MB,openai_whisper-large-v3_turbo_954MB,✅ macOS 26.0,✅ macOS 26.0<p>✅ macOS 15.5</p>,Not Supported
|
20 |
-
openai_whisper-small,openai_whisper-small,✅ macOS 26.0,✅ macOS 26.0<p>✅ macOS 15.5</p>,✅ macOS 26.0,✅ iPadOS 18.5
|
21 |
-
openai_whisper-small.en,openai_whisper-small.en,✅ macOS 26.0,✅ macOS 26.0<p>✅ macOS 15.5</p>,✅ macOS 26.0,✅ iPadOS 18.5
|
22 |
-
openai_whisper-tiny,openai_whisper-tiny,✅ macOS 26.0,✅ macOS 26.0<p>✅ macOS 15.5</p>,✅ macOS 26.0,✅ iPadOS 18.5
|
23 |
-
openai_whisper-tiny.en,openai_whisper-tiny.en,✅ macOS 26.0,✅ macOS 26.0<p>✅ macOS 15.5</p>,✅ macOS 26.0,✅ iPadOS 18.5
|
|
|
1 |
,Model,"Apple M2 (Mac14,3)","Apple M4 (Mac16,10)","Apple M1 (Macmini9,1)","iPad Pro (11-inch) (3rd generation) (iPad13,6)","iPad Air 11-inch (M2) (iPad14,8)","iPad Air 13-inch (M3) (iPad15,5)","iPad (A16) (iPad15,7)","iPad mini (A17 Pro) (iPad16,1)","iPad Pro 11-inch (M4) (iPad16,3)","iPhone 15 (iPhone15,4)","iPhone 16 Pro (iPhone17,1)","iPhone 16e (iPhone17,5)"
|
2 |
+
distil-whisper_distil-large-v3,distil-whisper_distil-large-v3,✅ macOS 26.0,✅ macOS 26.0<p>✅ macOS 15.5</p>,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/Macmini9%2C1_summary_2025-08-29T100943.json>macOS 26.0</a>,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/iPad13%2C6_summary_2025-08-04T202532.json>iPadOS 18.5</a>,? iPadOS 18.6<p>⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/iPad14%2C8_summary_2025-08-04T202532.json>iPadOS 18.4.1</a></p>,? iPadOS 18.6,Not Supported,Not Supported,✅ iPadOS 26.0<p>? iPadOS 18.4.1</p>,Not Supported,Not Supported,Not Supported
|
3 |
+
distil-whisper_distil-large-v3_594MB,distil-whisper_distil-large-v3_594MB,✅ macOS 26.0,✅ macOS 26.0<p>✅ macOS 15.5</p>,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/Macmini9%2C1_summary_2025-08-29T100943.json>macOS 26.0</a>,✅ iPadOS 18.5,✅ iPadOS 18.6<p>⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/iPad14%2C8_summary_2025-08-04T202532.json>iPadOS 18.4.1</a></p>,✅ iPadOS 18.6,✅ iPadOS 18.6,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/iPad16%2C1_summary_2025-08-04T202532.json>iPadOS 18.5</a>,✅ iPadOS 26.0<p>✅ iPadOS 18.4.1</p>,✅ iOS 26.0,✅ iOS 26.0,✅ iOS 18.5
|
4 |
+
distil-whisper_distil-large-v3_turbo,distil-whisper_distil-large-v3_turbo,✅ macOS 26.0,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/Mac16%2C10_summary_2025-08-29T104851.json>macOS 26.0</a><p>✅ macOS 15.5</p>,Not Supported,Not Supported,? iPadOS 18.6<p>⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/iPad14%2C8_summary_2025-08-04T202532.json>iPadOS 18.4.1</a></p>,? iPadOS 18.6,Not Supported,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/iPad16%2C3_summary_2025-08-27T211253.json>iPadOS 26.0</a><p>? iPadOS 18.4.1</p>,Not Supported,Not Supported,Not Supported
|
5 |
+
distil-whisper_distil-large-v3_turbo_600MB,distil-whisper_distil-large-v3_turbo_600MB,✅ macOS 26.0,✅ macOS 26.0<p>✅ macOS 15.5</p>,Not Supported,Not Supported,? iPadOS 18.6<p>⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/iPad14%2C8_summary_2025-08-04T202532.json>iPadOS 18.4.1</a></p>,? iPadOS 18.6,? iPadOS 18.6,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/iPad16%2C1_summary_2025-08-04T202532.json>iPadOS 18.5</a>,✅ iPadOS 26.0<p>? iPadOS 18.4.1</p>,✅ iOS 26.0,✅ iOS 26.0,✅ iOS 18.5
|
6 |
+
openai_whisper-base,openai_whisper-base,✅ macOS 26.0,✅ macOS 26.0<p>✅ macOS 15.5</p>,✅ macOS 26.0,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/iPad13%2C6_summary_2025-08-04T202532.json>iPadOS 18.5</a>,✅ iPadOS 18.6<p>⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/iPad14%2C8_summary_2025-08-04T202532.json>iPadOS 18.4.1</a></p>,✅ iPadOS 18.6,✅ iPadOS 18.6,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/iPad16%2C1_summary_2025-08-04T202532.json>iPadOS 18.5</a>,✅ iPadOS 26.0<p>✅ iPadOS 18.4.1</p>,✅ iOS 26.0,✅ iOS 26.0,✅ iOS 18.5
|
7 |
+
openai_whisper-base.en,openai_whisper-base.en,✅ macOS 26.0,✅ macOS 26.0<p>✅ macOS 15.5</p>,✅ macOS 26.0,✅ iPadOS 18.5,✅ iPadOS 18.6<p>⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/iPad14%2C8_summary_2025-08-04T202532.json>iPadOS 18.4.1</a></p>,✅ iPadOS 18.6,✅ iPadOS 18.6,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/iPad16%2C1_summary_2025-08-04T202532.json>iPadOS 18.5</a>,✅ iPadOS 26.0<p>✅ iPadOS 18.4.1</p>,✅ iOS 26.0,✅ iOS 26.0,✅ iOS 18.5
|
8 |
+
openai_whisper-large-v2,openai_whisper-large-v2,✅ macOS 26.0,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/Mac16%2C10_summary_2025-08-29T104851.json>macOS 26.0</a><p>✅ macOS 15.5</p>,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/Macmini9%2C1_summary_2025-08-29T100943.json>macOS 26.0</a>,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/iPad13%2C6_summary_2025-08-04T202532.json>iPadOS 18.5</a>,✅ iPadOS 18.6<p>⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/iPad14%2C8_summary_2025-08-04T202532.json>iPadOS 18.4.1</a></p>,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/iPad15%2C5_summary_2025-08-01T235644.json>iPadOS 18.6</a>,Not Supported,Not Supported,✅ iPadOS 26.0<p>✅ iPadOS 18.4.1</p>,Not Supported,Not Supported,Not Supported
|
9 |
+
openai_whisper-large-v2_949MB,openai_whisper-large-v2_949MB,✅ macOS 26.0,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/Mac16%2C10_summary_2025-08-29T104851.json>macOS 26.0</a><p>✅ macOS 15.5</p>,✅ macOS 26.0,✅ iPadOS 18.5,? iPadOS 18.6<p>⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/iPad14%2C8_summary_2025-08-04T202532.json>iPadOS 18.4.1</a></p>,? iPadOS 18.6,? iPadOS 18.6,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/iPad16%2C1_summary_2025-08-04T202532.json>iPadOS 18.5</a>,✅ iPadOS 26.0<p>? iPadOS 18.4.1</p>,✅ iOS 26.0,✅ iOS 26.0,✅ iOS 18.5
|
10 |
+
openai_whisper-large-v2_turbo,openai_whisper-large-v2_turbo,✅ macOS 26.0,✅ macOS 26.0<p>✅ macOS 15.5</p>,Not Supported,Not Supported,? iPadOS 18.6<p>⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/iPad14%2C8_summary_2025-08-04T202532.json>iPadOS 18.4.1</a></p>,? iPadOS 18.6,Not Supported,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/iPad16%2C3_summary_2025-08-27T211253.json>iPadOS 26.0</a><p>? iPadOS 18.4.1</p>,Not Supported,Not Supported,Not Supported
|
11 |
+
openai_whisper-large-v2_turbo_955MB,openai_whisper-large-v2_turbo_955MB,✅ macOS 26.0,✅ macOS 26.0<p>✅ macOS 15.5</p>,Not Supported,Not Supported,? iPadOS 18.6<p>⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/iPad14%2C8_summary_2025-08-04T202532.json>iPadOS 18.4.1</a></p>,? iPadOS 18.6,? iPadOS 18.6,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/iPad16%2C1_summary_2025-08-04T202532.json>iPadOS 18.5</a>,✅ iPadOS 26.0<p>✅ iPadOS 18.4.1</p>,✅ iOS 26.0,✅ iOS 26.0,✅ iOS 18.5
|
12 |
+
openai_whisper-large-v3,openai_whisper-large-v3,✅ macOS 26.0,✅ macOS 26.0<p>✅ macOS 15.5</p>,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/Macmini9%2C1_summary_2025-08-29T100943.json>macOS 26.0</a>,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/iPad13%2C6_summary_2025-08-04T202532.json>iPadOS 18.5</a>,? iPadOS 18.6<p>⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/iPad14%2C8_summary_2025-08-04T202532.json>iPadOS 18.4.1</a></p>,? iPadOS 18.6,Not Supported,Not Supported,✅ iPadOS 26.0<p>? iPadOS 18.4.1</p>,Not Supported,Not Supported,Not Supported
|
13 |
+
openai_whisper-large-v3-v20240930,openai_whisper-large-v3-v20240930,✅ macOS 26.0,✅ macOS 26.0<p>✅ macOS 15.5</p>,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/Macmini9%2C1_summary_2025-08-29T100943.json>macOS 26.0</a>,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/iPad13%2C6_summary_2025-08-04T202532.json>iPadOS 18.5</a>,? iPadOS 18.6<p>⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/iPad14%2C8_summary_2025-08-04T202532.json>iPadOS 18.4.1</a></p>,? iPadOS 18.6,Not Supported,Not Supported,? iPadOS 26.0<p>? iPadOS 18.4.1</p>,Not Supported,Not Supported,Not Supported
|
14 |
+
openai_whisper-large-v3-v20240930_626MB,openai_whisper-large-v3-v20240930_626MB,✅ macOS 26.0,✅ macOS 26.0<p>✅ macOS 15.5</p>,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/Macmini9%2C1_summary_2025-08-29T100943.json>macOS 26.0</a>,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/iPad13%2C6_summary_2025-08-04T202532.json>iPadOS 18.5</a>,✅ iPadOS 18.6<p>⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/iPad14%2C8_summary_2025-08-04T202532.json>iPadOS 18.4.1</a></p>,✅ iPadOS 18.6,✅ iPadOS 18.6,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/iPad16%2C1_summary_2025-08-04T202532.json>iPadOS 18.5</a>,✅ iPadOS 26.0<p>✅ iPadOS 18.4.1</p>,✅ iOS 26.0,✅ iOS 26.0,✅ iOS 18.5
|
15 |
+
openai_whisper-large-v3-v20240930_turbo,openai_whisper-large-v3-v20240930_turbo,✅ macOS 26.0,✅ macOS 26.0<p>✅ macOS 15.5</p>,Not Supported,Not Supported,? iPadOS 18.6<p>⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/iPad14%2C8_summary_2025-08-04T202532.json>iPadOS 18.4.1</a></p>,? iPadOS 18.6,Not Supported,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/iPad16%2C3_summary_2025-08-27T211253.json>iPadOS 26.0</a><p>? iPadOS 18.4.1</p>,Not Supported,Not Supported,Not Supported
|
16 |
+
openai_whisper-large-v3-v20240930_turbo_632MB,openai_whisper-large-v3-v20240930_turbo_632MB,✅ macOS 26.0,✅ macOS 26.0<p>✅ macOS 15.5</p>,Not Supported,Not Supported,? iPadOS 18.6<p>⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/iPad14%2C8_summary_2025-08-04T202532.json>iPadOS 18.4.1</a></p>,? iPadOS 18.6,? iPadOS 18.6,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/iPad16%2C1_summary_2025-08-04T202532.json>iPadOS 18.5</a>,✅ iPadOS 26.0<p>? iPadOS 18.4.1</p>,✅ iOS 26.0,✅ iOS 26.0,✅ iOS 18.5
|
17 |
+
openai_whisper-large-v3_947MB,openai_whisper-large-v3_947MB,✅ macOS 26.0,✅ macOS 26.0<p>✅ macOS 15.5</p>,✅ macOS 26.0,✅ iPadOS 18.5,? iPadOS 18.6<p>⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/iPad14%2C8_summary_2025-08-04T202532.json>iPadOS 18.4.1</a></p>,? iPadOS 18.6,? iPadOS 18.6,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/iPad16%2C1_summary_2025-08-04T202532.json>iPadOS 18.5</a>,✅ iPadOS 26.0<p>? iPadOS 18.4.1</p>,✅ iOS 26.0,✅ iOS 26.0,✅ iOS 18.5
|
18 |
+
openai_whisper-large-v3_turbo,openai_whisper-large-v3_turbo,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/Mac14%2C3_summary_2025-08-27T130519.json>macOS 26.0</a>,✅ macOS 26.0<p>✅ macOS 15.5</p>,Not Supported,Not Supported,? iPadOS 18.6<p>⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/iPad14%2C8_summary_2025-08-04T202532.json>iPadOS 18.4.1</a></p>,? iPadOS 18.6,Not Supported,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/iPad16%2C3_summary_2025-08-27T211253.json>iPadOS 26.0</a><p>? iPadOS 18.4.1</p>,Not Supported,Not Supported,Not Supported
|
19 |
+
openai_whisper-large-v3_turbo_954MB,openai_whisper-large-v3_turbo_954MB,✅ macOS 26.0,✅ macOS 26.0<p>✅ macOS 15.5</p>,Not Supported,Not Supported,? iPadOS 18.6<p>⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/iPad14%2C8_summary_2025-08-04T202532.json>iPadOS 18.4.1</a></p>,? iPadOS 18.6,? iPadOS 18.6,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/iPad16%2C1_summary_2025-08-04T202532.json>iPadOS 18.5</a>,✅ iPadOS 26.0<p>? iPadOS 18.4.1</p>,✅ iOS 26.0,✅ iOS 26.0,✅ iOS 18.5
|
20 |
+
openai_whisper-small,openai_whisper-small,✅ macOS 26.0,✅ macOS 26.0<p>✅ macOS 15.5</p>,✅ macOS 26.0,✅ iPadOS 18.5,✅ iPadOS 18.6<p>⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/iPad14%2C8_summary_2025-08-04T202532.json>iPadOS 18.4.1</a></p>,✅ iPadOS 18.6,✅ iPadOS 18.6,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/iPad16%2C1_summary_2025-08-04T202532.json>iPadOS 18.5</a>,✅ iPadOS 26.0<p>✅ iPadOS 18.4.1</p>,✅ iOS 26.0,✅ iOS 26.0,✅ iOS 18.5
|
21 |
+
openai_whisper-small.en,openai_whisper-small.en,✅ macOS 26.0,✅ macOS 26.0<p>✅ macOS 15.5</p>,✅ macOS 26.0,✅ iPadOS 18.5,✅ iPadOS 18.6<p>⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/iPad14%2C8_summary_2025-08-04T202532.json>iPadOS 18.4.1</a></p>,✅ iPadOS 18.6,✅ iPadOS 18.6,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/iPad16%2C1_summary_2025-08-04T202532.json>iPadOS 18.5</a>,✅ iPadOS 26.0<p>✅ iPadOS 18.4.1</p>,✅ iOS 26.0,✅ iOS 26.0,✅ iOS 18.5
|
22 |
+
openai_whisper-tiny,openai_whisper-tiny,✅ macOS 26.0,✅ macOS 26.0<p>✅ macOS 15.5</p>,✅ macOS 26.0,✅ iPadOS 18.5,✅ iPadOS 18.6<p>⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/iPad14%2C8_summary_2025-08-04T202532.json>iPadOS 18.4.1</a></p>,✅ iPadOS 18.6,✅ iPadOS 18.6,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/iPad16%2C1_summary_2025-08-04T202532.json>iPadOS 18.5</a>,✅ iPadOS 26.0<p>✅ iPadOS 18.4.1</p>,✅ iOS 26.0,✅ iOS 26.0,✅ iOS 18.5
|
23 |
+
openai_whisper-tiny.en,openai_whisper-tiny.en,✅ macOS 26.0,✅ macOS 26.0<p>✅ macOS 15.5</p>,✅ macOS 26.0,✅ iPadOS 18.5,✅ iPadOS 18.6<p>⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/iPad14%2C8_summary_2025-08-04T202532.json>iPadOS 18.4.1</a></p>,✅ iPadOS 18.6,✅ iPadOS 18.6,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-07-31T175755_c814cae/iPad16%2C1_summary_2025-08-04T202532.json>iPadOS 18.5</a>,✅ iPadOS 26.0<p>✅ iPadOS 18.4.1</p>,✅ iOS 26.0,✅ iOS 26.0,✅ iOS 18.5
|
dashboard_data/test_coverage_112a023.json
ADDED
@@ -0,0 +1,239 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"commit_hash": "112a023",
|
3 |
+
"total_devices": 137,
|
4 |
+
"tested_devices": 49,
|
5 |
+
"skipped_devices": 88,
|
6 |
+
"coverage_percentage": 35.76642335766424,
|
7 |
+
"tested_device_list": [
|
8 |
+
"iPhone14,6",
|
9 |
+
"Mac16,8",
|
10 |
+
"Mac15,3",
|
11 |
+
"Mac15,13",
|
12 |
+
"Mac14,5",
|
13 |
+
"Mac15,6",
|
14 |
+
"iPhone12,8",
|
15 |
+
"iPhone14,8",
|
16 |
+
"Mac15,8",
|
17 |
+
"Mac14,9",
|
18 |
+
"iPad14,4",
|
19 |
+
"Mac15,4",
|
20 |
+
"iPad16,4",
|
21 |
+
"Mac15,7",
|
22 |
+
"Mac14,7",
|
23 |
+
"Mac15,10",
|
24 |
+
"Mac14,8",
|
25 |
+
"iPhone14,5",
|
26 |
+
"Mac14,6",
|
27 |
+
"Mac14,12",
|
28 |
+
"Mac14,10",
|
29 |
+
"iPhone12,5",
|
30 |
+
"iPhone12,1",
|
31 |
+
"Mac15,12",
|
32 |
+
"iPad14,5",
|
33 |
+
"iPhone12,3",
|
34 |
+
"iPad14,11",
|
35 |
+
"iPad14,3",
|
36 |
+
"Mac14,4",
|
37 |
+
"iPhone14,2",
|
38 |
+
"Mac15,11",
|
39 |
+
"iPhone14,7",
|
40 |
+
"iPad14,8",
|
41 |
+
"iPad14,6",
|
42 |
+
"iPad16,5",
|
43 |
+
"Mac14,3",
|
44 |
+
"iPhone14,4",
|
45 |
+
"iPad14,9",
|
46 |
+
"Mac15,9",
|
47 |
+
"Mac15,5",
|
48 |
+
"Mac14,2",
|
49 |
+
"iPad16,6",
|
50 |
+
"Mac14,13",
|
51 |
+
"Mac14,14",
|
52 |
+
"iPad14,10",
|
53 |
+
"Mac16,9",
|
54 |
+
"iPhone14,3",
|
55 |
+
"Mac14,15",
|
56 |
+
"iPad16,3"
|
57 |
+
],
|
58 |
+
"skipped_device_list": [
|
59 |
+
"Mac16,12",
|
60 |
+
"MacBookPro18,1",
|
61 |
+
"iPad8,3",
|
62 |
+
"iPad8,10",
|
63 |
+
"iPad14,2",
|
64 |
+
"iPad13,16",
|
65 |
+
"iPhone15,2",
|
66 |
+
"iPad13,18",
|
67 |
+
"iPad13,17",
|
68 |
+
"iPhone16,2",
|
69 |
+
"iPad15,8",
|
70 |
+
"iPad8,7",
|
71 |
+
"iPhone11,4",
|
72 |
+
"MacBookAir10,1",
|
73 |
+
"iPad12,1",
|
74 |
+
"iPhone13,3",
|
75 |
+
"Mac16,6",
|
76 |
+
"iPhone11,2",
|
77 |
+
"MacBookPro18,2",
|
78 |
+
"iPad8,1",
|
79 |
+
"iPhone11,8",
|
80 |
+
"iPad15,6",
|
81 |
+
"iPhone12,4",
|
82 |
+
"iPhone17,3",
|
83 |
+
"iPad8,2",
|
84 |
+
"iPad8,8",
|
85 |
+
"iPhone15,5",
|
86 |
+
"iPad16,1",
|
87 |
+
"Mac16,3",
|
88 |
+
"iPhone11,5",
|
89 |
+
"MacBookPro18,3",
|
90 |
+
"iPad14,1",
|
91 |
+
"Mac16,1",
|
92 |
+
"MacBookPro18,4",
|
93 |
+
"iMac21,1",
|
94 |
+
"iPad11,2",
|
95 |
+
"iMac21,2",
|
96 |
+
"iPad13,8",
|
97 |
+
"iPhone13,2",
|
98 |
+
"iPad8,9",
|
99 |
+
"Mac16,5",
|
100 |
+
"iPad12,2",
|
101 |
+
"iPhone16,1",
|
102 |
+
"iPad11,3",
|
103 |
+
"Mac16,13",
|
104 |
+
"iPhone12,2",
|
105 |
+
"iPad11,1",
|
106 |
+
"iPad13,1",
|
107 |
+
"iPad15,5",
|
108 |
+
"iPhone11,3",
|
109 |
+
"Mac16,2",
|
110 |
+
"iPhone13,4",
|
111 |
+
"iPhone17,1",
|
112 |
+
"iPhone15,3",
|
113 |
+
"iPad8,6",
|
114 |
+
"iPad16,2",
|
115 |
+
"iPad13,5",
|
116 |
+
"iPad11,7",
|
117 |
+
"iPad13,4",
|
118 |
+
"iPhone17,5",
|
119 |
+
"iPad13,9",
|
120 |
+
"Mac16,11",
|
121 |
+
"Macmini9,1",
|
122 |
+
"iPad13,11",
|
123 |
+
"iPad15,4",
|
124 |
+
"iPad13,10",
|
125 |
+
"iPad8,11",
|
126 |
+
"Mac13,2",
|
127 |
+
"iPhone17,2",
|
128 |
+
"iPad11,6",
|
129 |
+
"Mac16,10",
|
130 |
+
"iPhone13,1",
|
131 |
+
"iPhone17,4",
|
132 |
+
"MacBookPro17,1",
|
133 |
+
"iPad13,2",
|
134 |
+
"iPad8,12",
|
135 |
+
"iPad15,7",
|
136 |
+
"iPad13,19",
|
137 |
+
"Mac13,1",
|
138 |
+
"iPad8,4",
|
139 |
+
"iPad15,3",
|
140 |
+
"Mac16,7",
|
141 |
+
"iPhone15,4",
|
142 |
+
"iPad8,5",
|
143 |
+
"iPhone11,6",
|
144 |
+
"iPad13,7",
|
145 |
+
"iPad13,6",
|
146 |
+
"iPad11,4"
|
147 |
+
],
|
148 |
+
"tested_os_versions": [
|
149 |
+
"macOS_15.0.1",
|
150 |
+
"iPadOS_17.6.1",
|
151 |
+
"iOS_17.7.1",
|
152 |
+
"macOS_15.2",
|
153 |
+
"iPadOS_18.1",
|
154 |
+
"macOS_15.2.0",
|
155 |
+
"iOS_17.6.1",
|
156 |
+
"macOS_15.1.1"
|
157 |
+
],
|
158 |
+
"has_target_os_coverage": false,
|
159 |
+
"covered_target_versions": [
|
160 |
+
"macOS 15",
|
161 |
+
"iOS 17",
|
162 |
+
"iOS 18"
|
163 |
+
],
|
164 |
+
"missing_target_versions": [
|
165 |
+
"macOS 14",
|
166 |
+
"macOS 26",
|
167 |
+
"iOS 26"
|
168 |
+
],
|
169 |
+
"has_target_chip_coverage": false,
|
170 |
+
"platform_chip_coverage": {
|
171 |
+
"iPad": {
|
172 |
+
"total_chips": 8,
|
173 |
+
"tested_chips": 2,
|
174 |
+
"coverage_percentage": 25.0,
|
175 |
+
"covered_chips": [
|
176 |
+
"M2",
|
177 |
+
"M4"
|
178 |
+
],
|
179 |
+
"missing_chips": [
|
180 |
+
"A14",
|
181 |
+
"A15",
|
182 |
+
"A16",
|
183 |
+
"A17 Pro",
|
184 |
+
"M1",
|
185 |
+
"M3"
|
186 |
+
]
|
187 |
+
},
|
188 |
+
"iPhone": {
|
189 |
+
"total_chips": 6,
|
190 |
+
"tested_chips": 2,
|
191 |
+
"coverage_percentage": 33.33333333333333,
|
192 |
+
"covered_chips": [
|
193 |
+
"A13",
|
194 |
+
"A15"
|
195 |
+
],
|
196 |
+
"missing_chips": [
|
197 |
+
"A14",
|
198 |
+
"A16",
|
199 |
+
"A17 Pro",
|
200 |
+
"A18",
|
201 |
+
"A18 Pro"
|
202 |
+
]
|
203 |
+
},
|
204 |
+
"Mac": {
|
205 |
+
"total_chips": 4,
|
206 |
+
"tested_chips": 2,
|
207 |
+
"coverage_percentage": 50.0,
|
208 |
+
"covered_chips": [
|
209 |
+
"M2",
|
210 |
+
"M3"
|
211 |
+
],
|
212 |
+
"missing_chips": [
|
213 |
+
"M1",
|
214 |
+
"M4"
|
215 |
+
]
|
216 |
+
}
|
217 |
+
},
|
218 |
+
"missing_target_chips": {
|
219 |
+
"iPad": [
|
220 |
+
"A14",
|
221 |
+
"A15",
|
222 |
+
"A16",
|
223 |
+
"A17 Pro",
|
224 |
+
"M1",
|
225 |
+
"M3"
|
226 |
+
],
|
227 |
+
"iPhone": [
|
228 |
+
"A14",
|
229 |
+
"A16",
|
230 |
+
"A17 Pro",
|
231 |
+
"A18",
|
232 |
+
"A18 Pro"
|
233 |
+
],
|
234 |
+
"Mac": [
|
235 |
+
"M1",
|
236 |
+
"M4"
|
237 |
+
]
|
238 |
+
}
|
239 |
+
}
|
dashboard_data/test_coverage_11a1fab.json
ADDED
@@ -0,0 +1,233 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"commit_hash": "11a1fab",
|
3 |
+
"total_devices": 137,
|
4 |
+
"tested_devices": 22,
|
5 |
+
"skipped_devices": 115,
|
6 |
+
"coverage_percentage": 16.05839416058394,
|
7 |
+
"tested_device_list": [
|
8 |
+
"iPad15,8",
|
9 |
+
"Mac16,1",
|
10 |
+
"Mac16,12",
|
11 |
+
"iPad15,6",
|
12 |
+
"Mac16,10",
|
13 |
+
"iPad15,4",
|
14 |
+
"Mac16,13",
|
15 |
+
"iPad15,3",
|
16 |
+
"Mac16,6",
|
17 |
+
"Mac16,7",
|
18 |
+
"iPad13,1",
|
19 |
+
"Mac16,11",
|
20 |
+
"iPad15,5",
|
21 |
+
"Mac16,2",
|
22 |
+
"iPad13,2",
|
23 |
+
"iPad16,1",
|
24 |
+
"Mac16,3",
|
25 |
+
"iPad16,2",
|
26 |
+
"iPad15,7",
|
27 |
+
"iPad13,18",
|
28 |
+
"iPad13,19",
|
29 |
+
"Mac16,5"
|
30 |
+
],
|
31 |
+
"skipped_device_list": [
|
32 |
+
"iPhone14,6",
|
33 |
+
"MacBookPro18,1",
|
34 |
+
"Mac14,5",
|
35 |
+
"Mac15,6",
|
36 |
+
"iPad8,3",
|
37 |
+
"iPad8,10",
|
38 |
+
"iPad16,4",
|
39 |
+
"Mac14,7",
|
40 |
+
"Mac14,8",
|
41 |
+
"Mac15,10",
|
42 |
+
"iPad14,2",
|
43 |
+
"iPad13,16",
|
44 |
+
"iPhone15,2",
|
45 |
+
"iPad13,17",
|
46 |
+
"iPhone16,2",
|
47 |
+
"Mac14,6",
|
48 |
+
"iPad8,7",
|
49 |
+
"iPhone11,4",
|
50 |
+
"MacBookAir10,1",
|
51 |
+
"iPad12,1",
|
52 |
+
"iPad14,3",
|
53 |
+
"Mac14,4",
|
54 |
+
"Mac15,11",
|
55 |
+
"iPhone13,3",
|
56 |
+
"iPad14,9",
|
57 |
+
"iPhone14,4",
|
58 |
+
"Mac15,9",
|
59 |
+
"iPhone11,2",
|
60 |
+
"MacBookPro18,2",
|
61 |
+
"iPad8,1",
|
62 |
+
"iPhone11,8",
|
63 |
+
"Mac14,15",
|
64 |
+
"iPhone12,4",
|
65 |
+
"iPhone17,3",
|
66 |
+
"iPad8,2",
|
67 |
+
"iPad8,8",
|
68 |
+
"Mac15,8",
|
69 |
+
"iPhone14,5",
|
70 |
+
"iPhone15,5",
|
71 |
+
"iPhone11,5",
|
72 |
+
"MacBookPro18,3",
|
73 |
+
"iPad14,1",
|
74 |
+
"iPhone12,1",
|
75 |
+
"iPad14,5",
|
76 |
+
"MacBookPro18,4",
|
77 |
+
"iMac21,1",
|
78 |
+
"iPad11,2",
|
79 |
+
"iPhone14,2",
|
80 |
+
"iPad14,8",
|
81 |
+
"iMac21,2",
|
82 |
+
"iPad13,8",
|
83 |
+
"iPhone13,2",
|
84 |
+
"iPad8,9",
|
85 |
+
"Mac14,14",
|
86 |
+
"iPad12,2",
|
87 |
+
"Mac16,8",
|
88 |
+
"iPhone16,1",
|
89 |
+
"iPad11,3",
|
90 |
+
"iPhone12,8",
|
91 |
+
"iPhone12,2",
|
92 |
+
"iPad11,1",
|
93 |
+
"iPhone14,8",
|
94 |
+
"Mac14,9",
|
95 |
+
"iPhone11,3",
|
96 |
+
"iPad14,4",
|
97 |
+
"iPhone13,4",
|
98 |
+
"iPhone17,1",
|
99 |
+
"iPad8,6",
|
100 |
+
"iPhone15,3",
|
101 |
+
"iPad13,5",
|
102 |
+
"Mac14,12",
|
103 |
+
"iPhone12,5",
|
104 |
+
"Mac15,12",
|
105 |
+
"iPad11,7",
|
106 |
+
"iPhone12,3",
|
107 |
+
"iPad13,4",
|
108 |
+
"iPhone17,5",
|
109 |
+
"iPad14,6",
|
110 |
+
"iPad13,9",
|
111 |
+
"Mac15,5",
|
112 |
+
"Mac14,2",
|
113 |
+
"Macmini9,1",
|
114 |
+
"iPad16,6",
|
115 |
+
"iPad13,11",
|
116 |
+
"iPad13,10",
|
117 |
+
"iPad8,11",
|
118 |
+
"Mac13,2",
|
119 |
+
"iPhone17,2",
|
120 |
+
"iPad11,6",
|
121 |
+
"Mac15,3",
|
122 |
+
"Mac15,13",
|
123 |
+
"iPhone13,1",
|
124 |
+
"iPhone17,4",
|
125 |
+
"MacBookPro17,1",
|
126 |
+
"Mac15,4",
|
127 |
+
"Mac15,7",
|
128 |
+
"iPad8,12",
|
129 |
+
"Mac13,1",
|
130 |
+
"Mac14,10",
|
131 |
+
"iPad8,4",
|
132 |
+
"iPad14,11",
|
133 |
+
"iPad16,5",
|
134 |
+
"iPhone14,7",
|
135 |
+
"Mac14,3",
|
136 |
+
"iPhone15,4",
|
137 |
+
"iPad8,5",
|
138 |
+
"iPhone11,6",
|
139 |
+
"iPad13,7",
|
140 |
+
"Mac14,13",
|
141 |
+
"iPad13,6",
|
142 |
+
"iPad14,10",
|
143 |
+
"Mac16,9",
|
144 |
+
"iPhone14,3",
|
145 |
+
"iPad11,4",
|
146 |
+
"iPad16,3"
|
147 |
+
],
|
148 |
+
"tested_os_versions": [
|
149 |
+
"macOS_15.4.0",
|
150 |
+
"iPadOS_18.4",
|
151 |
+
"iPadOS_18.3.2",
|
152 |
+
"macOS_15.4"
|
153 |
+
],
|
154 |
+
"has_target_os_coverage": false,
|
155 |
+
"covered_target_versions": [
|
156 |
+
"macOS 15",
|
157 |
+
"iOS 18"
|
158 |
+
],
|
159 |
+
"missing_target_versions": [
|
160 |
+
"macOS 14",
|
161 |
+
"macOS 26",
|
162 |
+
"iOS 17",
|
163 |
+
"iOS 26"
|
164 |
+
],
|
165 |
+
"has_target_chip_coverage": false,
|
166 |
+
"platform_chip_coverage": {
|
167 |
+
"iPad": {
|
168 |
+
"total_chips": 8,
|
169 |
+
"tested_chips": 4,
|
170 |
+
"coverage_percentage": 50.0,
|
171 |
+
"covered_chips": [
|
172 |
+
"A14",
|
173 |
+
"A16",
|
174 |
+
"A17 Pro",
|
175 |
+
"M3"
|
176 |
+
],
|
177 |
+
"missing_chips": [
|
178 |
+
"A15",
|
179 |
+
"M1",
|
180 |
+
"M2",
|
181 |
+
"M4"
|
182 |
+
]
|
183 |
+
},
|
184 |
+
"iPhone": {
|
185 |
+
"total_chips": 6,
|
186 |
+
"tested_chips": 0,
|
187 |
+
"coverage_percentage": 0.0,
|
188 |
+
"covered_chips": [],
|
189 |
+
"missing_chips": [
|
190 |
+
"A14",
|
191 |
+
"A15",
|
192 |
+
"A16",
|
193 |
+
"A17 Pro",
|
194 |
+
"A18",
|
195 |
+
"A18 Pro"
|
196 |
+
]
|
197 |
+
},
|
198 |
+
"Mac": {
|
199 |
+
"total_chips": 4,
|
200 |
+
"tested_chips": 1,
|
201 |
+
"coverage_percentage": 25.0,
|
202 |
+
"covered_chips": [
|
203 |
+
"M4"
|
204 |
+
],
|
205 |
+
"missing_chips": [
|
206 |
+
"M1",
|
207 |
+
"M2",
|
208 |
+
"M3"
|
209 |
+
]
|
210 |
+
}
|
211 |
+
},
|
212 |
+
"missing_target_chips": {
|
213 |
+
"iPad": [
|
214 |
+
"A15",
|
215 |
+
"M1",
|
216 |
+
"M2",
|
217 |
+
"M4"
|
218 |
+
],
|
219 |
+
"iPhone": [
|
220 |
+
"A14",
|
221 |
+
"A15",
|
222 |
+
"A16",
|
223 |
+
"A17 Pro",
|
224 |
+
"A18",
|
225 |
+
"A18 Pro"
|
226 |
+
],
|
227 |
+
"Mac": [
|
228 |
+
"M1",
|
229 |
+
"M2",
|
230 |
+
"M3"
|
231 |
+
]
|
232 |
+
}
|
233 |
+
}
|
dashboard_data/test_coverage_8c0acbd.json
ADDED
@@ -0,0 +1,234 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"commit_hash": "8c0acbd",
|
3 |
+
"total_devices": 137,
|
4 |
+
"tested_devices": 82,
|
5 |
+
"skipped_devices": 55,
|
6 |
+
"coverage_percentage": 59.854014598540154,
|
7 |
+
"tested_device_list": [
|
8 |
+
"iPhone14,6",
|
9 |
+
"Mac16,8",
|
10 |
+
"iPhone16,1",
|
11 |
+
"Mac14,5",
|
12 |
+
"Mac15,6",
|
13 |
+
"iPhone12,8",
|
14 |
+
"iPad15,5",
|
15 |
+
"iPhone14,8",
|
16 |
+
"Mac14,9",
|
17 |
+
"iPad14,4",
|
18 |
+
"iPad16,4",
|
19 |
+
"Mac14,7",
|
20 |
+
"Mac14,8",
|
21 |
+
"Mac15,10",
|
22 |
+
"iPhone13,4",
|
23 |
+
"iPad14,2",
|
24 |
+
"iPad13,5",
|
25 |
+
"iPhone15,3",
|
26 |
+
"iPad13,16",
|
27 |
+
"iPad16,2",
|
28 |
+
"iPhone15,2",
|
29 |
+
"iPad13,17",
|
30 |
+
"iPhone16,2",
|
31 |
+
"Mac14,12",
|
32 |
+
"Mac14,6",
|
33 |
+
"iPhone12,5",
|
34 |
+
"iPad15,8",
|
35 |
+
"Mac15,12",
|
36 |
+
"iPhone12,3",
|
37 |
+
"iPad14,3",
|
38 |
+
"Mac14,4",
|
39 |
+
"Mac15,11",
|
40 |
+
"iPhone17,5",
|
41 |
+
"iPad13,4",
|
42 |
+
"iPhone13,3",
|
43 |
+
"iPad14,6",
|
44 |
+
"iPhone14,4",
|
45 |
+
"iPad14,9",
|
46 |
+
"Mac15,9",
|
47 |
+
"iPad13,9",
|
48 |
+
"Mac15,5",
|
49 |
+
"Mac14,2",
|
50 |
+
"iPad16,6",
|
51 |
+
"iPad13,11",
|
52 |
+
"iPad13,10",
|
53 |
+
"iPad15,4",
|
54 |
+
"Mac14,15",
|
55 |
+
"Mac15,3",
|
56 |
+
"Mac15,13",
|
57 |
+
"iPad15,6",
|
58 |
+
"iPhone13,1",
|
59 |
+
"iPhone17,4",
|
60 |
+
"iPhone17,3",
|
61 |
+
"Mac15,8",
|
62 |
+
"Mac15,4",
|
63 |
+
"Mac15,7",
|
64 |
+
"iPhone14,5",
|
65 |
+
"iPhone15,5",
|
66 |
+
"iPad16,1",
|
67 |
+
"iPad15,7",
|
68 |
+
"Mac14,10",
|
69 |
+
"iPad14,1",
|
70 |
+
"iPhone12,1",
|
71 |
+
"iPad14,5",
|
72 |
+
"iPad14,11",
|
73 |
+
"iPhone14,2",
|
74 |
+
"iPad16,5",
|
75 |
+
"iPhone14,7",
|
76 |
+
"iPad14,8",
|
77 |
+
"iPad15,3",
|
78 |
+
"Mac14,3",
|
79 |
+
"iPhone15,4",
|
80 |
+
"iPhone13,2",
|
81 |
+
"iPad13,8",
|
82 |
+
"iPad13,7",
|
83 |
+
"Mac14,13",
|
84 |
+
"Mac14,14",
|
85 |
+
"iPad13,6",
|
86 |
+
"iPad14,10",
|
87 |
+
"iPhone14,3",
|
88 |
+
"Mac16,9",
|
89 |
+
"iPad16,3"
|
90 |
+
],
|
91 |
+
"skipped_device_list": [
|
92 |
+
"Mac13,2",
|
93 |
+
"iPhone17,2",
|
94 |
+
"Mac16,12",
|
95 |
+
"MacBookPro18,1",
|
96 |
+
"iPad11,6",
|
97 |
+
"iPhone12,4",
|
98 |
+
"iPad11,3",
|
99 |
+
"Mac16,10",
|
100 |
+
"Mac16,13",
|
101 |
+
"iPad8,2",
|
102 |
+
"iPhone12,2",
|
103 |
+
"iPad11,1",
|
104 |
+
"iPad13,1",
|
105 |
+
"iPad8,3",
|
106 |
+
"iPad8,8",
|
107 |
+
"MacBookPro17,1",
|
108 |
+
"iPad8,10",
|
109 |
+
"iPhone11,3",
|
110 |
+
"Mac16,2",
|
111 |
+
"iPad13,2",
|
112 |
+
"iPhone17,1",
|
113 |
+
"Mac16,3",
|
114 |
+
"iPad8,6",
|
115 |
+
"iPhone11,5",
|
116 |
+
"MacBookPro18,3",
|
117 |
+
"iPad8,12",
|
118 |
+
"iPad13,18",
|
119 |
+
"iPad13,19",
|
120 |
+
"Mac13,1",
|
121 |
+
"iPad8,7",
|
122 |
+
"iPhone11,4",
|
123 |
+
"Mac16,1",
|
124 |
+
"MacBookAir10,1",
|
125 |
+
"iPad11,7",
|
126 |
+
"iPad8,4",
|
127 |
+
"MacBookPro18,4",
|
128 |
+
"iMac21,1",
|
129 |
+
"iPad12,1",
|
130 |
+
"iPad11,2",
|
131 |
+
"Mac16,6",
|
132 |
+
"iMac21,2",
|
133 |
+
"Mac16,7",
|
134 |
+
"iPad8,5",
|
135 |
+
"Mac16,11",
|
136 |
+
"iPhone11,2",
|
137 |
+
"iPhone11,6",
|
138 |
+
"MacBookPro18,2",
|
139 |
+
"Macmini9,1",
|
140 |
+
"iPad8,1",
|
141 |
+
"iPad8,11",
|
142 |
+
"iPhone11,8",
|
143 |
+
"iPad8,9",
|
144 |
+
"Mac16,5",
|
145 |
+
"iPad11,4",
|
146 |
+
"iPad12,2"
|
147 |
+
],
|
148 |
+
"tested_os_versions": [
|
149 |
+
"iPadOS_19.0",
|
150 |
+
"iOS_18.1",
|
151 |
+
"macOS_15.5",
|
152 |
+
"iPadOS_18.4.1",
|
153 |
+
"macOS_15.5.0",
|
154 |
+
"iPadOS_26.0",
|
155 |
+
"iOS_26.0",
|
156 |
+
"iPadOS_18.5",
|
157 |
+
"iOS_19.0",
|
158 |
+
"iOS_18.5",
|
159 |
+
"iPadOS_18.4",
|
160 |
+
"iOS_18.4.1"
|
161 |
+
],
|
162 |
+
"has_target_os_coverage": false,
|
163 |
+
"covered_target_versions": [
|
164 |
+
"macOS 15",
|
165 |
+
"iOS 18",
|
166 |
+
"iOS 26"
|
167 |
+
],
|
168 |
+
"missing_target_versions": [
|
169 |
+
"macOS 14",
|
170 |
+
"macOS 26",
|
171 |
+
"iOS 17"
|
172 |
+
],
|
173 |
+
"has_target_chip_coverage": false,
|
174 |
+
"platform_chip_coverage": {
|
175 |
+
"iPad": {
|
176 |
+
"total_chips": 8,
|
177 |
+
"tested_chips": 7,
|
178 |
+
"coverage_percentage": 87.5,
|
179 |
+
"covered_chips": [
|
180 |
+
"A15",
|
181 |
+
"A16",
|
182 |
+
"A17 Pro",
|
183 |
+
"M1",
|
184 |
+
"M2",
|
185 |
+
"M3",
|
186 |
+
"M4"
|
187 |
+
],
|
188 |
+
"missing_chips": [
|
189 |
+
"A14"
|
190 |
+
]
|
191 |
+
},
|
192 |
+
"iPhone": {
|
193 |
+
"total_chips": 6,
|
194 |
+
"tested_chips": 6,
|
195 |
+
"coverage_percentage": 100.0,
|
196 |
+
"covered_chips": [
|
197 |
+
"A13",
|
198 |
+
"A14",
|
199 |
+
"A15",
|
200 |
+
"A16",
|
201 |
+
"A17 Pro",
|
202 |
+
"A18"
|
203 |
+
],
|
204 |
+
"missing_chips": [
|
205 |
+
"A18 Pro"
|
206 |
+
]
|
207 |
+
},
|
208 |
+
"Mac": {
|
209 |
+
"total_chips": 4,
|
210 |
+
"tested_chips": 2,
|
211 |
+
"coverage_percentage": 50.0,
|
212 |
+
"covered_chips": [
|
213 |
+
"M2",
|
214 |
+
"M3"
|
215 |
+
],
|
216 |
+
"missing_chips": [
|
217 |
+
"M1",
|
218 |
+
"M4"
|
219 |
+
]
|
220 |
+
}
|
221 |
+
},
|
222 |
+
"missing_target_chips": {
|
223 |
+
"iPad": [
|
224 |
+
"A14"
|
225 |
+
],
|
226 |
+
"iPhone": [
|
227 |
+
"A18 Pro"
|
228 |
+
],
|
229 |
+
"Mac": [
|
230 |
+
"M1",
|
231 |
+
"M4"
|
232 |
+
]
|
233 |
+
}
|
234 |
+
}
|
dashboard_data/test_coverage_a9b92c4.json
ADDED
@@ -0,0 +1,239 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"commit_hash": "a9b92c4",
|
3 |
+
"total_devices": 137,
|
4 |
+
"tested_devices": 93,
|
5 |
+
"skipped_devices": 44,
|
6 |
+
"coverage_percentage": 67.88321167883211,
|
7 |
+
"tested_device_list": [
|
8 |
+
"iPhone14,6",
|
9 |
+
"Mac16,8",
|
10 |
+
"iPhone16,1",
|
11 |
+
"Mac16,12",
|
12 |
+
"MacBookPro18,1",
|
13 |
+
"Mac14,5",
|
14 |
+
"Mac15,6",
|
15 |
+
"Mac16,13",
|
16 |
+
"iPhone12,8",
|
17 |
+
"iPhone14,8",
|
18 |
+
"Mac14,9",
|
19 |
+
"iPad14,4",
|
20 |
+
"Mac16,2",
|
21 |
+
"iPad16,4",
|
22 |
+
"Mac14,7",
|
23 |
+
"Mac14,8",
|
24 |
+
"Mac15,10",
|
25 |
+
"iPhone13,4",
|
26 |
+
"iPhone17,1",
|
27 |
+
"iPad13,5",
|
28 |
+
"iPad13,16",
|
29 |
+
"iPad16,2",
|
30 |
+
"iPad13,17",
|
31 |
+
"iPhone16,2",
|
32 |
+
"Mac14,12",
|
33 |
+
"Mac14,6",
|
34 |
+
"iPhone12,5",
|
35 |
+
"Mac15,12",
|
36 |
+
"MacBookAir10,1",
|
37 |
+
"iPhone12,3",
|
38 |
+
"iPad14,3",
|
39 |
+
"Mac14,4",
|
40 |
+
"Mac15,11",
|
41 |
+
"iPhone17,5",
|
42 |
+
"iPad13,4",
|
43 |
+
"iPhone13,3",
|
44 |
+
"iPad14,6",
|
45 |
+
"Mac16,6",
|
46 |
+
"iPhone14,4",
|
47 |
+
"iPad14,9",
|
48 |
+
"Mac15,9",
|
49 |
+
"Mac16,11",
|
50 |
+
"iPad13,9",
|
51 |
+
"Mac15,5",
|
52 |
+
"MacBookPro18,2",
|
53 |
+
"Mac14,2",
|
54 |
+
"Macmini9,1",
|
55 |
+
"iPad16,6",
|
56 |
+
"iPad13,11",
|
57 |
+
"iPad13,10",
|
58 |
+
"Mac14,15",
|
59 |
+
"Mac13,2",
|
60 |
+
"iPhone17,2",
|
61 |
+
"Mac15,3",
|
62 |
+
"Mac15,13",
|
63 |
+
"Mac16,10",
|
64 |
+
"iPhone13,1",
|
65 |
+
"iPhone17,4",
|
66 |
+
"iPhone17,3",
|
67 |
+
"MacBookPro17,1",
|
68 |
+
"Mac15,8",
|
69 |
+
"Mac15,4",
|
70 |
+
"Mac15,7",
|
71 |
+
"iPhone14,5",
|
72 |
+
"iPad16,1",
|
73 |
+
"Mac16,3",
|
74 |
+
"MacBookPro18,3",
|
75 |
+
"Mac13,1",
|
76 |
+
"Mac14,10",
|
77 |
+
"iPhone12,1",
|
78 |
+
"Mac16,1",
|
79 |
+
"iPad14,5",
|
80 |
+
"MacBookPro18,4",
|
81 |
+
"iMac21,1",
|
82 |
+
"iPad14,11",
|
83 |
+
"iPhone14,2",
|
84 |
+
"iPad16,5",
|
85 |
+
"iPhone14,7",
|
86 |
+
"iPad14,8",
|
87 |
+
"Mac14,3",
|
88 |
+
"Mac16,7",
|
89 |
+
"iMac21,2",
|
90 |
+
"iPhone13,2",
|
91 |
+
"iPad13,8",
|
92 |
+
"iPad13,7",
|
93 |
+
"Mac14,13",
|
94 |
+
"Mac14,14",
|
95 |
+
"iPad13,6",
|
96 |
+
"iPad14,10",
|
97 |
+
"iPhone14,3",
|
98 |
+
"Mac16,9",
|
99 |
+
"Mac16,5",
|
100 |
+
"iPad16,3"
|
101 |
+
],
|
102 |
+
"skipped_device_list": [
|
103 |
+
"iPad15,6",
|
104 |
+
"iPad11,6",
|
105 |
+
"iPhone12,4",
|
106 |
+
"iPad11,3",
|
107 |
+
"iPad15,4",
|
108 |
+
"iPad8,2",
|
109 |
+
"iPhone12,2",
|
110 |
+
"iPad11,1",
|
111 |
+
"iPad13,1",
|
112 |
+
"iPad8,3",
|
113 |
+
"iPad8,8",
|
114 |
+
"iPad15,5",
|
115 |
+
"iPad8,10",
|
116 |
+
"iPhone11,3",
|
117 |
+
"iPhone15,5",
|
118 |
+
"iPad13,2",
|
119 |
+
"iPad14,2",
|
120 |
+
"iPad8,6",
|
121 |
+
"iPhone15,3",
|
122 |
+
"iPhone11,5",
|
123 |
+
"iPhone15,2",
|
124 |
+
"iPad8,12",
|
125 |
+
"iPad13,18",
|
126 |
+
"iPad15,7",
|
127 |
+
"iPad13,19",
|
128 |
+
"iPad14,1",
|
129 |
+
"iPad15,8",
|
130 |
+
"iPad8,7",
|
131 |
+
"iPhone11,4",
|
132 |
+
"iPad11,7",
|
133 |
+
"iPad8,4",
|
134 |
+
"iPad12,1",
|
135 |
+
"iPad11,2",
|
136 |
+
"iPad15,3",
|
137 |
+
"iPhone15,4",
|
138 |
+
"iPad8,5",
|
139 |
+
"iPhone11,2",
|
140 |
+
"iPhone11,6",
|
141 |
+
"iPad8,1",
|
142 |
+
"iPhone11,8",
|
143 |
+
"iPad8,9",
|
144 |
+
"iPad8,11",
|
145 |
+
"iPad11,4",
|
146 |
+
"iPad12,2"
|
147 |
+
],
|
148 |
+
"tested_os_versions": [
|
149 |
+
"macOS_15.0.1",
|
150 |
+
"iOS_18.1",
|
151 |
+
"iPadOS_17.6.1",
|
152 |
+
"iPadOS_18.0.1",
|
153 |
+
"macOS_15.2",
|
154 |
+
"macOS_15.0",
|
155 |
+
"iPadOS_18.1",
|
156 |
+
"iOS_18.2",
|
157 |
+
"macOS_15.2.0",
|
158 |
+
"iOS_17.6.1",
|
159 |
+
"macOS_15.1",
|
160 |
+
"iOS_18.0.1",
|
161 |
+
"macOS_15.0.0",
|
162 |
+
"iOS_17.2.1",
|
163 |
+
"iOS_17.7",
|
164 |
+
"macOS_15.1.0",
|
165 |
+
"iOS_18.0",
|
166 |
+
"iOS_17.3"
|
167 |
+
],
|
168 |
+
"has_target_os_coverage": false,
|
169 |
+
"covered_target_versions": [
|
170 |
+
"macOS 15",
|
171 |
+
"iOS 17",
|
172 |
+
"iOS 18"
|
173 |
+
],
|
174 |
+
"missing_target_versions": [
|
175 |
+
"macOS 14",
|
176 |
+
"macOS 26",
|
177 |
+
"iOS 26"
|
178 |
+
],
|
179 |
+
"has_target_chip_coverage": false,
|
180 |
+
"platform_chip_coverage": {
|
181 |
+
"iPad": {
|
182 |
+
"total_chips": 8,
|
183 |
+
"tested_chips": 4,
|
184 |
+
"coverage_percentage": 50.0,
|
185 |
+
"covered_chips": [
|
186 |
+
"A17 Pro",
|
187 |
+
"M1",
|
188 |
+
"M2",
|
189 |
+
"M4"
|
190 |
+
],
|
191 |
+
"missing_chips": [
|
192 |
+
"A14",
|
193 |
+
"A15",
|
194 |
+
"A16",
|
195 |
+
"M3"
|
196 |
+
]
|
197 |
+
},
|
198 |
+
"iPhone": {
|
199 |
+
"total_chips": 6,
|
200 |
+
"tested_chips": 6,
|
201 |
+
"coverage_percentage": 100.0,
|
202 |
+
"covered_chips": [
|
203 |
+
"A13",
|
204 |
+
"A14",
|
205 |
+
"A15",
|
206 |
+
"A17 Pro",
|
207 |
+
"A18",
|
208 |
+
"A18 Pro"
|
209 |
+
],
|
210 |
+
"missing_chips": [
|
211 |
+
"A16"
|
212 |
+
]
|
213 |
+
},
|
214 |
+
"Mac": {
|
215 |
+
"total_chips": 4,
|
216 |
+
"tested_chips": 4,
|
217 |
+
"coverage_percentage": 100.0,
|
218 |
+
"covered_chips": [
|
219 |
+
"M1",
|
220 |
+
"M2",
|
221 |
+
"M3",
|
222 |
+
"M4"
|
223 |
+
],
|
224 |
+
"missing_chips": []
|
225 |
+
}
|
226 |
+
},
|
227 |
+
"missing_target_chips": {
|
228 |
+
"iPad": [
|
229 |
+
"A14",
|
230 |
+
"A15",
|
231 |
+
"A16",
|
232 |
+
"M3"
|
233 |
+
],
|
234 |
+
"iPhone": [
|
235 |
+
"A16"
|
236 |
+
],
|
237 |
+
"Mac": []
|
238 |
+
}
|
239 |
+
}
|
dashboard_data/test_coverage_c814cae.json
ADDED
@@ -0,0 +1,233 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"commit_hash": "c814cae",
|
3 |
+
"total_devices": 137,
|
4 |
+
"tested_devices": 75,
|
5 |
+
"skipped_devices": 62,
|
6 |
+
"coverage_percentage": 54.74452554744526,
|
7 |
+
"tested_device_list": [
|
8 |
+
"Mac13,2",
|
9 |
+
"Mac16,8",
|
10 |
+
"iPhone17,2",
|
11 |
+
"Mac16,12",
|
12 |
+
"MacBookPro18,1",
|
13 |
+
"Mac14,5",
|
14 |
+
"iPad15,6",
|
15 |
+
"Mac16,10",
|
16 |
+
"iPad15,4",
|
17 |
+
"Mac16,13",
|
18 |
+
"iPhone17,4",
|
19 |
+
"iPhone17,3",
|
20 |
+
"iPad15,5",
|
21 |
+
"MacBookPro17,1",
|
22 |
+
"Mac14,9",
|
23 |
+
"iPad14,4",
|
24 |
+
"Mac16,2",
|
25 |
+
"iPad16,4",
|
26 |
+
"Mac14,7",
|
27 |
+
"Mac14,8",
|
28 |
+
"iPhone15,5",
|
29 |
+
"iPad16,1",
|
30 |
+
"iPhone17,1",
|
31 |
+
"Mac16,3",
|
32 |
+
"iPad13,5",
|
33 |
+
"MacBookPro18,3",
|
34 |
+
"iPad15,7",
|
35 |
+
"iPad16,2",
|
36 |
+
"iPad13,16",
|
37 |
+
"iPhone15,2",
|
38 |
+
"iPad13,17",
|
39 |
+
"iPhone15,3",
|
40 |
+
"Mac13,1",
|
41 |
+
"Mac14,12",
|
42 |
+
"Mac14,6",
|
43 |
+
"Mac14,10",
|
44 |
+
"iPad15,8",
|
45 |
+
"Mac16,1",
|
46 |
+
"MacBookAir10,1",
|
47 |
+
"iPad14,5",
|
48 |
+
"MacBookPro18,4",
|
49 |
+
"iMac21,1",
|
50 |
+
"iPad14,11",
|
51 |
+
"iPad14,3",
|
52 |
+
"Mac14,4",
|
53 |
+
"iPad16,5",
|
54 |
+
"iPad13,4",
|
55 |
+
"iPhone17,5",
|
56 |
+
"iPad14,8",
|
57 |
+
"iPad14,6",
|
58 |
+
"iPad15,3",
|
59 |
+
"Mac16,6",
|
60 |
+
"Mac14,3",
|
61 |
+
"iMac21,2",
|
62 |
+
"iPhone15,4",
|
63 |
+
"Mac16,7",
|
64 |
+
"iPad14,9",
|
65 |
+
"Mac16,11",
|
66 |
+
"iPad13,10",
|
67 |
+
"iPad13,9",
|
68 |
+
"MacBookPro18,2",
|
69 |
+
"Mac14,2",
|
70 |
+
"Macmini9,1",
|
71 |
+
"iPad13,8",
|
72 |
+
"iPad13,7",
|
73 |
+
"Mac14,13",
|
74 |
+
"iPad16,6",
|
75 |
+
"Mac14,14",
|
76 |
+
"iPad13,6",
|
77 |
+
"iPad14,10",
|
78 |
+
"Mac16,9",
|
79 |
+
"iPad13,11",
|
80 |
+
"Mac16,5",
|
81 |
+
"Mac14,15",
|
82 |
+
"iPad16,3"
|
83 |
+
],
|
84 |
+
"skipped_device_list": [
|
85 |
+
"iPhone14,6",
|
86 |
+
"iPhone16,1",
|
87 |
+
"iPad11,6",
|
88 |
+
"Mac15,3",
|
89 |
+
"Mac15,13",
|
90 |
+
"iPhone12,4",
|
91 |
+
"iPad11,3",
|
92 |
+
"iPhone13,1",
|
93 |
+
"Mac15,6",
|
94 |
+
"iPhone12,8",
|
95 |
+
"iPad8,2",
|
96 |
+
"iPhone12,2",
|
97 |
+
"iPad11,1",
|
98 |
+
"iPad13,1",
|
99 |
+
"iPad8,3",
|
100 |
+
"iPad8,8",
|
101 |
+
"Mac15,8",
|
102 |
+
"iPhone14,8",
|
103 |
+
"iPad8,10",
|
104 |
+
"iPhone11,3",
|
105 |
+
"Mac15,4",
|
106 |
+
"Mac15,7",
|
107 |
+
"Mac15,10",
|
108 |
+
"iPhone14,5",
|
109 |
+
"iPhone13,4",
|
110 |
+
"iPad13,2",
|
111 |
+
"iPad14,2",
|
112 |
+
"iPad8,6",
|
113 |
+
"iPhone11,5",
|
114 |
+
"iPad8,12",
|
115 |
+
"iPad13,18",
|
116 |
+
"iPhone16,2",
|
117 |
+
"iPad13,19",
|
118 |
+
"iPhone12,5",
|
119 |
+
"iPad14,1",
|
120 |
+
"iPhone12,1",
|
121 |
+
"iPad8,7",
|
122 |
+
"iPhone11,4",
|
123 |
+
"Mac15,12",
|
124 |
+
"iPad11,7",
|
125 |
+
"iPad8,4",
|
126 |
+
"iPhone12,3",
|
127 |
+
"iPad12,1",
|
128 |
+
"iPad11,2",
|
129 |
+
"iPhone14,2",
|
130 |
+
"Mac15,11",
|
131 |
+
"iPhone14,7",
|
132 |
+
"iPhone13,3",
|
133 |
+
"iPhone14,4",
|
134 |
+
"Mac15,9",
|
135 |
+
"iPad8,5",
|
136 |
+
"iPhone11,2",
|
137 |
+
"Mac15,5",
|
138 |
+
"iPhone11,6",
|
139 |
+
"iPhone13,2",
|
140 |
+
"iPad8,1",
|
141 |
+
"iPhone11,8",
|
142 |
+
"iPad8,9",
|
143 |
+
"iPhone14,3",
|
144 |
+
"iPad8,11",
|
145 |
+
"iPad11,4",
|
146 |
+
"iPad12,2"
|
147 |
+
],
|
148 |
+
"tested_os_versions": [
|
149 |
+
"macOS_15.5",
|
150 |
+
"iPadOS_18.4.1",
|
151 |
+
"iOS_26.0",
|
152 |
+
"macOS_15.5.0",
|
153 |
+
"iPadOS_26.0",
|
154 |
+
"macOS_26.0",
|
155 |
+
"iPadOS_18.6",
|
156 |
+
"iPadOS_18.5",
|
157 |
+
"macOS_26.0.0",
|
158 |
+
"iOS_18.5"
|
159 |
+
],
|
160 |
+
"has_target_os_coverage": false,
|
161 |
+
"covered_target_versions": [
|
162 |
+
"macOS 15",
|
163 |
+
"macOS 26",
|
164 |
+
"iOS 18",
|
165 |
+
"iOS 26"
|
166 |
+
],
|
167 |
+
"missing_target_versions": [
|
168 |
+
"macOS 14",
|
169 |
+
"iOS 17"
|
170 |
+
],
|
171 |
+
"has_target_chip_coverage": false,
|
172 |
+
"platform_chip_coverage": {
|
173 |
+
"iPad": {
|
174 |
+
"total_chips": 8,
|
175 |
+
"tested_chips": 6,
|
176 |
+
"coverage_percentage": 75.0,
|
177 |
+
"covered_chips": [
|
178 |
+
"A16",
|
179 |
+
"A17 Pro",
|
180 |
+
"M1",
|
181 |
+
"M2",
|
182 |
+
"M3",
|
183 |
+
"M4"
|
184 |
+
],
|
185 |
+
"missing_chips": [
|
186 |
+
"A14",
|
187 |
+
"A15"
|
188 |
+
]
|
189 |
+
},
|
190 |
+
"iPhone": {
|
191 |
+
"total_chips": 6,
|
192 |
+
"tested_chips": 3,
|
193 |
+
"coverage_percentage": 50.0,
|
194 |
+
"covered_chips": [
|
195 |
+
"A16",
|
196 |
+
"A18",
|
197 |
+
"A18 Pro"
|
198 |
+
],
|
199 |
+
"missing_chips": [
|
200 |
+
"A14",
|
201 |
+
"A15",
|
202 |
+
"A17 Pro"
|
203 |
+
]
|
204 |
+
},
|
205 |
+
"Mac": {
|
206 |
+
"total_chips": 4,
|
207 |
+
"tested_chips": 3,
|
208 |
+
"coverage_percentage": 75.0,
|
209 |
+
"covered_chips": [
|
210 |
+
"M1",
|
211 |
+
"M2",
|
212 |
+
"M4"
|
213 |
+
],
|
214 |
+
"missing_chips": [
|
215 |
+
"M3"
|
216 |
+
]
|
217 |
+
}
|
218 |
+
},
|
219 |
+
"missing_target_chips": {
|
220 |
+
"iPad": [
|
221 |
+
"A14",
|
222 |
+
"A15"
|
223 |
+
],
|
224 |
+
"iPhone": [
|
225 |
+
"A14",
|
226 |
+
"A15",
|
227 |
+
"A17 Pro"
|
228 |
+
],
|
229 |
+
"Mac": [
|
230 |
+
"M3"
|
231 |
+
]
|
232 |
+
}
|
233 |
+
}
|
dashboard_data/test_coverage_ca49596.json
ADDED
@@ -0,0 +1,237 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"commit_hash": "ca49596",
|
3 |
+
"total_devices": 137,
|
4 |
+
"tested_devices": 63,
|
5 |
+
"skipped_devices": 74,
|
6 |
+
"coverage_percentage": 45.98540145985402,
|
7 |
+
"tested_device_list": [
|
8 |
+
"iPhone14,6",
|
9 |
+
"Mac16,8",
|
10 |
+
"Mac15,3",
|
11 |
+
"Mac15,13",
|
12 |
+
"Mac16,12",
|
13 |
+
"iPad15,6",
|
14 |
+
"Mac16,10",
|
15 |
+
"Mac14,5",
|
16 |
+
"iPad15,4",
|
17 |
+
"Mac15,6",
|
18 |
+
"Mac16,13",
|
19 |
+
"iPhone12,8",
|
20 |
+
"iPad15,5",
|
21 |
+
"iPhone14,8",
|
22 |
+
"Mac15,8",
|
23 |
+
"Mac14,9",
|
24 |
+
"iPad14,4",
|
25 |
+
"Mac15,4",
|
26 |
+
"Mac16,2",
|
27 |
+
"Mac15,7",
|
28 |
+
"Mac14,7",
|
29 |
+
"Mac15,10",
|
30 |
+
"iPhone14,5",
|
31 |
+
"Mac14,8",
|
32 |
+
"iPad16,4",
|
33 |
+
"Mac16,3",
|
34 |
+
"Mac14,12",
|
35 |
+
"Mac14,6",
|
36 |
+
"Mac14,10",
|
37 |
+
"iPhone12,5",
|
38 |
+
"iPhone12,1",
|
39 |
+
"Mac15,12",
|
40 |
+
"Mac16,1",
|
41 |
+
"iPad14,5",
|
42 |
+
"iPhone12,3",
|
43 |
+
"iPad14,11",
|
44 |
+
"iPad14,3",
|
45 |
+
"iPhone14,2",
|
46 |
+
"Mac14,4",
|
47 |
+
"Mac15,11",
|
48 |
+
"iPhone14,7",
|
49 |
+
"iPad14,8",
|
50 |
+
"iPad14,6",
|
51 |
+
"iPad15,3",
|
52 |
+
"iPad16,5",
|
53 |
+
"Mac16,6",
|
54 |
+
"Mac14,3",
|
55 |
+
"Mac16,7",
|
56 |
+
"iPhone14,4",
|
57 |
+
"Mac15,9",
|
58 |
+
"iPad14,9",
|
59 |
+
"Mac16,11",
|
60 |
+
"Mac15,5",
|
61 |
+
"Mac14,2",
|
62 |
+
"iPad16,6",
|
63 |
+
"Mac14,13",
|
64 |
+
"Mac14,14",
|
65 |
+
"iPad14,10",
|
66 |
+
"iPhone14,3",
|
67 |
+
"Mac16,9",
|
68 |
+
"Mac16,5",
|
69 |
+
"Mac14,15",
|
70 |
+
"iPad16,3"
|
71 |
+
],
|
72 |
+
"skipped_device_list": [
|
73 |
+
"Mac13,2",
|
74 |
+
"iPhone16,1",
|
75 |
+
"iPhone17,2",
|
76 |
+
"iPad11,6",
|
77 |
+
"MacBookPro18,1",
|
78 |
+
"iPhone12,4",
|
79 |
+
"iPad11,3",
|
80 |
+
"iPhone13,1",
|
81 |
+
"iPhone17,4",
|
82 |
+
"iPhone17,3",
|
83 |
+
"iPad8,2",
|
84 |
+
"iPhone12,2",
|
85 |
+
"iPad11,1",
|
86 |
+
"iPad13,1",
|
87 |
+
"iPad8,3",
|
88 |
+
"iPad8,8",
|
89 |
+
"MacBookPro17,1",
|
90 |
+
"iPad8,10",
|
91 |
+
"iPhone11,3",
|
92 |
+
"iPhone13,4",
|
93 |
+
"iPhone15,5",
|
94 |
+
"iPad13,2",
|
95 |
+
"iPad14,2",
|
96 |
+
"iPad16,1",
|
97 |
+
"iPhone17,1",
|
98 |
+
"iPad13,16",
|
99 |
+
"iPhone11,5",
|
100 |
+
"iPhone15,2",
|
101 |
+
"MacBookPro18,3",
|
102 |
+
"iPad13,18",
|
103 |
+
"iPad8,6",
|
104 |
+
"iPad13,17",
|
105 |
+
"iPhone16,2",
|
106 |
+
"iPhone15,3",
|
107 |
+
"iPad16,2",
|
108 |
+
"iPad8,12",
|
109 |
+
"iPad15,7",
|
110 |
+
"iPad14,1",
|
111 |
+
"iPad13,19",
|
112 |
+
"Mac13,1",
|
113 |
+
"iPad15,8",
|
114 |
+
"iPad8,7",
|
115 |
+
"iPhone11,4",
|
116 |
+
"MacBookAir10,1",
|
117 |
+
"iPad11,7",
|
118 |
+
"iPad8,4",
|
119 |
+
"MacBookPro18,4",
|
120 |
+
"iMac21,1",
|
121 |
+
"iPad12,1",
|
122 |
+
"iPad11,2",
|
123 |
+
"iPad13,4",
|
124 |
+
"iPhone17,5",
|
125 |
+
"iPhone13,3",
|
126 |
+
"iMac21,2",
|
127 |
+
"iPhone15,4",
|
128 |
+
"iPad8,5",
|
129 |
+
"iPad13,9",
|
130 |
+
"iPhone11,2",
|
131 |
+
"iPhone11,6",
|
132 |
+
"MacBookPro18,2",
|
133 |
+
"Macmini9,1",
|
134 |
+
"iPad13,8",
|
135 |
+
"iPhone13,2",
|
136 |
+
"iPad8,1",
|
137 |
+
"iPad8,11",
|
138 |
+
"iPhone11,8",
|
139 |
+
"iPad8,9",
|
140 |
+
"iPad13,5",
|
141 |
+
"iPad13,7",
|
142 |
+
"iPad13,6",
|
143 |
+
"iPad13,11",
|
144 |
+
"iPad13,10",
|
145 |
+
"iPad11,4",
|
146 |
+
"iPad12,2"
|
147 |
+
],
|
148 |
+
"tested_os_versions": [
|
149 |
+
"iOS_18.1",
|
150 |
+
"macOS_15.3.0",
|
151 |
+
"macOS_15.4.0",
|
152 |
+
"iPadOS_18.3.2",
|
153 |
+
"iOS_17.6.1",
|
154 |
+
"macOS_15.3",
|
155 |
+
"macOS_15.4",
|
156 |
+
"iPadOS_18.4"
|
157 |
+
],
|
158 |
+
"has_target_os_coverage": false,
|
159 |
+
"covered_target_versions": [
|
160 |
+
"macOS 15",
|
161 |
+
"iOS 17",
|
162 |
+
"iOS 18"
|
163 |
+
],
|
164 |
+
"missing_target_versions": [
|
165 |
+
"macOS 14",
|
166 |
+
"macOS 26",
|
167 |
+
"iOS 26"
|
168 |
+
],
|
169 |
+
"has_target_chip_coverage": false,
|
170 |
+
"platform_chip_coverage": {
|
171 |
+
"iPad": {
|
172 |
+
"total_chips": 8,
|
173 |
+
"tested_chips": 3,
|
174 |
+
"coverage_percentage": 37.5,
|
175 |
+
"covered_chips": [
|
176 |
+
"M2",
|
177 |
+
"M3",
|
178 |
+
"M4"
|
179 |
+
],
|
180 |
+
"missing_chips": [
|
181 |
+
"A14",
|
182 |
+
"A15",
|
183 |
+
"A16",
|
184 |
+
"A17 Pro",
|
185 |
+
"M1"
|
186 |
+
]
|
187 |
+
},
|
188 |
+
"iPhone": {
|
189 |
+
"total_chips": 6,
|
190 |
+
"tested_chips": 2,
|
191 |
+
"coverage_percentage": 33.33333333333333,
|
192 |
+
"covered_chips": [
|
193 |
+
"A13",
|
194 |
+
"A15"
|
195 |
+
],
|
196 |
+
"missing_chips": [
|
197 |
+
"A14",
|
198 |
+
"A16",
|
199 |
+
"A17 Pro",
|
200 |
+
"A18",
|
201 |
+
"A18 Pro"
|
202 |
+
]
|
203 |
+
},
|
204 |
+
"Mac": {
|
205 |
+
"total_chips": 4,
|
206 |
+
"tested_chips": 3,
|
207 |
+
"coverage_percentage": 75.0,
|
208 |
+
"covered_chips": [
|
209 |
+
"M2",
|
210 |
+
"M3",
|
211 |
+
"M4"
|
212 |
+
],
|
213 |
+
"missing_chips": [
|
214 |
+
"M1"
|
215 |
+
]
|
216 |
+
}
|
217 |
+
},
|
218 |
+
"missing_target_chips": {
|
219 |
+
"iPad": [
|
220 |
+
"A14",
|
221 |
+
"A15",
|
222 |
+
"A16",
|
223 |
+
"A17 Pro",
|
224 |
+
"M1"
|
225 |
+
],
|
226 |
+
"iPhone": [
|
227 |
+
"A14",
|
228 |
+
"A16",
|
229 |
+
"A17 Pro",
|
230 |
+
"A18",
|
231 |
+
"A18 Pro"
|
232 |
+
],
|
233 |
+
"Mac": [
|
234 |
+
"M1"
|
235 |
+
]
|
236 |
+
}
|
237 |
+
}
|
main.py
CHANGED
@@ -23,24 +23,17 @@ from constants import (
|
|
23 |
CITATION_BUTTON_TEXT,
|
24 |
COL_NAMES,
|
25 |
HEADER,
|
26 |
-
LANGUAGE_MAP,
|
27 |
METHODOLOGY_TEXT,
|
28 |
PERFORMANCE_TEXT,
|
29 |
-
QUALITY_TEXT,
|
30 |
-
# SHA_TO_VERSION,
|
31 |
)
|
32 |
from utils import (
|
33 |
add_datasets_to_performance_columns,
|
34 |
-
|
35 |
-
create_confusion_matrix_plot,
|
36 |
create_initial_performance_column_dict,
|
37 |
-
create_initial_quality_column_dict,
|
38 |
css,
|
39 |
fields,
|
40 |
get_os_name_and_version,
|
41 |
-
make_dataset_wer_clickable_link,
|
42 |
make_model_name_clickable_link,
|
43 |
-
make_multilingual_model_clickable_link,
|
44 |
plot_metric,
|
45 |
read_json_line_by_line,
|
46 |
)
|
@@ -61,16 +54,18 @@ local_dir = ""
|
|
61 |
|
62 |
# Load benchmark data from JSON files
|
63 |
PERFORMANCE_DATA = read_json_line_by_line("dashboard_data/performance_data.json")
|
64 |
-
QUALITY_DATA = read_json_line_by_line("dashboard_data/quality_data.json")
|
65 |
with open("dashboard_data/version.json", "r") as file:
|
66 |
VERSION_DATA = json.load(file)
|
67 |
|
|
|
|
|
|
|
68 |
SHA_TO_VERSION = {
|
69 |
-
VERSION_DATA["releases"][i]: VERSION_DATA["versions"][i]
|
|
|
70 |
}
|
71 |
|
72 |
-
# Convert JSON data to pandas DataFrames
|
73 |
-
quality_df = pd.json_normalize(QUALITY_DATA)
|
74 |
benchmark_df = pd.json_normalize(PERFORMANCE_DATA)
|
75 |
releases = VERSION_DATA["releases"]
|
76 |
|
@@ -78,55 +73,9 @@ releases = VERSION_DATA["releases"]
|
|
78 |
benchmark_df["timestamp"] = pd.to_datetime(benchmark_df["timestamp"]).dt.tz_localize(
|
79 |
None
|
80 |
)
|
81 |
-
benchmark_df["timestamp"] = pd.to_datetime(benchmark_df["timestamp"]).dt.tz_localize(
|
82 |
-
None
|
83 |
-
)
|
84 |
-
|
85 |
-
# First create a temporary column for model length
|
86 |
-
sorted_quality_df = (
|
87 |
-
quality_df.assign(model_len=quality_df["model"].str.len())
|
88 |
-
.sort_values(
|
89 |
-
by=["model_len", "model", "timestamp"],
|
90 |
-
ascending=[True, True, False],
|
91 |
-
)
|
92 |
-
.drop(columns=["model_len"])
|
93 |
-
.drop_duplicates(subset=["model"], keep="first")
|
94 |
-
.reset_index(drop=True)
|
95 |
-
)
|
96 |
-
|
97 |
-
multilingual_df = pd.read_csv("dashboard_data/multilingual_results.csv")
|
98 |
-
multilingual_models_df = multilingual_df[["Model"]].drop_duplicates()
|
99 |
-
multilingual_models_buttons = []
|
100 |
-
for model in multilingual_models_df["Model"]:
|
101 |
-
elem_id = (
|
102 |
-
f"{model}".replace(" ", "_").replace('"', "").replace("'", "").replace(",", "")
|
103 |
-
)
|
104 |
-
multilingual_models_buttons.append(
|
105 |
-
gr.Button(value=model, elem_id=elem_id, visible=False)
|
106 |
-
)
|
107 |
-
multilingual_models_df["Model"] = multilingual_models_df["Model"].apply(
|
108 |
-
lambda x: make_multilingual_model_clickable_link(x)
|
109 |
-
)
|
110 |
-
|
111 |
-
with open("dashboard_data/multilingual_confusion_matrices.json", "r") as file:
|
112 |
-
confusion_matrix_map = dict(json.load(file))
|
113 |
-
|
114 |
-
# Create a mapping of model to average WER
|
115 |
-
model_to_english_wer = dict(zip(sorted_quality_df["model"], sorted_quality_df["average_wer"]))
|
116 |
-
model_to_multilingual_wer = dict(
|
117 |
-
zip(multilingual_df["Model"], multilingual_df["Average WER"])
|
118 |
-
)
|
119 |
-
|
120 |
-
# Add English WER and Multilingual WER to performance_df
|
121 |
-
benchmark_df["english_wer"] = benchmark_df["model"].map(model_to_english_wer)
|
122 |
-
benchmark_df["multilingual_wer"] = benchmark_df["model"].map(model_to_multilingual_wer)
|
123 |
-
benchmark_df.fillna({"multilingual_wer": "N/A"}, inplace=True) # Mark all untested models as N/A
|
124 |
-
|
125 |
-
# Mark English-only models
|
126 |
-
english_only_mask = benchmark_df["model"].str.contains(r"\.en$|distil-whisper", case=False, na=False)
|
127 |
-
benchmark_df.loc[english_only_mask, "multilingual_wer"] = "English-only model"
|
128 |
|
129 |
-
|
|
|
130 |
|
131 |
sorted_performance_df = (
|
132 |
benchmark_df.assign(model_len=benchmark_df["model"].str.len())
|
@@ -140,9 +89,6 @@ sorted_performance_df = (
|
|
140 |
)
|
141 |
|
142 |
# Identify dataset-specific columns
|
143 |
-
dataset_wer_columns = [
|
144 |
-
col for col in sorted_quality_df.columns if col.startswith("dataset_wer.")
|
145 |
-
]
|
146 |
dataset_speed_columns = [
|
147 |
col for col in sorted_performance_df.columns if col.startswith("dataset_speed.")
|
148 |
]
|
@@ -153,46 +99,36 @@ dataset_toks_columns = [
|
|
153 |
]
|
154 |
|
155 |
# Extract dataset names
|
156 |
-
QUALITY_DATASETS = [col.split(".")[-1] for col in dataset_wer_columns]
|
157 |
PERFORMANCE_DATASETS = [col.split(".")[-1] for col in dataset_speed_columns]
|
158 |
|
159 |
# Prepare DataFrames for display
|
160 |
-
model_df = sorted_quality_df[
|
161 |
-
["model", "average_wer", "qoi", "timestamp"] + dataset_wer_columns
|
162 |
-
]
|
163 |
performance_df = sorted_performance_df[
|
164 |
[
|
165 |
"model",
|
166 |
"device",
|
167 |
"os",
|
168 |
"english_wer",
|
169 |
-
"multilingual_wer",
|
170 |
"qoi",
|
171 |
"speed",
|
172 |
"tokens_per_second",
|
173 |
"timestamp",
|
174 |
-
"commit_hash"
|
175 |
]
|
176 |
+ dataset_speed_columns
|
177 |
+ dataset_toks_columns
|
178 |
].copy()
|
179 |
|
|
|
|
|
|
|
|
|
|
|
180 |
# Rename columns for clarity
|
181 |
performance_df = performance_df.rename(
|
182 |
lambda x: COL_NAMES[x] if x in COL_NAMES else x, axis="columns"
|
183 |
)
|
184 |
-
model_df = model_df.rename(
|
185 |
-
lambda x: COL_NAMES[x] if x in COL_NAMES else x, axis="columns"
|
186 |
-
)
|
187 |
|
188 |
# Process dataset-specific columns
|
189 |
-
for col in dataset_wer_columns:
|
190 |
-
dataset_name = col.split(".")[-1]
|
191 |
-
model_df = model_df.rename(columns={col: dataset_name})
|
192 |
-
model_df[dataset_name] = model_df.apply(
|
193 |
-
lambda x: make_dataset_wer_clickable_link(x, dataset_name), axis=1
|
194 |
-
)
|
195 |
-
|
196 |
for col in dataset_speed_columns:
|
197 |
dataset_name = col.split(".")[-1]
|
198 |
performance_df = performance_df.rename(
|
@@ -210,9 +146,7 @@ for col in dataset_toks_columns:
|
|
210 |
)
|
211 |
|
212 |
# Process model names for display
|
213 |
-
model_df["model_raw"] = model_df["Model"].copy()
|
214 |
performance_df["model_raw"] = performance_df["Model"].copy()
|
215 |
-
model_df["Model"] = model_df["Model"].apply(lambda x: make_model_name_clickable_link(x))
|
216 |
performance_df["Model"] = performance_df["Model"].apply(
|
217 |
lambda x: make_model_name_clickable_link(x)
|
218 |
)
|
@@ -220,49 +154,42 @@ performance_df["Model"] = performance_df["Model"].apply(
|
|
220 |
# Extract unique devices and OS versions
|
221 |
initial_release_df = benchmark_df[benchmark_df["commit_hash"] == releases[-1]]
|
222 |
PERFORMANCE_DEVICES = initial_release_df["device"].unique().tolist()
|
223 |
-
PERFORMANCE_OS =
|
|
|
|
|
224 |
PERFORMANCE_OS.sort()
|
225 |
|
226 |
# Create initial column dictionaries and update with dataset information
|
227 |
initial_performance_column_dict = create_initial_performance_column_dict()
|
228 |
-
initial_quality_column_dict = create_initial_quality_column_dict()
|
229 |
|
230 |
performance_column_info = add_datasets_to_performance_columns(
|
231 |
initial_performance_column_dict, PERFORMANCE_DATASETS
|
232 |
)
|
233 |
-
quality_column_info = add_datasets_to_quality_columns(
|
234 |
-
initial_quality_column_dict, QUALITY_DATASETS
|
235 |
-
)
|
236 |
|
237 |
# Unpack the returned dictionaries
|
238 |
updated_performance_column_dict = performance_column_info["column_dict"]
|
239 |
-
updated_quality_column_dict = quality_column_info["column_dict"]
|
240 |
|
241 |
PerformanceAutoEvalColumn = performance_column_info["AutoEvalColumn"]
|
242 |
-
QualityAutoEvalColumn = quality_column_info["AutoEvalColumn"]
|
243 |
|
244 |
# Define column sets for different views
|
245 |
PERFORMANCE_COLS = performance_column_info["COLS"]
|
246 |
-
QUALITY_COLS = quality_column_info["COLS"]
|
247 |
PERFORMANCE_TYPES = performance_column_info["TYPES"]
|
248 |
-
QUALITY_TYPES = quality_column_info["TYPES"]
|
249 |
PERFORMANCE_ALWAYS_HERE_COLS = performance_column_info["ALWAYS_HERE_COLS"]
|
250 |
-
QUALITY_ALWAYS_HERE_COLS = quality_column_info["ALWAYS_HERE_COLS"]
|
251 |
PERFORMANCE_TOGGLE_COLS = performance_column_info["TOGGLE_COLS"]
|
252 |
-
QUALITY_TOGGLE_COLS = quality_column_info["TOGGLE_COLS"]
|
253 |
PERFORMANCE_SELECTED_COLS = performance_column_info["SELECTED_COLS"]
|
254 |
-
|
255 |
|
256 |
def get_release_devices(release):
|
257 |
"""
|
258 |
Get the list of devices for a specific release.
|
259 |
-
|
260 |
:param release: Selected release hash
|
261 |
:return: List of devices available in the release
|
262 |
"""
|
263 |
release_df = benchmark_df[benchmark_df["commit_hash"] == release]
|
264 |
return release_df["device"].unique().tolist()
|
265 |
|
|
|
266 |
def performance_filter(
|
267 |
df,
|
268 |
columns,
|
@@ -367,95 +294,44 @@ def performance_filter(
|
|
367 |
return filtered_df
|
368 |
|
369 |
|
370 |
-
def quality_filter(df, columns, model_query, wer_slider, qoi_slider, exclude_models):
|
371 |
-
"""
|
372 |
-
Filters the quality DataFrame based on specified criteria.
|
373 |
-
:param df: The DataFrame to be filtered.
|
374 |
-
:param columns: The columns to be included in the filtered DataFrame.
|
375 |
-
:param model_query: The query string to filter the 'Model' column.
|
376 |
-
:param wer_slider: The range of values to filter the 'Average WER' column.
|
377 |
-
:param qoi_slider: The range of values to filter the 'QoI' column.
|
378 |
-
:param exclude_models: Models to exclude from the results.
|
379 |
-
:return: The filtered DataFrame.
|
380 |
-
"""
|
381 |
-
# Select columns based on input and always-present columns
|
382 |
-
filtered_df = df[
|
383 |
-
QUALITY_ALWAYS_HERE_COLS
|
384 |
-
+ [c for c in QUALITY_COLS if c in df.columns and c in columns]
|
385 |
-
]
|
386 |
-
|
387 |
-
# Filter models based on query
|
388 |
-
if model_query:
|
389 |
-
filtered_df = filtered_df[
|
390 |
-
filtered_df["Model"].str.contains(
|
391 |
-
"|".join(q.strip() for q in model_query.split(";")), case=False
|
392 |
-
)
|
393 |
-
]
|
394 |
-
|
395 |
-
# Exclude specified models
|
396 |
-
if exclude_models:
|
397 |
-
exclude_list = [m.strip() for m in exclude_models.split(";")]
|
398 |
-
filtered_df = filtered_df[
|
399 |
-
~filtered_df["Model"].str.contains("|".join(exclude_list), case=False)
|
400 |
-
]
|
401 |
-
|
402 |
-
# Apply WER and QoI filters
|
403 |
-
min_wer_slider, max_wer_slider = wer_slider
|
404 |
-
min_qoi_slider, max_qoi_slider = qoi_slider
|
405 |
-
if "Average WER" in filtered_df.columns:
|
406 |
-
filtered_df = filtered_df[
|
407 |
-
(filtered_df["Average WER"] >= min_wer_slider)
|
408 |
-
& (filtered_df["Average WER"] <= max_wer_slider)
|
409 |
-
]
|
410 |
-
if "QoI" in filtered_df.columns:
|
411 |
-
filtered_df = filtered_df[
|
412 |
-
(filtered_df["QoI"] >= min_qoi_slider)
|
413 |
-
& (filtered_df["QoI"] <= max_qoi_slider)
|
414 |
-
]
|
415 |
-
|
416 |
-
return filtered_df
|
417 |
-
|
418 |
-
|
419 |
def update_performance_filters(release):
|
420 |
"""
|
421 |
Updates the performance filters (devices and OS) based on the selected release.
|
422 |
-
|
423 |
:param release: Selected release hash
|
424 |
:return: Tuple containing updated device and OS choices
|
425 |
"""
|
426 |
# Filter benchmark data for the selected release
|
427 |
release_df = benchmark_df[benchmark_df["commit_hash"] == release]
|
428 |
-
|
429 |
# Get unique devices and OS versions for this release
|
430 |
release_devices = release_df["device"].unique().tolist()
|
431 |
release_os = release_df["os"].apply(get_os_name_and_version).unique().tolist()
|
432 |
release_os.sort()
|
433 |
-
|
434 |
return (
|
435 |
gr.update(choices=release_devices, value=release_devices),
|
436 |
-
gr.update(choices=release_os, value=release_os)
|
437 |
)
|
438 |
|
439 |
|
440 |
def update_support_table(release):
|
441 |
"""
|
442 |
Updates the support table and its column configuration for a given release.
|
443 |
-
|
444 |
:param release: Selected release hash
|
445 |
:return: Tuple containing (updated DataFrame, updated column choices, updated column values)
|
446 |
"""
|
447 |
# Load new support data
|
448 |
support_data = pd.read_csv(f"dashboard_data/support_data_{release[:7]}.csv")
|
449 |
support_data.set_index(support_data.columns[0], inplace=True)
|
450 |
-
|
451 |
# Process model names
|
452 |
-
support_data["Model"] = support_data["Model"].apply(
|
453 |
-
lambda x: x.replace("_", "/")
|
454 |
-
)
|
455 |
support_data["Model"] = support_data["Model"].apply(
|
456 |
lambda x: make_model_name_clickable_link(x)
|
457 |
)
|
458 |
-
|
459 |
# Sort by model name length
|
460 |
support_data = (
|
461 |
support_data.assign(model_len=support_data["Model"].str.len())
|
@@ -465,14 +341,14 @@ def update_support_table(release):
|
|
465 |
)
|
466 |
.drop(columns=["model_len"])
|
467 |
)
|
468 |
-
|
469 |
# Get new columns (excluding 'Model')
|
470 |
new_columns = support_data.columns.tolist()[1:]
|
471 |
-
|
472 |
return (
|
473 |
gr.update(value=support_data, datatype=["html" for _ in support_data.columns]),
|
474 |
gr.update(choices=new_columns, value=new_columns),
|
475 |
-
gr.update(value=support_data)
|
476 |
)
|
477 |
|
478 |
|
@@ -481,96 +357,6 @@ text_diff_elems = []
|
|
481 |
|
482 |
tabs = gr.Tabs(elem_id="tab-elems")
|
483 |
|
484 |
-
|
485 |
-
def update_multilingual_results(selected_model):
|
486 |
-
"""
|
487 |
-
Updates the multilingual results display based on the selected model.
|
488 |
-
|
489 |
-
This function processes the multilingual data for the chosen model,
|
490 |
-
calculates average WER for different scenarios (language hinted vs. predicted),
|
491 |
-
and prepares language-specific WER data for display.
|
492 |
-
|
493 |
-
:param selected_model: The name of the selected model
|
494 |
-
:return: A list containing updated components for the Gradio interface
|
495 |
-
"""
|
496 |
-
if selected_model is None:
|
497 |
-
return "# Select a model from the dropdown to view results."
|
498 |
-
|
499 |
-
# Filter data for the selected model
|
500 |
-
model_data = multilingual_df[multilingual_df["Model"] == selected_model]
|
501 |
-
|
502 |
-
if model_data.empty:
|
503 |
-
return f"# No data available for model: {selected_model}"
|
504 |
-
|
505 |
-
# Separate data for forced and not forced scenarios
|
506 |
-
forced_data = model_data[model_data["Forced Tokens"] == True]
|
507 |
-
not_forced_data = model_data[model_data["Forced Tokens"] == False]
|
508 |
-
|
509 |
-
result_text = f"# Model: {selected_model}\n\n"
|
510 |
-
|
511 |
-
# Prepare average WER data
|
512 |
-
average_wer_data = []
|
513 |
-
if not forced_data.empty:
|
514 |
-
average_wer_data.append(
|
515 |
-
{
|
516 |
-
"Scenario": "Language Hinted",
|
517 |
-
"Average WER": forced_data.iloc[0]["Average WER"],
|
518 |
-
}
|
519 |
-
)
|
520 |
-
if not not_forced_data.empty:
|
521 |
-
average_wer_data.append(
|
522 |
-
{
|
523 |
-
"Scenario": "Language Predicted",
|
524 |
-
"Average WER": not_forced_data.iloc[0]["Average WER"],
|
525 |
-
}
|
526 |
-
)
|
527 |
-
average_wer_df = pd.DataFrame(average_wer_data)
|
528 |
-
average_wer_df["Average WER"] = average_wer_df["Average WER"].apply(
|
529 |
-
lambda x: round(x, 2)
|
530 |
-
)
|
531 |
-
|
532 |
-
# Prepare language-specific WER data
|
533 |
-
lang_columns = [col for col in model_data.columns if col.startswith("WER_")]
|
534 |
-
lang_wer_data = []
|
535 |
-
for column in lang_columns:
|
536 |
-
lang = column.split("_")[1]
|
537 |
-
forced_wer = forced_data[column].iloc[0] if not forced_data.empty else None
|
538 |
-
not_forced_wer = (
|
539 |
-
not_forced_data[column].iloc[0] if not not_forced_data.empty else None
|
540 |
-
)
|
541 |
-
if forced_wer is not None or not_forced_wer is not None:
|
542 |
-
lang_wer_data.append(
|
543 |
-
{
|
544 |
-
"Language": LANGUAGE_MAP[lang],
|
545 |
-
"Language Hinted WER": round(forced_wer, 2)
|
546 |
-
if forced_wer is not None
|
547 |
-
else "N/A",
|
548 |
-
"Language Predicted WER": round(not_forced_wer, 2)
|
549 |
-
if not_forced_wer is not None
|
550 |
-
else "N/A",
|
551 |
-
}
|
552 |
-
)
|
553 |
-
lang_wer_df = pd.DataFrame(lang_wer_data)
|
554 |
-
lang_wer_df = lang_wer_df.fillna("No Data")
|
555 |
-
|
556 |
-
# Create confusion matrix plot for unforced scenario
|
557 |
-
unforced_plot = None
|
558 |
-
if selected_model in confusion_matrix_map:
|
559 |
-
if "not_forced" in confusion_matrix_map[selected_model]:
|
560 |
-
unforced_plot = create_confusion_matrix_plot(
|
561 |
-
confusion_matrix_map[selected_model]["not_forced"]["matrix"],
|
562 |
-
confusion_matrix_map[selected_model]["not_forced"]["labels"],
|
563 |
-
False,
|
564 |
-
)
|
565 |
-
|
566 |
-
# Return updated components for Gradio interface
|
567 |
-
return [
|
568 |
-
gr.update(value=result_text),
|
569 |
-
gr.update(visible=True, value=average_wer_df),
|
570 |
-
gr.update(visible=True, value=lang_wer_df),
|
571 |
-
gr.update(visible=unforced_plot is not None, value=unforced_plot),
|
572 |
-
]
|
573 |
-
|
574 |
font = [
|
575 |
"Zwizz Regular", # Local font
|
576 |
"IBM Plex Mono", # Monospace font
|
@@ -579,6 +365,10 @@ font = [
|
|
579 |
"sans-serif",
|
580 |
]
|
581 |
|
|
|
|
|
|
|
|
|
582 |
# Define the Gradio interface
|
583 |
with gr.Blocks(css=css, theme=gr.themes.Base(font=font)) as demo:
|
584 |
# Add header and banner to the interface
|
@@ -586,7 +376,9 @@ with gr.Blocks(css=css, theme=gr.themes.Base(font=font)) as demo:
|
|
586 |
gr.HTML(BANNER_TEXT, elem_classes="markdown-text")
|
587 |
gr.Markdown("### Release")
|
588 |
release_dropdown = gr.Dropdown(
|
589 |
-
choices=[
|
|
|
|
|
590 |
label="Select Release",
|
591 |
value=releases[-1] if releases else None,
|
592 |
elem_id="release-dropdown",
|
@@ -596,7 +388,7 @@ with gr.Blocks(css=css, theme=gr.themes.Base(font=font)) as demo:
|
|
596 |
# Create tabs for different sections of the dashboard
|
597 |
with tabs.render():
|
598 |
# Performance Tab
|
599 |
-
with gr.TabItem("
|
600 |
with gr.Row():
|
601 |
with gr.Column(scale=1):
|
602 |
with gr.Row():
|
@@ -760,7 +552,9 @@ with gr.Blocks(css=css, theme=gr.themes.Base(font=font)) as demo:
|
|
760 |
with gr.Row():
|
761 |
gr.Markdown(PERFORMANCE_TEXT, elem_classes="markdown-text")
|
762 |
with gr.Row():
|
763 |
-
initial_df = performance_df[
|
|
|
|
|
764 |
leaderboard_df = gr.components.Dataframe(
|
765 |
value=initial_df[
|
766 |
PERFORMANCE_ALWAYS_HERE_COLS + performance_shown_columns.value
|
@@ -837,113 +631,13 @@ with gr.Blocks(css=css, theme=gr.themes.Base(font=font)) as demo:
|
|
837 |
fn=update_performance_filters,
|
838 |
inputs=[release_dropdown],
|
839 |
outputs=[performance_shown_devices, performance_shown_os],
|
840 |
-
queue=False
|
841 |
).then(
|
842 |
fn=performance_filter,
|
843 |
inputs=performance_filter_inputs,
|
844 |
-
outputs=filter_output
|
845 |
-
)
|
846 |
-
|
847 |
-
# English Quality Tab
|
848 |
-
with gr.TabItem("English Quality", elem_id="timeline", id=1):
|
849 |
-
with gr.Row():
|
850 |
-
with gr.Column(scale=1):
|
851 |
-
with gr.Row():
|
852 |
-
with gr.Column(scale=6, elem_classes="filter_models_column"):
|
853 |
-
filter_quality_models = gr.Textbox(
|
854 |
-
placeholder="🔍 Filter Model (separate multiple queries with ';')",
|
855 |
-
label="Filter Models",
|
856 |
-
)
|
857 |
-
with gr.Column(scale=4, elem_classes="exclude_models_column"):
|
858 |
-
exclude_quality_models = gr.Textbox(
|
859 |
-
placeholder="🔍 Exclude Model",
|
860 |
-
label="Exclude Model",
|
861 |
-
)
|
862 |
-
with gr.Row():
|
863 |
-
with gr.Accordion("See All Columns", open=False):
|
864 |
-
quality_shown_columns = gr.CheckboxGroup(
|
865 |
-
choices=QUALITY_TOGGLE_COLS,
|
866 |
-
value=QUALITY_SELECTED_COLS,
|
867 |
-
label="Toggle Columns",
|
868 |
-
elem_id="column-select",
|
869 |
-
interactive=True,
|
870 |
-
)
|
871 |
-
with gr.Column(scale=1):
|
872 |
-
with gr.Accordion("See Quality Filters"):
|
873 |
-
with gr.Row():
|
874 |
-
with gr.Row():
|
875 |
-
quality_min_avg_wer, quality_max_avg_wer = (
|
876 |
-
floor(min(model_df["Average WER"])),
|
877 |
-
ceil(max(model_df["Average WER"])) + 1,
|
878 |
-
)
|
879 |
-
wer_slider = RangeSlider(
|
880 |
-
value=[quality_min_avg_wer, quality_max_avg_wer],
|
881 |
-
minimum=quality_min_avg_wer,
|
882 |
-
maximum=quality_max_avg_wer,
|
883 |
-
label="Average WER",
|
884 |
-
)
|
885 |
-
with gr.Row():
|
886 |
-
quality_min_qoi, quality_max_qoi = floor(
|
887 |
-
min(model_df["QoI"])
|
888 |
-
), ceil(max(model_df["QoI"] + 1))
|
889 |
-
qoi_slider = RangeSlider(
|
890 |
-
value=[quality_min_qoi, quality_max_qoi],
|
891 |
-
minimum=quality_min_qoi,
|
892 |
-
maximum=quality_max_qoi,
|
893 |
-
label="QoI",
|
894 |
-
)
|
895 |
-
with gr.Row():
|
896 |
-
gr.Markdown(QUALITY_TEXT)
|
897 |
-
with gr.Row():
|
898 |
-
quality_leaderboard_df = gr.components.Dataframe(
|
899 |
-
value=model_df[
|
900 |
-
QUALITY_ALWAYS_HERE_COLS + quality_shown_columns.value
|
901 |
-
],
|
902 |
-
headers=[QUALITY_ALWAYS_HERE_COLS + quality_shown_columns.value],
|
903 |
-
datatype=[
|
904 |
-
c.type
|
905 |
-
for c in fields(QualityAutoEvalColumn)
|
906 |
-
if c.name in QUALITY_COLS
|
907 |
-
],
|
908 |
-
elem_id="leaderboard-table",
|
909 |
-
elem_classes="large-table",
|
910 |
-
interactive=False,
|
911 |
)
|
912 |
|
913 |
-
# Copy of the leaderboard dataframe to apply filters to
|
914 |
-
hidden_quality_leaderboard_df = gr.components.Dataframe(
|
915 |
-
value=model_df,
|
916 |
-
headers=QUALITY_COLS,
|
917 |
-
datatype=[
|
918 |
-
c.type
|
919 |
-
for c in fields(QualityAutoEvalColumn)
|
920 |
-
if c.name in QUALITY_COLS
|
921 |
-
],
|
922 |
-
visible=False,
|
923 |
-
)
|
924 |
-
|
925 |
-
# Inputs for the dataframe filter function
|
926 |
-
filter_inputs = [
|
927 |
-
hidden_quality_leaderboard_df,
|
928 |
-
quality_shown_columns,
|
929 |
-
filter_quality_models,
|
930 |
-
wer_slider,
|
931 |
-
qoi_slider,
|
932 |
-
exclude_quality_models,
|
933 |
-
]
|
934 |
-
filter_output = quality_leaderboard_df
|
935 |
-
filter_quality_models.change(
|
936 |
-
quality_filter, filter_inputs, filter_output
|
937 |
-
)
|
938 |
-
exclude_quality_models.change(
|
939 |
-
quality_filter, filter_inputs, filter_output
|
940 |
-
)
|
941 |
-
quality_shown_columns.change(
|
942 |
-
quality_filter, filter_inputs, filter_output
|
943 |
-
)
|
944 |
-
wer_slider.change(quality_filter, filter_inputs, filter_output)
|
945 |
-
qoi_slider.change(quality_filter, filter_inputs, filter_output)
|
946 |
-
|
947 |
# Timeline Tab
|
948 |
with gr.TabItem("Timeline", elem_id="timeline", id=4):
|
949 |
# Create subtabs for different metrics
|
@@ -1204,59 +898,27 @@ with gr.Blocks(css=css, theme=gr.themes.Base(font=font)) as demo:
|
|
1204 |
toks_plot,
|
1205 |
)
|
1206 |
|
1207 |
-
# Multilingual Quality Tab
|
1208 |
-
with gr.TabItem("Multilingual Quality", elem_id="multilingual", id=5):
|
1209 |
-
if multilingual_df is not None:
|
1210 |
-
with gr.Row():
|
1211 |
-
with gr.Column(scale=1):
|
1212 |
-
# Display table of multilingual models
|
1213 |
-
model_table = gr.Dataframe(
|
1214 |
-
value=multilingual_models_df,
|
1215 |
-
headers=["Model"],
|
1216 |
-
datatype=["html"],
|
1217 |
-
elem_classes="left-side-table",
|
1218 |
-
)
|
1219 |
-
# Placeholders for confusion matrix plots
|
1220 |
-
with gr.Row():
|
1221 |
-
unforced_confusion_matrix = gr.Plot(visible=False)
|
1222 |
-
with gr.Row():
|
1223 |
-
forced_confusion_matrix = gr.Plot(visible=False)
|
1224 |
-
|
1225 |
-
with gr.Column(scale=1):
|
1226 |
-
# Display area for selected model results
|
1227 |
-
results_markdown = gr.Markdown(
|
1228 |
-
"# Select a model from the table on the left to view results.",
|
1229 |
-
elem_id="multilingual-results",
|
1230 |
-
)
|
1231 |
-
# Tables for displaying average WER and language-specific WER
|
1232 |
-
average_wer_table = gr.Dataframe(
|
1233 |
-
value=None, elem_id="average-wer-table", visible=False
|
1234 |
-
)
|
1235 |
-
language_wer_table = gr.Dataframe(
|
1236 |
-
value=None, elem_id="general-wer-table", visible=False
|
1237 |
-
)
|
1238 |
-
|
1239 |
-
# Set up click event to update results when a model is selected
|
1240 |
-
for button in multilingual_models_buttons:
|
1241 |
-
button.render()
|
1242 |
-
button.click(
|
1243 |
-
fn=lambda x: update_multilingual_results(x),
|
1244 |
-
inputs=[button],
|
1245 |
-
outputs=[
|
1246 |
-
results_markdown,
|
1247 |
-
average_wer_table,
|
1248 |
-
language_wer_table,
|
1249 |
-
unforced_confusion_matrix,
|
1250 |
-
],
|
1251 |
-
)
|
1252 |
-
else:
|
1253 |
-
# Display message if no multilingual data is available
|
1254 |
-
gr.Markdown("No multilingual benchmark results available.")
|
1255 |
-
|
1256 |
# Device Support Tab
|
1257 |
with gr.TabItem("Device Support", elem_id="device_support", id=6):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1258 |
# Load device support data from CSV
|
1259 |
-
support_data = pd.read_csv(
|
|
|
|
|
1260 |
support_data.set_index(support_data.columns[0], inplace=True)
|
1261 |
support_data["Model"] = support_data["Model"].apply(
|
1262 |
lambda x: x.replace("_", "/")
|
@@ -1291,7 +953,9 @@ with gr.Blocks(css=css, theme=gr.themes.Base(font=font)) as demo:
|
|
1291 |
with gr.Row():
|
1292 |
with gr.Column(scale=9):
|
1293 |
support_shown_columns = gr.CheckboxGroup(
|
1294 |
-
choices=support_data.columns.tolist()[
|
|
|
|
|
1295 |
value=support_data.columns.tolist()[1:],
|
1296 |
label="Toggle Columns",
|
1297 |
elem_id="support-column-select",
|
@@ -1337,7 +1001,7 @@ with gr.Blocks(css=css, theme=gr.themes.Base(font=font)) as demo:
|
|
1337 |
def filter_support_data(df, columns, model_query, exclude_models):
|
1338 |
"""
|
1339 |
Filters the device support data based on specified criteria.
|
1340 |
-
|
1341 |
:param df: The DataFrame to be filtered
|
1342 |
:param columns: Columns to include in the output
|
1343 |
:param model_query: Query string to filter models
|
@@ -1358,7 +1022,9 @@ with gr.Blocks(css=css, theme=gr.themes.Base(font=font)) as demo:
|
|
1358 |
|
1359 |
# Exclude specified models
|
1360 |
if exclude_models:
|
1361 |
-
exclude_list = [
|
|
|
|
|
1362 |
filtered_df = filtered_df[
|
1363 |
~filtered_df["Model"].str.contains(
|
1364 |
"|".join(exclude_list), case=False, regex=True
|
@@ -1366,7 +1032,9 @@ with gr.Blocks(css=css, theme=gr.themes.Base(font=font)) as demo:
|
|
1366 |
]
|
1367 |
|
1368 |
# Select columns
|
1369 |
-
selected_columns = ["Model"] + [
|
|
|
|
|
1370 |
filtered_df = filtered_df[selected_columns]
|
1371 |
|
1372 |
return filtered_df
|
@@ -1374,12 +1042,14 @@ with gr.Blocks(css=css, theme=gr.themes.Base(font=font)) as demo:
|
|
1374 |
def select_all_support_columns(release):
|
1375 |
"""
|
1376 |
Returns all current columns from the support shown columns.
|
1377 |
-
|
1378 |
:param release: Selected release hash
|
1379 |
:return: List of all available choices
|
1380 |
"""
|
1381 |
# Load new support data for the current release
|
1382 |
-
support_data = pd.read_csv(
|
|
|
|
|
1383 |
support_data.set_index(support_data.columns[0], inplace=True)
|
1384 |
# Return all columns except 'Model'
|
1385 |
return [col for col in support_data.columns if col != "Model"]
|
@@ -1403,23 +1073,265 @@ with gr.Blocks(css=css, theme=gr.themes.Base(font=font)) as demo:
|
|
1403 |
release_dropdown.change(
|
1404 |
update_support_table,
|
1405 |
inputs=[release_dropdown],
|
1406 |
-
outputs=[
|
|
|
|
|
|
|
|
|
1407 |
).then(
|
1408 |
filter_support_data,
|
1409 |
-
inputs=[
|
1410 |
-
|
|
|
|
|
|
|
|
|
|
|
1411 |
)
|
1412 |
|
1413 |
# Also connect the filter inputs to update the table
|
1414 |
-
for input_elem in [
|
|
|
|
|
|
|
|
|
1415 |
input_elem.change(
|
1416 |
filter_support_data,
|
1417 |
-
inputs=[
|
1418 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1419 |
)
|
1420 |
|
1421 |
# Methodology Tab
|
1422 |
-
with gr.TabItem("Methodology", elem_id="methodology", id=
|
1423 |
gr.Markdown(METHODOLOGY_TEXT, elem_id="methodology-text")
|
1424 |
|
1425 |
# Citation section
|
@@ -1433,4 +1345,4 @@ with gr.Blocks(css=css, theme=gr.themes.Base(font=font)) as demo:
|
|
1433 |
)
|
1434 |
|
1435 |
# Launch the Gradio interface
|
1436 |
-
demo.launch(debug=True, share=True
|
|
|
23 |
CITATION_BUTTON_TEXT,
|
24 |
COL_NAMES,
|
25 |
HEADER,
|
|
|
26 |
METHODOLOGY_TEXT,
|
27 |
PERFORMANCE_TEXT,
|
|
|
|
|
28 |
)
|
29 |
from utils import (
|
30 |
add_datasets_to_performance_columns,
|
31 |
+
calculate_quality_parity,
|
|
|
32 |
create_initial_performance_column_dict,
|
|
|
33 |
css,
|
34 |
fields,
|
35 |
get_os_name_and_version,
|
|
|
36 |
make_model_name_clickable_link,
|
|
|
37 |
plot_metric,
|
38 |
read_json_line_by_line,
|
39 |
)
|
|
|
54 |
|
55 |
# Load benchmark data from JSON files
|
56 |
PERFORMANCE_DATA = read_json_line_by_line("dashboard_data/performance_data.json")
|
|
|
57 |
with open("dashboard_data/version.json", "r") as file:
|
58 |
VERSION_DATA = json.load(file)
|
59 |
|
60 |
+
# Load quality data (ground truth WER)
|
61 |
+
QUALITY_DATA = read_json_line_by_line("dashboard_data/quality_data.json")
|
62 |
+
|
63 |
SHA_TO_VERSION = {
|
64 |
+
VERSION_DATA["releases"][i]: VERSION_DATA["versions"][i]
|
65 |
+
for i in range(len(VERSION_DATA["versions"]))
|
66 |
}
|
67 |
|
68 |
+
# Convert JSON data to pandas DataFrames - performance only
|
|
|
69 |
benchmark_df = pd.json_normalize(PERFORMANCE_DATA)
|
70 |
releases = VERSION_DATA["releases"]
|
71 |
|
|
|
73 |
benchmark_df["timestamp"] = pd.to_datetime(benchmark_df["timestamp"]).dt.tz_localize(
|
74 |
None
|
75 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
76 |
|
77 |
+
# Use average_wer directly from performance data
|
78 |
+
benchmark_df["english_wer"] = benchmark_df["average_wer"]
|
79 |
|
80 |
sorted_performance_df = (
|
81 |
benchmark_df.assign(model_len=benchmark_df["model"].str.len())
|
|
|
89 |
)
|
90 |
|
91 |
# Identify dataset-specific columns
|
|
|
|
|
|
|
92 |
dataset_speed_columns = [
|
93 |
col for col in sorted_performance_df.columns if col.startswith("dataset_speed.")
|
94 |
]
|
|
|
99 |
]
|
100 |
|
101 |
# Extract dataset names
|
|
|
102 |
PERFORMANCE_DATASETS = [col.split(".")[-1] for col in dataset_speed_columns]
|
103 |
|
104 |
# Prepare DataFrames for display
|
|
|
|
|
|
|
105 |
performance_df = sorted_performance_df[
|
106 |
[
|
107 |
"model",
|
108 |
"device",
|
109 |
"os",
|
110 |
"english_wer",
|
|
|
111 |
"qoi",
|
112 |
"speed",
|
113 |
"tokens_per_second",
|
114 |
"timestamp",
|
115 |
+
"commit_hash",
|
116 |
]
|
117 |
+ dataset_speed_columns
|
118 |
+ dataset_toks_columns
|
119 |
].copy()
|
120 |
|
121 |
+
# Calculate parity (difference between measured WER and ground truth WER)
|
122 |
+
performance_df["parity"] = performance_df.apply(
|
123 |
+
lambda row: calculate_quality_parity(QUALITY_DATA, row), axis=1
|
124 |
+
)
|
125 |
+
|
126 |
# Rename columns for clarity
|
127 |
performance_df = performance_df.rename(
|
128 |
lambda x: COL_NAMES[x] if x in COL_NAMES else x, axis="columns"
|
129 |
)
|
|
|
|
|
|
|
130 |
|
131 |
# Process dataset-specific columns
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
132 |
for col in dataset_speed_columns:
|
133 |
dataset_name = col.split(".")[-1]
|
134 |
performance_df = performance_df.rename(
|
|
|
146 |
)
|
147 |
|
148 |
# Process model names for display
|
|
|
149 |
performance_df["model_raw"] = performance_df["Model"].copy()
|
|
|
150 |
performance_df["Model"] = performance_df["Model"].apply(
|
151 |
lambda x: make_model_name_clickable_link(x)
|
152 |
)
|
|
|
154 |
# Extract unique devices and OS versions
|
155 |
initial_release_df = benchmark_df[benchmark_df["commit_hash"] == releases[-1]]
|
156 |
PERFORMANCE_DEVICES = initial_release_df["device"].unique().tolist()
|
157 |
+
PERFORMANCE_OS = (
|
158 |
+
initial_release_df["os"].apply(get_os_name_and_version).unique().tolist()
|
159 |
+
)
|
160 |
PERFORMANCE_OS.sort()
|
161 |
|
162 |
# Create initial column dictionaries and update with dataset information
|
163 |
initial_performance_column_dict = create_initial_performance_column_dict()
|
|
|
164 |
|
165 |
performance_column_info = add_datasets_to_performance_columns(
|
166 |
initial_performance_column_dict, PERFORMANCE_DATASETS
|
167 |
)
|
|
|
|
|
|
|
168 |
|
169 |
# Unpack the returned dictionaries
|
170 |
updated_performance_column_dict = performance_column_info["column_dict"]
|
|
|
171 |
|
172 |
PerformanceAutoEvalColumn = performance_column_info["AutoEvalColumn"]
|
|
|
173 |
|
174 |
# Define column sets for different views
|
175 |
PERFORMANCE_COLS = performance_column_info["COLS"]
|
|
|
176 |
PERFORMANCE_TYPES = performance_column_info["TYPES"]
|
|
|
177 |
PERFORMANCE_ALWAYS_HERE_COLS = performance_column_info["ALWAYS_HERE_COLS"]
|
|
|
178 |
PERFORMANCE_TOGGLE_COLS = performance_column_info["TOGGLE_COLS"]
|
|
|
179 |
PERFORMANCE_SELECTED_COLS = performance_column_info["SELECTED_COLS"]
|
180 |
+
|
181 |
|
182 |
def get_release_devices(release):
|
183 |
"""
|
184 |
Get the list of devices for a specific release.
|
185 |
+
|
186 |
:param release: Selected release hash
|
187 |
:return: List of devices available in the release
|
188 |
"""
|
189 |
release_df = benchmark_df[benchmark_df["commit_hash"] == release]
|
190 |
return release_df["device"].unique().tolist()
|
191 |
|
192 |
+
|
193 |
def performance_filter(
|
194 |
df,
|
195 |
columns,
|
|
|
294 |
return filtered_df
|
295 |
|
296 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
297 |
def update_performance_filters(release):
|
298 |
"""
|
299 |
Updates the performance filters (devices and OS) based on the selected release.
|
300 |
+
|
301 |
:param release: Selected release hash
|
302 |
:return: Tuple containing updated device and OS choices
|
303 |
"""
|
304 |
# Filter benchmark data for the selected release
|
305 |
release_df = benchmark_df[benchmark_df["commit_hash"] == release]
|
306 |
+
|
307 |
# Get unique devices and OS versions for this release
|
308 |
release_devices = release_df["device"].unique().tolist()
|
309 |
release_os = release_df["os"].apply(get_os_name_and_version).unique().tolist()
|
310 |
release_os.sort()
|
311 |
+
|
312 |
return (
|
313 |
gr.update(choices=release_devices, value=release_devices),
|
314 |
+
gr.update(choices=release_os, value=release_os),
|
315 |
)
|
316 |
|
317 |
|
318 |
def update_support_table(release):
|
319 |
"""
|
320 |
Updates the support table and its column configuration for a given release.
|
321 |
+
|
322 |
:param release: Selected release hash
|
323 |
:return: Tuple containing (updated DataFrame, updated column choices, updated column values)
|
324 |
"""
|
325 |
# Load new support data
|
326 |
support_data = pd.read_csv(f"dashboard_data/support_data_{release[:7]}.csv")
|
327 |
support_data.set_index(support_data.columns[0], inplace=True)
|
328 |
+
|
329 |
# Process model names
|
330 |
+
support_data["Model"] = support_data["Model"].apply(lambda x: x.replace("_", "/"))
|
|
|
|
|
331 |
support_data["Model"] = support_data["Model"].apply(
|
332 |
lambda x: make_model_name_clickable_link(x)
|
333 |
)
|
334 |
+
|
335 |
# Sort by model name length
|
336 |
support_data = (
|
337 |
support_data.assign(model_len=support_data["Model"].str.len())
|
|
|
341 |
)
|
342 |
.drop(columns=["model_len"])
|
343 |
)
|
344 |
+
|
345 |
# Get new columns (excluding 'Model')
|
346 |
new_columns = support_data.columns.tolist()[1:]
|
347 |
+
|
348 |
return (
|
349 |
gr.update(value=support_data, datatype=["html" for _ in support_data.columns]),
|
350 |
gr.update(choices=new_columns, value=new_columns),
|
351 |
+
gr.update(value=support_data),
|
352 |
)
|
353 |
|
354 |
|
|
|
357 |
|
358 |
tabs = gr.Tabs(elem_id="tab-elems")
|
359 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
360 |
font = [
|
361 |
"Zwizz Regular", # Local font
|
362 |
"IBM Plex Mono", # Monospace font
|
|
|
365 |
"sans-serif",
|
366 |
]
|
367 |
|
368 |
+
|
369 |
+
# Macos 14, 15, 26
|
370 |
+
# ios 17, 18, 26
|
371 |
+
|
372 |
# Define the Gradio interface
|
373 |
with gr.Blocks(css=css, theme=gr.themes.Base(font=font)) as demo:
|
374 |
# Add header and banner to the interface
|
|
|
376 |
gr.HTML(BANNER_TEXT, elem_classes="markdown-text")
|
377 |
gr.Markdown("### Release")
|
378 |
release_dropdown = gr.Dropdown(
|
379 |
+
choices=[
|
380 |
+
(f"{release} v{SHA_TO_VERSION[release]}", release) for release in releases
|
381 |
+
],
|
382 |
label="Select Release",
|
383 |
value=releases[-1] if releases else None,
|
384 |
elem_id="release-dropdown",
|
|
|
388 |
# Create tabs for different sections of the dashboard
|
389 |
with tabs.render():
|
390 |
# Performance Tab
|
391 |
+
with gr.TabItem("Benchmark", elem_id="benchmark", id=0):
|
392 |
with gr.Row():
|
393 |
with gr.Column(scale=1):
|
394 |
with gr.Row():
|
|
|
552 |
with gr.Row():
|
553 |
gr.Markdown(PERFORMANCE_TEXT, elem_classes="markdown-text")
|
554 |
with gr.Row():
|
555 |
+
initial_df = performance_df[
|
556 |
+
performance_df["commit_hash"] == releases[-1]
|
557 |
+
]
|
558 |
leaderboard_df = gr.components.Dataframe(
|
559 |
value=initial_df[
|
560 |
PERFORMANCE_ALWAYS_HERE_COLS + performance_shown_columns.value
|
|
|
631 |
fn=update_performance_filters,
|
632 |
inputs=[release_dropdown],
|
633 |
outputs=[performance_shown_devices, performance_shown_os],
|
634 |
+
queue=False,
|
635 |
).then(
|
636 |
fn=performance_filter,
|
637 |
inputs=performance_filter_inputs,
|
638 |
+
outputs=filter_output,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
639 |
)
|
640 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
641 |
# Timeline Tab
|
642 |
with gr.TabItem("Timeline", elem_id="timeline", id=4):
|
643 |
# Create subtabs for different metrics
|
|
|
898 |
toks_plot,
|
899 |
)
|
900 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
901 |
# Device Support Tab
|
902 |
with gr.TabItem("Device Support", elem_id="device_support", id=6):
|
903 |
+
# Add clear description of what Device Support means
|
904 |
+
gr.Markdown(
|
905 |
+
"""
|
906 |
+
## Device Support
|
907 |
+
|
908 |
+
This tab shows **test results for SKUs that we actually attempted to test**. It tells you whether tests passed, failed, or couldn't be completed for the devices we tried to run tests on.
|
909 |
+
|
910 |
+
### Please Note:
|
911 |
+
**This tab only shows devices we attempted to test** - it doesn't show the full universe of available devices.
|
912 |
+
|
913 |
+
**📝 For comprehensive coverage analysis**, see the **Test Coverage** tab which shows ALL available SKUs.
|
914 |
+
""",
|
915 |
+
elem_classes="markdown-text"
|
916 |
+
)
|
917 |
+
|
918 |
# Load device support data from CSV
|
919 |
+
support_data = pd.read_csv(
|
920 |
+
f"dashboard_data/support_data_{releases[-1][:7]}.csv"
|
921 |
+
)
|
922 |
support_data.set_index(support_data.columns[0], inplace=True)
|
923 |
support_data["Model"] = support_data["Model"].apply(
|
924 |
lambda x: x.replace("_", "/")
|
|
|
953 |
with gr.Row():
|
954 |
with gr.Column(scale=9):
|
955 |
support_shown_columns = gr.CheckboxGroup(
|
956 |
+
choices=support_data.columns.tolist()[
|
957 |
+
1:
|
958 |
+
], # Exclude 'Model' column
|
959 |
value=support_data.columns.tolist()[1:],
|
960 |
label="Toggle Columns",
|
961 |
elem_id="support-column-select",
|
|
|
1001 |
def filter_support_data(df, columns, model_query, exclude_models):
|
1002 |
"""
|
1003 |
Filters the device support data based on specified criteria.
|
1004 |
+
|
1005 |
:param df: The DataFrame to be filtered
|
1006 |
:param columns: Columns to include in the output
|
1007 |
:param model_query: Query string to filter models
|
|
|
1022 |
|
1023 |
# Exclude specified models
|
1024 |
if exclude_models:
|
1025 |
+
exclude_list = [
|
1026 |
+
re.escape(m.strip()) for m in exclude_models.split(";")
|
1027 |
+
]
|
1028 |
filtered_df = filtered_df[
|
1029 |
~filtered_df["Model"].str.contains(
|
1030 |
"|".join(exclude_list), case=False, regex=True
|
|
|
1032 |
]
|
1033 |
|
1034 |
# Select columns
|
1035 |
+
selected_columns = ["Model"] + [
|
1036 |
+
col for col in columns if col in df.columns
|
1037 |
+
]
|
1038 |
filtered_df = filtered_df[selected_columns]
|
1039 |
|
1040 |
return filtered_df
|
|
|
1042 |
def select_all_support_columns(release):
|
1043 |
"""
|
1044 |
Returns all current columns from the support shown columns.
|
1045 |
+
|
1046 |
:param release: Selected release hash
|
1047 |
:return: List of all available choices
|
1048 |
"""
|
1049 |
# Load new support data for the current release
|
1050 |
+
support_data = pd.read_csv(
|
1051 |
+
f"dashboard_data/support_data_{release[:7]}.csv"
|
1052 |
+
)
|
1053 |
support_data.set_index(support_data.columns[0], inplace=True)
|
1054 |
# Return all columns except 'Model'
|
1055 |
return [col for col in support_data.columns if col != "Model"]
|
|
|
1073 |
release_dropdown.change(
|
1074 |
update_support_table,
|
1075 |
inputs=[release_dropdown],
|
1076 |
+
outputs=[
|
1077 |
+
device_support_table,
|
1078 |
+
support_shown_columns,
|
1079 |
+
hidden_support_df,
|
1080 |
+
],
|
1081 |
).then(
|
1082 |
filter_support_data,
|
1083 |
+
inputs=[
|
1084 |
+
hidden_support_df,
|
1085 |
+
support_shown_columns,
|
1086 |
+
filter_support_models,
|
1087 |
+
exclude_support_models,
|
1088 |
+
],
|
1089 |
+
outputs=device_support_table,
|
1090 |
)
|
1091 |
|
1092 |
# Also connect the filter inputs to update the table
|
1093 |
+
for input_elem in [
|
1094 |
+
filter_support_models,
|
1095 |
+
exclude_support_models,
|
1096 |
+
support_shown_columns,
|
1097 |
+
]:
|
1098 |
input_elem.change(
|
1099 |
filter_support_data,
|
1100 |
+
inputs=[
|
1101 |
+
hidden_support_df,
|
1102 |
+
support_shown_columns,
|
1103 |
+
filter_support_models,
|
1104 |
+
exclude_support_models,
|
1105 |
+
],
|
1106 |
+
outputs=device_support_table,
|
1107 |
+
)
|
1108 |
+
|
1109 |
+
# Test Coverage Tab
|
1110 |
+
with gr.TabItem("Test Coverage", elem_id="test_coverage", id=7):
|
1111 |
+
# Add clear description of what Test Coverage means
|
1112 |
+
gr.Markdown(
|
1113 |
+
"""
|
1114 |
+
## Test Coverage
|
1115 |
+
|
1116 |
+
This tab shows **ALL available SKUs** and our testing coverage across the entire device ecosystem. Uses chip-based expansion where testing one device covers all devices with the same chip.
|
1117 |
+
""",
|
1118 |
+
elem_classes="markdown-text"
|
1119 |
+
)
|
1120 |
+
|
1121 |
+
def load_coverage_data(release):
|
1122 |
+
"""Load test coverage data for a specific release."""
|
1123 |
+
try:
|
1124 |
+
with open(f"dashboard_data/test_coverage_{release}.json", "r") as f:
|
1125 |
+
return json.load(f)
|
1126 |
+
except FileNotFoundError:
|
1127 |
+
return {
|
1128 |
+
"commit_hash": release,
|
1129 |
+
"total_devices": 0,
|
1130 |
+
"tested_devices": 0,
|
1131 |
+
"skipped_devices": 0,
|
1132 |
+
"coverage_percentage": 0.0,
|
1133 |
+
"tested_device_list": [],
|
1134 |
+
"skipped_device_list": [],
|
1135 |
+
"tested_os_versions": [],
|
1136 |
+
"has_target_os_coverage": False,
|
1137 |
+
"covered_target_versions": [],
|
1138 |
+
"missing_target_versions": [],
|
1139 |
+
}
|
1140 |
+
|
1141 |
+
def format_coverage_devices(device_list):
|
1142 |
+
"""Convert device list to DataFrame format."""
|
1143 |
+
if not device_list:
|
1144 |
+
return pd.DataFrame(columns=["Device"])
|
1145 |
+
|
1146 |
+
df = pd.DataFrame({"Device": device_list})
|
1147 |
+
return df.sort_values(["Device"])
|
1148 |
+
|
1149 |
+
def update_coverage_data(release):
|
1150 |
+
"""Update coverage data when release changes."""
|
1151 |
+
coverage_data = load_coverage_data(release)
|
1152 |
+
|
1153 |
+
# Format tested and skipped devices
|
1154 |
+
tested_df = format_coverage_devices(coverage_data["tested_device_list"])
|
1155 |
+
skipped_df = format_coverage_devices(
|
1156 |
+
coverage_data["skipped_device_list"]
|
1157 |
+
)
|
1158 |
+
|
1159 |
+
# Check target OS coverage
|
1160 |
+
target_os_status = ""
|
1161 |
+
covered_versions = coverage_data.get("covered_target_versions", [])
|
1162 |
+
missing_versions = coverage_data.get("missing_target_versions", [])
|
1163 |
+
|
1164 |
+
if covered_versions or missing_versions:
|
1165 |
+
target_os_status = "\n- **Target OS Coverage**:\n"
|
1166 |
+
if covered_versions:
|
1167 |
+
unique_versions = sorted(set(covered_versions))
|
1168 |
+
target_os_status += f" - ✅ **Tested**: {', '.join(unique_versions)}\n"
|
1169 |
+
if missing_versions:
|
1170 |
+
target_os_status += f" - ❌ **Missing**: {', '.join(missing_versions)}"
|
1171 |
+
|
1172 |
+
# Create coverage summary
|
1173 |
+
coverage_summary = f"""## Test Coverage Summary for Release {release} (v{SHA_TO_VERSION.get(release, 'Unknown')})
|
1174 |
+
|
1175 |
+
- **Total Devices**: {coverage_data['total_devices']}
|
1176 |
+
- **Tested Devices**: {coverage_data['tested_devices']}
|
1177 |
+
- **Skipped Devices**: {coverage_data['skipped_devices']}
|
1178 |
+
- **Coverage Percentage**: {coverage_data['coverage_percentage']:.1f}%
|
1179 |
+
{target_os_status}"""
|
1180 |
+
|
1181 |
+
return (
|
1182 |
+
gr.update(value=coverage_summary),
|
1183 |
+
gr.update(value=tested_df),
|
1184 |
+
gr.update(value=skipped_df),
|
1185 |
+
tested_df,
|
1186 |
+
skipped_df,
|
1187 |
+
)
|
1188 |
+
|
1189 |
+
def filter_coverage_devices(df, device_query, exclude_devices):
|
1190 |
+
"""Filter coverage devices based on device queries."""
|
1191 |
+
if df is None or df.empty:
|
1192 |
+
return df
|
1193 |
+
|
1194 |
+
filtered_df = df.copy()
|
1195 |
+
|
1196 |
+
# Filter devices based on query
|
1197 |
+
if device_query:
|
1198 |
+
filtered_df = filtered_df[
|
1199 |
+
filtered_df["Device"].str.contains(
|
1200 |
+
"|".join(q.strip() for q in device_query.split(";")),
|
1201 |
+
case=False,
|
1202 |
+
regex=True,
|
1203 |
+
)
|
1204 |
+
]
|
1205 |
+
|
1206 |
+
# Exclude specified devices
|
1207 |
+
if exclude_devices:
|
1208 |
+
exclude_list = [
|
1209 |
+
re.escape(d.strip()) for d in exclude_devices.split(";")
|
1210 |
+
]
|
1211 |
+
filtered_df = filtered_df[
|
1212 |
+
~filtered_df["Device"].str.contains(
|
1213 |
+
"|".join(exclude_list), case=False, regex=True
|
1214 |
+
)
|
1215 |
+
]
|
1216 |
+
|
1217 |
+
return filtered_df
|
1218 |
+
|
1219 |
+
# Load initial coverage data
|
1220 |
+
initial_coverage = load_coverage_data(releases[-1])
|
1221 |
+
initial_tested_df = format_coverage_devices(
|
1222 |
+
initial_coverage["tested_device_list"]
|
1223 |
+
)
|
1224 |
+
initial_skipped_df = format_coverage_devices(
|
1225 |
+
initial_coverage["skipped_device_list"]
|
1226 |
+
)
|
1227 |
+
|
1228 |
+
# Generate initial target OS status
|
1229 |
+
initial_target_os_status = ""
|
1230 |
+
covered_versions = initial_coverage.get("covered_target_versions", [])
|
1231 |
+
missing_versions = initial_coverage.get("missing_target_versions", [])
|
1232 |
+
|
1233 |
+
if covered_versions or missing_versions:
|
1234 |
+
initial_target_os_status = "\n- **Target OS Coverage**:\n"
|
1235 |
+
if covered_versions:
|
1236 |
+
unique_versions = sorted(set(covered_versions))
|
1237 |
+
initial_target_os_status += f" - ✅ **Tested**: {', '.join(unique_versions)}\n"
|
1238 |
+
if missing_versions:
|
1239 |
+
initial_target_os_status += f" - ❌ **Missing**: {', '.join(missing_versions)}"
|
1240 |
+
|
1241 |
+
# Create initial coverage summary content
|
1242 |
+
initial_summary_content = f"""## Test Coverage Summary for Release {releases[-1]} (v{SHA_TO_VERSION.get(releases[-1], 'Unknown')})
|
1243 |
+
|
1244 |
+
- **Total Devices**: {initial_coverage['total_devices']}
|
1245 |
+
- **Tested Devices**: {initial_coverage['tested_devices']}
|
1246 |
+
- **Skipped Devices**: {initial_coverage['skipped_devices']}
|
1247 |
+
- **Coverage Percentage**: {initial_coverage['coverage_percentage']:.1f}%
|
1248 |
+
{initial_target_os_status}"""
|
1249 |
+
|
1250 |
+
# Coverage summary
|
1251 |
+
coverage_summary_text = gr.Markdown(
|
1252 |
+
value=initial_summary_content,
|
1253 |
+
elem_classes="markdown-text"
|
1254 |
+
)
|
1255 |
+
|
1256 |
+
with gr.Row():
|
1257 |
+
with gr.Column(scale=1):
|
1258 |
+
with gr.Row():
|
1259 |
+
with gr.Column(scale=6):
|
1260 |
+
filter_coverage_devices_input = gr.Textbox(
|
1261 |
+
placeholder="🔍 Filter Device (separate multiple queries with ';')",
|
1262 |
+
label="Filter Devices",
|
1263 |
+
)
|
1264 |
+
with gr.Column(scale=4):
|
1265 |
+
exclude_coverage_devices_input = gr.Textbox(
|
1266 |
+
placeholder="🔍 Exclude Device",
|
1267 |
+
label="Exclude Device",
|
1268 |
+
)
|
1269 |
+
|
1270 |
+
# Create tabs for tested vs skipped devices
|
1271 |
+
with gr.Tabs():
|
1272 |
+
with gr.TabItem("Tested Devices", id=0):
|
1273 |
+
tested_devices_table = gr.Dataframe(
|
1274 |
+
value=initial_tested_df,
|
1275 |
+
headers=["Device"],
|
1276 |
+
datatype=["str"],
|
1277 |
+
elem_id="tested-devices-table",
|
1278 |
+
elem_classes="large-table",
|
1279 |
+
interactive=False,
|
1280 |
+
)
|
1281 |
+
|
1282 |
+
with gr.TabItem("Skipped Devices", id=1):
|
1283 |
+
skipped_devices_table = gr.Dataframe(
|
1284 |
+
value=initial_skipped_df,
|
1285 |
+
headers=["Device"],
|
1286 |
+
datatype=["str"],
|
1287 |
+
elem_id="skipped-devices-table",
|
1288 |
+
elem_classes="large-table",
|
1289 |
+
interactive=False,
|
1290 |
+
)
|
1291 |
+
|
1292 |
+
# Hidden dataframes for filtering
|
1293 |
+
hidden_tested_df = gr.Dataframe(value=initial_tested_df, visible=False)
|
1294 |
+
hidden_skipped_df = gr.Dataframe(value=initial_skipped_df, visible=False)
|
1295 |
+
|
1296 |
+
# Connect release dropdown to coverage data update
|
1297 |
+
release_dropdown.change(
|
1298 |
+
update_coverage_data,
|
1299 |
+
inputs=[release_dropdown],
|
1300 |
+
outputs=[
|
1301 |
+
coverage_summary_text,
|
1302 |
+
tested_devices_table,
|
1303 |
+
skipped_devices_table,
|
1304 |
+
hidden_tested_df,
|
1305 |
+
hidden_skipped_df,
|
1306 |
+
],
|
1307 |
+
queue=False,
|
1308 |
+
)
|
1309 |
+
|
1310 |
+
# Connect filter inputs to update both tables
|
1311 |
+
for input_elem in [
|
1312 |
+
filter_coverage_devices_input,
|
1313 |
+
exclude_coverage_devices_input,
|
1314 |
+
]:
|
1315 |
+
input_elem.change(
|
1316 |
+
lambda tested_df, skipped_df, device_query, exclude_devices: (
|
1317 |
+
filter_coverage_devices(
|
1318 |
+
tested_df, device_query, exclude_devices
|
1319 |
+
),
|
1320 |
+
filter_coverage_devices(
|
1321 |
+
skipped_df, device_query, exclude_devices
|
1322 |
+
),
|
1323 |
+
),
|
1324 |
+
inputs=[
|
1325 |
+
hidden_tested_df,
|
1326 |
+
hidden_skipped_df,
|
1327 |
+
filter_coverage_devices_input,
|
1328 |
+
exclude_coverage_devices_input,
|
1329 |
+
],
|
1330 |
+
outputs=[tested_devices_table, skipped_devices_table],
|
1331 |
)
|
1332 |
|
1333 |
# Methodology Tab
|
1334 |
+
with gr.TabItem("Methodology", elem_id="methodology", id=8):
|
1335 |
gr.Markdown(METHODOLOGY_TEXT, elem_id="methodology-text")
|
1336 |
|
1337 |
# Citation section
|
|
|
1345 |
)
|
1346 |
|
1347 |
# Launch the Gradio interface
|
1348 |
+
demo.launch(debug=True, share=True)
|
multilingual_generate.py
DELETED
@@ -1,133 +0,0 @@
|
|
1 |
-
import json
|
2 |
-
import os
|
3 |
-
import shutil
|
4 |
-
import sys
|
5 |
-
from collections import defaultdict
|
6 |
-
|
7 |
-
import numpy as np
|
8 |
-
import pandas as pd
|
9 |
-
from sklearn.metrics import confusion_matrix
|
10 |
-
|
11 |
-
from utils import compute_average_wer, download_dataset
|
12 |
-
|
13 |
-
|
14 |
-
def main():
|
15 |
-
"""
|
16 |
-
Main function to orchestrate the multilingual data generation process.
|
17 |
-
|
18 |
-
This function performs the following steps:
|
19 |
-
1. Downloads multilingual evaluation data if requested.
|
20 |
-
2. Processes multilingual evaluation files.
|
21 |
-
3. Calculates and saves results, including Word Error Rate (WER) and
|
22 |
-
language detection confusion matrices.
|
23 |
-
"""
|
24 |
-
source_repo = "argmaxinc/whisperkit-evals-multilingual"
|
25 |
-
source_subfolder = "WhisperKit"
|
26 |
-
source_directory = f"{source_repo}/{source_subfolder}"
|
27 |
-
if len(sys.argv) > 1 and sys.argv[1] == "download":
|
28 |
-
try:
|
29 |
-
shutil.rmtree(source_repo)
|
30 |
-
except:
|
31 |
-
print("Nothing to remove.")
|
32 |
-
download_dataset(source_repo, source_repo, source_subfolder)
|
33 |
-
|
34 |
-
results = defaultdict(
|
35 |
-
lambda: {
|
36 |
-
"average_wer": [],
|
37 |
-
"language_wer": defaultdict(list),
|
38 |
-
"language_detection": [],
|
39 |
-
}
|
40 |
-
)
|
41 |
-
|
42 |
-
confusion_matrices = {}
|
43 |
-
|
44 |
-
for subdir, _, files in os.walk(source_directory):
|
45 |
-
for filename in files:
|
46 |
-
if not filename.endswith(".json") or "summary" in filename:
|
47 |
-
continue
|
48 |
-
|
49 |
-
file_path = os.path.join(subdir, filename)
|
50 |
-
with open(file_path, "r") as f:
|
51 |
-
data = json.load(f)
|
52 |
-
|
53 |
-
subdir_components = subdir.split(os.path.sep)
|
54 |
-
is_forced = "forced" in subdir_components
|
55 |
-
model = subdir_components[-3] if not is_forced else subdir_components[-4]
|
56 |
-
|
57 |
-
key = f"{model}/{'forced' if is_forced else 'not_forced'}"
|
58 |
-
|
59 |
-
for item in data["results"]:
|
60 |
-
if "reference_language" not in item:
|
61 |
-
continue
|
62 |
-
reference_language = item["reference_language"]
|
63 |
-
wer = item["wer"]
|
64 |
-
detected_language = item["predicted_language"]
|
65 |
-
|
66 |
-
result = {
|
67 |
-
"reference": item["reference"],
|
68 |
-
"prediction": item["prediction"],
|
69 |
-
}
|
70 |
-
|
71 |
-
results[key]["average_wer"].append(result)
|
72 |
-
results[key]["language_wer"][reference_language].append(result)
|
73 |
-
results[key]["language_detection"].append(
|
74 |
-
(reference_language, detected_language)
|
75 |
-
)
|
76 |
-
|
77 |
-
calculate_and_save_results(results, confusion_matrices)
|
78 |
-
|
79 |
-
|
80 |
-
def calculate_and_save_results(results, confusion_matrices):
|
81 |
-
"""
|
82 |
-
Calculates final multilingual metrics and saves them to CSV and JSON files.
|
83 |
-
|
84 |
-
:param results: Dictionary containing raw multilingual evaluation data.
|
85 |
-
:param confusion_matrices: Dictionary to store confusion matrices for language detection.
|
86 |
-
|
87 |
-
This function processes the raw multilingual data, calculates average metrics,
|
88 |
-
creates confusion matrices for language detection, and saves the results to:
|
89 |
-
1. A CSV file with WER data for each model and language.
|
90 |
-
2. A JSON file with confusion matrices for language detection.
|
91 |
-
"""
|
92 |
-
wer_data = []
|
93 |
-
for key, data in results.items():
|
94 |
-
model, forced = key.rsplit("/", 1)
|
95 |
-
model = model.replace("_", "/")
|
96 |
-
row = {
|
97 |
-
"Model": model,
|
98 |
-
"Forced Tokens": forced == "forced",
|
99 |
-
"Average WER": compute_average_wer(data["average_wer"]),
|
100 |
-
}
|
101 |
-
for lang, wers in data["language_wer"].items():
|
102 |
-
row[f"WER_{lang}"] = compute_average_wer(wers)
|
103 |
-
wer_data.append(row)
|
104 |
-
|
105 |
-
true_languages, detected_languages = zip(*data["language_detection"])
|
106 |
-
unique_languages = sorted(set(true_languages))
|
107 |
-
cm = confusion_matrix(
|
108 |
-
true_languages, detected_languages, labels=unique_languages
|
109 |
-
)
|
110 |
-
|
111 |
-
row_sums = cm.sum(axis=1)
|
112 |
-
cm_normalized = np.zeros_like(cm, dtype=float)
|
113 |
-
non_zero_rows = row_sums != 0
|
114 |
-
cm_normalized[non_zero_rows] = (
|
115 |
-
cm[non_zero_rows] / row_sums[non_zero_rows, np.newaxis]
|
116 |
-
)
|
117 |
-
|
118 |
-
if model not in confusion_matrices:
|
119 |
-
confusion_matrices[model] = {}
|
120 |
-
confusion_matrices[model][forced] = {
|
121 |
-
"matrix": cm_normalized.tolist(),
|
122 |
-
"labels": unique_languages,
|
123 |
-
}
|
124 |
-
|
125 |
-
df = pd.DataFrame(wer_data)
|
126 |
-
df.to_csv("dashboard_data/multilingual_results.csv", index=False)
|
127 |
-
|
128 |
-
with open("dashboard_data/multilingual_confusion_matrices.json", "w") as f:
|
129 |
-
json.dump(confusion_matrices, f, indent=2)
|
130 |
-
|
131 |
-
|
132 |
-
if __name__ == "__main__":
|
133 |
-
main()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
performance_generate.py
CHANGED
@@ -10,10 +10,12 @@ from statistics import mean
|
|
10 |
|
11 |
import pandas as pd
|
12 |
import requests
|
|
|
|
|
13 |
|
14 |
from constants import BASE_WHISPERKIT_BENCHMARK_URL
|
15 |
from text_normalizer import text_normalizer
|
16 |
-
from utils import compute_average_wer, download_dataset
|
17 |
|
18 |
|
19 |
def fetch_evaluation_data(url):
|
@@ -97,7 +99,7 @@ def process_benchmark_file(file_path, dataset_dfs, results, releases):
|
|
97 |
|
98 |
if len(test_results) == 0:
|
99 |
return
|
100 |
-
|
101 |
commit_hash_timestamp = file_path.split("/")[-2]
|
102 |
commit_timestamp, commit_hash = commit_hash_timestamp.split("_")
|
103 |
|
@@ -131,6 +133,7 @@ def process_benchmark_file(file_path, dataset_dfs, results, releases):
|
|
131 |
}
|
132 |
results[key]["timestamp"] = timestamp
|
133 |
results[key]["average_wer"].append(wer_entry)
|
|
|
134 |
|
135 |
input_audio_seconds = test_info["timings"]["inputAudioSeconds"]
|
136 |
full_pipeline = test_info["timings"]["fullPipeline"]
|
@@ -181,7 +184,7 @@ def process_summary_file(file_path, results, releases):
|
|
181 |
"""
|
182 |
with open(file_path, "r") as file:
|
183 |
summary_data = json.load(file)
|
184 |
-
|
185 |
if summary_data["commitHash"] not in releases:
|
186 |
return
|
187 |
|
@@ -191,13 +194,15 @@ def process_summary_file(file_path, results, releases):
|
|
191 |
commit_timestamp = summary_data["commitTimestamp"]
|
192 |
test_file_name = file_path.split("/")[-1]
|
193 |
test_timestamp = test_file_name.split("_")[-1].replace(".json", "")
|
194 |
-
|
195 |
key = (device, os, commit_hash)
|
196 |
if key in results:
|
197 |
existing_commit_timestamp = results[key]["commitTimestamp"]
|
198 |
existing_test_timestamp = results[key]["testTimestamp"]
|
199 |
|
200 |
-
existing_commit_dt = datetime.strptime(
|
|
|
|
|
201 |
new_commit_dt = datetime.strptime(commit_timestamp, "%Y-%m-%dT%H%M%S")
|
202 |
existing_test_dt = datetime.strptime(existing_test_timestamp, "%Y-%m-%dT%H%M%S")
|
203 |
new_test_dt = datetime.strptime(test_timestamp, "%Y-%m-%dT%H%M%S")
|
@@ -283,6 +288,10 @@ def calculate_and_save_performance_results(
|
|
283 |
for dataset, tps_info in data["dataset_tokens_per_second"].items()
|
284 |
},
|
285 |
"average_wer": compute_average_wer(data["average_wer"]),
|
|
|
|
|
|
|
|
|
286 |
"qoi": round(mean(data["qoi"]), 2),
|
287 |
"commit_hash": data["commit_hash"],
|
288 |
"commit_timestamp": data["commit_timestamp"],
|
@@ -320,7 +329,7 @@ def calculate_and_save_support_results(
|
|
320 |
results_by_commit[commit_hash] = {
|
321 |
"data": {},
|
322 |
"devices": set(),
|
323 |
-
"timestamp": data["commitTimestamp"]
|
324 |
}
|
325 |
results_by_commit[commit_hash]["data"][key] = data
|
326 |
results_by_commit[commit_hash]["devices"].add(device)
|
@@ -329,7 +338,7 @@ def calculate_and_save_support_results(
|
|
329 |
for commit_hash, commit_data in results_by_commit.items():
|
330 |
commit_devices = sorted(commit_data["devices"])
|
331 |
df = pd.DataFrame(index=all_models, columns=["Model"] + commit_devices)
|
332 |
-
|
333 |
for model in all_models:
|
334 |
row = {"Model": model}
|
335 |
for device in commit_devices:
|
@@ -370,24 +379,27 @@ def calculate_and_save_support_results(
|
|
370 |
|
371 |
# Mark unsupported combinations for this commit
|
372 |
commit_not_supported = [
|
373 |
-
(model, device, os)
|
374 |
-
for model, device, os in not_supported
|
375 |
-
if any(
|
|
|
|
|
|
|
|
|
376 |
]
|
377 |
remove_unsupported_cells(df, commit_not_supported)
|
378 |
|
379 |
# Format column headers
|
380 |
cols = df.columns.tolist()
|
381 |
cols = ["Model"] + [
|
382 |
-
f"""{get_device_name(col).replace("_", " ")} ({col})"""
|
|
|
|
|
383 |
]
|
384 |
df.columns = cols
|
385 |
|
386 |
# Save to commit-specific file
|
387 |
-
output_path = support_output_path.replace(
|
388 |
-
".csv",
|
389 |
-
f"_{commit_hash[:7]}.csv"
|
390 |
-
)
|
391 |
df.to_csv(output_path, index=True)
|
392 |
|
393 |
|
@@ -421,6 +433,462 @@ def remove_unsupported_cells(df, not_supported):
|
|
421 |
df.at[model, device] = "Not Supported"
|
422 |
|
423 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
424 |
def main():
|
425 |
"""
|
426 |
Main function to orchestrate the performance data generation process.
|
@@ -430,6 +898,7 @@ def main():
|
|
430 |
2. Fetches evaluation data for various datasets.
|
431 |
3. Processes benchmark files and summary files.
|
432 |
4. Calculates and saves performance and support results.
|
|
|
433 |
"""
|
434 |
source_xcresult_repo = "argmaxinc/whisperkit-evals-dataset"
|
435 |
source_xcresult_subfolder = "benchmark_data/"
|
@@ -460,6 +929,7 @@ def main():
|
|
460 |
performance_results = defaultdict(
|
461 |
lambda: {
|
462 |
"average_wer": [],
|
|
|
463 |
"qoi": [],
|
464 |
"speed": {"inputAudioSeconds": 0, "fullPipeline": 0},
|
465 |
"tokens_per_second": {"totalDecodingLoops": 0, "fullPipeline": 0},
|
@@ -492,8 +962,10 @@ def main():
|
|
492 |
elif "summary" in filename:
|
493 |
process_summary_file(file_path, support_results, releases)
|
494 |
else:
|
495 |
-
process_benchmark_file(
|
496 |
-
|
|
|
|
|
497 |
not_supported = calculate_and_save_performance_results(
|
498 |
performance_results, "dashboard_data/performance_data.json"
|
499 |
)
|
@@ -501,6 +973,9 @@ def main():
|
|
501 |
support_results, not_supported, "dashboard_data/support_data.csv"
|
502 |
)
|
503 |
|
|
|
|
|
|
|
504 |
|
505 |
if __name__ == "__main__":
|
506 |
main()
|
|
|
10 |
|
11 |
import pandas as pd
|
12 |
import requests
|
13 |
+
from dotenv import load_dotenv
|
14 |
+
from huggingface_hub import login
|
15 |
|
16 |
from constants import BASE_WHISPERKIT_BENCHMARK_URL
|
17 |
from text_normalizer import text_normalizer
|
18 |
+
from utils import compute_average_wer, download_dataset, download_json_from_github
|
19 |
|
20 |
|
21 |
def fetch_evaluation_data(url):
|
|
|
99 |
|
100 |
if len(test_results) == 0:
|
101 |
return
|
102 |
+
|
103 |
commit_hash_timestamp = file_path.split("/")[-2]
|
104 |
commit_timestamp, commit_hash = commit_hash_timestamp.split("_")
|
105 |
|
|
|
133 |
}
|
134 |
results[key]["timestamp"] = timestamp
|
135 |
results[key]["average_wer"].append(wer_entry)
|
136 |
+
results[key]["dataset_wer"][dataset_name].append(wer_entry)
|
137 |
|
138 |
input_audio_seconds = test_info["timings"]["inputAudioSeconds"]
|
139 |
full_pipeline = test_info["timings"]["fullPipeline"]
|
|
|
184 |
"""
|
185 |
with open(file_path, "r") as file:
|
186 |
summary_data = json.load(file)
|
187 |
+
|
188 |
if summary_data["commitHash"] not in releases:
|
189 |
return
|
190 |
|
|
|
194 |
commit_timestamp = summary_data["commitTimestamp"]
|
195 |
test_file_name = file_path.split("/")[-1]
|
196 |
test_timestamp = test_file_name.split("_")[-1].replace(".json", "")
|
197 |
+
|
198 |
key = (device, os, commit_hash)
|
199 |
if key in results:
|
200 |
existing_commit_timestamp = results[key]["commitTimestamp"]
|
201 |
existing_test_timestamp = results[key]["testTimestamp"]
|
202 |
|
203 |
+
existing_commit_dt = datetime.strptime(
|
204 |
+
existing_commit_timestamp, "%Y-%m-%dT%H%M%S"
|
205 |
+
)
|
206 |
new_commit_dt = datetime.strptime(commit_timestamp, "%Y-%m-%dT%H%M%S")
|
207 |
existing_test_dt = datetime.strptime(existing_test_timestamp, "%Y-%m-%dT%H%M%S")
|
208 |
new_test_dt = datetime.strptime(test_timestamp, "%Y-%m-%dT%H%M%S")
|
|
|
288 |
for dataset, tps_info in data["dataset_tokens_per_second"].items()
|
289 |
},
|
290 |
"average_wer": compute_average_wer(data["average_wer"]),
|
291 |
+
"dataset_average_wer": {
|
292 |
+
dataset: compute_average_wer(data["dataset_wer"][dataset])
|
293 |
+
for dataset in data["dataset_wer"]
|
294 |
+
},
|
295 |
"qoi": round(mean(data["qoi"]), 2),
|
296 |
"commit_hash": data["commit_hash"],
|
297 |
"commit_timestamp": data["commit_timestamp"],
|
|
|
329 |
results_by_commit[commit_hash] = {
|
330 |
"data": {},
|
331 |
"devices": set(),
|
332 |
+
"timestamp": data["commitTimestamp"],
|
333 |
}
|
334 |
results_by_commit[commit_hash]["data"][key] = data
|
335 |
results_by_commit[commit_hash]["devices"].add(device)
|
|
|
338 |
for commit_hash, commit_data in results_by_commit.items():
|
339 |
commit_devices = sorted(commit_data["devices"])
|
340 |
df = pd.DataFrame(index=all_models, columns=["Model"] + commit_devices)
|
341 |
+
|
342 |
for model in all_models:
|
343 |
row = {"Model": model}
|
344 |
for device in commit_devices:
|
|
|
379 |
|
380 |
# Mark unsupported combinations for this commit
|
381 |
commit_not_supported = [
|
382 |
+
(model, device, os)
|
383 |
+
for model, device, os in not_supported
|
384 |
+
if any(
|
385 |
+
key[2] == commit_hash
|
386 |
+
for key in support_results
|
387 |
+
if key not in ["modelsTested", "devices"] and model == key[0]
|
388 |
+
)
|
389 |
]
|
390 |
remove_unsupported_cells(df, commit_not_supported)
|
391 |
|
392 |
# Format column headers
|
393 |
cols = df.columns.tolist()
|
394 |
cols = ["Model"] + [
|
395 |
+
f"""{get_device_name(col).replace("_", " ")} ({col})"""
|
396 |
+
for col in cols
|
397 |
+
if col != "Model"
|
398 |
]
|
399 |
df.columns = cols
|
400 |
|
401 |
# Save to commit-specific file
|
402 |
+
output_path = support_output_path.replace(".csv", f"_{commit_hash[:7]}.csv")
|
|
|
|
|
|
|
403 |
df.to_csv(output_path, index=True)
|
404 |
|
405 |
|
|
|
433 |
df.at[model, device] = "Not Supported"
|
434 |
|
435 |
|
436 |
+
def download_device_json_safe(file_path):
|
437 |
+
"""
|
438 |
+
Safely downloads a device JSON file from GitHub, returning None if it doesn't exist.
|
439 |
+
|
440 |
+
:param file_path: Path to the JSON file within the repository
|
441 |
+
:returns: The JSON data as a dictionary, or None if the file doesn't exist
|
442 |
+
"""
|
443 |
+
try:
|
444 |
+
return download_json_from_github(file_path=file_path)
|
445 |
+
except SystemExit:
|
446 |
+
# File doesn't exist or other error occurred
|
447 |
+
return None
|
448 |
+
|
449 |
+
|
450 |
+
def load_device_json_local(file_path):
|
451 |
+
"""
|
452 |
+
Safely loads a local device JSON file, returning None if it doesn't exist.
|
453 |
+
|
454 |
+
:param file_path: Local path to the JSON file
|
455 |
+
:returns: The JSON data as a dictionary, or None if the file doesn't exist
|
456 |
+
"""
|
457 |
+
try:
|
458 |
+
with open(file_path, "r") as f:
|
459 |
+
return json.load(f)
|
460 |
+
except (FileNotFoundError, json.JSONDecodeError):
|
461 |
+
return None
|
462 |
+
|
463 |
+
|
464 |
+
def build_chip_mapping():
|
465 |
+
"""
|
466 |
+
Builds a mapping from device SKUs to their chip types.
|
467 |
+
|
468 |
+
:returns: Dictionary where keys are device SKUs and values are chip types
|
469 |
+
"""
|
470 |
+
sku_to_chip = {}
|
471 |
+
|
472 |
+
# Load iPad devices
|
473 |
+
ipad_data = load_device_json_local("dashboard_data/iPad.json")
|
474 |
+
if ipad_data and "total_menu" in ipad_data:
|
475 |
+
for device_info in ipad_data["total_menu"].values():
|
476 |
+
if "sku" in device_info and "chip" in device_info:
|
477 |
+
# iPad has sku as an array
|
478 |
+
skus = device_info["sku"] if isinstance(device_info["sku"], list) else [device_info["sku"]]
|
479 |
+
for sku in skus:
|
480 |
+
sku_to_chip[sku] = device_info["chip"]
|
481 |
+
|
482 |
+
# Load iPhone devices
|
483 |
+
iphone_data = load_device_json_local("dashboard_data/iPhone.json")
|
484 |
+
if iphone_data and "total_menu" in iphone_data:
|
485 |
+
for device_info in iphone_data["total_menu"].values():
|
486 |
+
if "sku" in device_info and "chip" in device_info:
|
487 |
+
# iPhone has sku as a single string
|
488 |
+
sku_to_chip[device_info["sku"]] = device_info["chip"]
|
489 |
+
|
490 |
+
# Load Mac devices
|
491 |
+
mac_data = load_device_json_local("dashboard_data/Mac.json")
|
492 |
+
if mac_data and "total_menu" in mac_data:
|
493 |
+
for device_info in mac_data["total_menu"].values():
|
494 |
+
if "sku" in device_info and "chip" in device_info:
|
495 |
+
# Mac has sku as a single string
|
496 |
+
sku_to_chip[device_info["sku"]] = device_info["chip"]
|
497 |
+
|
498 |
+
return sku_to_chip
|
499 |
+
|
500 |
+
|
501 |
+
def get_platform_from_sku(sku):
|
502 |
+
"""
|
503 |
+
Determines the platform (iPad, iPhone, Mac) from a device SKU.
|
504 |
+
|
505 |
+
:param sku: Device SKU string
|
506 |
+
:returns: Platform string ('iPad', 'iPhone', 'Mac') or 'Unknown'
|
507 |
+
"""
|
508 |
+
if sku.startswith("iPad"):
|
509 |
+
return "iPad"
|
510 |
+
elif sku.startswith("iPhone"):
|
511 |
+
return "iPhone"
|
512 |
+
elif sku.startswith("Mac") or sku.startswith("iMac") or sku.startswith("MacBook"):
|
513 |
+
return "Mac"
|
514 |
+
else:
|
515 |
+
return "Unknown"
|
516 |
+
|
517 |
+
|
518 |
+
def normalize_chip_name(chip):
|
519 |
+
"""
|
520 |
+
Normalizes chip names for consistent grouping.
|
521 |
+
|
522 |
+
:param chip: Raw chip name from device JSON
|
523 |
+
:returns: Normalized chip name
|
524 |
+
"""
|
525 |
+
# Handle variations like "A18 Pro" -> "A18", "M4 Pro" -> "M4", etc.
|
526 |
+
# But keep distinct generations separate
|
527 |
+
chip = chip.strip()
|
528 |
+
|
529 |
+
# For A-series chips, keep Pro variants separate as they have different capabilities
|
530 |
+
if chip.startswith("A") and "Pro" in chip:
|
531 |
+
return chip # Keep A17 Pro separate from A17
|
532 |
+
|
533 |
+
# For M-series chips, group Pro/Max/Ultra variants together as they're same generation
|
534 |
+
if chip.startswith("M"):
|
535 |
+
# Extract just the M number (M1, M2, M3, M4)
|
536 |
+
parts = chip.split()
|
537 |
+
if len(parts) > 0:
|
538 |
+
return parts[0] # Return just "M1", "M2", etc.
|
539 |
+
|
540 |
+
return chip
|
541 |
+
|
542 |
+
|
543 |
+
def build_sku_group_mapping():
|
544 |
+
"""
|
545 |
+
Builds a mapping from individual SKUs to all SKUs that share the same chip on the same platform.
|
546 |
+
This implements chip-based coverage where testing one device with a specific chip
|
547 |
+
provides coverage for all devices with that chip on the same platform.
|
548 |
+
|
549 |
+
:returns: Dictionary where keys are individual SKUs and values are sets of all SKUs in that chip group
|
550 |
+
"""
|
551 |
+
sku_to_chip = build_chip_mapping()
|
552 |
+
sku_to_group = {}
|
553 |
+
|
554 |
+
# Group SKUs by platform and normalized chip
|
555 |
+
platform_chip_groups = {}
|
556 |
+
|
557 |
+
for sku, chip in sku_to_chip.items():
|
558 |
+
platform = get_platform_from_sku(sku)
|
559 |
+
normalized_chip = normalize_chip_name(chip)
|
560 |
+
|
561 |
+
key = (platform, normalized_chip)
|
562 |
+
if key not in platform_chip_groups:
|
563 |
+
platform_chip_groups[key] = set()
|
564 |
+
platform_chip_groups[key].add(sku)
|
565 |
+
|
566 |
+
# Create reverse mapping: each SKU maps to all SKUs in its chip group
|
567 |
+
for sku, chip in sku_to_chip.items():
|
568 |
+
platform = get_platform_from_sku(sku)
|
569 |
+
normalized_chip = normalize_chip_name(chip)
|
570 |
+
key = (platform, normalized_chip)
|
571 |
+
sku_to_group[sku] = platform_chip_groups[key]
|
572 |
+
|
573 |
+
return sku_to_group
|
574 |
+
|
575 |
+
|
576 |
+
def expand_tested_devices(tested_devices, sku_mapping):
|
577 |
+
"""
|
578 |
+
Expands tested devices to include all SKUs in the same group.
|
579 |
+
|
580 |
+
:param tested_devices: Set of device SKUs that were actually tested
|
581 |
+
:param sku_mapping: Dictionary mapping individual SKUs to their complete groups
|
582 |
+
:returns: Expanded set of devices including all SKUs in the same groups
|
583 |
+
"""
|
584 |
+
expanded_devices = set(tested_devices)
|
585 |
+
|
586 |
+
for device in tested_devices:
|
587 |
+
if device in sku_mapping:
|
588 |
+
# Add all SKUs from the same group
|
589 |
+
expanded_devices.update(sku_mapping[device])
|
590 |
+
|
591 |
+
return expanded_devices
|
592 |
+
|
593 |
+
|
594 |
+
def get_test_iphones():
|
595 |
+
"""
|
596 |
+
Gets iPhone SKU identifiers from the local iPhone.json file.
|
597 |
+
"""
|
598 |
+
iphone_data = load_device_json_local("dashboard_data/iPhone.json")
|
599 |
+
if iphone_data and "total_menu" in iphone_data:
|
600 |
+
return set([device_info["sku"] for device_info in iphone_data["total_menu"].values() if "sku" in device_info])
|
601 |
+
return set()
|
602 |
+
|
603 |
+
|
604 |
+
def get_test_macs():
|
605 |
+
"""
|
606 |
+
Gets Mac SKU identifiers from the local Mac.json file.
|
607 |
+
"""
|
608 |
+
mac_data = load_device_json_local("dashboard_data/Mac.json")
|
609 |
+
if mac_data and "total_menu" in mac_data:
|
610 |
+
return set([device_info["sku"] for device_info in mac_data["total_menu"].values() if "sku" in device_info])
|
611 |
+
return set()
|
612 |
+
|
613 |
+
|
614 |
+
def get_all_supported_devices():
|
615 |
+
"""
|
616 |
+
Gets all supported device identifiers from the config file.
|
617 |
+
Returns a set of device identifiers.
|
618 |
+
"""
|
619 |
+
with open("dashboard_data/config.json", "r") as f:
|
620 |
+
config = json.load(f)
|
621 |
+
|
622 |
+
devices = set()
|
623 |
+
for device_group in config["device_support"]:
|
624 |
+
identifiers = device_group["identifiers"]
|
625 |
+
devices.update(identifiers)
|
626 |
+
|
627 |
+
return devices
|
628 |
+
|
629 |
+
|
630 |
+
def get_tested_devices_for_commit(performance_results, support_results, commit_hash):
|
631 |
+
"""
|
632 |
+
Gets all device identifiers that were actually tested for a specific commit,
|
633 |
+
including all SKUs in the same chip groups as tested devices.
|
634 |
+
Uses chip-based coverage logic where testing one device with a specific chip
|
635 |
+
provides coverage for all devices with that chip on the same platform.
|
636 |
+
Returns a set of device identifiers.
|
637 |
+
"""
|
638 |
+
tested_devices = set()
|
639 |
+
|
640 |
+
# From performance results (benchmark files)
|
641 |
+
for key, result in performance_results.items():
|
642 |
+
if len(key) >= 4 and result.get("commit_hash") == commit_hash:
|
643 |
+
model, device, _, _ = key
|
644 |
+
tested_devices.add(device)
|
645 |
+
|
646 |
+
# From support results (summary files)
|
647 |
+
for key, result in support_results.items():
|
648 |
+
if key in ["modelsTested", "devices"]:
|
649 |
+
continue
|
650 |
+
if len(key) >= 3 and result.get("commitHash") == commit_hash:
|
651 |
+
device, _, _ = key
|
652 |
+
tested_devices.add(device)
|
653 |
+
|
654 |
+
# Expand to include all SKUs in the same chip groups for all platforms
|
655 |
+
sku_mapping = build_sku_group_mapping()
|
656 |
+
expanded_devices = expand_tested_devices(tested_devices, sku_mapping)
|
657 |
+
|
658 |
+
return expanded_devices
|
659 |
+
|
660 |
+
|
661 |
+
def get_tested_os_versions_for_commit(
|
662 |
+
performance_results, support_results, commit_hash
|
663 |
+
):
|
664 |
+
"""
|
665 |
+
Gets all OS versions that were actually tested for a specific commit.
|
666 |
+
Returns a set of OS version strings like 'iOS_17.2', 'macOS_14.5', etc.
|
667 |
+
"""
|
668 |
+
tested_os_versions = set()
|
669 |
+
|
670 |
+
# From performance results (benchmark files)
|
671 |
+
for key, result in performance_results.items():
|
672 |
+
if len(key) >= 4 and result.get("commit_hash") == commit_hash:
|
673 |
+
model, device, os_info, _ = key
|
674 |
+
tested_os_versions.add(os_info)
|
675 |
+
|
676 |
+
# From support results (summary files)
|
677 |
+
for key, result in support_results.items():
|
678 |
+
if key in ["modelsTested", "devices"]:
|
679 |
+
continue
|
680 |
+
if len(key) >= 3 and result.get("commitHash") == commit_hash:
|
681 |
+
device, os, _ = key
|
682 |
+
# Convert format like "iOS 17.2" to "iOS_17.2" for consistency
|
683 |
+
os_normalized = os.replace(" ", "_")
|
684 |
+
tested_os_versions.add(os_normalized)
|
685 |
+
|
686 |
+
return tested_os_versions
|
687 |
+
|
688 |
+
|
689 |
+
def check_target_os_coverage(tested_os_versions):
|
690 |
+
"""
|
691 |
+
Check if the tested OS versions include ALL of the target OS versions:
|
692 |
+
- macOS 14, 15, 26
|
693 |
+
- iOS 17, 18, 26 (noting that iOS and iPadOS are the same under the hood)
|
694 |
+
|
695 |
+
Returns (is_fully_covered: bool, covered_versions: list, missing_versions: list)
|
696 |
+
"""
|
697 |
+
target_macos_versions = {14, 15, 26}
|
698 |
+
target_ios_versions = {17, 18, 26}
|
699 |
+
|
700 |
+
covered_macos = set()
|
701 |
+
covered_ios = set()
|
702 |
+
|
703 |
+
for os_version in tested_os_versions:
|
704 |
+
# Parse OS version string like "iOS_17.2" or "macOS_14.5"
|
705 |
+
if "_" in os_version:
|
706 |
+
os_type, version_str = os_version.split("_", 1)
|
707 |
+
try:
|
708 |
+
# Extract major version number
|
709 |
+
major_version = int(version_str.split(".")[0])
|
710 |
+
|
711 |
+
if os_type == "macOS" and major_version in target_macos_versions:
|
712 |
+
covered_macos.add(major_version)
|
713 |
+
elif (
|
714 |
+
os_type in ["iOS", "iPadOS"]
|
715 |
+
and major_version in target_ios_versions
|
716 |
+
):
|
717 |
+
covered_ios.add(major_version)
|
718 |
+
except (ValueError, IndexError):
|
719 |
+
# Skip if we can't parse the version
|
720 |
+
continue
|
721 |
+
|
722 |
+
# Check what's missing
|
723 |
+
missing_macos = target_macos_versions - covered_macos
|
724 |
+
missing_ios = target_ios_versions - covered_ios
|
725 |
+
|
726 |
+
# Format covered and missing versions
|
727 |
+
covered_versions = []
|
728 |
+
covered_versions.extend([f"macOS {v}" for v in sorted(covered_macos)])
|
729 |
+
covered_versions.extend([f"iOS {v}" for v in sorted(covered_ios)])
|
730 |
+
|
731 |
+
missing_versions = []
|
732 |
+
missing_versions.extend([f"macOS {v}" for v in sorted(missing_macos)])
|
733 |
+
missing_versions.extend([f"iOS {v}" for v in sorted(missing_ios)])
|
734 |
+
|
735 |
+
# Only fully covered if no missing versions
|
736 |
+
is_fully_covered = len(missing_versions) == 0
|
737 |
+
|
738 |
+
return is_fully_covered, covered_versions, missing_versions
|
739 |
+
|
740 |
+
|
741 |
+
def check_chip_coverage(tested_devices):
|
742 |
+
"""
|
743 |
+
Check if the tested devices provide complete chip coverage for each platform.
|
744 |
+
|
745 |
+
Target coverage:
|
746 |
+
- iPad: A14, A15, A16, A17 Pro, M1, M2, M3, M4
|
747 |
+
- iPhone: A14, A15, A16, A17 Pro, A18, A18 Pro
|
748 |
+
- Mac: M1, M2, M3, M4
|
749 |
+
|
750 |
+
:param tested_devices: Set of device SKUs that were tested
|
751 |
+
:returns: (is_fully_covered: bool, platform_coverage: dict, missing_chips: dict)
|
752 |
+
"""
|
753 |
+
# Define target chips for each platform
|
754 |
+
target_chips = {
|
755 |
+
"iPad": {"A14", "A15", "A16", "A17 Pro", "M1", "M2", "M3", "M4"},
|
756 |
+
"iPhone": {"A14", "A15", "A16", "A17 Pro", "A18", "A18 Pro"},
|
757 |
+
"Mac": {"M1", "M2", "M3", "M4"}
|
758 |
+
}
|
759 |
+
|
760 |
+
# Build mapping from SKUs to chips
|
761 |
+
sku_to_chip = build_chip_mapping()
|
762 |
+
|
763 |
+
# Track which chips were tested for each platform
|
764 |
+
tested_chips = {
|
765 |
+
"iPad": set(),
|
766 |
+
"iPhone": set(),
|
767 |
+
"Mac": set()
|
768 |
+
}
|
769 |
+
|
770 |
+
for device_sku in tested_devices:
|
771 |
+
if device_sku in sku_to_chip:
|
772 |
+
platform = get_platform_from_sku(device_sku)
|
773 |
+
chip = normalize_chip_name(sku_to_chip[device_sku])
|
774 |
+
|
775 |
+
if platform in tested_chips:
|
776 |
+
tested_chips[platform].add(chip)
|
777 |
+
|
778 |
+
# Calculate coverage for each platform
|
779 |
+
platform_coverage = {}
|
780 |
+
missing_chips = {}
|
781 |
+
|
782 |
+
for platform, target_set in target_chips.items():
|
783 |
+
covered_set = tested_chips[platform]
|
784 |
+
missing_set = target_set - covered_set
|
785 |
+
|
786 |
+
platform_coverage[platform] = {
|
787 |
+
"total_chips": len(target_set),
|
788 |
+
"tested_chips": len(covered_set),
|
789 |
+
"coverage_percentage": (len(covered_set) / len(target_set)) * 100 if target_set else 0,
|
790 |
+
"covered_chips": sorted(list(covered_set)),
|
791 |
+
"missing_chips": sorted(list(missing_set))
|
792 |
+
}
|
793 |
+
|
794 |
+
missing_chips[platform] = sorted(list(missing_set))
|
795 |
+
|
796 |
+
# Overall coverage is complete if all platforms have full coverage
|
797 |
+
is_fully_covered = all(
|
798 |
+
len(missing_chips[platform]) == 0
|
799 |
+
for platform in target_chips.keys()
|
800 |
+
)
|
801 |
+
|
802 |
+
return is_fully_covered, platform_coverage, missing_chips
|
803 |
+
|
804 |
+
|
805 |
+
def generate_test_coverage_report(
|
806 |
+
performance_results, support_results, output_dir="dashboard_data"
|
807 |
+
):
|
808 |
+
"""
|
809 |
+
Generates test coverage reports for each commit, showing which devices
|
810 |
+
were tested vs skipped.
|
811 |
+
"""
|
812 |
+
# Get all possible devices from config
|
813 |
+
all_devices = get_all_supported_devices()
|
814 |
+
|
815 |
+
# Get all unique commit hashes from results
|
816 |
+
commit_hashes = set()
|
817 |
+
|
818 |
+
# Collect from performance results
|
819 |
+
for key, result in performance_results.items():
|
820 |
+
if len(key) >= 4 and result.get("commit_hash"):
|
821 |
+
commit_hashes.add(result["commit_hash"])
|
822 |
+
|
823 |
+
# Collect from support results
|
824 |
+
for key, result in support_results.items():
|
825 |
+
if key in ["modelsTested", "devices"]:
|
826 |
+
continue
|
827 |
+
if len(key) >= 3 and result.get("commitHash"):
|
828 |
+
commit_hashes.add(result["commitHash"])
|
829 |
+
|
830 |
+
print(f"Found {len(commit_hashes)} commit hashes to analyze")
|
831 |
+
|
832 |
+
# Generate coverage report for each commit
|
833 |
+
for commit_hash in commit_hashes:
|
834 |
+
tested_devices = get_tested_devices_for_commit(
|
835 |
+
performance_results, support_results, commit_hash
|
836 |
+
)
|
837 |
+
|
838 |
+
tested_os_versions = get_tested_os_versions_for_commit(
|
839 |
+
performance_results, support_results, commit_hash
|
840 |
+
)
|
841 |
+
|
842 |
+
# Check target OS coverage
|
843 |
+
os_fully_covered, covered_versions, missing_versions = check_target_os_coverage(
|
844 |
+
tested_os_versions
|
845 |
+
)
|
846 |
+
|
847 |
+
# Check chip coverage for all platforms
|
848 |
+
chip_fully_covered, platform_coverage, missing_chips = check_chip_coverage(
|
849 |
+
tested_devices
|
850 |
+
)
|
851 |
+
|
852 |
+
skipped_devices = all_devices - tested_devices
|
853 |
+
|
854 |
+
# Convert sets to lists for JSON serialization
|
855 |
+
tested_devices_list = list(tested_devices)
|
856 |
+
skipped_devices_list = list(skipped_devices)
|
857 |
+
tested_os_versions_list = list(tested_os_versions)
|
858 |
+
|
859 |
+
coverage_report = {
|
860 |
+
"commit_hash": commit_hash,
|
861 |
+
"total_devices": len(all_devices),
|
862 |
+
"tested_devices": len(tested_devices),
|
863 |
+
"skipped_devices": len(skipped_devices),
|
864 |
+
"coverage_percentage": (len(tested_devices) / len(all_devices)) * 100,
|
865 |
+
"tested_device_list": tested_devices_list,
|
866 |
+
"skipped_device_list": skipped_devices_list,
|
867 |
+
"tested_os_versions": tested_os_versions_list,
|
868 |
+
"has_target_os_coverage": os_fully_covered,
|
869 |
+
"covered_target_versions": covered_versions,
|
870 |
+
"missing_target_versions": missing_versions,
|
871 |
+
"has_target_chip_coverage": chip_fully_covered,
|
872 |
+
"platform_chip_coverage": platform_coverage,
|
873 |
+
"missing_target_chips": missing_chips,
|
874 |
+
}
|
875 |
+
|
876 |
+
# Save report for this commit
|
877 |
+
output_file = os.path.join(output_dir, f"test_coverage_{commit_hash}.json")
|
878 |
+
with open(output_file, "w") as f:
|
879 |
+
json.dump(coverage_report, f, indent=2)
|
880 |
+
|
881 |
+
os_coverage_info = f"OS coverage: {'✅ Complete' if os_fully_covered else '❌ Incomplete'}"
|
882 |
+
chip_coverage_info = f"Chip coverage: {'✅ Complete' if chip_fully_covered else '❌ Incomplete'}"
|
883 |
+
|
884 |
+
print(
|
885 |
+
f"Generated coverage report for commit {commit_hash}: "
|
886 |
+
f"{len(tested_devices)}/{len(all_devices)} devices tested "
|
887 |
+
f"({coverage_report['coverage_percentage']:.1f}%) "
|
888 |
+
f"({os_coverage_info}, {chip_coverage_info})"
|
889 |
+
)
|
890 |
+
|
891 |
+
|
892 |
def main():
|
893 |
"""
|
894 |
Main function to orchestrate the performance data generation process.
|
|
|
898 |
2. Fetches evaluation data for various datasets.
|
899 |
3. Processes benchmark files and summary files.
|
900 |
4. Calculates and saves performance and support results.
|
901 |
+
5. Generates test coverage reports for each commit.
|
902 |
"""
|
903 |
source_xcresult_repo = "argmaxinc/whisperkit-evals-dataset"
|
904 |
source_xcresult_subfolder = "benchmark_data/"
|
|
|
929 |
performance_results = defaultdict(
|
930 |
lambda: {
|
931 |
"average_wer": [],
|
932 |
+
"dataset_wer": defaultdict(list),
|
933 |
"qoi": [],
|
934 |
"speed": {"inputAudioSeconds": 0, "fullPipeline": 0},
|
935 |
"tokens_per_second": {"totalDecodingLoops": 0, "fullPipeline": 0},
|
|
|
962 |
elif "summary" in filename:
|
963 |
process_summary_file(file_path, support_results, releases)
|
964 |
else:
|
965 |
+
process_benchmark_file(
|
966 |
+
file_path, dataset_dfs, performance_results, releases
|
967 |
+
)
|
968 |
+
|
969 |
not_supported = calculate_and_save_performance_results(
|
970 |
performance_results, "dashboard_data/performance_data.json"
|
971 |
)
|
|
|
973 |
support_results, not_supported, "dashboard_data/support_data.csv"
|
974 |
)
|
975 |
|
976 |
+
# Generate test coverage reports
|
977 |
+
generate_test_coverage_report(performance_results, support_results)
|
978 |
+
|
979 |
|
980 |
if __name__ == "__main__":
|
981 |
main()
|
quality_generate.py
DELETED
@@ -1,186 +0,0 @@
|
|
1 |
-
import json
|
2 |
-
import os
|
3 |
-
import shutil
|
4 |
-
import sys
|
5 |
-
from collections import defaultdict
|
6 |
-
from statistics import mean
|
7 |
-
|
8 |
-
import pandas as pd
|
9 |
-
import requests
|
10 |
-
|
11 |
-
from text_normalizer import text_normalizer
|
12 |
-
from utils import compute_average_wer, download_dataset
|
13 |
-
|
14 |
-
|
15 |
-
def fetch_evaluation_data(url):
|
16 |
-
"""
|
17 |
-
Fetches evaluation data from the given URL.
|
18 |
-
:param url: The URL to fetch the evaluation data from.
|
19 |
-
:returns: The evaluation data as a dictionary.
|
20 |
-
:rauses: sys.exit if the request fails
|
21 |
-
"""
|
22 |
-
response = requests.get(url)
|
23 |
-
if response.status_code == 200:
|
24 |
-
return json.loads(response.text)
|
25 |
-
else:
|
26 |
-
sys.exit(f"Failed to fetch WhisperKit evals: {response.text}")
|
27 |
-
|
28 |
-
|
29 |
-
def get_device_name(device):
|
30 |
-
"""
|
31 |
-
Gets the device name from the device map if it exists.
|
32 |
-
:param device: String representing the device name.
|
33 |
-
:returns: The device name from the device map if it exists, otherwise the input device name.
|
34 |
-
"""
|
35 |
-
with open("dashboard_data/device_map.json", "r") as f:
|
36 |
-
device_map = json.load(f)
|
37 |
-
return device_map.get(device, device).replace(" ", "_")
|
38 |
-
|
39 |
-
|
40 |
-
def process_quality_file(file_path, dataset_dfs, quality_results):
|
41 |
-
"""
|
42 |
-
Processes a single quality file and updates the quality_results dictionary.
|
43 |
-
|
44 |
-
:param file_path: Path to the quality JSON file.
|
45 |
-
:param dataset_dfs: Dictionary of DataFrames containing dataset information.
|
46 |
-
:param quality_results: Dictionary to store the processed quality results.
|
47 |
-
|
48 |
-
This function reads a quality JSON file, extracts relevant information,
|
49 |
-
and updates the quality_results dictionary with various metrics including WER
|
50 |
-
and Quality of Inference (QoI) for different datasets.
|
51 |
-
"""
|
52 |
-
with open(file_path, "r") as file:
|
53 |
-
test_results = json.load(file)
|
54 |
-
|
55 |
-
if len(test_results) == 0:
|
56 |
-
return
|
57 |
-
|
58 |
-
metadata = test_results["metadata"]
|
59 |
-
test_results = test_results["results"]
|
60 |
-
model = file_path.split("/")[-3].replace("_", "/")
|
61 |
-
device = metadata["inference_context"]["device_spec"]["product_name"]
|
62 |
-
device = get_device_name(device)
|
63 |
-
timestamp = file_path.split("/")[-1].split(".")[0]
|
64 |
-
key = model
|
65 |
-
dataset_name = metadata["dataset_name"]
|
66 |
-
|
67 |
-
for test_result in test_results:
|
68 |
-
audio_file_name = test_result["file"]
|
69 |
-
|
70 |
-
dataset_key = "Earnings-22" if "earnings22" in dataset_name else "LibriSpeech"
|
71 |
-
dataset_df = dataset_dfs[dataset_key]
|
72 |
-
|
73 |
-
wer_entry = {
|
74 |
-
"prediction": text_normalizer(test_result["prediction"]),
|
75 |
-
"reference": text_normalizer(test_result["reference"]),
|
76 |
-
}
|
77 |
-
quality_results[key]["timestamp"] = timestamp
|
78 |
-
quality_results[key]["dataset_wer"][dataset_name].append(wer_entry)
|
79 |
-
|
80 |
-
audio = audio_file_name.split(".")[0]
|
81 |
-
dataset_row = dataset_df.loc[dataset_df["file"].str.contains(audio)].iloc[0]
|
82 |
-
reference_wer = dataset_row["wer"]
|
83 |
-
prediction_wer = test_result["wer"]
|
84 |
-
|
85 |
-
quality_results[key]["qoi"].append(1 if prediction_wer <= reference_wer else 0)
|
86 |
-
|
87 |
-
|
88 |
-
def calculate_and_save_quality_results(quality_results, quality_output_path):
|
89 |
-
"""
|
90 |
-
Calculates final quality metrics and saves them to a JSON file.
|
91 |
-
|
92 |
-
:param quality_results: Dictionary containing raw quality data.
|
93 |
-
:param quality_output_path: Path to save the processed quality results.
|
94 |
-
|
95 |
-
This function processes the raw quality data, calculates average metrics,
|
96 |
-
and writes the final results to a JSON file, with each entry representing
|
97 |
-
a unique model's quality metrics across different datasets, including
|
98 |
-
Word Error Rate (WER) and Quality of Inference (QoI).
|
99 |
-
"""
|
100 |
-
with open(quality_output_path, "w") as quality_file:
|
101 |
-
for key, data in quality_results.items():
|
102 |
-
model = key
|
103 |
-
|
104 |
-
dataset_wers = {
|
105 |
-
dataset: compute_average_wer(wer)
|
106 |
-
for dataset, wer in data["dataset_wer"].items()
|
107 |
-
}
|
108 |
-
average_wer = (
|
109 |
-
sum(dataset_wers.values()) / len(dataset_wers)
|
110 |
-
if len(dataset_wers) != 0
|
111 |
-
else 0
|
112 |
-
)
|
113 |
-
|
114 |
-
quality_entry = {
|
115 |
-
"model": model.replace("_", "/"),
|
116 |
-
"timestamp": data["timestamp"],
|
117 |
-
"average_wer": round(average_wer, 2),
|
118 |
-
"dataset_wer": dataset_wers,
|
119 |
-
"qoi": round(mean(data["qoi"]), 2),
|
120 |
-
}
|
121 |
-
|
122 |
-
json.dump(quality_entry, quality_file)
|
123 |
-
quality_file.write("\n")
|
124 |
-
|
125 |
-
|
126 |
-
def main():
|
127 |
-
"""
|
128 |
-
Main function to orchestrate the quality data generation process.
|
129 |
-
|
130 |
-
This function performs the following steps:
|
131 |
-
1. Downloads quality data if requested.
|
132 |
-
2. Fetches evaluation data for various datasets.
|
133 |
-
3. Processes quality files for specific datasets.
|
134 |
-
4. Calculates and saves quality results, including WER and QoI metrics.
|
135 |
-
"""
|
136 |
-
if len(sys.argv) > 1 and sys.argv[1] == "download":
|
137 |
-
try:
|
138 |
-
shutil.rmtree("english")
|
139 |
-
except:
|
140 |
-
print("Nothing to remove.")
|
141 |
-
download_dataset("argmaxinc/whisperkit-evals", "english", "WhisperKit")
|
142 |
-
|
143 |
-
datasets = {
|
144 |
-
"Earnings-22": "https://huggingface.co/datasets/argmaxinc/whisperkit-evals/resolve/main/WhisperOpenAIAPI/openai_whisper-large-v2/earnings22/2024-03-04_13%3A39%3A42_GMT-0800.json",
|
145 |
-
"LibriSpeech": "https://huggingface.co/datasets/argmaxinc/whisperkit-evals/resolve/main/WhisperOpenAIAPI/openai_whisper-large-v2/librispeech/2024-02-28_18%3A45%3A02_GMT-0800.json?download=true",
|
146 |
-
"earnings22-10mins": "https://huggingface.co/datasets/argmaxinc/whisperkit-evals/resolve/main/WhisperOpenAIAPI/openai_whisper-large-v2/earnings22/2024-03-04_13%3A39%3A42_GMT-0800.json",
|
147 |
-
"librispeech-10mins": "https://huggingface.co/datasets/argmaxinc/whisperkit-evals/resolve/main/WhisperOpenAIAPI/openai_whisper-large-v2/librispeech/2024-02-28_18%3A45%3A02_GMT-0800.json?download=true",
|
148 |
-
"earnings22-12hours": "https://huggingface.co/datasets/argmaxinc/whisperkit-evals/resolve/main/WhisperOpenAIAPI/openai_whisper-large-v2/earnings22/2024-03-04_13%3A39%3A42_GMT-0800.json",
|
149 |
-
"librispeech": "https://huggingface.co/datasets/argmaxinc/whisperkit-evals/resolve/main/WhisperOpenAIAPI/openai_whisper-large-v2/librispeech/2024-02-28_18%3A45%3A02_GMT-0800.json?download=true",
|
150 |
-
}
|
151 |
-
|
152 |
-
dataset_dfs = {}
|
153 |
-
for dataset_name, url in datasets.items():
|
154 |
-
evals = fetch_evaluation_data(url)
|
155 |
-
dataset_dfs[dataset_name] = pd.json_normalize(evals["results"])
|
156 |
-
|
157 |
-
source_quality_directory = "argmaxinc/english/WhisperKit/"
|
158 |
-
|
159 |
-
quality_results = defaultdict(
|
160 |
-
lambda: {
|
161 |
-
"average_wer": [],
|
162 |
-
"dataset_wer": defaultdict(list),
|
163 |
-
"qoi": [],
|
164 |
-
"timestamp": None,
|
165 |
-
}
|
166 |
-
)
|
167 |
-
|
168 |
-
for subdir, _, files in os.walk(source_quality_directory):
|
169 |
-
dataset = subdir.split("/")[-1]
|
170 |
-
if dataset not in ["earnings22-12hours", "librispeech"]:
|
171 |
-
continue
|
172 |
-
|
173 |
-
for filename in files:
|
174 |
-
if not filename.endswith(".json"):
|
175 |
-
continue
|
176 |
-
|
177 |
-
file_path = os.path.join(subdir, filename)
|
178 |
-
process_quality_file(file_path, dataset_dfs, quality_results)
|
179 |
-
|
180 |
-
calculate_and_save_quality_results(
|
181 |
-
quality_results, "dashboard_data/quality_data.json"
|
182 |
-
)
|
183 |
-
|
184 |
-
|
185 |
-
if __name__ == "__main__":
|
186 |
-
main()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
utils.py
CHANGED
@@ -2,6 +2,7 @@ import colorsys
|
|
2 |
import json
|
3 |
import os
|
4 |
import random
|
|
|
5 |
from concurrent.futures import ThreadPoolExecutor
|
6 |
from dataclasses import dataclass, make_dataclass
|
7 |
from datetime import datetime
|
@@ -12,6 +13,7 @@ import evaluate
|
|
12 |
import numpy as np
|
13 |
import pandas as pd
|
14 |
import plotly.graph_objects as go
|
|
|
15 |
from huggingface_hub import hf_hub_download, list_repo_files
|
16 |
from pydub import AudioSegment
|
17 |
|
@@ -84,23 +86,6 @@ def group_wer(group):
|
|
84 |
)
|
85 |
|
86 |
|
87 |
-
def load_multilingual_results(csv_file):
|
88 |
-
"""
|
89 |
-
Load multilingual results from a CSV file into a pandas DataFrame.
|
90 |
-
|
91 |
-
:param csv_file: Path to the CSV file containing multilingual results
|
92 |
-
:return: DataFrame with the loaded results, or None if the file is not found
|
93 |
-
|
94 |
-
This function attempts to load a CSV file using pandas, handling potential
|
95 |
-
FileNotFoundError exceptions.
|
96 |
-
"""
|
97 |
-
try:
|
98 |
-
df = pd.json_normalize(csv_file)
|
99 |
-
return df
|
100 |
-
except FileNotFoundError:
|
101 |
-
return None
|
102 |
-
|
103 |
-
|
104 |
def download_dataset(repo_id, local_dir, remote_dir, path_includes=""):
|
105 |
"""
|
106 |
Download benchmark result files from a specified Hugging Face repository to a local directory.
|
@@ -365,23 +350,6 @@ def make_timestamp_clickable_link(model, dataset, timestamp):
|
|
365 |
return f'<div style="color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;" {onclick} href="#">{timestamp}</div>'
|
366 |
|
367 |
|
368 |
-
def make_multilingual_model_clickable_link(model):
|
369 |
-
"""
|
370 |
-
Creates a clickable link for a multilingual model name.
|
371 |
-
|
372 |
-
:param model: String representing the model name
|
373 |
-
:return: An HTML string containing a clickable div for the model name
|
374 |
-
|
375 |
-
This function generates a formatted HTML div that can be used as a clickable
|
376 |
-
element in web interfaces, typically for displaying and interacting with multilingual model names.
|
377 |
-
"""
|
378 |
-
elem_id = (
|
379 |
-
f"{model}".replace(" ", "_").replace('"', "").replace("'", "").replace(",", "")
|
380 |
-
)
|
381 |
-
onclick = f"onclick=\"document.getElementById('{elem_id}').click();console.log('hello');\""
|
382 |
-
return f'<div style="color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;" {onclick} href="#">{model}</div>'
|
383 |
-
|
384 |
-
|
385 |
def plot_metric(
|
386 |
df, y_axis_col, y_axis_title, fig_title, filter_input=None, exclude_input=None
|
387 |
):
|
@@ -399,14 +367,11 @@ def plot_metric(
|
|
399 |
with open("dashboard_data/version.json", "r") as f:
|
400 |
version = json.load(f)
|
401 |
releases = set(version["releases"])
|
402 |
-
|
403 |
df = df[df["commit_hash"].isin(releases)]
|
404 |
|
405 |
grouped = df.groupby(["model", "device", "os"])
|
406 |
-
sorted_groups = [
|
407 |
-
group.sort_values("commit_timestamp")
|
408 |
-
for _, group in grouped
|
409 |
-
]
|
410 |
|
411 |
if filter_input:
|
412 |
filters = [f.strip().lower() for f in filter_input.split(";")]
|
@@ -538,6 +503,29 @@ def calculate_parity(m2_ultra_wer, row):
|
|
538 |
return None
|
539 |
|
540 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
541 |
def create_initial_performance_column_dict():
|
542 |
"""
|
543 |
Creates the initial column dictionary for the performance table.
|
@@ -545,7 +533,7 @@ def create_initial_performance_column_dict():
|
|
545 |
:return: A list of column dictionaries
|
546 |
|
547 |
This function defines the basic structure of the performance table,
|
548 |
-
including columns for model, device, OS, average WER, QoI, speed,
|
549 |
"""
|
550 |
return [
|
551 |
[
|
@@ -560,10 +548,10 @@ def create_initial_performance_column_dict():
|
|
560 |
],
|
561 |
["os", ColumnContent, ColumnContent("OS", "html", True, never_hidden=True)],
|
562 |
["english_wer", ColumnContent, ColumnContent("English WER", "html", True)],
|
563 |
-
["multilingual_wer", ColumnContent, ColumnContent("Multilingual WER", "str", True)],
|
564 |
["qoi", ColumnContent, ColumnContent("QoI", "html", False)],
|
565 |
["speed", ColumnContent, ColumnContent("Speed", "html", False)],
|
566 |
["toks", ColumnContent, ColumnContent("Tok / s", "html", False)],
|
|
|
567 |
]
|
568 |
|
569 |
|
@@ -815,6 +803,46 @@ def generate_random_colors(base_colors, num_colors, min_distance=30):
|
|
815 |
return generated_colors
|
816 |
|
817 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
818 |
@dataclass
|
819 |
class Task:
|
820 |
"""
|
|
|
2 |
import json
|
3 |
import os
|
4 |
import random
|
5 |
+
import sys
|
6 |
from concurrent.futures import ThreadPoolExecutor
|
7 |
from dataclasses import dataclass, make_dataclass
|
8 |
from datetime import datetime
|
|
|
13 |
import numpy as np
|
14 |
import pandas as pd
|
15 |
import plotly.graph_objects as go
|
16 |
+
import requests
|
17 |
from huggingface_hub import hf_hub_download, list_repo_files
|
18 |
from pydub import AudioSegment
|
19 |
|
|
|
86 |
)
|
87 |
|
88 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
89 |
def download_dataset(repo_id, local_dir, remote_dir, path_includes=""):
|
90 |
"""
|
91 |
Download benchmark result files from a specified Hugging Face repository to a local directory.
|
|
|
350 |
return f'<div style="color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;" {onclick} href="#">{timestamp}</div>'
|
351 |
|
352 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
353 |
def plot_metric(
|
354 |
df, y_axis_col, y_axis_title, fig_title, filter_input=None, exclude_input=None
|
355 |
):
|
|
|
367 |
with open("dashboard_data/version.json", "r") as f:
|
368 |
version = json.load(f)
|
369 |
releases = set(version["releases"])
|
370 |
+
|
371 |
df = df[df["commit_hash"].isin(releases)]
|
372 |
|
373 |
grouped = df.groupby(["model", "device", "os"])
|
374 |
+
sorted_groups = [group.sort_values("commit_timestamp") for _, group in grouped]
|
|
|
|
|
|
|
375 |
|
376 |
if filter_input:
|
377 |
filters = [f.strip().lower() for f in filter_input.split(";")]
|
|
|
503 |
return None
|
504 |
|
505 |
|
506 |
+
def calculate_quality_parity(quality_data, performance_row):
|
507 |
+
"""
|
508 |
+
Calculates the parity between measured WER and ground truth WER from quality data.
|
509 |
+
|
510 |
+
:param quality_data: List of dictionaries containing quality evaluation data
|
511 |
+
:param performance_row: Current performance row being processed
|
512 |
+
:return: WER difference (measured - ground truth) or None if not found
|
513 |
+
|
514 |
+
This function finds the corresponding ground truth WER for a model and computes
|
515 |
+
the difference between measured and ground truth WER values.
|
516 |
+
"""
|
517 |
+
model_name = performance_row.get("model", "")
|
518 |
+
measured_wer = performance_row.get("english_wer", 0)
|
519 |
+
|
520 |
+
# Find matching model in quality data
|
521 |
+
for quality_entry in quality_data:
|
522 |
+
if quality_entry.get("model", "") == model_name:
|
523 |
+
ground_truth_wer = quality_entry.get("average_wer", 0)
|
524 |
+
return round(measured_wer - ground_truth_wer, 2)
|
525 |
+
|
526 |
+
return None
|
527 |
+
|
528 |
+
|
529 |
def create_initial_performance_column_dict():
|
530 |
"""
|
531 |
Creates the initial column dictionary for the performance table.
|
|
|
533 |
:return: A list of column dictionaries
|
534 |
|
535 |
This function defines the basic structure of the performance table,
|
536 |
+
including columns for model, device, OS, average WER, QoI, speed, tokens per second, and parity.
|
537 |
"""
|
538 |
return [
|
539 |
[
|
|
|
548 |
],
|
549 |
["os", ColumnContent, ColumnContent("OS", "html", True, never_hidden=True)],
|
550 |
["english_wer", ColumnContent, ColumnContent("English WER", "html", True)],
|
|
|
551 |
["qoi", ColumnContent, ColumnContent("QoI", "html", False)],
|
552 |
["speed", ColumnContent, ColumnContent("Speed", "html", False)],
|
553 |
["toks", ColumnContent, ColumnContent("Tok / s", "html", False)],
|
554 |
+
["parity", ColumnContent, ColumnContent("Parity", "number", False)],
|
555 |
]
|
556 |
|
557 |
|
|
|
803 |
return generated_colors
|
804 |
|
805 |
|
806 |
+
def download_json_from_github(
|
807 |
+
url=None,
|
808 |
+
repo_owner="argmaxinc",
|
809 |
+
repo_name="device-knowledge-base",
|
810 |
+
branch="main",
|
811 |
+
file_path=None,
|
812 |
+
):
|
813 |
+
"""
|
814 |
+
Downloads a JSON file from a GitHub repository.
|
815 |
+
|
816 |
+
:param url: Full URL to the JSON file, or None if constructing from other params
|
817 |
+
:param repo_owner: GitHub repository owner (default: "argmaxinc")
|
818 |
+
:param repo_name: GitHub repository name (default: "WhisperKit")
|
819 |
+
:param branch: Git branch name (default: "main")
|
820 |
+
:param file_path: Path to the JSON file within the repository
|
821 |
+
:returns: The JSON data as a dictionary
|
822 |
+
:raises: sys.exit if the request fails or JSON parsing fails
|
823 |
+
"""
|
824 |
+
|
825 |
+
# If full URL is provided, use it directly
|
826 |
+
if url:
|
827 |
+
target_url = url
|
828 |
+
elif file_path:
|
829 |
+
# Construct GitHub raw URL
|
830 |
+
target_url = f"https://raw.githubusercontent.com/{repo_owner}/{repo_name}/{branch}/{file_path}"
|
831 |
+
else:
|
832 |
+
sys.exit("Either 'url' or 'file_path' must be provided")
|
833 |
+
|
834 |
+
try:
|
835 |
+
response = requests.get(target_url)
|
836 |
+
if response.status_code == 200:
|
837 |
+
return json.loads(response.text)
|
838 |
+
else:
|
839 |
+
sys.exit(f"Failed to fetch JSON from GitHub: {response.text}")
|
840 |
+
except json.JSONDecodeError as e:
|
841 |
+
sys.exit(f"Failed to parse JSON from {target_url}: {e}")
|
842 |
+
except requests.exceptions.RequestException as e:
|
843 |
+
sys.exit(f"Network error fetching {target_url}: {e}")
|
844 |
+
|
845 |
+
|
846 |
@dataclass
|
847 |
class Task:
|
848 |
"""
|