ardaatahan commited on
Commit
1871a8f
·
unverified ·
2 Parent(s): 4ac34ce 27d0e34

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 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(repo_id=dataset_id, repo_type="dataset", path_in_repo="benchmark_data", recursive=False)
 
 
 
 
 
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('v')
104
-
105
- return releases[-1].tag_name.lstrip('v')
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: WhisperKit Benchmarks
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'>WhisperKit Benchmarks</a></h1>
8
  </div>
9
  """
10
 
11
 
12
- SHA_TO_VERSION = {
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 benchmarks include:
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
- WhisperKit Benchmarks is the one-stop shop for on-device performance and quality testing of WhisperKit models across supported devices, OS versions and audio datasets.
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
- "multilingual_wer": "Multilingual WER",
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": "whisperkit-coreml",
3
- "version": "0.2",
4
  "device_support": [
5
  {
6
- "identifiers": ["iPhone11", "iPhone12", "Watch7", "Watch8"],
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7
  "models": {
8
  "default": "openai_whisper-tiny",
9
  "supported": [
@@ -15,27 +49,23 @@
15
  }
16
  },
17
  {
18
- "identifiers": ["iPhone13", "iPad13,18", "iPad13,1"],
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
- "iPhone14",
34
- "iPhone15",
35
- "iPhone16",
36
- "iPhone17",
37
- "iPad14,1",
38
- "iPad14,2"
 
 
 
 
 
 
 
 
 
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
- "Mac13",
63
- "iMac21",
 
 
 
64
  "MacBookAir10,1",
65
- "MacBookPro17",
66
- "MacBookPro18",
67
- "Macmini9",
68
- "iPad13,16",
 
69
  "iPad13,4",
70
- "iPad13,8"
 
 
 
 
 
 
 
 
71
  ],
72
  "models": {
73
- "default": "openai_whisper-large-v3-v20240930",
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
- "Mac15",
96
- "Mac16",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
97
  "iPad14,3",
98
  "iPad14,4",
99
  "iPad14,5",
@@ -102,7 +186,14 @@
102
  "iPad14,9",
103
  "iPad14,10",
104
  "iPad14,11",
105
- "iPad16"
 
 
 
 
 
 
 
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,⚠️ <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%2C7_summary_2025-04-16T220030.json>iPadOS 18.4</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-04-15T183244_11a1fab/iPad16%2C1_summary_2025-04-16T220030.json>iPadOS 18.4</a>
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>,⚠️ <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%2C7_summary_2025-04-16T220030.json>iPadOS 18.4</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-04-15T183244_11a1fab/iPad16%2C1_summary_2025-04-16T220030.json>iPadOS 18.4</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,⚠️ <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%2C7_summary_2025-04-16T220030.json>iPadOS 18.4</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-04-15T183244_11a1fab/iPad16%2C1_summary_2025-04-16T220030.json>iPadOS 18.4</a>
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,⚠️ <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%2C7_summary_2025-04-16T220030.json>iPadOS 18.4</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-04-15T183244_11a1fab/iPad16%2C1_summary_2025-04-16T220030.json>iPadOS 18.4</a>
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,⚠️ <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%2C7_summary_2025-04-16T220030.json>iPadOS 18.4</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-04-15T183244_11a1fab/iPad16%2C1_summary_2025-04-16T220030.json>iPadOS 18.4</a>
13
- openai_whisper-large-v3-v20240930,openai_whisper-large-v3-v20240930,✅ macOS 15.4,Not Supported,? iPadOS 18.3.2,⚠️ <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%2C7_summary_2025-04-16T220030.json>iPadOS 18.4</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-04-15T183244_11a1fab/iPad16%2C1_summary_2025-04-16T220030.json>iPadOS 18.4</a>
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>,⚠️ <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%2C7_summary_2025-04-16T220030.json>iPadOS 18.4</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-04-15T183244_11a1fab/iPad16%2C1_summary_2025-04-16T220030.json>iPadOS 18.4</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>,⚠️ <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%2C7_summary_2025-04-16T220030.json>iPadOS 18.4</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-04-15T183244_11a1fab/iPad16%2C1_summary_2025-04-16T220030.json>iPadOS 18.4</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,⚠️ <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%2C7_summary_2025-06-16T220810.json>iPadOS 18.4</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/iPad16%2C1_summary_2025-06-16T220810.json>iPadOS 18.4</a>,✅ 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,⚠️ <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>,⚠️ <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%2C7_summary_2025-06-16T220810.json>iPadOS 18.4</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/iPad16%2C1_summary_2025-06-16T220810.json>iPadOS 18.4</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/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,⚠️ <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>,✅ 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,⚠️ <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%2C7_summary_2025-06-16T220810.json>iPadOS 18.4</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/iPad16%2C1_summary_2025-06-16T220810.json>iPadOS 18.4</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/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,⚠️ <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>,⚠️ <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%2C7_summary_2025-06-16T220810.json>iPadOS 18.4</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/iPad16%2C1_summary_2025-06-16T220810.json>iPadOS 18.4</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/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,⚠️ <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>,✅ 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>,⚠️ <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%2C7_summary_2025-06-16T220810.json>iPadOS 18.4</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/iPad16%2C1_summary_2025-06-16T220810.json>iPadOS 18.4</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/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,⚠️ <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%2C7_summary_2025-06-16T220810.json>iPadOS 18.4</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/iPad16%2C1_summary_2025-06-16T220810.json>iPadOS 18.4</a>,? 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,⚠️ <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>,⚠️ <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%2C7_summary_2025-06-16T220810.json>iPadOS 18.4</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/iPad16%2C1_summary_2025-06-16T220810.json>iPadOS 18.4</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/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,⚠️ <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>,✅ 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,⚠️ <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>,⚠️ <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%2C7_summary_2025-06-16T220810.json>iPadOS 18.4</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/iPad16%2C1_summary_2025-06-16T220810.json>iPadOS 18.4</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/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,⚠️ <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>,✅ 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
 
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,✅ iPadOS 18.0.1,✅ 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>,⚠️ <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%2C1_summary_2024-10-29T234233.json>iPadOS 18.0.1</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/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>,⚠️ <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%2C1_summary_2024-10-29T234233.json>iPadOS 18.0.1</a>,✅ 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>,⚠️ <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%2C1_summary_2024-10-29T234233.json>iPadOS 18.0.1</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/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,⚠️ <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%2C1_summary_2024-10-29T234233.json>iPadOS 18.0.1</a>,✅ 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>,⚠️ <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%2C1_summary_2024-10-29T234233.json>iPadOS 18.0.1</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/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,⚠️ <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%2C1_summary_2024-10-29T234233.json>iPadOS 18.0.1</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/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>,⚠️ <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%2C1_summary_2024-10-29T234233.json>iPadOS 18.0.1</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/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
 
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>,⚠️ <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</p>,? 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/iPad15%2C7_summary_2025-08-01T235644.json>iPadOS 18.6</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/iPad16%2C1_summary_2025-08-04T202532.json>iPadOS 18.5</a>,✅ 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,⚠️ <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</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,⚠️ <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>,⚠️ <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</p>,? 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/iPad15%2C7_summary_2025-08-01T235644.json>iPadOS 18.6</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/iPad16%2C1_summary_2025-08-04T202532.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-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,⚠️ <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>,⚠️ <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</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>,⚠️ <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</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,⚠️ <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</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>,⚠️ <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</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>,⚠️ <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%2C7_summary_2025-08-01T235644.json>iPadOS 18.6</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/iPad16%2C1_summary_2025-08-04T202532.json>iPadOS 18.5</a>,✅ 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,⚠️ <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</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,⚠️ <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>,⚠️ <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</p>,? 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/iPad15%2C7_summary_2025-08-01T235644.json>iPadOS 18.6</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/iPad16%2C1_summary_2025-08-04T202532.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-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,⚠️ <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>,⚠️ <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</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>,⚠️ <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</p>,? 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/iPad15%2C7_summary_2025-08-01T235644.json>iPadOS 18.6</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/iPad16%2C1_summary_2025-08-04T202532.json>iPadOS 18.5</a>,✅ 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>,⚠️ <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</p>,? 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/iPad15%2C7_summary_2025-08-01T235644.json>iPadOS 18.6</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/iPad16%2C1_summary_2025-08-04T202532.json>iPadOS 18.5</a>,? 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>,⚠️ <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</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,⚠️ <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>,⚠️ <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</p>,? 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/iPad15%2C7_summary_2025-08-01T235644.json>iPadOS 18.6</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/iPad16%2C1_summary_2025-08-04T202532.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-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,⚠️ <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>,⚠️ <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</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,⚠️ <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</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,⚠️ <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>,⚠️ <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</p>,? 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/iPad15%2C7_summary_2025-08-01T235644.json>iPadOS 18.6</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/iPad16%2C1_summary_2025-08-04T202532.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-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,⚠️ <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>,⚠️ <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</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,⚠️ <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</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,⚠️ <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</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,⚠️ <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</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,⚠️ <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</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
 
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
- add_datasets_to_quality_columns,
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] for i in range(len(VERSION_DATA["versions"]))
 
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
- benchmark_df["multilingual_wer"] = benchmark_df["multilingual_wer"].astype(str)
 
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 = initial_release_df["os"].apply(get_os_name_and_version).unique().tolist()
 
 
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
- QUALITY_SELECTED_COLS = quality_column_info["SELECTED_COLS"]
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=[(f"{release} v{SHA_TO_VERSION[release]}", release) for release in releases],
 
 
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("Performance", elem_id="benchmark", id=0):
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[performance_df["commit_hash"] == releases[-1]]
 
 
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(f"dashboard_data/support_data_{releases[-1][:7]}.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()[1:], # Exclude 'Model' column
 
 
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 = [re.escape(m.strip()) for m in exclude_models.split(";")]
 
 
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"] + [col for col in columns if col in df.columns]
 
 
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(f"dashboard_data/support_data_{release[:7]}.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=[device_support_table, support_shown_columns, hidden_support_df]
 
 
 
 
1407
  ).then(
1408
  filter_support_data,
1409
- inputs=[hidden_support_df, support_shown_columns, filter_support_models, exclude_support_models],
1410
- outputs=device_support_table
 
 
 
 
 
1411
  )
1412
 
1413
  # Also connect the filter inputs to update the table
1414
- for input_elem in [filter_support_models, exclude_support_models, support_shown_columns]:
 
 
 
 
1415
  input_elem.change(
1416
  filter_support_data,
1417
- inputs=[hidden_support_df, support_shown_columns, filter_support_models, exclude_support_models],
1418
- outputs=device_support_table
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1419
  )
1420
 
1421
  # Methodology Tab
1422
- with gr.TabItem("Methodology", elem_id="methodology", id=7):
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, ssr_mode=False)
 
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(existing_commit_timestamp, "%Y-%m-%dT%H%M%S")
 
 
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(key[2] == commit_hash for key in support_results if key not in ["modelsTested", "devices"] and model == key[0])
 
 
 
 
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})""" for col in cols if col != "Model"
 
 
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(file_path, dataset_dfs, performance_results, releases)
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, and tokens per second.
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
  """