danielrosehill commited on
Commit
948605a
·
1 Parent(s): 73e1c72
Files changed (7) hide show
  1. README.md +67 -5
  2. index.html +80 -18
  3. parse_markdown.py +281 -0
  4. projects.json +638 -0
  5. projects.md +632 -0
  6. script.js +197 -0
  7. style.css +295 -18
README.md CHANGED
@@ -1,10 +1,72 @@
1
  ---
2
- title: Interesting Whisper Projects
3
- emoji: 💻
4
- colorFrom: pink
5
- colorTo: gray
6
  sdk: static
7
  pinned: false
8
  ---
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  ---
2
+ title: Awesome Whisper Apps Browser
3
+ emoji: 🎙️
4
+ colorFrom: purple
5
+ colorTo: blue
6
  sdk: static
7
  pinned: false
8
  ---
9
 
10
+ # Awesome Whisper Apps Browser
11
+
12
+ An interactive browser for discovering applications, tools, and resources built with [OpenAI Whisper](https://github.com/openai/whisper) - a robust automatic speech recognition (ASR) system.
13
+
14
+ ## Features
15
+
16
+ - **Browse by Platform**: Filter projects by Linux, macOS, Windows, Android, iOS, Cross-Platform, and Web
17
+ - **Browse by Use Case**: Find projects for Voice Typing, Subtitles & Captioning, Meetings & Productivity, Real-Time Transcription, Developer Tools, and Model Variants
18
+ - **Search**: Quickly find projects by name or description
19
+ - **Sort**: Organize projects by name, platform, or use case
20
+
21
+ ## Data Source
22
+
23
+ The project data is sourced from the `projects.md` awesome list and automatically parsed into a structured JSON format using `parse_markdown.py`.
24
+
25
+ To update the projects database:
26
+
27
+ ```bash
28
+ python parse_markdown.py
29
+ ```
30
+
31
+ This will regenerate `projects.json` from the latest `projects.md` content.
32
+
33
+ ## Project Structure
34
+
35
+ ```
36
+ .
37
+ ├── index.html # Main HTML interface
38
+ ├── style.css # Styles for the application
39
+ ├── script.js # JavaScript for filtering and display
40
+ ├── projects.md # Source data (awesome list format)
41
+ ├── projects.json # Parsed project data
42
+ ├── parse_markdown.py # Script to convert MD to JSON
43
+ └── README.md # This file
44
+ ```
45
+
46
+ ## Development
47
+
48
+ The Space uses a static HTML/CSS/JavaScript approach:
49
+
50
+ 1. **Data Layer**: `projects.md` serves as the single source of truth
51
+ 2. **Parser**: `parse_markdown.py` extracts structured data
52
+ 3. **Frontend**: Vanilla JavaScript loads and filters the JSON data
53
+
54
+ ## About Whisper
55
+
56
+ Whisper is OpenAI's robust automatic speech recognition system trained on 680,000 hours of multilingual and multitask supervised data.
57
+
58
+ - [Official Repository](https://github.com/openai/whisper)
59
+ - [Research Paper](https://arxiv.org/abs/2212.04356)
60
+ - [Hugging Face Models](https://huggingface.co/collections/openai/whisper-release)
61
+
62
+ ## Contributing
63
+
64
+ To add new projects:
65
+
66
+ 1. Edit `projects.md` following the existing format
67
+ 2. Run `python parse_markdown.py` to regenerate the JSON
68
+ 3. Commit both `projects.md` and `projects.json`
69
+
70
+ ## License
71
+
72
+ This project browser is created to showcase the Awesome Whisper Apps collection. Individual projects have their own licenses.
index.html CHANGED
@@ -1,19 +1,81 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
  </html>
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Awesome Whisper Apps - Project Browser</title>
7
+ <link rel="stylesheet" href="style.css">
8
+ </head>
9
+ <body>
10
+ <header>
11
+ <div class="container">
12
+ <h1>🎙️ Awesome Whisper Apps</h1>
13
+ <p class="subtitle">A curated collection of applications built with OpenAI Whisper for speech recognition</p>
14
+ </div>
15
+ </header>
16
+
17
+ <main class="container">
18
+ <section class="filters">
19
+ <h2>Browse Projects</h2>
20
+ <div class="filter-group">
21
+ <div class="filter-section">
22
+ <h3>By Platform</h3>
23
+ <div class="filter-buttons" id="platform-filters">
24
+ <button class="filter-btn active" data-filter="all" data-type="platform">All Platforms</button>
25
+ <button class="filter-btn" data-filter="linux" data-type="platform">Linux</button>
26
+ <button class="filter-btn" data-filter="macos" data-type="platform">macOS</button>
27
+ <button class="filter-btn" data-filter="windows" data-type="platform">Windows</button>
28
+ <button class="filter-btn" data-filter="android" data-type="platform">Android</button>
29
+ <button class="filter-btn" data-filter="ios" data-type="platform">iOS</button>
30
+ <button class="filter-btn" data-filter="cross-platform" data-type="platform">Cross-Platform</button>
31
+ <button class="filter-btn" data-filter="web" data-type="platform">Web</button>
32
+ </div>
33
+ </div>
34
+
35
+ <div class="filter-section">
36
+ <h3>By Use Case</h3>
37
+ <div class="filter-buttons" id="usecase-filters">
38
+ <button class="filter-btn active" data-filter="all" data-type="usecase">All Use Cases</button>
39
+ <button class="filter-btn" data-filter="voice-typing" data-type="usecase">Voice Typing</button>
40
+ <button class="filter-btn" data-filter="subtitles" data-type="usecase">Subtitles & Captioning</button>
41
+ <button class="filter-btn" data-filter="meetings" data-type="usecase">Meetings & Productivity</button>
42
+ <button class="filter-btn" data-filter="real-time" data-type="usecase">Real-Time Transcription</button>
43
+ <button class="filter-btn" data-filter="developer" data-type="usecase">Developer Tools</button>
44
+ <button class="filter-btn" data-filter="model-variants" data-type="usecase">Model Variants</button>
45
+ </div>
46
+ </div>
47
+
48
+ <div class="search-section">
49
+ <input type="text" id="search-input" placeholder="Search projects by name or description...">
50
+ </div>
51
+ </div>
52
+ </section>
53
+
54
+ <section class="results">
55
+ <div class="results-header">
56
+ <h2>Projects <span id="project-count"></span></h2>
57
+ <div class="sort-controls">
58
+ <label>Sort by:</label>
59
+ <select id="sort-select">
60
+ <option value="name">Name (A-Z)</option>
61
+ <option value="platform">Platform</option>
62
+ <option value="usecase">Use Case</option>
63
+ </select>
64
+ </div>
65
+ </div>
66
+ <div id="projects-grid" class="projects-grid">
67
+ <!-- Projects will be loaded here by JavaScript -->
68
+ </div>
69
+ </section>
70
+ </main>
71
+
72
+ <footer>
73
+ <div class="container">
74
+ <p>Data sourced from the <a href="projects.md" target="_blank">Awesome Whisper Apps</a> collection</p>
75
+ <p>Learn more about <a href="https://github.com/openai/whisper" target="_blank">OpenAI Whisper</a></p>
76
+ </div>
77
+ </footer>
78
+
79
+ <script src="script.js"></script>
80
+ </body>
81
  </html>
parse_markdown.py ADDED
@@ -0,0 +1,281 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env python3
2
+ """
3
+ Parse the Awesome Whisper Apps markdown file and generate a JSON data file.
4
+ This script extracts project information from projects.md and creates projects.json
5
+ """
6
+
7
+ import json
8
+ import re
9
+ from pathlib import Path
10
+
11
+
12
+ def extract_github_repo(url):
13
+ """Extract GitHub repository from URL."""
14
+ github_match = re.search(r'github\.com/([^/]+/[^/\s)]+)', url)
15
+ if github_match:
16
+ return github_match.group(1)
17
+ return None
18
+
19
+
20
+ def parse_table_row(line, context):
21
+ """Parse a markdown table row."""
22
+ # Table format: | [Name](url) | stars_badge | Description |
23
+ parts = [p.strip() for p in line.split('|')[1:-1]] # Remove empty first/last
24
+ if len(parts) < 3:
25
+ return None
26
+
27
+ # Extract name and URL from first column
28
+ match = re.search(r'\[([^\]]+)\]\(([^)]+)\)', parts[0])
29
+ if not match:
30
+ return None
31
+
32
+ name = match.group(1)
33
+ url = match.group(2)
34
+ description = parts[2] if len(parts) > 2 else ""
35
+
36
+ return {
37
+ 'name': name,
38
+ 'url': url,
39
+ 'description': description,
40
+ 'platforms': context.get('platforms', []),
41
+ 'usecases': context.get('usecases', []),
42
+ 'github_repo': extract_github_repo(url)
43
+ }
44
+
45
+
46
+ def parse_bullet_item(line, context):
47
+ """Parse a bullet list item."""
48
+ # Format: - **[name](url)** description
49
+ # or: - **[name](url)** ![stars](badge) - description
50
+ match = re.search(r'-\s+\*\*\[([^\]]+)\]\(([^)]+)\)\*\*\s+(?:!\[GitHub[^\]]*\][^-]*-\s+)?(.+)', line)
51
+
52
+ if not match:
53
+ return None
54
+
55
+ name = match.group(1)
56
+ url = match.group(2)
57
+ description = match.group(3).strip()
58
+
59
+ return {
60
+ 'name': name,
61
+ 'url': url,
62
+ 'description': description,
63
+ 'platforms': context.get('platforms', []),
64
+ 'usecases': context.get('usecases', []),
65
+ 'github_repo': extract_github_repo(url)
66
+ }
67
+
68
+
69
+ def determine_platform_from_subsection(line, current_platforms):
70
+ """Determine platform from **Platform:** style markers."""
71
+ line_lower = line.lower()
72
+
73
+ if '**cross-platform:**' in line_lower:
74
+ return ['cross-platform']
75
+ elif '**linux:**' in line_lower:
76
+ return ['linux']
77
+ elif '**macos:**' in line_lower:
78
+ return ['macos']
79
+ elif '**windows:**' in line_lower:
80
+ return ['windows']
81
+ elif '**mobile:**' in line_lower:
82
+ return ['android', 'ios']
83
+
84
+ return current_platforms
85
+
86
+
87
+ def parse_markdown(md_path):
88
+ """Parse the markdown file and extract all projects."""
89
+ projects = []
90
+ current_context = {'platforms': [], 'usecases': []}
91
+ in_content_section = False
92
+
93
+ with open(md_path, 'r', encoding='utf-8') as f:
94
+ lines = f.readlines()
95
+
96
+ i = 0
97
+ while i < len(lines):
98
+ line = lines[i].strip()
99
+
100
+ # Start tracking only in sections with real URLs (not reference links)
101
+ if '## By Platform' in line:
102
+ in_content_section = True
103
+ current_context = {'platforms': [], 'usecases': []}
104
+ elif '## By Use Case' in line:
105
+ in_content_section = False # Skip this section (has reference links only)
106
+
107
+ # Major section headers (##)
108
+ if line.startswith('##') and in_content_section:
109
+ if 'By Platform' in line:
110
+ current_context = {'platforms': [], 'usecases': []}
111
+ elif 'For Developers' in line:
112
+ in_content_section = True
113
+ current_context = {'platforms': [], 'usecases': ['developer']}
114
+ elif 'SRT' in line or 'Subtitles' in line:
115
+ current_context['usecases'] = ['subtitles']
116
+ elif 'Meeting' in line:
117
+ current_context['usecases'] = ['meetings']
118
+ elif 'Real-Time' in line or 'Streaming' in line:
119
+ current_context['usecases'] = ['real-time']
120
+
121
+ # Subsection headers (###)
122
+ elif line.startswith('###') and in_content_section:
123
+ # Platform sections
124
+ if 'Linux' in line and '##' not in line:
125
+ current_context['platforms'] = ['linux']
126
+ elif 'macOS' in line:
127
+ current_context['platforms'] = ['macos']
128
+ elif 'Windows' in line:
129
+ current_context['platforms'] = ['windows']
130
+ elif 'Android' in line:
131
+ current_context['platforms'] = ['android']
132
+ elif 'iOS' in line:
133
+ current_context['platforms'] = ['ios']
134
+ elif 'Cross-Platform' in line:
135
+ current_context['platforms'] = ['cross-platform']
136
+ elif 'Embedded' in line or 'Raspberry' in line:
137
+ current_context['platforms'] = ['embedded']
138
+
139
+ # Use case sections
140
+ if 'Voice Typing' in line or 'Dictation' in line:
141
+ current_context['usecases'] = ['voice-typing']
142
+ elif 'SaaS' in line or 'Cloud' in line:
143
+ current_context['usecases'] = ['saas']
144
+ elif 'Subtitles' in line or 'Captioning' in line:
145
+ current_context['usecases'] = ['subtitles']
146
+ elif 'Meeting' in line or 'Productivity' in line:
147
+ current_context['usecases'] = ['meetings']
148
+ elif 'Web Interface' in line or 'Web UI' in line:
149
+ current_context['usecases'] = ['web']
150
+ current_context['platforms'] = ['web']
151
+ elif 'Real-Time' in line or 'Streaming' in line:
152
+ current_context['usecases'] = ['real-time']
153
+ elif 'Model Variants' in line or 'Performance' in line:
154
+ current_context['usecases'] = ['model-variants']
155
+ elif 'Fine-Tuning' in line or 'Diarization' in line or 'Timestamps' in line:
156
+ current_context['usecases'] = ['developer']
157
+
158
+ # Sub-subsection headers (####)
159
+ elif line.startswith('####') and in_content_section:
160
+ if 'Desktop Applications' in line:
161
+ pass # Keep current platform
162
+ elif 'System Integration' in line:
163
+ if not current_context.get('usecases'):
164
+ current_context['usecases'] = ['voice-typing']
165
+ elif 'CLI Tools' in line:
166
+ current_context['usecases'] = ['developer']
167
+
168
+ # Check for **Platform:** style subsections
169
+ elif line.startswith('**') and ':' in line and '**' in line[:20]:
170
+ current_context['platforms'] = determine_platform_from_subsection(line, current_context.get('platforms', []))
171
+
172
+ # Parse table rows
173
+ elif in_content_section and line.startswith('|') and '[' in line and '](' in line:
174
+ project = parse_table_row(line, current_context)
175
+ if project and not any(p['name'] == project['name'] for p in projects):
176
+ projects.append(project)
177
+
178
+ # Parse bullet items
179
+ elif in_content_section and line.startswith('- **['):
180
+ project = parse_bullet_item(line, current_context)
181
+ if project and not any(p['name'] == project['name'] for p in projects):
182
+ projects.append(project)
183
+
184
+ # Parse simple links (for SaaS section)
185
+ elif in_content_section and line.startswith('- [') and not line.startswith('- **['):
186
+ match = re.search(r'-\s+\[([^\]]+)\]\(([^)]+)\)\s+-\s+(.+)', line)
187
+ if match:
188
+ name = match.group(1)
189
+ url = match.group(2)
190
+ description = match.group(3).strip()
191
+
192
+ project = {
193
+ 'name': name,
194
+ 'url': url,
195
+ 'description': description,
196
+ 'platforms': current_context.get('platforms', ['web']),
197
+ 'usecases': current_context.get('usecases', ['saas']),
198
+ 'github_repo': extract_github_repo(url)
199
+ }
200
+
201
+ if not any(p['name'] == project['name'] for p in projects):
202
+ projects.append(project)
203
+
204
+ i += 1
205
+
206
+ return projects
207
+
208
+
209
+ def enhance_projects(projects):
210
+ """Add additional metadata and clean up project data."""
211
+ for project in projects:
212
+ # Ensure we have at least one use case
213
+ if not project.get('usecases'):
214
+ desc_lower = project['description'].lower()
215
+
216
+ if 'subtitle' in desc_lower or 'caption' in desc_lower or 'srt' in desc_lower:
217
+ project['usecases'] = ['subtitles']
218
+ elif 'real-time' in desc_lower or 'streaming' in desc_lower or 'live' in desc_lower:
219
+ project['usecases'] = ['real-time']
220
+ elif 'meeting' in desc_lower or 'note' in desc_lower or 'minutes' in desc_lower:
221
+ project['usecases'] = ['meetings']
222
+ elif 'dictation' in desc_lower or 'voice' in desc_lower or 'typing' in desc_lower:
223
+ project['usecases'] = ['voice-typing']
224
+ elif 'model' in desc_lower or 'implementation' in desc_lower or 'whisper' in desc_lower:
225
+ project['usecases'] = ['model-variants']
226
+ else:
227
+ project['usecases'] = ['developer']
228
+
229
+ # Ensure we have at least one platform
230
+ if not project.get('platforms'):
231
+ desc_lower = project['description'].lower()
232
+ url_lower = project['url'].lower()
233
+
234
+ if 'web' in desc_lower or 'browser' in desc_lower or 'online' in desc_lower:
235
+ project['platforms'] = ['web']
236
+ elif not project.get('github_repo'): # Non-GitHub links are likely web services
237
+ project['platforms'] = ['web']
238
+ else:
239
+ project['platforms'] = ['cross-platform']
240
+
241
+ return projects
242
+
243
+
244
+ def main():
245
+ script_dir = Path(__file__).parent
246
+ md_path = script_dir / 'projects.md'
247
+ json_path = script_dir / 'projects.json'
248
+
249
+ print(f"Parsing {md_path}...")
250
+ projects = parse_markdown(md_path)
251
+
252
+ print(f"Extracted {len(projects)} projects")
253
+
254
+ # Enhance with additional metadata
255
+ projects = enhance_projects(projects)
256
+
257
+ # Write to JSON
258
+ with open(json_path, 'w', encoding='utf-8') as f:
259
+ json.dump(projects, f, indent=2, ensure_ascii=False)
260
+
261
+ print(f"✓ Created {json_path} with {len(projects)} projects")
262
+
263
+ # Print statistics
264
+ platforms = set()
265
+ usecases = set()
266
+ for p in projects:
267
+ platforms.update(p['platforms'])
268
+ usecases.update(p['usecases'])
269
+
270
+ print(f"\nStatistics:")
271
+ print(f" Platforms: {', '.join(sorted(platforms))}")
272
+ print(f" Use cases: {', '.join(sorted(usecases))}")
273
+
274
+ # Show sample projects
275
+ print(f"\nSample projects:")
276
+ for p in projects[:5]:
277
+ print(f" - {p['name']} ({', '.join(p['platforms'])}) - {p['description'][:50]}...")
278
+
279
+
280
+ if __name__ == '__main__':
281
+ main()
projects.json ADDED
@@ -0,0 +1,638 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [
2
+ {
3
+ "name": "Buzz",
4
+ "url": "https://github.com/chidiwilliams/buzz",
5
+ "description": "Feature-rich transcription app",
6
+ "platforms": [
7
+ "cross-platform"
8
+ ],
9
+ "usecases": [
10
+ "developer"
11
+ ],
12
+ "github_repo": "chidiwilliams/buzz"
13
+ },
14
+ {
15
+ "name": "whisper-writer",
16
+ "url": "https://github.com/savbell/whisper-writer",
17
+ "description": "Voice-to-text application",
18
+ "platforms": [
19
+ "cross-platform"
20
+ ],
21
+ "usecases": [
22
+ "voice-typing"
23
+ ],
24
+ "github_repo": "savbell/whisper-writer"
25
+ },
26
+ {
27
+ "name": "faster-whisper-GUI",
28
+ "url": "https://github.com/CheshireCC/faster-whisper-GUI",
29
+ "description": "GUI for faster-whisper",
30
+ "platforms": [
31
+ "cross-platform"
32
+ ],
33
+ "usecases": [
34
+ "model-variants"
35
+ ],
36
+ "github_repo": "CheshireCC/faster-whisper-GUI"
37
+ },
38
+ {
39
+ "name": "SoftWhisper",
40
+ "url": "https://github.com/NullMagic2/SoftWhisper",
41
+ "description": "User-friendly GUI",
42
+ "platforms": [
43
+ "cross-platform"
44
+ ],
45
+ "usecases": [
46
+ "developer"
47
+ ],
48
+ "github_repo": "NullMagic2/SoftWhisper"
49
+ },
50
+ {
51
+ "name": "speech-assistant",
52
+ "url": "https://github.com/Mohamad-Hussein/speech-assistant",
53
+ "description": "Speech assistant GUI",
54
+ "platforms": [
55
+ "cross-platform"
56
+ ],
57
+ "usecases": [
58
+ "developer"
59
+ ],
60
+ "github_repo": "Mohamad-Hussein/speech-assistant"
61
+ },
62
+ {
63
+ "name": "whisper-dictation",
64
+ "url": "https://github.com/foges/whisper-dictation",
65
+ "description": "Dictation application",
66
+ "platforms": [
67
+ "cross-platform"
68
+ ],
69
+ "usecases": [
70
+ "voice-typing"
71
+ ],
72
+ "github_repo": "foges/whisper-dictation"
73
+ },
74
+ {
75
+ "name": "whisper-realtime-gui",
76
+ "url": "https://github.com/phongthanhbuiit/whisper-realtime-gui",
77
+ "description": "Real-time transcription GUI",
78
+ "platforms": [
79
+ "cross-platform"
80
+ ],
81
+ "usecases": [
82
+ "real-time"
83
+ ],
84
+ "github_repo": "phongthanhbuiit/whisper-realtime-gui"
85
+ },
86
+ {
87
+ "name": "whisper-ui",
88
+ "url": "https://github.com/schnoddelbotz/whisper-ui",
89
+ "description": "Cross-platform desktop UI",
90
+ "platforms": [
91
+ "cross-platform"
92
+ ],
93
+ "usecases": [
94
+ "developer"
95
+ ],
96
+ "github_repo": "schnoddelbotz/whisper-ui"
97
+ },
98
+ {
99
+ "name": "whisper_dictation",
100
+ "url": "https://github.com/themanyone/whisper_dictation",
101
+ "description": "Voice dictation tool",
102
+ "platforms": [
103
+ "cross-platform"
104
+ ],
105
+ "usecases": [
106
+ "voice-typing"
107
+ ],
108
+ "github_repo": "themanyone/whisper_dictation"
109
+ },
110
+ {
111
+ "name": "WhisperGUI",
112
+ "url": "https://github.com/ADT109119/WhisperGUI",
113
+ "description": "Simple GUI",
114
+ "platforms": [
115
+ "cross-platform"
116
+ ],
117
+ "usecases": [
118
+ "developer"
119
+ ],
120
+ "github_repo": "ADT109119/WhisperGUI"
121
+ },
122
+ {
123
+ "name": "froshine",
124
+ "url": "https://github.com/AdrianScott/froshine",
125
+ "description": "![GitHub stars](https://img.shields.io/github/stars/AdrianScott/froshine?style=flat-square) - Linux desktop app",
126
+ "platforms": [
127
+ "cross-platform"
128
+ ],
129
+ "usecases": [
130
+ "developer"
131
+ ],
132
+ "github_repo": "AdrianScott/froshine"
133
+ },
134
+ {
135
+ "name": "speak-to-ai",
136
+ "url": "https://github.com/AshBuk/speak-to-ai",
137
+ "description": "![GitHub stars](https://img.shields.io/github/stars/AshBuk/speak-to-ai?style=flat-square) - Voice interaction app",
138
+ "platforms": [
139
+ "cross-platform"
140
+ ],
141
+ "usecases": [
142
+ "voice-typing"
143
+ ],
144
+ "github_repo": "AshBuk/speak-to-ai"
145
+ },
146
+ {
147
+ "name": "Whisper-Notepad-For-Linux",
148
+ "url": "https://github.com/danielrosehill/Whisper-Notepad-For-Linux",
149
+ "description": "![GitHub stars](https://img.shields.io/github/stars/danielrosehill/Whisper-Notepad-For-Linux?style=flat-square) - Notepad-style transcription",
150
+ "platforms": [
151
+ "cross-platform"
152
+ ],
153
+ "usecases": [
154
+ "meetings"
155
+ ],
156
+ "github_repo": "danielrosehill/Whisper-Notepad-For-Linux"
157
+ },
158
+ {
159
+ "name": "WhisperNow",
160
+ "url": "https://github.com/shinglyu/WhisperNow",
161
+ "description": "![GitHub stars](https://img.shields.io/github/stars/shinglyu/WhisperNow?style=flat-square) - Desktop application",
162
+ "platforms": [
163
+ "cross-platform"
164
+ ],
165
+ "usecases": [
166
+ "model-variants"
167
+ ],
168
+ "github_repo": "shinglyu/WhisperNow"
169
+ },
170
+ {
171
+ "name": "whisper.cpp-cli",
172
+ "url": "https://github.com/charliermarsh/whisper.cpp-cli",
173
+ "description": "![GitHub stars](https://img.shields.io/github/stars/charliermarsh/whisper.cpp-cli?style=flat-square) - CLI for whisper.cpp",
174
+ "platforms": [
175
+ "cross-platform"
176
+ ],
177
+ "usecases": [
178
+ "model-variants"
179
+ ],
180
+ "github_repo": "charliermarsh/whisper.cpp-cli"
181
+ },
182
+ {
183
+ "name": "blurt",
184
+ "url": "https://github.com/QuantiusBenignus/blurt",
185
+ "description": "![GitHub stars](https://img.shields.io/github/stars/QuantiusBenignus/blurt?style=flat-square) - Command-line transcription tool",
186
+ "platforms": [
187
+ "cross-platform"
188
+ ],
189
+ "usecases": [
190
+ "developer"
191
+ ],
192
+ "github_repo": "QuantiusBenignus/blurt"
193
+ },
194
+ {
195
+ "name": "nerd-dictation",
196
+ "url": "https://github.com/ideasman42/nerd-dictation",
197
+ "description": "![GitHub stars](https://img.shields.io/github/stars/ideasman42/nerd-dictation?style=flat-square) - Hackable offline STT (VOSK-API)",
198
+ "platforms": [
199
+ "cross-platform"
200
+ ],
201
+ "usecases": [
202
+ "voice-typing"
203
+ ],
204
+ "github_repo": "ideasman42/nerd-dictation"
205
+ },
206
+ {
207
+ "name": "BlahST",
208
+ "url": "https://github.com/QuantiusBenignus/BlahST",
209
+ "description": "![GitHub stars](https://img.shields.io/github/stars/QuantiusBenignus/BlahST?style=flat-square) - Speech-to-text integration",
210
+ "platforms": [
211
+ "cross-platform"
212
+ ],
213
+ "usecases": [
214
+ "developer"
215
+ ],
216
+ "github_repo": "QuantiusBenignus/BlahST"
217
+ },
218
+ {
219
+ "name": "Linux-Dictation-Project",
220
+ "url": "https://github.com/wheeler01/Linux-Dictation-Project",
221
+ "description": "![GitHub stars](https://img.shields.io/github/stars/wheeler01/Linux-Dictation-Project?style=flat-square) - Dictation system",
222
+ "platforms": [
223
+ "cross-platform"
224
+ ],
225
+ "usecases": [
226
+ "voice-typing"
227
+ ],
228
+ "github_repo": "wheeler01/Linux-Dictation-Project"
229
+ },
230
+ {
231
+ "name": "linux-stt-input",
232
+ "url": "https://github.com/fengwk/linux-stt-input",
233
+ "description": "![GitHub stars](https://img.shields.io/github/stars/fengwk/linux-stt-input?style=flat-square) - STT input method",
234
+ "platforms": [
235
+ "cross-platform"
236
+ ],
237
+ "usecases": [
238
+ "developer"
239
+ ],
240
+ "github_repo": "fengwk/linux-stt-input"
241
+ },
242
+ {
243
+ "name": "linux-voice-to-text-ai",
244
+ "url": "https://github.com/trebormc/linux-voice-to-text-ai",
245
+ "description": "![GitHub stars](https://img.shields.io/github/stars/trebormc/linux-voice-to-text-ai?style=flat-square) - Voice-to-text AI",
246
+ "platforms": [
247
+ "cross-platform"
248
+ ],
249
+ "usecases": [
250
+ "voice-typing"
251
+ ],
252
+ "github_repo": "trebormc/linux-voice-to-text-ai"
253
+ },
254
+ {
255
+ "name": "LinuxWhisper",
256
+ "url": "https://github.com/vitali87/LinuxWhisper",
257
+ "description": "![GitHub stars](https://img.shields.io/github/stars/vitali87/LinuxWhisper?style=flat-square) - Linux implementation",
258
+ "platforms": [
259
+ "cross-platform"
260
+ ],
261
+ "usecases": [
262
+ "model-variants"
263
+ ],
264
+ "github_repo": "vitali87/LinuxWhisper"
265
+ },
266
+ {
267
+ "name": "voice-typing-linux",
268
+ "url": "https://github.com/GitJuhb/voice-typing-linux",
269
+ "description": "![GitHub stars](https://img.shields.io/github/stars/GitJuhb/voice-typing-linux?style=flat-square) - Voice typing integration",
270
+ "platforms": [
271
+ "cross-platform"
272
+ ],
273
+ "usecases": [
274
+ "voice-typing"
275
+ ],
276
+ "github_repo": "GitJuhb/voice-typing-linux"
277
+ },
278
+ {
279
+ "name": "Whisper-Dictation",
280
+ "url": "https://github.com/LumenYoung/Whisper-Dictation",
281
+ "description": "![GitHub stars](https://img.shields.io/github/stars/LumenYoung/Whisper-Dictation?style=flat-square) - Dictation system",
282
+ "platforms": [
283
+ "cross-platform"
284
+ ],
285
+ "usecases": [
286
+ "voice-typing"
287
+ ],
288
+ "github_repo": "LumenYoung/Whisper-Dictation"
289
+ },
290
+ {
291
+ "name": "whisper-flow-linux",
292
+ "url": "https://github.com/sapountzis/whisper-flow-linux",
293
+ "description": "![GitHub stars](https://img.shields.io/github/stars/sapountzis/whisper-flow-linux?style=flat-square) - Workflow integration",
294
+ "platforms": [
295
+ "cross-platform"
296
+ ],
297
+ "usecases": [
298
+ "model-variants"
299
+ ],
300
+ "github_repo": "sapountzis/whisper-flow-linux"
301
+ },
302
+ {
303
+ "name": "whisper-hotkey-linux",
304
+ "url": "https://github.com/atkvishnu/whisper-hotkey-linux",
305
+ "description": "![GitHub stars](https://img.shields.io/github/stars/atkvishnu/whisper-hotkey-linux?style=flat-square) - Hotkey-based integration",
306
+ "platforms": [
307
+ "cross-platform"
308
+ ],
309
+ "usecases": [
310
+ "model-variants"
311
+ ],
312
+ "github_repo": "atkvishnu/whisper-hotkey-linux"
313
+ },
314
+ {
315
+ "name": "whispertrigger",
316
+ "url": "https://github.com/RetroTrigger/whispertrigger",
317
+ "description": "![GitHub stars](https://img.shields.io/github/stars/RetroTrigger/whispertrigger?style=flat-square) - System integration",
318
+ "platforms": [
319
+ "cross-platform"
320
+ ],
321
+ "usecases": [
322
+ "model-variants"
323
+ ],
324
+ "github_repo": "RetroTrigger/whispertrigger"
325
+ },
326
+ {
327
+ "name": "whisprd",
328
+ "url": "https://github.com/AgenticToaster/whisprd",
329
+ "description": "![GitHub stars](https://img.shields.io/github/stars/AgenticToaster/whisprd?style=flat-square) - Whisper daemon",
330
+ "platforms": [
331
+ "cross-platform"
332
+ ],
333
+ "usecases": [
334
+ "model-variants"
335
+ ],
336
+ "github_repo": "AgenticToaster/whisprd"
337
+ },
338
+ {
339
+ "name": "whisper-to-input",
340
+ "url": "https://github.com/j3soon/whisper-to-input",
341
+ "description": "![GitHub stars](https://img.shields.io/github/stars/j3soon/whisper-to-input?style=flat-square) - Transcription to keyboard input",
342
+ "platforms": [
343
+ "cross-platform"
344
+ ],
345
+ "usecases": [
346
+ "model-variants"
347
+ ],
348
+ "github_repo": "j3soon/whisper-to-input"
349
+ },
350
+ {
351
+ "name": "whispy",
352
+ "url": "https://github.com/daaku/whispy",
353
+ "description": "![GitHub stars](https://img.shields.io/github/stars/daaku/whispy?style=flat-square) - Integration tool",
354
+ "platforms": [
355
+ "cross-platform"
356
+ ],
357
+ "usecases": [
358
+ "developer"
359
+ ],
360
+ "github_repo": "daaku/whispy"
361
+ },
362
+ {
363
+ "name": "dicti",
364
+ "url": "https://github.com/tksimson/dicti",
365
+ "description": "![GitHub stars](https://img.shields.io/github/stars/tksimson/dicti?style=flat-square) - Dictation tool",
366
+ "platforms": [
367
+ "cross-platform"
368
+ ],
369
+ "usecases": [
370
+ "voice-typing"
371
+ ],
372
+ "github_repo": "tksimson/dicti"
373
+ },
374
+ {
375
+ "name": "sonori",
376
+ "url": "https://github.com/0xPD33/sonori",
377
+ "description": "![GitHub stars](https://img.shields.io/github/stars/0xPD33/sonori?style=flat-square) - Voice input system",
378
+ "platforms": [
379
+ "cross-platform"
380
+ ],
381
+ "usecases": [
382
+ "voice-typing"
383
+ ],
384
+ "github_repo": "0xPD33/sonori"
385
+ },
386
+ {
387
+ "name": "hushnote",
388
+ "url": "https://github.com/peteonrails/hushnote",
389
+ "description": "![GitHub stars](https://img.shields.io/github/stars/peteonrails/hushnote?style=flat-square) - Private note-taking",
390
+ "platforms": [
391
+ "cross-platform"
392
+ ],
393
+ "usecases": [
394
+ "meetings"
395
+ ],
396
+ "github_repo": "peteonrails/hushnote"
397
+ },
398
+ {
399
+ "name": "Local-Voice",
400
+ "url": "https://github.com/shashank2122/Local-Voice",
401
+ "description": "![GitHub stars](https://img.shields.io/github/stars/shashank2122/Local-Voice?style=flat-square) - Local voice processing",
402
+ "platforms": [
403
+ "cross-platform"
404
+ ],
405
+ "usecases": [
406
+ "voice-typing"
407
+ ],
408
+ "github_repo": "shashank2122/Local-Voice"
409
+ },
410
+ {
411
+ "name": "s2t",
412
+ "url": "https://github.com/franchesoni/s2t",
413
+ "description": "![GitHub stars](https://img.shields.io/github/stars/franchesoni/s2t?style=flat-square) - Speech-to-text",
414
+ "platforms": [
415
+ "cross-platform"
416
+ ],
417
+ "usecases": [
418
+ "developer"
419
+ ],
420
+ "github_repo": "franchesoni/s2t"
421
+ },
422
+ {
423
+ "name": "Whisper-Notepad-Simple",
424
+ "url": "https://github.com/danielrosehill/Whisper-Notepad-Simple",
425
+ "description": "![GitHub stars](https://img.shields.io/github/stars/danielrosehill/Whisper-Notepad-Simple?style=flat-square) - Simple notepad app",
426
+ "platforms": [
427
+ "cross-platform"
428
+ ],
429
+ "usecases": [
430
+ "meetings"
431
+ ],
432
+ "github_repo": "danielrosehill/Whisper-Notepad-Simple"
433
+ },
434
+ {
435
+ "name": "Linux-AI-Assistant-scripts",
436
+ "url": "https://github.com/samoylenkodmitry/Linux-AI-Assistant-scripts",
437
+ "description": "![GitHub stars](https://img.shields.io/github/stars/samoylenkodmitry/Linux-AI-Assistant-scripts?style=flat-square) - AI assistant scripts",
438
+ "platforms": [
439
+ "cross-platform"
440
+ ],
441
+ "usecases": [
442
+ "developer"
443
+ ],
444
+ "github_repo": "samoylenkodmitry/Linux-AI-Assistant-scripts"
445
+ },
446
+ {
447
+ "name": "SuperWhisper",
448
+ "url": "https://superwhisper.com/",
449
+ "description": "- Premium Mac voice-to-text app",
450
+ "platforms": [
451
+ "web"
452
+ ],
453
+ "usecases": [
454
+ "voice-typing"
455
+ ],
456
+ "github_repo": null
457
+ },
458
+ {
459
+ "name": "OpenSuperWhisper",
460
+ "url": "https://github.com/Starmel/OpenSuperWhisper",
461
+ "description": "![GitHub stars](https://img.shields.io/github/stars/Starmel/OpenSuperWhisper?style=flat-square) - Open-source Mac app",
462
+ "platforms": [
463
+ "cross-platform"
464
+ ],
465
+ "usecases": [
466
+ "model-variants"
467
+ ],
468
+ "github_repo": "Starmel/OpenSuperWhisper"
469
+ },
470
+ {
471
+ "name": "WhisperKit",
472
+ "url": "https://github.com/argmaxinc/WhisperKit",
473
+ "description": "![GitHub stars](https://img.shields.io/github/stars/argmaxinc/WhisperKit?style=flat-square) - Native macOS implementation",
474
+ "platforms": [
475
+ "cross-platform"
476
+ ],
477
+ "usecases": [
478
+ "model-variants"
479
+ ],
480
+ "github_repo": "argmaxinc/WhisperKit"
481
+ },
482
+ {
483
+ "name": "Careless Whisper",
484
+ "url": "https://carelesswhisper.app/",
485
+ "description": "- Lightweight transcription app",
486
+ "platforms": [
487
+ "web"
488
+ ],
489
+ "usecases": [
490
+ "developer"
491
+ ],
492
+ "github_repo": null
493
+ },
494
+ {
495
+ "name": "ollama-voice-mac",
496
+ "url": "https://github.com/apeatling/ollama-voice-mac",
497
+ "description": "![GitHub stars](https://img.shields.io/github/stars/apeatling/ollama-voice-mac?style=flat-square) - Voice interface for Ollama",
498
+ "platforms": [
499
+ "cross-platform"
500
+ ],
501
+ "usecases": [
502
+ "voice-typing"
503
+ ],
504
+ "github_repo": "apeatling/ollama-voice-mac"
505
+ },
506
+ {
507
+ "name": "whisperanywhere-js",
508
+ "url": "https://github.com/unclecode/whisperanywhere-js",
509
+ "description": "![GitHub stars](https://img.shields.io/github/stars/unclecode/whisperanywhere-js?style=flat-square) - System-wide transcription",
510
+ "platforms": [
511
+ "cross-platform"
512
+ ],
513
+ "usecases": [
514
+ "model-variants"
515
+ ],
516
+ "github_repo": "unclecode/whisperanywhere-js"
517
+ },
518
+ {
519
+ "name": "AI Transcription",
520
+ "url": "https://apps.microsoft.com/detail/9p7f1j2svk3g",
521
+ "description": "- Microsoft Store app",
522
+ "platforms": [
523
+ "web"
524
+ ],
525
+ "usecases": [
526
+ "developer"
527
+ ],
528
+ "github_repo": null
529
+ },
530
+ {
531
+ "name": "Whisper Typing for Windows",
532
+ "url": "https://whispertyping.com/download",
533
+ "description": "- Desktop voice typing",
534
+ "platforms": [
535
+ "web"
536
+ ],
537
+ "usecases": [
538
+ "voice-typing"
539
+ ],
540
+ "github_repo": null
541
+ },
542
+ {
543
+ "name": "WinWhisper",
544
+ "url": "https://github.com/GewoonJaap/WinWhisper",
545
+ "description": "![GitHub stars](https://img.shields.io/github/stars/GewoonJaap/WinWhisper?style=flat-square) - System-wide hotkey support",
546
+ "platforms": [
547
+ "cross-platform"
548
+ ],
549
+ "usecases": [
550
+ "model-variants"
551
+ ],
552
+ "github_repo": "GewoonJaap/WinWhisper"
553
+ },
554
+ {
555
+ "name": "whisperIME",
556
+ "url": "https://github.com/woheller69/whisperIME",
557
+ "description": "![GitHub stars](https://img.shields.io/github/stars/woheller69/whisperIME?style=flat-square) - Input method editor",
558
+ "platforms": [
559
+ "cross-platform"
560
+ ],
561
+ "usecases": [
562
+ "model-variants"
563
+ ],
564
+ "github_repo": "woheller69/whisperIME"
565
+ },
566
+ {
567
+ "name": "WhisperInput",
568
+ "url": "https://github.com/alex-vt/WhisperInput",
569
+ "description": "![GitHub stars](https://img.shields.io/github/stars/alex-vt/WhisperInput?style=flat-square) - Input app",
570
+ "platforms": [
571
+ "cross-platform"
572
+ ],
573
+ "usecases": [
574
+ "model-variants"
575
+ ],
576
+ "github_repo": "alex-vt/WhisperInput"
577
+ },
578
+ {
579
+ "name": "WhisperKitAndroid",
580
+ "url": "https://github.com/argmaxinc/WhisperKitAndroid",
581
+ "description": "![GitHub stars](https://img.shields.io/github/stars/argmaxinc/WhisperKitAndroid?style=flat-square) - WhisperKit for Android",
582
+ "platforms": [
583
+ "cross-platform"
584
+ ],
585
+ "usecases": [
586
+ "model-variants"
587
+ ],
588
+ "github_repo": "argmaxinc/WhisperKitAndroid"
589
+ },
590
+ {
591
+ "name": "RTranslator",
592
+ "url": "https://github.com/niedev/RTranslator",
593
+ "description": "![GitHub stars](https://img.shields.io/github/stars/niedev/RTranslator?style=flat-square) - Real-time translation app",
594
+ "platforms": [
595
+ "cross-platform"
596
+ ],
597
+ "usecases": [
598
+ "real-time"
599
+ ],
600
+ "github_repo": "niedev/RTranslator"
601
+ },
602
+ {
603
+ "name": "Dictate",
604
+ "url": "https://github.com/DevEmperor/Dictate",
605
+ "description": "![GitHub stars](https://img.shields.io/github/stars/DevEmperor/Dictate?style=flat-square) - Voice dictation app",
606
+ "platforms": [
607
+ "cross-platform"
608
+ ],
609
+ "usecases": [
610
+ "voice-typing"
611
+ ],
612
+ "github_repo": "DevEmperor/Dictate"
613
+ },
614
+ {
615
+ "name": "whisper_android",
616
+ "url": "https://github.com/vilassn/whisper_android",
617
+ "description": "![GitHub stars](https://img.shields.io/github/stars/vilassn/whisper_android?style=flat-square) - Android integration",
618
+ "platforms": [
619
+ "cross-platform"
620
+ ],
621
+ "usecases": [
622
+ "model-variants"
623
+ ],
624
+ "github_repo": "vilassn/whisper_android"
625
+ },
626
+ {
627
+ "name": "Whisperboard",
628
+ "url": "https://github.com/Saik0s/Whisperboard",
629
+ "description": "![GitHub stars](https://img.shields.io/github/stars/Saik0s/Whisperboard?style=flat-square) - iOS keyboard with Whisper integration",
630
+ "platforms": [
631
+ "cross-platform"
632
+ ],
633
+ "usecases": [
634
+ "model-variants"
635
+ ],
636
+ "github_repo": "Saik0s/Whisperboard"
637
+ }
638
+ ]
projects.md ADDED
@@ -0,0 +1,632 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Awesome Whisper Apps
2
+
3
+ A curated collection of applications, tools, and resources built with [OpenAI Whisper](https://github.com/openai/whisper) - a robust automatic speech recognition (ASR) system trained on 680,000 hours of multilingual and multitask supervised data.
4
+
5
+ ## Table of Contents
6
+
7
+ - [Quick Start Guide](#quick-start-guide)
8
+ - [Popular Picks](#popular-picks)
9
+ - [Getting Started](#getting-started)
10
+ - [By Use Case](#by-use-case)
11
+ - [By Platform](#by-platform)
12
+ - [For Developers](#for-developers)
13
+ - [Resources](#resources)
14
+
15
+ ## Quick Start Guide
16
+
17
+ **Looking for something specific?**
18
+
19
+ - **Voice typing on Linux?** → [Linux System Integration](#linux-system-integration) or try [nerd-dictation](#nerd-dictation)
20
+ - **Voice typing on Mac?** → [macOS Apps](#macos) or try [SuperWhisper](#superwhisper)
21
+ - **Voice typing on Windows?** → [Windows Apps](#windows) or try [WinWhisper](#winwhisper)
22
+ - **Cross-platform desktop app?** → Try [Buzz](#buzz) or [whisper-writer](#whisper-writer)
23
+ - **Generate video subtitles?** → [Subtitles & Captioning](#srt--subtitles--captioning)
24
+ - **Real-time transcription?** → [Real-Time & Streaming](#real-time--streaming)
25
+ - **Meeting transcription?** → [Meeting & Productivity](#meeting--productivity)
26
+ - **Cloud/SaaS solution?** → [SaaS Platforms](#saas-platforms)
27
+ - **Self-hosted web interface?** → [Web UI](#web-ui)
28
+ - **Mobile app?** → [Android](#android) or [iOS](#ios)
29
+ - **Developer integration?** → [Libraries & APIs](#libraries--apis) or [Model Variants](#model-variants)
30
+
31
+ ## Popular Picks
32
+
33
+ Top projects by community engagement and activity:
34
+
35
+ ### Desktop Applications
36
+ | Project | Platform | Stars | Description |
37
+ |---------|----------|-------|-------------|
38
+ | [Buzz](#buzz) | Cross-platform | ![GitHub stars](https://img.shields.io/github/stars/chidiwilliams/buzz?style=flat-square) | Feature-rich desktop transcription app |
39
+ | [whisper-writer](#whisper-writer) | Cross-platform | ![GitHub stars](https://img.shields.io/github/stars/savbell/whisper-writer?style=flat-square) | Voice-to-text for system-wide input |
40
+ | [SuperWhisper](#superwhisper) | macOS | N/A | Premium Mac app for voice-to-text |
41
+ | [WinWhisper](#winwhisper) | Windows | ![GitHub stars](https://img.shields.io/github/stars/GewoonJaap/WinWhisper?style=flat-square) | System-wide hotkey support for Windows |
42
+
43
+ ### Model Variants & Performance
44
+ | Project | Stars | Description |
45
+ |---------|-------|-------------|
46
+ | [whisper.cpp](#whispercpp) | ![GitHub stars](https://img.shields.io/github/stars/ggerganov/whisper.cpp?style=flat-square) | High-performance C/C++ implementation |
47
+ | [faster-whisper](#faster-whisper) | ![GitHub stars](https://img.shields.io/github/stars/SYSTRAN/faster-whisper?style=flat-square) | Faster implementation using CTranslate2 |
48
+ | [WhisperX](#whisperx) | ![GitHub stars](https://img.shields.io/github/stars/m-bain/whisperX?style=flat-square) | Word-level timestamps + speaker diarization |
49
+ | [insanely-fast-whisper](#insanely-fast-whisper) | ![GitHub stars](https://img.shields.io/github/stars/Vaibhavs10/insanely-fast-whisper?style=flat-square) | Speed-optimized implementation |
50
+
51
+ ### Developer Tools
52
+ | Project | Stars | Description |
53
+ |---------|-------|-------------|
54
+ | [WhisperLive](#whisperlive) | ![GitHub stars](https://img.shields.io/github/stars/collabora/WhisperLive?style=flat-square) | Real-time transcription server |
55
+ | [whisper_streaming](#whisper_streaming) | ![GitHub stars](https://img.shields.io/github/stars/ufal/whisper_streaming?style=flat-square) | Long-form streaming transcription |
56
+ | [Whisper-WebUI](#whisper-webui) | ![GitHub stars](https://img.shields.io/github/stars/jhj0517/Whisper-WebUI?style=flat-square) | Self-hosted web interface |
57
+
58
+ ## Getting Started
59
+
60
+ ### Official Whisper & Models
61
+
62
+ **Official Repository:** [openai/whisper](https://github.com/openai/whisper) ![GitHub stars](https://img.shields.io/github/stars/openai/whisper?style=flat-square)
63
+
64
+ **Hugging Face Collection:** [Whisper Model Release](https://huggingface.co/collections/openai/whisper-release)
65
+
66
+ **Official Paper:** [Robust Speech Recognition via Large-Scale Weak Supervision](https://arxiv.org/abs/2212.04356)
67
+
68
+ ### Official Model Sizes
69
+
70
+ Choose based on your accuracy/speed requirements:
71
+
72
+ | Model | Parameters | English-only | Multilingual | Relative Speed | Use Case |
73
+ |-------|------------|--------------|--------------|----------------|----------|
74
+ | [tiny](https://huggingface.co/openai/whisper-tiny) | 39M | ✓ | ✓ | Fastest | Minimal resource usage, real-time apps |
75
+ | [base](https://huggingface.co/openai/whisper-base) | 74M | ✓ | ✓ | Very Fast | Resource-constrained environments |
76
+ | [small](https://huggingface.co/openai/whisper-small) | 244M | ✓ | ✓ | Fast | Good balance for most use cases |
77
+ | [medium](https://huggingface.co/openai/whisper-medium) | 769M | ✓ | ✓ | Moderate | Better accuracy, moderate speed |
78
+ | [large](https://huggingface.co/openai/whisper-large) | 1550M | - | ✓ | Slower | Best accuracy, research use |
79
+
80
+ ---
81
+
82
+ ## By Use Case
83
+
84
+ ### Voice Typing & Dictation
85
+
86
+ **Cross-Platform:**
87
+ - [Buzz](#buzz) - Feature-rich desktop app
88
+ - [whisper-writer](#whisper-writer) - System-wide voice-to-text
89
+ - [whisper-dictation](#whisper-dictation) - Dictation application
90
+
91
+ **Linux:**
92
+ - [nerd-dictation](#nerd-dictation) - Hackable offline speech-to-text
93
+ - [BlahST](#blahst) - Linux speech-to-text integration
94
+ - [whisper-to-input](#whisper-to-input) - Convert transcription to keyboard input
95
+ - [voice-typing-linux](#voice-typing-linux) - Voice typing integration
96
+
97
+ **macOS:**
98
+ - [SuperWhisper](#superwhisper) - Premium Mac voice-to-text app
99
+ - [OpenSuperWhisper](#opensuperwhisper) - Open-source Mac app
100
+ - [WhisperKit](#whisperkit) - Native macOS implementation
101
+
102
+ **Windows:**
103
+ - [WinWhisper](#winwhisper) - System-wide hotkey support
104
+ - [Whisper Typing for Windows](#whisper-typing-for-windows) - Desktop voice typing
105
+
106
+ **Mobile:**
107
+ - [whisperIME](#whisperime) (Android) - Input method editor
108
+ - [Whisperboard](#whisperboard) (iOS) - Keyboard with Whisper
109
+
110
+ ### SaaS Platforms & Cloud Services
111
+
112
+ - [Whisper Transcribe](https://www.whispertranscribe.com/) - Online transcription platform
113
+ - [WhisperAI](https://whisperai.com) - Cloud-based transcription service
114
+ - [Whisper Typing](https://whispertyping.com/) - Online typing and transcription
115
+ - [Wisprflow](https://wisprflow.ai/) - Workflow automation with transcription
116
+ - [CleverType](https://www.clevertype.co/) - Smart typing assistant
117
+ - [SpeechPulse](https://speechpulse.com/) - Cross-platform speech-to-text
118
+ - [Blabby.ai](https://www.blabby.ai/) - Browser-based transcription
119
+
120
+ ### Subtitles & Captioning
121
+
122
+ Generate subtitles and captions for videos:
123
+
124
+ - **[auto-subs](https://github.com/tmoroney/auto-subs)** ![GitHub stars](https://img.shields.io/github/stars/tmoroney/auto-subs?style=flat-square) - Automatic subtitle generation
125
+ - **[TeroSubtitler](https://github.com/URUWorks/TeroSubtitler)** ![GitHub stars](https://img.shields.io/github/stars/URUWorks/TeroSubtitler?style=flat-square) - Professional subtitle editor
126
+ - **[whisper-youtube](https://github.com/ArthurFDLR/whisper-youtube)** ![GitHub stars](https://img.shields.io/github/stars/ArthurFDLR/whisper-youtube?style=flat-square) - YouTube subtitle generation
127
+ - **[yt-whisper](https://github.com/m1guelpf/yt-whisper)** ![GitHub stars](https://img.shields.io/github/stars/m1guelpf/yt-whisper?style=flat-square) - YouTube transcription tool
128
+ - **[whisper-subs](https://github.com/GhostNaN/whisper-subs)** ![GitHub stars](https://img.shields.io/github/stars/GhostNaN/whisper-subs?style=flat-square) - CLI for adding subtitles to videos
129
+ - **[whisply](https://github.com/tsmdt/whisply)** ![GitHub stars](https://img.shields.io/github/stars/tsmdt/whisply?style=flat-square) - Automatic subtitle generation (Linux)
130
+ - **[template-tiktok](https://github.com/remotion-dev/template-tiktok)** ![GitHub stars](https://img.shields.io/github/stars/remotion-dev/template-tiktok?style=flat-square) - TikTok-style captioning with Remotion
131
+
132
+ ### Meeting & Productivity
133
+
134
+ Tools for transcribing meetings and generating notes:
135
+
136
+ - **[meeting-minutes](https://github.com/Zackriya-Solutions/meeting-minutes)** ![GitHub stars](https://img.shields.io/github/stars/Zackriya-Solutions/meeting-minutes?style=flat-square) - Generate meeting minutes
137
+ - **[ScribeWizard](https://github.com/Bklieger/ScribeWizard)** ![GitHub stars](https://img.shields.io/github/stars/Bklieger/ScribeWizard?style=flat-square) - AI-powered note-taking
138
+
139
+ ### Web Interfaces
140
+
141
+ **Self-Hosted:**
142
+ - **[Whisper-WebUI](https://github.com/jhj0517/Whisper-WebUI)** ![GitHub stars](https://img.shields.io/github/stars/jhj0517/Whisper-WebUI?style=flat-square) - Web interface for transcription
143
+ - **[NeuroSandboxWebUI](https://github.com/Dartvauder/NeuroSandboxWebUI)** ![GitHub stars](https://img.shields.io/github/stars/Dartvauder/NeuroSandboxWebUI?style=flat-square) - Comprehensive web UI for AI models
144
+
145
+ ---
146
+
147
+ ## By Platform
148
+
149
+ ### Cross-Platform Desktop Applications
150
+
151
+ Applications that work on Linux, macOS, and Windows:
152
+
153
+ | Project | Stars | Description |
154
+ |---------|-------|-------------|
155
+ | [Buzz](https://github.com/chidiwilliams/buzz) | ![GitHub stars](https://img.shields.io/github/stars/chidiwilliams/buzz?style=flat-square) | Feature-rich transcription app |
156
+ | [whisper-writer](https://github.com/savbell/whisper-writer) | ![GitHub stars](https://img.shields.io/github/stars/savbell/whisper-writer?style=flat-square) | Voice-to-text application |
157
+ | [faster-whisper-GUI](https://github.com/CheshireCC/faster-whisper-GUI) | ![GitHub stars](https://img.shields.io/github/stars/CheshireCC/faster-whisper-GUI?style=flat-square) | GUI for faster-whisper |
158
+ | [SoftWhisper](https://github.com/NullMagic2/SoftWhisper) | ![GitHub stars](https://img.shields.io/github/stars/NullMagic2/SoftWhisper?style=flat-square) | User-friendly GUI |
159
+ | [speech-assistant](https://github.com/Mohamad-Hussein/speech-assistant) | ![GitHub stars](https://img.shields.io/github/stars/Mohamad-Hussein/speech-assistant?style=flat-square) | Speech assistant GUI |
160
+ | [whisper-dictation](https://github.com/foges/whisper-dictation) | ![GitHub stars](https://img.shields.io/github/stars/foges/whisper-dictation?style=flat-square) | Dictation application |
161
+ | [whisper-realtime-gui](https://github.com/phongthanhbuiit/whisper-realtime-gui) | ![GitHub stars](https://img.shields.io/github/stars/phongthanhbuiit/whisper-realtime-gui?style=flat-square) | Real-time transcription GUI |
162
+ | [whisper-ui](https://github.com/schnoddelbotz/whisper-ui) | ![GitHub stars](https://img.shields.io/github/stars/schnoddelbotz/whisper-ui?style=flat-square) | Cross-platform desktop UI |
163
+ | [whisper_dictation](https://github.com/themanyone/whisper_dictation) | ![GitHub stars](https://img.shields.io/github/stars/themanyone/whisper_dictation?style=flat-square) | Voice dictation tool |
164
+ | [WhisperGUI](https://github.com/ADT109119/WhisperGUI) | ![GitHub stars](https://img.shields.io/github/stars/ADT109119/WhisperGUI?style=flat-square) | Simple GUI |
165
+
166
+ ### Linux
167
+
168
+ #### Desktop Applications
169
+ - **[froshine](https://github.com/AdrianScott/froshine)** ![GitHub stars](https://img.shields.io/github/stars/AdrianScott/froshine?style=flat-square) - Linux desktop app
170
+ - **[speak-to-ai](https://github.com/AshBuk/speak-to-ai)** ![GitHub stars](https://img.shields.io/github/stars/AshBuk/speak-to-ai?style=flat-square) - Voice interaction app
171
+ - **[Whisper-Notepad-For-Linux](https://github.com/danielrosehill/Whisper-Notepad-For-Linux)** ![GitHub stars](https://img.shields.io/github/stars/danielrosehill/Whisper-Notepad-For-Linux?style=flat-square) - Notepad-style transcription
172
+ - **[WhisperNow](https://github.com/shinglyu/WhisperNow)** ![GitHub stars](https://img.shields.io/github/stars/shinglyu/WhisperNow?style=flat-square) - Desktop application
173
+
174
+ #### CLI Tools
175
+ - **[whisper.cpp-cli](https://github.com/charliermarsh/whisper.cpp-cli)** ![GitHub stars](https://img.shields.io/github/stars/charliermarsh/whisper.cpp-cli?style=flat-square) - CLI for whisper.cpp
176
+ - **[blurt](https://github.com/QuantiusBenignus/blurt)** ![GitHub stars](https://img.shields.io/github/stars/QuantiusBenignus/blurt?style=flat-square) - Command-line transcription tool
177
+
178
+ #### System Integration
179
+ - **[nerd-dictation](https://github.com/ideasman42/nerd-dictation)** ![GitHub stars](https://img.shields.io/github/stars/ideasman42/nerd-dictation?style=flat-square) - Hackable offline STT (VOSK-API)
180
+ - **[BlahST](https://github.com/QuantiusBenignus/BlahST)** ![GitHub stars](https://img.shields.io/github/stars/QuantiusBenignus/BlahST?style=flat-square) - Speech-to-text integration
181
+ - **[Linux-Dictation-Project](https://github.com/wheeler01/Linux-Dictation-Project)** ![GitHub stars](https://img.shields.io/github/stars/wheeler01/Linux-Dictation-Project?style=flat-square) - Dictation system
182
+ - **[linux-stt-input](https://github.com/fengwk/linux-stt-input)** ![GitHub stars](https://img.shields.io/github/stars/fengwk/linux-stt-input?style=flat-square) - STT input method
183
+ - **[linux-voice-to-text-ai](https://github.com/trebormc/linux-voice-to-text-ai)** ![GitHub stars](https://img.shields.io/github/stars/trebormc/linux-voice-to-text-ai?style=flat-square) - Voice-to-text AI
184
+ - **[LinuxWhisper](https://github.com/vitali87/LinuxWhisper)** ![GitHub stars](https://img.shields.io/github/stars/vitali87/LinuxWhisper?style=flat-square) - Linux implementation
185
+ - **[voice-typing-linux](https://github.com/GitJuhb/voice-typing-linux)** ![GitHub stars](https://img.shields.io/github/stars/GitJuhb/voice-typing-linux?style=flat-square) - Voice typing integration
186
+ - **[Whisper-Dictation](https://github.com/LumenYoung/Whisper-Dictation)** ![GitHub stars](https://img.shields.io/github/stars/LumenYoung/Whisper-Dictation?style=flat-square) - Dictation system
187
+ - **[whisper-flow-linux](https://github.com/sapountzis/whisper-flow-linux)** ![GitHub stars](https://img.shields.io/github/stars/sapountzis/whisper-flow-linux?style=flat-square) - Workflow integration
188
+ - **[whisper-hotkey-linux](https://github.com/atkvishnu/whisper-hotkey-linux)** ![GitHub stars](https://img.shields.io/github/stars/atkvishnu/whisper-hotkey-linux?style=flat-square) - Hotkey-based integration
189
+ - **[whispertrigger](https://github.com/RetroTrigger/whispertrigger)** ![GitHub stars](https://img.shields.io/github/stars/RetroTrigger/whispertrigger?style=flat-square) - System integration
190
+ - **[whisprd](https://github.com/AgenticToaster/whisprd)** ![GitHub stars](https://img.shields.io/github/stars/AgenticToaster/whisprd?style=flat-square) - Whisper daemon
191
+ - **[whisper-to-input](https://github.com/j3soon/whisper-to-input)** ![GitHub stars](https://img.shields.io/github/stars/j3soon/whisper-to-input?style=flat-square) - Transcription to keyboard input
192
+ - **[whispy](https://github.com/daaku/whispy)** ![GitHub stars](https://img.shields.io/github/stars/daaku/whispy?style=flat-square) - Integration tool
193
+ - **[dicti](https://github.com/tksimson/dicti)** ![GitHub stars](https://img.shields.io/github/stars/tksimson/dicti?style=flat-square) - Dictation tool
194
+ - **[sonori](https://github.com/0xPD33/sonori)** ![GitHub stars](https://img.shields.io/github/stars/0xPD33/sonori?style=flat-square) - Voice input system
195
+ - **[hushnote](https://github.com/peteonrails/hushnote)** ![GitHub stars](https://img.shields.io/github/stars/peteonrails/hushnote?style=flat-square) - Private note-taking
196
+ - **[Local-Voice](https://github.com/shashank2122/Local-Voice)** ![GitHub stars](https://img.shields.io/github/stars/shashank2122/Local-Voice?style=flat-square) - Local voice processing
197
+ - **[s2t](https://github.com/franchesoni/s2t)** ![GitHub stars](https://img.shields.io/github/stars/franchesoni/s2t?style=flat-square) - Speech-to-text
198
+ - **[Whisper-Notepad-Simple](https://github.com/danielrosehill/Whisper-Notepad-Simple)** ![GitHub stars](https://img.shields.io/github/stars/danielrosehill/Whisper-Notepad-Simple?style=flat-square) - Simple notepad app
199
+ - **[Linux-AI-Assistant-scripts](https://github.com/samoylenkodmitry/Linux-AI-Assistant-scripts)** ![GitHub stars](https://img.shields.io/github/stars/samoylenkodmitry/Linux-AI-Assistant-scripts?style=flat-square) - AI assistant scripts
200
+
201
+ ### macOS
202
+
203
+ #### Desktop Applications
204
+ - **[SuperWhisper](https://superwhisper.com/)** - Premium Mac voice-to-text app
205
+ - **[OpenSuperWhisper](https://github.com/Starmel/OpenSuperWhisper)** ![GitHub stars](https://img.shields.io/github/stars/Starmel/OpenSuperWhisper?style=flat-square) - Open-source Mac app
206
+ - **[WhisperKit](https://github.com/argmaxinc/WhisperKit)** ![GitHub stars](https://img.shields.io/github/stars/argmaxinc/WhisperKit?style=flat-square) - Native macOS implementation
207
+ - **[Careless Whisper](https://carelesswhisper.app/)** - Lightweight transcription app
208
+
209
+ #### System Integration
210
+ - **[ollama-voice-mac](https://github.com/apeatling/ollama-voice-mac)** ![GitHub stars](https://img.shields.io/github/stars/apeatling/ollama-voice-mac?style=flat-square) - Voice interface for Ollama
211
+ - **[whisperanywhere-js](https://github.com/unclecode/whisperanywhere-js)** ![GitHub stars](https://img.shields.io/github/stars/unclecode/whisperanywhere-js?style=flat-square) - System-wide transcription
212
+
213
+ ---
214
+
215
+ ### Windows
216
+
217
+ #### Desktop Applications
218
+ - **[AI Transcription](https://apps.microsoft.com/detail/9p7f1j2svk3g)** - Microsoft Store app
219
+ - **[Whisper Typing for Windows](https://whispertyping.com/download)** - Desktop voice typing
220
+
221
+ #### System Integration
222
+ - **[WinWhisper](https://github.com/GewoonJaap/WinWhisper)** ![GitHub stars](https://img.shields.io/github/stars/GewoonJaap/WinWhisper?style=flat-square) - System-wide hotkey support
223
+
224
+ ---
225
+
226
+ ### Android
227
+
228
+ - **[whisperIME](https://github.com/woheller69/whisperIME)** ![GitHub stars](https://img.shields.io/github/stars/woheller69/whisperIME?style=flat-square) - Input method editor
229
+ - **[WhisperInput](https://github.com/alex-vt/WhisperInput)** ![GitHub stars](https://img.shields.io/github/stars/alex-vt/WhisperInput?style=flat-square) - Input app
230
+ - **[WhisperKitAndroid](https://github.com/argmaxinc/WhisperKitAndroid)** ![GitHub stars](https://img.shields.io/github/stars/argmaxinc/WhisperKitAndroid?style=flat-square) - WhisperKit for Android
231
+ - **[RTranslator](https://github.com/niedev/RTranslator)** ![GitHub stars](https://img.shields.io/github/stars/niedev/RTranslator?style=flat-square) - Real-time translation app
232
+ - **[Dictate](https://github.com/DevEmperor/Dictate)** ![GitHub stars](https://img.shields.io/github/stars/DevEmperor/Dictate?style=flat-square) - Voice dictation app
233
+ - **[whisper_android](https://github.com/vilassn/whisper_android)** ![GitHub stars](https://img.shields.io/github/stars/vilassn/whisper_android?style=flat-square) - Android integration
234
+
235
+ ---
236
+
237
+ ### iOS
238
+
239
+ - **[Whisperboard](https://github.com/Saik0s/Whisperboard)** ![GitHub stars](https://img.shields.io/github/stars/Saik0s/Whisperboard?style=flat-square) - iOS keyboard with Whisper integration
240
+
241
+ ---
242
+
243
+ ### Embedded / Raspberry Pi
244
+
245
+ - **[Local-Voice](https://github.com/shashank2122/Local-Voice)** ![GitHub stars](https://img.shields.io/github/stars/shashank2122/Local-Voice?style=flat-square) - Local voice processing for embedded systems
246
+
247
+ ---
248
+
249
+ ## For Developers
250
+
251
+ ### Model Variants & Performance Optimizations
252
+
253
+ ### pyannote-whisper
254
+
255
+ ![GitHub stars](https://img.shields.io/github/stars/yinruiqing/pyannote-whisper?style=flat-square) ![Last commit](https://img.shields.io/github/last-commit/yinruiqing/pyannote-whisper?style=flat-square)
256
+
257
+ Integration of Whisper with pyannote for speaker diarization
258
+
259
+ **Repository:** [https://github.com/yinruiqing/pyannote-whisper](https://github.com/yinruiqing/pyannote-whisper)
260
+
261
+ ---
262
+
263
+ ### WhisperChain
264
+
265
+ ![GitHub stars](https://img.shields.io/github/stars/chrischoy/WhisperChain?style=flat-square) ![Last commit](https://img.shields.io/github/last-commit/chrischoy/WhisperChain?style=flat-square)
266
+
267
+ Pipeline framework for Whisper-based workflows
268
+
269
+ **Repository:** [https://github.com/chrischoy/WhisperChain](https://github.com/chrischoy/WhisperChain)
270
+
271
+ ---
272
+ ## IDE & Editor Integrations
273
+ ### VS Code
274
+
275
+ ### Whisper Assistant
276
+
277
+ Whisper voice-to-text integration for VS Code
278
+
279
+ **Repository:** [https://marketplace.visualstudio.com/items?itemName=MartinOpenSky.whisper-assistant](https://marketplace.visualstudio.com/items?itemName=MartinOpenSky.whisper-assistant)
280
+
281
+ ---
282
+
283
+ ### Yap - Cursor Extension
284
+
285
+ Voice input extension for VS Code and Cursor editor
286
+
287
+ **Repository:** [https://marketplace.visualstudio.com/items?itemName=rishabhsai.yap-cursor-extension](https://marketplace.visualstudio.com/items?itemName=rishabhsai.yap-cursor-extension)
288
+
289
+ ---
290
+
291
+ ### WhisperX Assistant
292
+
293
+ WhisperX integration for VS Code with enhanced features
294
+
295
+ **Repository:** [https://marketplace.visualstudio.com/items?itemName=mwhesse.whisperx-assistant](https://marketplace.visualstudio.com/items?itemName=mwhesse.whisperx-assistant)
296
+
297
+ ---
298
+ ### Obsidian
299
+
300
+ ### whisper-obsidian-plugin
301
+
302
+ ![GitHub stars](https://img.shields.io/github/stars/nikdanilov/whisper-obsidian-plugin?style=flat-square) ![Last commit](https://img.shields.io/github/last-commit/nikdanilov/whisper-obsidian-plugin?style=flat-square)
303
+
304
+ Whisper integration for Obsidian note-taking app
305
+
306
+ **Repository:** [https://github.com/nikdanilov/whisper-obsidian-plugin](https://github.com/nikdanilov/whisper-obsidian-plugin)
307
+
308
+ ---
309
+ ### Note-Taking & Productivity
310
+
311
+ ### ScribeWizard
312
+
313
+ ![GitHub stars](https://img.shields.io/github/stars/Bklieger/ScribeWizard?style=flat-square) ![Last commit](https://img.shields.io/github/last-commit/Bklieger/ScribeWizard?style=flat-square)
314
+
315
+ AI-powered note-taking with Whisper transcription
316
+
317
+ **Repository:** [https://github.com/Bklieger/ScribeWizard](https://github.com/Bklieger/ScribeWizard)
318
+
319
+ ---
320
+ ## Game Engines & Development Platforms
321
+ ### Unity
322
+
323
+ ### whisper.unity
324
+
325
+ ![GitHub stars](https://img.shields.io/github/stars/Macoron/whisper.unity?style=flat-square) ![Last commit](https://img.shields.io/github/last-commit/Macoron/whisper.unity?style=flat-square)
326
+
327
+ Whisper integration for Unity game engine
328
+
329
+ **Repository:** [https://github.com/Macoron/whisper.unity](https://github.com/Macoron/whisper.unity)
330
+
331
+ ---
332
+ ## Playgrounds & Demos
333
+
334
+ ### whisper-playground
335
+
336
+ ![GitHub stars](https://img.shields.io/github/stars/saharmor/whisper-playground?style=flat-square) ![Last commit](https://img.shields.io/github/last-commit/saharmor/whisper-playground?style=flat-square)
337
+
338
+ Interactive playground for experimenting with Whisper
339
+
340
+ **Repository:** [https://github.com/saharmor/whisper-playground](https://github.com/saharmor/whisper-playground)
341
+
342
+ ---
343
+ ## SRT / Subtitles & Captioning
344
+
345
+ ### auto-subs
346
+
347
+ ![GitHub stars](https://img.shields.io/github/stars/tmoroney/auto-subs?style=flat-square) ![Last commit](https://img.shields.io/github/last-commit/tmoroney/auto-subs?style=flat-square)
348
+
349
+ Automatic subtitle generation with Whisper
350
+
351
+ **Repository:** [https://github.com/tmoroney/auto-subs](https://github.com/tmoroney/auto-subs)
352
+
353
+ ---
354
+
355
+ ### template-tiktok
356
+
357
+ ![GitHub stars](https://img.shields.io/github/stars/remotion-dev/template-tiktok?style=flat-square) ![Last commit](https://img.shields.io/github/last-commit/remotion-dev/template-tiktok?style=flat-square)
358
+
359
+ TikTok-style captioning with Whisper integration using Remotion
360
+
361
+ **Repository:** [https://github.com/remotion-dev/template-tiktok](https://github.com/remotion-dev/template-tiktok)
362
+
363
+ ---
364
+
365
+ ### TeroSubtitler
366
+
367
+ ![GitHub stars](https://img.shields.io/github/stars/URUWorks/TeroSubtitler?style=flat-square) ![Last commit](https://img.shields.io/github/last-commit/URUWorks/TeroSubtitler?style=flat-square)
368
+
369
+ Professional subtitle editor with Whisper integration
370
+
371
+ **Repository:** [https://github.com/URUWorks/TeroSubtitler](https://github.com/URUWorks/TeroSubtitler)
372
+
373
+ ---
374
+
375
+ ### whisper-subs
376
+
377
+ ![GitHub stars](https://img.shields.io/github/stars/GhostNaN/whisper-subs?style=flat-square) ![Last commit](https://img.shields.io/github/last-commit/GhostNaN/whisper-subs?style=flat-square)
378
+
379
+ CLI tool for adding subtitles to videos using Whisper
380
+
381
+ **Repository:** [https://github.com/GhostNaN/whisper-subs](https://github.com/GhostNaN/whisper-subs)
382
+
383
+ ---
384
+
385
+ ### whisper-youtube
386
+
387
+ ![GitHub stars](https://img.shields.io/github/stars/ArthurFDLR/whisper-youtube?style=flat-square) ![Last commit](https://img.shields.io/github/last-commit/ArthurFDLR/whisper-youtube?style=flat-square)
388
+
389
+ Generate subtitles from YouTube videos using Whisper
390
+
391
+ **Repository:** [https://github.com/ArthurFDLR/whisper-youtube](https://github.com/ArthurFDLR/whisper-youtube)
392
+
393
+ ---
394
+
395
+ ### whisply
396
+
397
+ ![GitHub stars](https://img.shields.io/github/stars/tsmdt/whisply?style=flat-square) ![Last commit](https://img.shields.io/github/last-commit/tsmdt/whisply?style=flat-square)
398
+
399
+ Linux tool for automatic subtitle generation
400
+
401
+ **Repository:** [https://github.com/tsmdt/whisply](https://github.com/tsmdt/whisply)
402
+
403
+ ---
404
+
405
+ ### yt-whisper
406
+
407
+ ![GitHub stars](https://img.shields.io/github/stars/m1guelpf/yt-whisper?style=flat-square) ![Last commit](https://img.shields.io/github/last-commit/m1guelpf/yt-whisper?style=flat-square)
408
+
409
+ YouTube subtitle generation with Whisper
410
+
411
+ **Repository:** [https://github.com/m1guelpf/yt-whisper](https://github.com/m1guelpf/yt-whisper)
412
+
413
+ ---
414
+ ## Deployment & Containers
415
+
416
+ ### cog-whisper
417
+
418
+ ![GitHub stars](https://img.shields.io/github/stars/replicate/cog-whisper?style=flat-square) ![Last commit](https://img.shields.io/github/last-commit/replicate/cog-whisper?style=flat-square)
419
+
420
+ Cog container for deploying Whisper models
421
+
422
+ **Repository:** [https://github.com/replicate/cog-whisper](https://github.com/replicate/cog-whisper)
423
+
424
+ ---
425
+ ## Meeting & Productivity
426
+
427
+ ### meeting-minutes
428
+
429
+ ![GitHub stars](https://img.shields.io/github/stars/Zackriya-Solutions/meeting-minutes?style=flat-square) ![Last commit](https://img.shields.io/github/last-commit/Zackriya-Solutions/meeting-minutes?style=flat-square)
430
+
431
+ Generate meeting minutes using Whisper transcription
432
+
433
+ **Repository:** [https://github.com/Zackriya-Solutions/meeting-minutes](https://github.com/Zackriya-Solutions/meeting-minutes)
434
+
435
+ ---
436
+ ## Miscellaneous
437
+
438
+ ### whisper-turbo
439
+
440
+ ![GitHub stars](https://img.shields.io/github/stars/FL33TW00D/whisper-turbo?style=flat-square) ![Last commit](https://img.shields.io/github/last-commit/FL33TW00D/whisper-turbo?style=flat-square)
441
+
442
+ High-performance Whisper implementation
443
+
444
+ **Repository:** [https://github.com/FL33TW00D/whisper-turbo](https://github.com/FL33TW00D/whisper-turbo)
445
+
446
+ ---
447
+ ## Resources
448
+ ### Official
449
+ - [OpenAI Whisper Paper](https://arxiv.org/abs/2212.04356)
450
+
451
+ ### Tutorials & Guides
452
+ ### Model Variants
453
+
454
+ ### CrisperWhisper
455
+
456
+ ![GitHub stars](https://img.shields.io/github/stars/nyrahealth/CrisperWhisper?style=flat-square) ![Last commit](https://img.shields.io/github/last-commit/nyrahealth/CrisperWhisper?style=flat-square)
457
+
458
+ Enhanced Whisper variant for improved accuracy
459
+
460
+ **Repository:** [https://github.com/nyrahealth/CrisperWhisper](https://github.com/nyrahealth/CrisperWhisper)
461
+
462
+ ---
463
+
464
+ ### distil-whisper
465
+
466
+ ![GitHub stars](https://img.shields.io/github/stars/huggingface/distil-whisper?style=flat-square) ![Last commit](https://img.shields.io/github/last-commit/huggingface/distil-whisper?style=flat-square)
467
+
468
+ Distilled Whisper models from Hugging Face
469
+
470
+ **Repository:** [https://github.com/huggingface/distil-whisper](https://github.com/huggingface/distil-whisper)
471
+
472
+ ---
473
+
474
+ ### faster-whisper
475
+
476
+ ![GitHub stars](https://img.shields.io/github/stars/SYSTRAN/faster-whisper?style=flat-square) ![Last commit](https://img.shields.io/github/last-commit/SYSTRAN/faster-whisper?style=flat-square)
477
+
478
+ Faster Whisper implementation using CTranslate2
479
+
480
+ **Repository:** [https://github.com/SYSTRAN/faster-whisper](https://github.com/SYSTRAN/faster-whisper)
481
+
482
+ ---
483
+
484
+ ### insanely-fast-whisper
485
+
486
+ ![GitHub stars](https://img.shields.io/github/stars/Vaibhavs10/insanely-fast-whisper?style=flat-square) ![Last commit](https://img.shields.io/github/last-commit/Vaibhavs10/insanely-fast-whisper?style=flat-square)
487
+
488
+ Optimized Whisper implementation for speed
489
+
490
+ **Repository:** [https://github.com/Vaibhavs10/insanely-fast-whisper](https://github.com/Vaibhavs10/insanely-fast-whisper)
491
+
492
+ ---
493
+
494
+ ### whisper.cpp
495
+
496
+ ![GitHub stars](https://img.shields.io/github/stars/ggerganov/whisper.cpp?style=flat-square) ![Last commit](https://img.shields.io/github/last-commit/ggerganov/whisper.cpp?style=flat-square)
497
+
498
+ High-performance C/C++ implementation
499
+
500
+ **Repository:** [https://github.com/ggerganov/whisper.cpp](https://github.com/ggerganov/whisper.cpp)
501
+
502
+ ---
503
+
504
+ ### whisper.net
505
+
506
+ ![GitHub stars](https://img.shields.io/github/stars/sandrohanea/whisper.net?style=flat-square) ![Last commit](https://img.shields.io/github/last-commit/sandrohanea/whisper.net?style=flat-square)
507
+
508
+ .NET implementation of Whisper
509
+
510
+ **Repository:** [https://github.com/sandrohanea/whisper.net](https://github.com/sandrohanea/whisper.net)
511
+
512
+ ---
513
+
514
+ ### WhisperX
515
+
516
+ ![GitHub stars](https://img.shields.io/github/stars/m-bain/whisperX?style=flat-square) ![Last commit](https://img.shields.io/github/last-commit/m-bain/whisperX?style=flat-square)
517
+
518
+ Whisper with word-level timestamps and speaker diarization
519
+
520
+ **Repository:** [https://github.com/m-bain/whisperX](https://github.com/m-bain/whisperX)
521
+
522
+ ---
523
+ ### Real-Time & Streaming
524
+
525
+ ### whisper-flow
526
+
527
+ ![GitHub stars](https://img.shields.io/github/stars/dimastatz/whisper-flow?style=flat-square) ![Last commit](https://img.shields.io/github/last-commit/dimastatz/whisper-flow?style=flat-square)
528
+
529
+ Real-time Whisper transcription flow
530
+
531
+ **Repository:** [https://github.com/dimastatz/whisper-flow](https://github.com/dimastatz/whisper-flow)
532
+
533
+ ---
534
+
535
+ ### whisper_real_time
536
+
537
+ ![GitHub stars](https://img.shields.io/github/stars/davabase/whisper_real_time?style=flat-square) ![Last commit](https://img.shields.io/github/last-commit/davabase/whisper_real_time?style=flat-square)
538
+
539
+ Real-time Whisper transcription implementation
540
+
541
+ **Repository:** [https://github.com/davabase/whisper_real_time](https://github.com/davabase/whisper_real_time)
542
+
543
+ ---
544
+
545
+ ### whisper_streaming
546
+
547
+ ![GitHub stars](https://img.shields.io/github/stars/ufal/whisper_streaming?style=flat-square) ![Last commit](https://img.shields.io/github/last-commit/ufal/whisper_streaming?style=flat-square)
548
+
549
+ Whisper for long-form streaming transcription
550
+
551
+ **Repository:** [https://github.com/ufal/whisper_streaming](https://github.com/ufal/whisper_streaming)
552
+
553
+ ---
554
+
555
+ ### WhisperLive
556
+
557
+ ![GitHub stars](https://img.shields.io/github/stars/collabora/WhisperLive?style=flat-square) ![Last commit](https://img.shields.io/github/last-commit/collabora/WhisperLive?style=flat-square)
558
+
559
+ Real-time transcription using Whisper
560
+
561
+ **Repository:** [https://github.com/collabora/WhisperLive](https://github.com/collabora/WhisperLive)
562
+
563
+ ---
564
+ ### Diarization & Timestamps
565
+
566
+ ### cog-whisper-diarization
567
+
568
+ ![GitHub stars](https://img.shields.io/github/stars/thomasmol/cog-whisper-diarization?style=flat-square) ![Last commit](https://img.shields.io/github/last-commit/thomasmol/cog-whisper-diarization?style=flat-square)
569
+
570
+ Cog-wrapped Whisper with diarization
571
+
572
+ **Repository:** [https://github.com/thomasmol/cog-whisper-diarization](https://github.com/thomasmol/cog-whisper-diarization)
573
+
574
+ ---
575
+
576
+ ### whisper-diarization
577
+
578
+ ![GitHub stars](https://img.shields.io/github/stars/MahmoudAshraf97/whisper-diarization?style=flat-square) ![Last commit](https://img.shields.io/github/last-commit/MahmoudAshraf97/whisper-diarization?style=flat-square)
579
+
580
+ Whisper with speaker diarization
581
+
582
+ **Repository:** [https://github.com/MahmoudAshraf97/whisper-diarization](https://github.com/MahmoudAshraf97/whisper-diarization)
583
+
584
+ ---
585
+
586
+ ### whisper-timestamped
587
+
588
+ ![GitHub stars](https://img.shields.io/github/stars/linto-ai/whisper-timestamped?style=flat-square) ![Last commit](https://img.shields.io/github/last-commit/linto-ai/whisper-timestamped?style=flat-square)
589
+
590
+ Word-level timestamps for Whisper
591
+
592
+ **Repository:** [https://github.com/linto-ai/whisper-timestamped](https://github.com/linto-ai/whisper-timestamped)
593
+
594
+ ---
595
+
596
+ ### WhisperTimeSync
597
+
598
+ ![GitHub stars](https://img.shields.io/github/stars/EtienneAb3d/WhisperTimeSync?style=flat-square) ![Last commit](https://img.shields.io/github/last-commit/EtienneAb3d/WhisperTimeSync?style=flat-square)
599
+
600
+ Time synchronization and diarization for Whisper
601
+
602
+ **Repository:** [https://github.com/EtienneAb3d/WhisperTimeSync](https://github.com/EtienneAb3d/WhisperTimeSync)
603
+
604
+ ---
605
+ ### Fine-Tuning
606
+
607
+ ### Whisper-Finetune
608
+
609
+ ![GitHub stars](https://img.shields.io/github/stars/yeyupiaoling/Whisper-Finetune?style=flat-square) ![Last commit](https://img.shields.io/github/last-commit/yeyupiaoling/Whisper-Finetune?style=flat-square)
610
+
611
+ Utilities for fine-tuning Whisper models
612
+
613
+ **Repository:** [https://github.com/yeyupiaoling/Whisper-Finetune](https://github.com/yeyupiaoling/Whisper-Finetune)
614
+
615
+ ---
616
+
617
+ ### whisper-finetuning
618
+
619
+ ![GitHub stars](https://img.shields.io/github/stars/jumon/whisper-finetuning?style=flat-square) ![Last commit](https://img.shields.io/github/last-commit/jumon/whisper-finetuning?style=flat-square)
620
+
621
+ Fine-tuning framework for Whisper models
622
+
623
+ **Repository:** [https://github.com/jumon/whisper-finetuning](https://github.com/jumon/whisper-finetuning)
624
+
625
+ ---
626
+ ### Awesome Lists
627
+ - [awesome-openai-whisper (ancs21)](https://github.com/ancs21/awesome-openai-whisper)
628
+ - [awesome-whisper (saharmor)](https://github.com/saharmor/awesome-whisper)
629
+ - [awesome-whisper (oenu)](https://github.com/oenu/awesome-whisper)
630
+
631
+
632
+
script.js ADDED
@@ -0,0 +1,197 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Main application state
2
+ let allProjects = [];
3
+ let filteredProjects = [];
4
+ let currentPlatformFilter = 'all';
5
+ let currentUsecaseFilter = 'all';
6
+ let currentSearchQuery = '';
7
+ let currentSort = 'name';
8
+
9
+ // Load projects data
10
+ async function loadProjects() {
11
+ try {
12
+ const response = await fetch('projects.json');
13
+ allProjects = await response.json();
14
+ filteredProjects = [...allProjects];
15
+ renderProjects();
16
+ updateProjectCount();
17
+ } catch (error) {
18
+ console.error('Error loading projects:', error);
19
+ document.getElementById('projects-grid').innerHTML = `
20
+ <div class="no-results">
21
+ <h3>Error loading projects</h3>
22
+ <p>Unable to load the projects data. Please try refreshing the page.</p>
23
+ </div>
24
+ `;
25
+ }
26
+ }
27
+
28
+ // Apply all filters
29
+ function applyFilters() {
30
+ filteredProjects = allProjects.filter(project => {
31
+ // Platform filter
32
+ const platformMatch = currentPlatformFilter === 'all' ||
33
+ project.platforms.includes(currentPlatformFilter);
34
+
35
+ // Use case filter
36
+ const usecaseMatch = currentUsecaseFilter === 'all' ||
37
+ project.usecases.includes(currentUsecaseFilter);
38
+
39
+ // Search query
40
+ const searchMatch = currentSearchQuery === '' ||
41
+ project.name.toLowerCase().includes(currentSearchQuery.toLowerCase()) ||
42
+ project.description.toLowerCase().includes(currentSearchQuery.toLowerCase());
43
+
44
+ return platformMatch && usecaseMatch && searchMatch;
45
+ });
46
+
47
+ sortProjects();
48
+ renderProjects();
49
+ updateProjectCount();
50
+ }
51
+
52
+ // Sort projects
53
+ function sortProjects() {
54
+ switch (currentSort) {
55
+ case 'name':
56
+ filteredProjects.sort((a, b) => a.name.localeCompare(b.name));
57
+ break;
58
+ case 'platform':
59
+ filteredProjects.sort((a, b) => {
60
+ const platformA = a.platforms[0] || '';
61
+ const platformB = b.platforms[0] || '';
62
+ return platformA.localeCompare(platformB);
63
+ });
64
+ break;
65
+ case 'usecase':
66
+ filteredProjects.sort((a, b) => {
67
+ const usecaseA = a.usecases[0] || '';
68
+ const usecaseB = b.usecases[0] || '';
69
+ return usecaseA.localeCompare(usecaseB);
70
+ });
71
+ break;
72
+ }
73
+ }
74
+
75
+ // Render projects to the grid
76
+ function renderProjects() {
77
+ const grid = document.getElementById('projects-grid');
78
+
79
+ if (filteredProjects.length === 0) {
80
+ grid.innerHTML = `
81
+ <div class="no-results">
82
+ <h3>No projects found</h3>
83
+ <p>Try adjusting your filters or search query.</p>
84
+ </div>
85
+ `;
86
+ return;
87
+ }
88
+
89
+ grid.innerHTML = filteredProjects.map(project => createProjectCard(project)).join('');
90
+ }
91
+
92
+ // Create a project card HTML
93
+ function createProjectCard(project) {
94
+ const platformTags = project.platforms
95
+ .map(p => `<span class="meta-tag platform-tag">${formatTag(p)}</span>`)
96
+ .join('');
97
+
98
+ const usecaseTags = project.usecases
99
+ .map(u => `<span class="meta-tag usecase-tag">${formatTag(u)}</span>`)
100
+ .join('');
101
+
102
+ const githubLink = project.github_repo
103
+ ? `<a href="https://github.com/${project.github_repo}" target="_blank" rel="noopener">GitHub �</a>`
104
+ : '';
105
+
106
+ return `
107
+ <div class="project-card">
108
+ <h3>
109
+ <a href="${project.url}" target="_blank" rel="noopener">${escapeHtml(project.name)}</a>
110
+ </h3>
111
+ <p class="project-description">${escapeHtml(project.description)}</p>
112
+ <div class="project-meta">
113
+ ${platformTags}
114
+ ${usecaseTags}
115
+ </div>
116
+ </div>
117
+ `;
118
+ }
119
+
120
+ // Format tag names for display
121
+ function formatTag(tag) {
122
+ return tag
123
+ .split('-')
124
+ .map(word => word.charAt(0).toUpperCase() + word.slice(1))
125
+ .join(' ');
126
+ }
127
+
128
+ // Escape HTML to prevent XSS
129
+ function escapeHtml(text) {
130
+ const div = document.createElement('div');
131
+ div.textContent = text;
132
+ return div.innerHTML;
133
+ }
134
+
135
+ // Update project count display
136
+ function updateProjectCount() {
137
+ const count = document.getElementById('project-count');
138
+ count.textContent = `(${filteredProjects.length} of ${allProjects.length})`;
139
+ }
140
+
141
+ // Set up event listeners
142
+ function setupEventListeners() {
143
+ // Platform filter buttons
144
+ document.querySelectorAll('#platform-filters .filter-btn').forEach(btn => {
145
+ btn.addEventListener('click', () => {
146
+ // Remove active class from all platform buttons
147
+ document.querySelectorAll('#platform-filters .filter-btn').forEach(b => {
148
+ b.classList.remove('active');
149
+ });
150
+
151
+ // Add active class to clicked button
152
+ btn.classList.add('active');
153
+
154
+ // Update filter
155
+ currentPlatformFilter = btn.dataset.filter;
156
+ applyFilters();
157
+ });
158
+ });
159
+
160
+ // Use case filter buttons
161
+ document.querySelectorAll('#usecase-filters .filter-btn').forEach(btn => {
162
+ btn.addEventListener('click', () => {
163
+ // Remove active class from all usecase buttons
164
+ document.querySelectorAll('#usecase-filters .filter-btn').forEach(b => {
165
+ b.classList.remove('active');
166
+ });
167
+
168
+ // Add active class to clicked button
169
+ btn.classList.add('active');
170
+
171
+ // Update filter
172
+ currentUsecaseFilter = btn.dataset.filter;
173
+ applyFilters();
174
+ });
175
+ });
176
+
177
+ // Search input
178
+ const searchInput = document.getElementById('search-input');
179
+ searchInput.addEventListener('input', (e) => {
180
+ currentSearchQuery = e.target.value;
181
+ applyFilters();
182
+ });
183
+
184
+ // Sort select
185
+ const sortSelect = document.getElementById('sort-select');
186
+ sortSelect.addEventListener('change', (e) => {
187
+ currentSort = e.target.value;
188
+ sortProjects();
189
+ renderProjects();
190
+ });
191
+ }
192
+
193
+ // Initialize the application
194
+ document.addEventListener('DOMContentLoaded', () => {
195
+ setupEventListeners();
196
+ loadProjects();
197
+ });
style.css CHANGED
@@ -1,28 +1,305 @@
 
 
 
 
 
 
1
  body {
2
- padding: 2rem;
3
- font-family: -apple-system, BlinkMacSystemFont, "Arial", sans-serif;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
  }
5
 
6
- h1 {
7
- font-size: 16px;
8
- margin-top: 0;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9
  }
10
 
11
- p {
12
- color: rgb(107, 114, 128);
13
- font-size: 15px;
14
- margin-bottom: 10px;
15
- margin-top: 5px;
 
16
  }
17
 
18
- .card {
19
- max-width: 620px;
20
- margin: 0 auto;
21
- padding: 16px;
22
- border: 1px solid lightgray;
23
- border-radius: 16px;
24
  }
25
 
26
- .card p:last-child {
27
- margin-bottom: 0;
 
28
  }
 
1
+ * {
2
+ margin: 0;
3
+ padding: 0;
4
+ box-sizing: border-box;
5
+ }
6
+
7
  body {
8
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
9
+ line-height: 1.6;
10
+ color: #333;
11
+ background-color: #f5f7fa;
12
+ }
13
+
14
+ .container {
15
+ max-width: 1400px;
16
+ margin: 0 auto;
17
+ padding: 0 20px;
18
+ }
19
+
20
+ /* Header */
21
+ header {
22
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
23
+ color: white;
24
+ padding: 3rem 0;
25
+ text-align: center;
26
+ box-shadow: 0 2px 10px rgba(0,0,0,0.1);
27
+ }
28
+
29
+ header h1 {
30
+ font-size: 2.5rem;
31
+ margin-bottom: 0.5rem;
32
+ font-weight: 700;
33
+ }
34
+
35
+ .subtitle {
36
+ font-size: 1.1rem;
37
+ opacity: 0.95;
38
+ }
39
+
40
+ /* Main Content */
41
+ main {
42
+ padding: 2rem 0;
43
+ }
44
+
45
+ /* Filters Section */
46
+ .filters {
47
+ background: white;
48
+ padding: 2rem;
49
+ border-radius: 12px;
50
+ box-shadow: 0 2px 8px rgba(0,0,0,0.08);
51
+ margin-bottom: 2rem;
52
+ }
53
+
54
+ .filters h2 {
55
+ margin-bottom: 1.5rem;
56
+ color: #2d3748;
57
+ font-size: 1.5rem;
58
+ }
59
+
60
+ .filter-group {
61
+ display: flex;
62
+ flex-direction: column;
63
+ gap: 2rem;
64
+ }
65
+
66
+ .filter-section h3 {
67
+ margin-bottom: 1rem;
68
+ color: #4a5568;
69
+ font-size: 1.1rem;
70
+ }
71
+
72
+ .filter-buttons {
73
+ display: flex;
74
+ flex-wrap: wrap;
75
+ gap: 0.5rem;
76
+ }
77
+
78
+ .filter-btn {
79
+ padding: 0.5rem 1rem;
80
+ border: 2px solid #e2e8f0;
81
+ background: white;
82
+ border-radius: 6px;
83
+ cursor: pointer;
84
+ font-size: 0.9rem;
85
+ transition: all 0.2s;
86
+ color: #4a5568;
87
+ font-weight: 500;
88
+ }
89
+
90
+ .filter-btn:hover {
91
+ border-color: #667eea;
92
+ color: #667eea;
93
+ transform: translateY(-1px);
94
+ }
95
+
96
+ .filter-btn.active {
97
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
98
+ color: white;
99
+ border-color: transparent;
100
+ }
101
+
102
+ .search-section input {
103
+ width: 100%;
104
+ padding: 0.75rem 1rem;
105
+ border: 2px solid #e2e8f0;
106
+ border-radius: 8px;
107
+ font-size: 1rem;
108
+ transition: border-color 0.2s;
109
+ }
110
+
111
+ .search-section input:focus {
112
+ outline: none;
113
+ border-color: #667eea;
114
+ }
115
+
116
+ /* Results Section */
117
+ .results {
118
+ background: white;
119
+ padding: 2rem;
120
+ border-radius: 12px;
121
+ box-shadow: 0 2px 8px rgba(0,0,0,0.08);
122
+ }
123
+
124
+ .results-header {
125
+ display: flex;
126
+ justify-content: space-between;
127
+ align-items: center;
128
+ margin-bottom: 1.5rem;
129
+ flex-wrap: wrap;
130
+ gap: 1rem;
131
+ }
132
+
133
+ .results-header h2 {
134
+ color: #2d3748;
135
+ font-size: 1.5rem;
136
+ }
137
+
138
+ #project-count {
139
+ color: #667eea;
140
+ font-weight: 600;
141
+ }
142
+
143
+ .sort-controls {
144
+ display: flex;
145
+ align-items: center;
146
+ gap: 0.5rem;
147
  }
148
 
149
+ .sort-controls label {
150
+ color: #4a5568;
151
+ font-weight: 500;
152
+ }
153
+
154
+ .sort-controls select {
155
+ padding: 0.5rem 1rem;
156
+ border: 2px solid #e2e8f0;
157
+ border-radius: 6px;
158
+ font-size: 0.9rem;
159
+ cursor: pointer;
160
+ background: white;
161
+ }
162
+
163
+ /* Projects Grid */
164
+ .projects-grid {
165
+ display: grid;
166
+ grid-template-columns: repeat(auto-fill, minmax(350px, 1fr));
167
+ gap: 1.5rem;
168
+ }
169
+
170
+ .project-card {
171
+ background: #f9fafb;
172
+ border: 2px solid #e2e8f0;
173
+ border-radius: 10px;
174
+ padding: 1.5rem;
175
+ transition: all 0.3s;
176
+ position: relative;
177
+ }
178
+
179
+ .project-card:hover {
180
+ transform: translateY(-4px);
181
+ box-shadow: 0 8px 16px rgba(0,0,0,0.1);
182
+ border-color: #667eea;
183
+ }
184
+
185
+ .project-card h3 {
186
+ color: #2d3748;
187
+ margin-bottom: 0.75rem;
188
+ font-size: 1.2rem;
189
+ }
190
+
191
+ .project-card h3 a {
192
+ color: #667eea;
193
+ text-decoration: none;
194
+ }
195
+
196
+ .project-card h3 a:hover {
197
+ text-decoration: underline;
198
+ }
199
+
200
+ .project-description {
201
+ color: #4a5568;
202
+ margin-bottom: 1rem;
203
+ font-size: 0.95rem;
204
+ }
205
+
206
+ .project-meta {
207
+ display: flex;
208
+ flex-wrap: wrap;
209
+ gap: 0.5rem;
210
+ margin-top: 1rem;
211
+ }
212
+
213
+ .meta-tag {
214
+ padding: 0.25rem 0.75rem;
215
+ border-radius: 20px;
216
+ font-size: 0.8rem;
217
+ font-weight: 500;
218
+ }
219
+
220
+ .platform-tag {
221
+ background: #e6f4ff;
222
+ color: #0066cc;
223
+ }
224
+
225
+ .usecase-tag {
226
+ background: #fff0e6;
227
+ color: #cc6600;
228
+ }
229
+
230
+ .github-stars {
231
+ display: inline-block;
232
+ margin-left: 0.5rem;
233
+ color: #718096;
234
+ font-size: 0.85rem;
235
+ }
236
+
237
+ /* Footer */
238
+ footer {
239
+ background: #2d3748;
240
+ color: white;
241
+ text-align: center;
242
+ padding: 2rem 0;
243
+ margin-top: 3rem;
244
+ }
245
+
246
+ footer p {
247
+ margin-bottom: 0.5rem;
248
+ }
249
+
250
+ footer a {
251
+ color: #90cdf4;
252
+ text-decoration: none;
253
+ }
254
+
255
+ footer a:hover {
256
+ text-decoration: underline;
257
+ }
258
+
259
+ /* Responsive Design */
260
+ @media (max-width: 768px) {
261
+ header h1 {
262
+ font-size: 2rem;
263
+ }
264
+
265
+ .subtitle {
266
+ font-size: 1rem;
267
+ }
268
+
269
+ .projects-grid {
270
+ grid-template-columns: 1fr;
271
+ }
272
+
273
+ .results-header {
274
+ flex-direction: column;
275
+ align-items: flex-start;
276
+ }
277
+
278
+ .filter-buttons {
279
+ flex-direction: column;
280
+ }
281
+
282
+ .filter-btn {
283
+ width: 100%;
284
+ }
285
  }
286
 
287
+ /* Loading State */
288
+ .loading {
289
+ text-align: center;
290
+ padding: 3rem;
291
+ color: #718096;
292
+ font-size: 1.1rem;
293
  }
294
 
295
+ /* No Results */
296
+ .no-results {
297
+ text-align: center;
298
+ padding: 3rem;
299
+ color: #718096;
 
300
  }
301
 
302
+ .no-results h3 {
303
+ color: #4a5568;
304
+ margin-bottom: 0.5rem;
305
  }