Commit
Β·
323ad41
1
Parent(s):
948605a
commit
Browse files- README.md +65 -28
- index.html +1 -1
- parse_markdown.py +19 -6
- projects.json +106 -53
- script.js +3 -2
- style.css +9 -0
README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
---
|
| 2 |
title: Awesome Whisper Apps Browser
|
| 3 |
-
emoji:
|
| 4 |
colorFrom: purple
|
| 5 |
colorTo: blue
|
| 6 |
sdk: static
|
|
@@ -9,64 +9,101 @@ pinned: false
|
|
| 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)
|
|
|
|
|
|
|
|
|
|
|
|
|
| 13 |
|
| 14 |
## Features
|
| 15 |
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
-
|
| 19 |
-
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 20 |
|
| 21 |
## Data Source
|
| 22 |
|
| 23 |
-
The project
|
| 24 |
|
| 25 |
-
|
|
|
|
|
|
|
| 26 |
|
| 27 |
```bash
|
| 28 |
python parse_markdown.py
|
| 29 |
```
|
| 30 |
|
| 31 |
-
This
|
| 32 |
|
| 33 |
## Project Structure
|
| 34 |
|
| 35 |
```
|
| 36 |
.
|
| 37 |
-
βββ index.html # Main
|
| 38 |
-
βββ style.css #
|
| 39 |
-
βββ script.js #
|
| 40 |
-
βββ projects.md # Source data
|
| 41 |
-
βββ projects.json # Parsed project data
|
| 42 |
-
βββ parse_markdown.py #
|
| 43 |
-
βββ README.md #
|
| 44 |
```
|
| 45 |
|
| 46 |
-
##
|
|
|
|
|
|
|
| 47 |
|
| 48 |
-
|
|
|
|
|
|
|
| 49 |
|
| 50 |
-
|
| 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
|
| 57 |
|
|
|
|
| 58 |
- [Official Repository](https://github.com/openai/whisper)
|
| 59 |
- [Research Paper](https://arxiv.org/abs/2212.04356)
|
| 60 |
-
- [Hugging Face
|
| 61 |
|
| 62 |
## Contributing
|
| 63 |
|
| 64 |
-
To add new projects:
|
| 65 |
|
| 66 |
-
1. Edit `projects.md` following the
|
| 67 |
-
2. Run `python parse_markdown.py` to regenerate
|
| 68 |
-
3.
|
|
|
|
|
|
|
| 69 |
|
| 70 |
## License
|
| 71 |
|
| 72 |
-
This project browser is created to showcase the Awesome Whisper Apps collection. Individual projects
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
---
|
| 2 |
title: Awesome Whisper Apps Browser
|
| 3 |
+
emoji:
|
| 4 |
colorFrom: purple
|
| 5 |
colorTo: blue
|
| 6 |
sdk: static
|
|
|
|
| 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 |
+
## Overview
|
| 15 |
+
|
| 16 |
+
This Space provides a curated, searchable directory of projects leveraging OpenAI's Whisper model for speech recognition, transcription, and related tasks. The interface allows users to explore projects by platform compatibility, use case category, or through direct search.
|
| 17 |
|
| 18 |
## Features
|
| 19 |
|
| 20 |
+
### Browse by Platform
|
| 21 |
+
Filter projects by target platform:
|
| 22 |
+
- Linux
|
| 23 |
+
- macOS
|
| 24 |
+
- Windows
|
| 25 |
+
- Android
|
| 26 |
+
- iOS
|
| 27 |
+
- Cross-Platform
|
| 28 |
+
- Web
|
| 29 |
+
|
| 30 |
+
### Browse by Use Case
|
| 31 |
+
Discover projects organized by functionality:
|
| 32 |
+
- Voice Typing
|
| 33 |
+
- Subtitles and Captioning
|
| 34 |
+
- Meetings and Productivity
|
| 35 |
+
- Real-Time Transcription
|
| 36 |
+
- Developer Tools
|
| 37 |
+
- Model Variants
|
| 38 |
+
|
| 39 |
+
### Search and Sort
|
| 40 |
+
- **Search**: Quickly find projects by name or description keywords
|
| 41 |
+
- **Sort**: Organize results by name, platform, or use case for easier navigation
|
| 42 |
|
| 43 |
## Data Source
|
| 44 |
|
| 45 |
+
The project database is maintained in `projects.md` as an awesome list and automatically converted to structured JSON format for the web interface.
|
| 46 |
|
| 47 |
+
### Updating the Database
|
| 48 |
+
|
| 49 |
+
To regenerate the projects database from the source markdown:
|
| 50 |
|
| 51 |
```bash
|
| 52 |
python parse_markdown.py
|
| 53 |
```
|
| 54 |
|
| 55 |
+
This script parses `projects.md` and outputs `projects.json`, which powers the interactive browser.
|
| 56 |
|
| 57 |
## Project Structure
|
| 58 |
|
| 59 |
```
|
| 60 |
.
|
| 61 |
+
βββ index.html # Main application interface
|
| 62 |
+
βββ style.css # Stylesheet for the browser
|
| 63 |
+
βββ script.js # Client-side filtering and display logic
|
| 64 |
+
βββ projects.md # Source data in markdown format
|
| 65 |
+
βββ projects.json # Parsed, structured project data
|
| 66 |
+
βββ parse_markdown.py # Markdown-to-JSON conversion script
|
| 67 |
+
βββ README.md # Documentation
|
| 68 |
```
|
| 69 |
|
| 70 |
+
## Technical Architecture
|
| 71 |
+
|
| 72 |
+
This Space implements a lightweight static architecture:
|
| 73 |
|
| 74 |
+
1. **Data Layer**: `projects.md` serves as the authoritative source of project information
|
| 75 |
+
2. **Build Process**: `parse_markdown.py` extracts and structures data into JSON
|
| 76 |
+
3. **Frontend**: Vanilla JavaScript handles data loading, filtering, and dynamic display
|
| 77 |
|
| 78 |
+
No server-side processing or external dependencies are required at runtime.
|
|
|
|
|
|
|
| 79 |
|
| 80 |
## About Whisper
|
| 81 |
|
| 82 |
+
Whisper is OpenAI's state-of-the-art automatic speech recognition system, trained on 680,000 hours of multilingual and multitask supervised data. It demonstrates robust performance across diverse audio conditions and languages.
|
| 83 |
|
| 84 |
+
**Key Resources:**
|
| 85 |
- [Official Repository](https://github.com/openai/whisper)
|
| 86 |
- [Research Paper](https://arxiv.org/abs/2212.04356)
|
| 87 |
+
- [Hugging Face Model Collection](https://huggingface.co/collections/openai/whisper-release)
|
| 88 |
|
| 89 |
## Contributing
|
| 90 |
|
| 91 |
+
Contributions are welcome. To add new projects to the collection:
|
| 92 |
|
| 93 |
+
1. Edit `projects.md` following the established markdown format
|
| 94 |
+
2. Run `python parse_markdown.py` to regenerate `projects.json`
|
| 95 |
+
3. Submit changes including both updated `projects.md` and regenerated `projects.json`
|
| 96 |
+
|
| 97 |
+
Ensure project descriptions are accurate and links are current.
|
| 98 |
|
| 99 |
## License
|
| 100 |
|
| 101 |
+
This project browser is created to showcase the Awesome Whisper Apps collection. Individual projects listed maintain their own respective licenses.
|
| 102 |
+
|
| 103 |
+
## Created By
|
| 104 |
+
|
| 105 |
+
**Daniel Rosehill**
|
| 106 |
+
|
| 107 |
+
- Website: [danielrosehill.com](https://danielrosehill.com)
|
| 108 |
+
- GitHub: [github.com/danielrosehill](https://github.com/danielrosehill)
|
| 109 |
+
- Hugging Face: [huggingface.co/danielrosehill](https://huggingface.co/danielrosehill)
|
index.html
CHANGED
|
@@ -9,7 +9,7 @@
|
|
| 9 |
<body>
|
| 10 |
<header>
|
| 11 |
<div class="container">
|
| 12 |
-
<h1
|
| 13 |
<p class="subtitle">A curated collection of applications built with OpenAI Whisper for speech recognition</p>
|
| 14 |
</div>
|
| 15 |
</header>
|
|
|
|
| 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>
|
parse_markdown.py
CHANGED
|
@@ -20,8 +20,9 @@ def extract_github_repo(url):
|
|
| 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) <
|
| 25 |
return None
|
| 26 |
|
| 27 |
# Extract name and URL from first column
|
|
@@ -31,7 +32,14 @@ def parse_table_row(line, context):
|
|
| 31 |
|
| 32 |
name = match.group(1)
|
| 33 |
url = match.group(2)
|
| 34 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 35 |
|
| 36 |
return {
|
| 37 |
'name': name,
|
|
@@ -39,7 +47,8 @@ def parse_table_row(line, context):
|
|
| 39 |
'description': description,
|
| 40 |
'platforms': context.get('platforms', []),
|
| 41 |
'usecases': context.get('usecases', []),
|
| 42 |
-
'github_repo':
|
|
|
|
| 43 |
}
|
| 44 |
|
| 45 |
|
|
@@ -55,6 +64,7 @@ def parse_bullet_item(line, context):
|
|
| 55 |
name = match.group(1)
|
| 56 |
url = match.group(2)
|
| 57 |
description = match.group(3).strip()
|
|
|
|
| 58 |
|
| 59 |
return {
|
| 60 |
'name': name,
|
|
@@ -62,7 +72,8 @@ def parse_bullet_item(line, context):
|
|
| 62 |
'description': description,
|
| 63 |
'platforms': context.get('platforms', []),
|
| 64 |
'usecases': context.get('usecases', []),
|
| 65 |
-
'github_repo':
|
|
|
|
| 66 |
}
|
| 67 |
|
| 68 |
|
|
@@ -188,6 +199,7 @@ def parse_markdown(md_path):
|
|
| 188 |
name = match.group(1)
|
| 189 |
url = match.group(2)
|
| 190 |
description = match.group(3).strip()
|
|
|
|
| 191 |
|
| 192 |
project = {
|
| 193 |
'name': name,
|
|
@@ -195,7 +207,8 @@ def parse_markdown(md_path):
|
|
| 195 |
'description': description,
|
| 196 |
'platforms': current_context.get('platforms', ['web']),
|
| 197 |
'usecases': current_context.get('usecases', ['saas']),
|
| 198 |
-
'github_repo':
|
|
|
|
| 199 |
}
|
| 200 |
|
| 201 |
if not any(p['name'] == project['name'] for p in projects):
|
|
@@ -258,7 +271,7 @@ def main():
|
|
| 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"
|
| 262 |
|
| 263 |
# Print statistics
|
| 264 |
platforms = set()
|
|
|
|
| 20 |
def parse_table_row(line, context):
|
| 21 |
"""Parse a markdown table row."""
|
| 22 |
# Table format: | [Name](url) | stars_badge | Description |
|
| 23 |
+
# or: | [Name](url) | Platform | stars_badge | Description |
|
| 24 |
parts = [p.strip() for p in line.split('|')[1:-1]] # Remove empty first/last
|
| 25 |
+
if len(parts) < 2:
|
| 26 |
return None
|
| 27 |
|
| 28 |
# Extract name and URL from first column
|
|
|
|
| 32 |
|
| 33 |
name = match.group(1)
|
| 34 |
url = match.group(2)
|
| 35 |
+
github_repo = extract_github_repo(url)
|
| 36 |
+
|
| 37 |
+
# Find the description (last column that doesn't contain an image badge)
|
| 38 |
+
description = ""
|
| 39 |
+
for i in range(len(parts) - 1, 0, -1):
|
| 40 |
+
if '![' not in parts[i]:
|
| 41 |
+
description = parts[i]
|
| 42 |
+
break
|
| 43 |
|
| 44 |
return {
|
| 45 |
'name': name,
|
|
|
|
| 47 |
'description': description,
|
| 48 |
'platforms': context.get('platforms', []),
|
| 49 |
'usecases': context.get('usecases', []),
|
| 50 |
+
'github_repo': github_repo,
|
| 51 |
+
'has_stars': github_repo is not None
|
| 52 |
}
|
| 53 |
|
| 54 |
|
|
|
|
| 64 |
name = match.group(1)
|
| 65 |
url = match.group(2)
|
| 66 |
description = match.group(3).strip()
|
| 67 |
+
github_repo = extract_github_repo(url)
|
| 68 |
|
| 69 |
return {
|
| 70 |
'name': name,
|
|
|
|
| 72 |
'description': description,
|
| 73 |
'platforms': context.get('platforms', []),
|
| 74 |
'usecases': context.get('usecases', []),
|
| 75 |
+
'github_repo': github_repo,
|
| 76 |
+
'has_stars': github_repo is not None
|
| 77 |
}
|
| 78 |
|
| 79 |
|
|
|
|
| 199 |
name = match.group(1)
|
| 200 |
url = match.group(2)
|
| 201 |
description = match.group(3).strip()
|
| 202 |
+
github_repo = extract_github_repo(url)
|
| 203 |
|
| 204 |
project = {
|
| 205 |
'name': name,
|
|
|
|
| 207 |
'description': description,
|
| 208 |
'platforms': current_context.get('platforms', ['web']),
|
| 209 |
'usecases': current_context.get('usecases', ['saas']),
|
| 210 |
+
'github_repo': github_repo,
|
| 211 |
+
'has_stars': github_repo is not None
|
| 212 |
}
|
| 213 |
|
| 214 |
if not any(p['name'] == project['name'] for p in projects):
|
|
|
|
| 271 |
with open(json_path, 'w', encoding='utf-8') as f:
|
| 272 |
json.dump(projects, f, indent=2, ensure_ascii=False)
|
| 273 |
|
| 274 |
+
print(f"Created {json_path} with {len(projects)} projects")
|
| 275 |
|
| 276 |
# Print statistics
|
| 277 |
platforms = set()
|
projects.json
CHANGED
|
@@ -9,7 +9,8 @@
|
|
| 9 |
"usecases": [
|
| 10 |
"developer"
|
| 11 |
],
|
| 12 |
-
"github_repo": "chidiwilliams/buzz"
|
|
|
|
| 13 |
},
|
| 14 |
{
|
| 15 |
"name": "whisper-writer",
|
|
@@ -21,7 +22,8 @@
|
|
| 21 |
"usecases": [
|
| 22 |
"voice-typing"
|
| 23 |
],
|
| 24 |
-
"github_repo": "savbell/whisper-writer"
|
|
|
|
| 25 |
},
|
| 26 |
{
|
| 27 |
"name": "faster-whisper-GUI",
|
|
@@ -33,7 +35,8 @@
|
|
| 33 |
"usecases": [
|
| 34 |
"model-variants"
|
| 35 |
],
|
| 36 |
-
"github_repo": "CheshireCC/faster-whisper-GUI"
|
|
|
|
| 37 |
},
|
| 38 |
{
|
| 39 |
"name": "SoftWhisper",
|
|
@@ -45,7 +48,8 @@
|
|
| 45 |
"usecases": [
|
| 46 |
"developer"
|
| 47 |
],
|
| 48 |
-
"github_repo": "NullMagic2/SoftWhisper"
|
|
|
|
| 49 |
},
|
| 50 |
{
|
| 51 |
"name": "speech-assistant",
|
|
@@ -57,7 +61,8 @@
|
|
| 57 |
"usecases": [
|
| 58 |
"developer"
|
| 59 |
],
|
| 60 |
-
"github_repo": "Mohamad-Hussein/speech-assistant"
|
|
|
|
| 61 |
},
|
| 62 |
{
|
| 63 |
"name": "whisper-dictation",
|
|
@@ -69,7 +74,8 @@
|
|
| 69 |
"usecases": [
|
| 70 |
"voice-typing"
|
| 71 |
],
|
| 72 |
-
"github_repo": "foges/whisper-dictation"
|
|
|
|
| 73 |
},
|
| 74 |
{
|
| 75 |
"name": "whisper-realtime-gui",
|
|
@@ -81,7 +87,8 @@
|
|
| 81 |
"usecases": [
|
| 82 |
"real-time"
|
| 83 |
],
|
| 84 |
-
"github_repo": "phongthanhbuiit/whisper-realtime-gui"
|
|
|
|
| 85 |
},
|
| 86 |
{
|
| 87 |
"name": "whisper-ui",
|
|
@@ -93,7 +100,8 @@
|
|
| 93 |
"usecases": [
|
| 94 |
"developer"
|
| 95 |
],
|
| 96 |
-
"github_repo": "schnoddelbotz/whisper-ui"
|
|
|
|
| 97 |
},
|
| 98 |
{
|
| 99 |
"name": "whisper_dictation",
|
|
@@ -105,7 +113,8 @@
|
|
| 105 |
"usecases": [
|
| 106 |
"voice-typing"
|
| 107 |
],
|
| 108 |
-
"github_repo": "themanyone/whisper_dictation"
|
|
|
|
| 109 |
},
|
| 110 |
{
|
| 111 |
"name": "WhisperGUI",
|
|
@@ -117,7 +126,8 @@
|
|
| 117 |
"usecases": [
|
| 118 |
"developer"
|
| 119 |
],
|
| 120 |
-
"github_repo": "ADT109119/WhisperGUI"
|
|
|
|
| 121 |
},
|
| 122 |
{
|
| 123 |
"name": "froshine",
|
|
@@ -129,7 +139,8 @@
|
|
| 129 |
"usecases": [
|
| 130 |
"developer"
|
| 131 |
],
|
| 132 |
-
"github_repo": "AdrianScott/froshine"
|
|
|
|
| 133 |
},
|
| 134 |
{
|
| 135 |
"name": "speak-to-ai",
|
|
@@ -141,7 +152,8 @@
|
|
| 141 |
"usecases": [
|
| 142 |
"voice-typing"
|
| 143 |
],
|
| 144 |
-
"github_repo": "AshBuk/speak-to-ai"
|
|
|
|
| 145 |
},
|
| 146 |
{
|
| 147 |
"name": "Whisper-Notepad-For-Linux",
|
|
@@ -153,7 +165,8 @@
|
|
| 153 |
"usecases": [
|
| 154 |
"meetings"
|
| 155 |
],
|
| 156 |
-
"github_repo": "danielrosehill/Whisper-Notepad-For-Linux"
|
|
|
|
| 157 |
},
|
| 158 |
{
|
| 159 |
"name": "WhisperNow",
|
|
@@ -165,7 +178,8 @@
|
|
| 165 |
"usecases": [
|
| 166 |
"model-variants"
|
| 167 |
],
|
| 168 |
-
"github_repo": "shinglyu/WhisperNow"
|
|
|
|
| 169 |
},
|
| 170 |
{
|
| 171 |
"name": "whisper.cpp-cli",
|
|
@@ -177,7 +191,8 @@
|
|
| 177 |
"usecases": [
|
| 178 |
"model-variants"
|
| 179 |
],
|
| 180 |
-
"github_repo": "charliermarsh/whisper.cpp-cli"
|
|
|
|
| 181 |
},
|
| 182 |
{
|
| 183 |
"name": "blurt",
|
|
@@ -189,7 +204,8 @@
|
|
| 189 |
"usecases": [
|
| 190 |
"developer"
|
| 191 |
],
|
| 192 |
-
"github_repo": "QuantiusBenignus/blurt"
|
|
|
|
| 193 |
},
|
| 194 |
{
|
| 195 |
"name": "nerd-dictation",
|
|
@@ -201,7 +217,8 @@
|
|
| 201 |
"usecases": [
|
| 202 |
"voice-typing"
|
| 203 |
],
|
| 204 |
-
"github_repo": "ideasman42/nerd-dictation"
|
|
|
|
| 205 |
},
|
| 206 |
{
|
| 207 |
"name": "BlahST",
|
|
@@ -213,7 +230,8 @@
|
|
| 213 |
"usecases": [
|
| 214 |
"developer"
|
| 215 |
],
|
| 216 |
-
"github_repo": "QuantiusBenignus/BlahST"
|
|
|
|
| 217 |
},
|
| 218 |
{
|
| 219 |
"name": "Linux-Dictation-Project",
|
|
@@ -225,7 +243,8 @@
|
|
| 225 |
"usecases": [
|
| 226 |
"voice-typing"
|
| 227 |
],
|
| 228 |
-
"github_repo": "wheeler01/Linux-Dictation-Project"
|
|
|
|
| 229 |
},
|
| 230 |
{
|
| 231 |
"name": "linux-stt-input",
|
|
@@ -237,7 +256,8 @@
|
|
| 237 |
"usecases": [
|
| 238 |
"developer"
|
| 239 |
],
|
| 240 |
-
"github_repo": "fengwk/linux-stt-input"
|
|
|
|
| 241 |
},
|
| 242 |
{
|
| 243 |
"name": "linux-voice-to-text-ai",
|
|
@@ -249,7 +269,8 @@
|
|
| 249 |
"usecases": [
|
| 250 |
"voice-typing"
|
| 251 |
],
|
| 252 |
-
"github_repo": "trebormc/linux-voice-to-text-ai"
|
|
|
|
| 253 |
},
|
| 254 |
{
|
| 255 |
"name": "LinuxWhisper",
|
|
@@ -261,7 +282,8 @@
|
|
| 261 |
"usecases": [
|
| 262 |
"model-variants"
|
| 263 |
],
|
| 264 |
-
"github_repo": "vitali87/LinuxWhisper"
|
|
|
|
| 265 |
},
|
| 266 |
{
|
| 267 |
"name": "voice-typing-linux",
|
|
@@ -273,7 +295,8 @@
|
|
| 273 |
"usecases": [
|
| 274 |
"voice-typing"
|
| 275 |
],
|
| 276 |
-
"github_repo": "GitJuhb/voice-typing-linux"
|
|
|
|
| 277 |
},
|
| 278 |
{
|
| 279 |
"name": "Whisper-Dictation",
|
|
@@ -285,7 +308,8 @@
|
|
| 285 |
"usecases": [
|
| 286 |
"voice-typing"
|
| 287 |
],
|
| 288 |
-
"github_repo": "LumenYoung/Whisper-Dictation"
|
|
|
|
| 289 |
},
|
| 290 |
{
|
| 291 |
"name": "whisper-flow-linux",
|
|
@@ -297,7 +321,8 @@
|
|
| 297 |
"usecases": [
|
| 298 |
"model-variants"
|
| 299 |
],
|
| 300 |
-
"github_repo": "sapountzis/whisper-flow-linux"
|
|
|
|
| 301 |
},
|
| 302 |
{
|
| 303 |
"name": "whisper-hotkey-linux",
|
|
@@ -309,7 +334,8 @@
|
|
| 309 |
"usecases": [
|
| 310 |
"model-variants"
|
| 311 |
],
|
| 312 |
-
"github_repo": "atkvishnu/whisper-hotkey-linux"
|
|
|
|
| 313 |
},
|
| 314 |
{
|
| 315 |
"name": "whispertrigger",
|
|
@@ -321,7 +347,8 @@
|
|
| 321 |
"usecases": [
|
| 322 |
"model-variants"
|
| 323 |
],
|
| 324 |
-
"github_repo": "RetroTrigger/whispertrigger"
|
|
|
|
| 325 |
},
|
| 326 |
{
|
| 327 |
"name": "whisprd",
|
|
@@ -333,7 +360,8 @@
|
|
| 333 |
"usecases": [
|
| 334 |
"model-variants"
|
| 335 |
],
|
| 336 |
-
"github_repo": "AgenticToaster/whisprd"
|
|
|
|
| 337 |
},
|
| 338 |
{
|
| 339 |
"name": "whisper-to-input",
|
|
@@ -345,7 +373,8 @@
|
|
| 345 |
"usecases": [
|
| 346 |
"model-variants"
|
| 347 |
],
|
| 348 |
-
"github_repo": "j3soon/whisper-to-input"
|
|
|
|
| 349 |
},
|
| 350 |
{
|
| 351 |
"name": "whispy",
|
|
@@ -357,7 +386,8 @@
|
|
| 357 |
"usecases": [
|
| 358 |
"developer"
|
| 359 |
],
|
| 360 |
-
"github_repo": "daaku/whispy"
|
|
|
|
| 361 |
},
|
| 362 |
{
|
| 363 |
"name": "dicti",
|
|
@@ -369,7 +399,8 @@
|
|
| 369 |
"usecases": [
|
| 370 |
"voice-typing"
|
| 371 |
],
|
| 372 |
-
"github_repo": "tksimson/dicti"
|
|
|
|
| 373 |
},
|
| 374 |
{
|
| 375 |
"name": "sonori",
|
|
@@ -381,7 +412,8 @@
|
|
| 381 |
"usecases": [
|
| 382 |
"voice-typing"
|
| 383 |
],
|
| 384 |
-
"github_repo": "0xPD33/sonori"
|
|
|
|
| 385 |
},
|
| 386 |
{
|
| 387 |
"name": "hushnote",
|
|
@@ -393,7 +425,8 @@
|
|
| 393 |
"usecases": [
|
| 394 |
"meetings"
|
| 395 |
],
|
| 396 |
-
"github_repo": "peteonrails/hushnote"
|
|
|
|
| 397 |
},
|
| 398 |
{
|
| 399 |
"name": "Local-Voice",
|
|
@@ -405,7 +438,8 @@
|
|
| 405 |
"usecases": [
|
| 406 |
"voice-typing"
|
| 407 |
],
|
| 408 |
-
"github_repo": "shashank2122/Local-Voice"
|
|
|
|
| 409 |
},
|
| 410 |
{
|
| 411 |
"name": "s2t",
|
|
@@ -417,7 +451,8 @@
|
|
| 417 |
"usecases": [
|
| 418 |
"developer"
|
| 419 |
],
|
| 420 |
-
"github_repo": "franchesoni/s2t"
|
|
|
|
| 421 |
},
|
| 422 |
{
|
| 423 |
"name": "Whisper-Notepad-Simple",
|
|
@@ -429,7 +464,8 @@
|
|
| 429 |
"usecases": [
|
| 430 |
"meetings"
|
| 431 |
],
|
| 432 |
-
"github_repo": "danielrosehill/Whisper-Notepad-Simple"
|
|
|
|
| 433 |
},
|
| 434 |
{
|
| 435 |
"name": "Linux-AI-Assistant-scripts",
|
|
@@ -441,7 +477,8 @@
|
|
| 441 |
"usecases": [
|
| 442 |
"developer"
|
| 443 |
],
|
| 444 |
-
"github_repo": "samoylenkodmitry/Linux-AI-Assistant-scripts"
|
|
|
|
| 445 |
},
|
| 446 |
{
|
| 447 |
"name": "SuperWhisper",
|
|
@@ -453,7 +490,8 @@
|
|
| 453 |
"usecases": [
|
| 454 |
"voice-typing"
|
| 455 |
],
|
| 456 |
-
"github_repo": null
|
|
|
|
| 457 |
},
|
| 458 |
{
|
| 459 |
"name": "OpenSuperWhisper",
|
|
@@ -465,7 +503,8 @@
|
|
| 465 |
"usecases": [
|
| 466 |
"model-variants"
|
| 467 |
],
|
| 468 |
-
"github_repo": "Starmel/OpenSuperWhisper"
|
|
|
|
| 469 |
},
|
| 470 |
{
|
| 471 |
"name": "WhisperKit",
|
|
@@ -477,7 +516,8 @@
|
|
| 477 |
"usecases": [
|
| 478 |
"model-variants"
|
| 479 |
],
|
| 480 |
-
"github_repo": "argmaxinc/WhisperKit"
|
|
|
|
| 481 |
},
|
| 482 |
{
|
| 483 |
"name": "Careless Whisper",
|
|
@@ -489,7 +529,8 @@
|
|
| 489 |
"usecases": [
|
| 490 |
"developer"
|
| 491 |
],
|
| 492 |
-
"github_repo": null
|
|
|
|
| 493 |
},
|
| 494 |
{
|
| 495 |
"name": "ollama-voice-mac",
|
|
@@ -501,7 +542,8 @@
|
|
| 501 |
"usecases": [
|
| 502 |
"voice-typing"
|
| 503 |
],
|
| 504 |
-
"github_repo": "apeatling/ollama-voice-mac"
|
|
|
|
| 505 |
},
|
| 506 |
{
|
| 507 |
"name": "whisperanywhere-js",
|
|
@@ -513,7 +555,8 @@
|
|
| 513 |
"usecases": [
|
| 514 |
"model-variants"
|
| 515 |
],
|
| 516 |
-
"github_repo": "unclecode/whisperanywhere-js"
|
|
|
|
| 517 |
},
|
| 518 |
{
|
| 519 |
"name": "AI Transcription",
|
|
@@ -525,7 +568,8 @@
|
|
| 525 |
"usecases": [
|
| 526 |
"developer"
|
| 527 |
],
|
| 528 |
-
"github_repo": null
|
|
|
|
| 529 |
},
|
| 530 |
{
|
| 531 |
"name": "Whisper Typing for Windows",
|
|
@@ -537,7 +581,8 @@
|
|
| 537 |
"usecases": [
|
| 538 |
"voice-typing"
|
| 539 |
],
|
| 540 |
-
"github_repo": null
|
|
|
|
| 541 |
},
|
| 542 |
{
|
| 543 |
"name": "WinWhisper",
|
|
@@ -549,7 +594,8 @@
|
|
| 549 |
"usecases": [
|
| 550 |
"model-variants"
|
| 551 |
],
|
| 552 |
-
"github_repo": "GewoonJaap/WinWhisper"
|
|
|
|
| 553 |
},
|
| 554 |
{
|
| 555 |
"name": "whisperIME",
|
|
@@ -561,7 +607,8 @@
|
|
| 561 |
"usecases": [
|
| 562 |
"model-variants"
|
| 563 |
],
|
| 564 |
-
"github_repo": "woheller69/whisperIME"
|
|
|
|
| 565 |
},
|
| 566 |
{
|
| 567 |
"name": "WhisperInput",
|
|
@@ -573,7 +620,8 @@
|
|
| 573 |
"usecases": [
|
| 574 |
"model-variants"
|
| 575 |
],
|
| 576 |
-
"github_repo": "alex-vt/WhisperInput"
|
|
|
|
| 577 |
},
|
| 578 |
{
|
| 579 |
"name": "WhisperKitAndroid",
|
|
@@ -585,7 +633,8 @@
|
|
| 585 |
"usecases": [
|
| 586 |
"model-variants"
|
| 587 |
],
|
| 588 |
-
"github_repo": "argmaxinc/WhisperKitAndroid"
|
|
|
|
| 589 |
},
|
| 590 |
{
|
| 591 |
"name": "RTranslator",
|
|
@@ -597,7 +646,8 @@
|
|
| 597 |
"usecases": [
|
| 598 |
"real-time"
|
| 599 |
],
|
| 600 |
-
"github_repo": "niedev/RTranslator"
|
|
|
|
| 601 |
},
|
| 602 |
{
|
| 603 |
"name": "Dictate",
|
|
@@ -609,7 +659,8 @@
|
|
| 609 |
"usecases": [
|
| 610 |
"voice-typing"
|
| 611 |
],
|
| 612 |
-
"github_repo": "DevEmperor/Dictate"
|
|
|
|
| 613 |
},
|
| 614 |
{
|
| 615 |
"name": "whisper_android",
|
|
@@ -621,7 +672,8 @@
|
|
| 621 |
"usecases": [
|
| 622 |
"model-variants"
|
| 623 |
],
|
| 624 |
-
"github_repo": "vilassn/whisper_android"
|
|
|
|
| 625 |
},
|
| 626 |
{
|
| 627 |
"name": "Whisperboard",
|
|
@@ -633,6 +685,7 @@
|
|
| 633 |
"usecases": [
|
| 634 |
"model-variants"
|
| 635 |
],
|
| 636 |
-
"github_repo": "Saik0s/Whisperboard"
|
|
|
|
| 637 |
}
|
| 638 |
]
|
|
|
|
| 9 |
"usecases": [
|
| 10 |
"developer"
|
| 11 |
],
|
| 12 |
+
"github_repo": "chidiwilliams/buzz",
|
| 13 |
+
"has_stars": true
|
| 14 |
},
|
| 15 |
{
|
| 16 |
"name": "whisper-writer",
|
|
|
|
| 22 |
"usecases": [
|
| 23 |
"voice-typing"
|
| 24 |
],
|
| 25 |
+
"github_repo": "savbell/whisper-writer",
|
| 26 |
+
"has_stars": true
|
| 27 |
},
|
| 28 |
{
|
| 29 |
"name": "faster-whisper-GUI",
|
|
|
|
| 35 |
"usecases": [
|
| 36 |
"model-variants"
|
| 37 |
],
|
| 38 |
+
"github_repo": "CheshireCC/faster-whisper-GUI",
|
| 39 |
+
"has_stars": true
|
| 40 |
},
|
| 41 |
{
|
| 42 |
"name": "SoftWhisper",
|
|
|
|
| 48 |
"usecases": [
|
| 49 |
"developer"
|
| 50 |
],
|
| 51 |
+
"github_repo": "NullMagic2/SoftWhisper",
|
| 52 |
+
"has_stars": true
|
| 53 |
},
|
| 54 |
{
|
| 55 |
"name": "speech-assistant",
|
|
|
|
| 61 |
"usecases": [
|
| 62 |
"developer"
|
| 63 |
],
|
| 64 |
+
"github_repo": "Mohamad-Hussein/speech-assistant",
|
| 65 |
+
"has_stars": true
|
| 66 |
},
|
| 67 |
{
|
| 68 |
"name": "whisper-dictation",
|
|
|
|
| 74 |
"usecases": [
|
| 75 |
"voice-typing"
|
| 76 |
],
|
| 77 |
+
"github_repo": "foges/whisper-dictation",
|
| 78 |
+
"has_stars": true
|
| 79 |
},
|
| 80 |
{
|
| 81 |
"name": "whisper-realtime-gui",
|
|
|
|
| 87 |
"usecases": [
|
| 88 |
"real-time"
|
| 89 |
],
|
| 90 |
+
"github_repo": "phongthanhbuiit/whisper-realtime-gui",
|
| 91 |
+
"has_stars": true
|
| 92 |
},
|
| 93 |
{
|
| 94 |
"name": "whisper-ui",
|
|
|
|
| 100 |
"usecases": [
|
| 101 |
"developer"
|
| 102 |
],
|
| 103 |
+
"github_repo": "schnoddelbotz/whisper-ui",
|
| 104 |
+
"has_stars": true
|
| 105 |
},
|
| 106 |
{
|
| 107 |
"name": "whisper_dictation",
|
|
|
|
| 113 |
"usecases": [
|
| 114 |
"voice-typing"
|
| 115 |
],
|
| 116 |
+
"github_repo": "themanyone/whisper_dictation",
|
| 117 |
+
"has_stars": true
|
| 118 |
},
|
| 119 |
{
|
| 120 |
"name": "WhisperGUI",
|
|
|
|
| 126 |
"usecases": [
|
| 127 |
"developer"
|
| 128 |
],
|
| 129 |
+
"github_repo": "ADT109119/WhisperGUI",
|
| 130 |
+
"has_stars": true
|
| 131 |
},
|
| 132 |
{
|
| 133 |
"name": "froshine",
|
|
|
|
| 139 |
"usecases": [
|
| 140 |
"developer"
|
| 141 |
],
|
| 142 |
+
"github_repo": "AdrianScott/froshine",
|
| 143 |
+
"has_stars": true
|
| 144 |
},
|
| 145 |
{
|
| 146 |
"name": "speak-to-ai",
|
|
|
|
| 152 |
"usecases": [
|
| 153 |
"voice-typing"
|
| 154 |
],
|
| 155 |
+
"github_repo": "AshBuk/speak-to-ai",
|
| 156 |
+
"has_stars": true
|
| 157 |
},
|
| 158 |
{
|
| 159 |
"name": "Whisper-Notepad-For-Linux",
|
|
|
|
| 165 |
"usecases": [
|
| 166 |
"meetings"
|
| 167 |
],
|
| 168 |
+
"github_repo": "danielrosehill/Whisper-Notepad-For-Linux",
|
| 169 |
+
"has_stars": true
|
| 170 |
},
|
| 171 |
{
|
| 172 |
"name": "WhisperNow",
|
|
|
|
| 178 |
"usecases": [
|
| 179 |
"model-variants"
|
| 180 |
],
|
| 181 |
+
"github_repo": "shinglyu/WhisperNow",
|
| 182 |
+
"has_stars": true
|
| 183 |
},
|
| 184 |
{
|
| 185 |
"name": "whisper.cpp-cli",
|
|
|
|
| 191 |
"usecases": [
|
| 192 |
"model-variants"
|
| 193 |
],
|
| 194 |
+
"github_repo": "charliermarsh/whisper.cpp-cli",
|
| 195 |
+
"has_stars": true
|
| 196 |
},
|
| 197 |
{
|
| 198 |
"name": "blurt",
|
|
|
|
| 204 |
"usecases": [
|
| 205 |
"developer"
|
| 206 |
],
|
| 207 |
+
"github_repo": "QuantiusBenignus/blurt",
|
| 208 |
+
"has_stars": true
|
| 209 |
},
|
| 210 |
{
|
| 211 |
"name": "nerd-dictation",
|
|
|
|
| 217 |
"usecases": [
|
| 218 |
"voice-typing"
|
| 219 |
],
|
| 220 |
+
"github_repo": "ideasman42/nerd-dictation",
|
| 221 |
+
"has_stars": true
|
| 222 |
},
|
| 223 |
{
|
| 224 |
"name": "BlahST",
|
|
|
|
| 230 |
"usecases": [
|
| 231 |
"developer"
|
| 232 |
],
|
| 233 |
+
"github_repo": "QuantiusBenignus/BlahST",
|
| 234 |
+
"has_stars": true
|
| 235 |
},
|
| 236 |
{
|
| 237 |
"name": "Linux-Dictation-Project",
|
|
|
|
| 243 |
"usecases": [
|
| 244 |
"voice-typing"
|
| 245 |
],
|
| 246 |
+
"github_repo": "wheeler01/Linux-Dictation-Project",
|
| 247 |
+
"has_stars": true
|
| 248 |
},
|
| 249 |
{
|
| 250 |
"name": "linux-stt-input",
|
|
|
|
| 256 |
"usecases": [
|
| 257 |
"developer"
|
| 258 |
],
|
| 259 |
+
"github_repo": "fengwk/linux-stt-input",
|
| 260 |
+
"has_stars": true
|
| 261 |
},
|
| 262 |
{
|
| 263 |
"name": "linux-voice-to-text-ai",
|
|
|
|
| 269 |
"usecases": [
|
| 270 |
"voice-typing"
|
| 271 |
],
|
| 272 |
+
"github_repo": "trebormc/linux-voice-to-text-ai",
|
| 273 |
+
"has_stars": true
|
| 274 |
},
|
| 275 |
{
|
| 276 |
"name": "LinuxWhisper",
|
|
|
|
| 282 |
"usecases": [
|
| 283 |
"model-variants"
|
| 284 |
],
|
| 285 |
+
"github_repo": "vitali87/LinuxWhisper",
|
| 286 |
+
"has_stars": true
|
| 287 |
},
|
| 288 |
{
|
| 289 |
"name": "voice-typing-linux",
|
|
|
|
| 295 |
"usecases": [
|
| 296 |
"voice-typing"
|
| 297 |
],
|
| 298 |
+
"github_repo": "GitJuhb/voice-typing-linux",
|
| 299 |
+
"has_stars": true
|
| 300 |
},
|
| 301 |
{
|
| 302 |
"name": "Whisper-Dictation",
|
|
|
|
| 308 |
"usecases": [
|
| 309 |
"voice-typing"
|
| 310 |
],
|
| 311 |
+
"github_repo": "LumenYoung/Whisper-Dictation",
|
| 312 |
+
"has_stars": true
|
| 313 |
},
|
| 314 |
{
|
| 315 |
"name": "whisper-flow-linux",
|
|
|
|
| 321 |
"usecases": [
|
| 322 |
"model-variants"
|
| 323 |
],
|
| 324 |
+
"github_repo": "sapountzis/whisper-flow-linux",
|
| 325 |
+
"has_stars": true
|
| 326 |
},
|
| 327 |
{
|
| 328 |
"name": "whisper-hotkey-linux",
|
|
|
|
| 334 |
"usecases": [
|
| 335 |
"model-variants"
|
| 336 |
],
|
| 337 |
+
"github_repo": "atkvishnu/whisper-hotkey-linux",
|
| 338 |
+
"has_stars": true
|
| 339 |
},
|
| 340 |
{
|
| 341 |
"name": "whispertrigger",
|
|
|
|
| 347 |
"usecases": [
|
| 348 |
"model-variants"
|
| 349 |
],
|
| 350 |
+
"github_repo": "RetroTrigger/whispertrigger",
|
| 351 |
+
"has_stars": true
|
| 352 |
},
|
| 353 |
{
|
| 354 |
"name": "whisprd",
|
|
|
|
| 360 |
"usecases": [
|
| 361 |
"model-variants"
|
| 362 |
],
|
| 363 |
+
"github_repo": "AgenticToaster/whisprd",
|
| 364 |
+
"has_stars": true
|
| 365 |
},
|
| 366 |
{
|
| 367 |
"name": "whisper-to-input",
|
|
|
|
| 373 |
"usecases": [
|
| 374 |
"model-variants"
|
| 375 |
],
|
| 376 |
+
"github_repo": "j3soon/whisper-to-input",
|
| 377 |
+
"has_stars": true
|
| 378 |
},
|
| 379 |
{
|
| 380 |
"name": "whispy",
|
|
|
|
| 386 |
"usecases": [
|
| 387 |
"developer"
|
| 388 |
],
|
| 389 |
+
"github_repo": "daaku/whispy",
|
| 390 |
+
"has_stars": true
|
| 391 |
},
|
| 392 |
{
|
| 393 |
"name": "dicti",
|
|
|
|
| 399 |
"usecases": [
|
| 400 |
"voice-typing"
|
| 401 |
],
|
| 402 |
+
"github_repo": "tksimson/dicti",
|
| 403 |
+
"has_stars": true
|
| 404 |
},
|
| 405 |
{
|
| 406 |
"name": "sonori",
|
|
|
|
| 412 |
"usecases": [
|
| 413 |
"voice-typing"
|
| 414 |
],
|
| 415 |
+
"github_repo": "0xPD33/sonori",
|
| 416 |
+
"has_stars": true
|
| 417 |
},
|
| 418 |
{
|
| 419 |
"name": "hushnote",
|
|
|
|
| 425 |
"usecases": [
|
| 426 |
"meetings"
|
| 427 |
],
|
| 428 |
+
"github_repo": "peteonrails/hushnote",
|
| 429 |
+
"has_stars": true
|
| 430 |
},
|
| 431 |
{
|
| 432 |
"name": "Local-Voice",
|
|
|
|
| 438 |
"usecases": [
|
| 439 |
"voice-typing"
|
| 440 |
],
|
| 441 |
+
"github_repo": "shashank2122/Local-Voice",
|
| 442 |
+
"has_stars": true
|
| 443 |
},
|
| 444 |
{
|
| 445 |
"name": "s2t",
|
|
|
|
| 451 |
"usecases": [
|
| 452 |
"developer"
|
| 453 |
],
|
| 454 |
+
"github_repo": "franchesoni/s2t",
|
| 455 |
+
"has_stars": true
|
| 456 |
},
|
| 457 |
{
|
| 458 |
"name": "Whisper-Notepad-Simple",
|
|
|
|
| 464 |
"usecases": [
|
| 465 |
"meetings"
|
| 466 |
],
|
| 467 |
+
"github_repo": "danielrosehill/Whisper-Notepad-Simple",
|
| 468 |
+
"has_stars": true
|
| 469 |
},
|
| 470 |
{
|
| 471 |
"name": "Linux-AI-Assistant-scripts",
|
|
|
|
| 477 |
"usecases": [
|
| 478 |
"developer"
|
| 479 |
],
|
| 480 |
+
"github_repo": "samoylenkodmitry/Linux-AI-Assistant-scripts",
|
| 481 |
+
"has_stars": true
|
| 482 |
},
|
| 483 |
{
|
| 484 |
"name": "SuperWhisper",
|
|
|
|
| 490 |
"usecases": [
|
| 491 |
"voice-typing"
|
| 492 |
],
|
| 493 |
+
"github_repo": null,
|
| 494 |
+
"has_stars": false
|
| 495 |
},
|
| 496 |
{
|
| 497 |
"name": "OpenSuperWhisper",
|
|
|
|
| 503 |
"usecases": [
|
| 504 |
"model-variants"
|
| 505 |
],
|
| 506 |
+
"github_repo": "Starmel/OpenSuperWhisper",
|
| 507 |
+
"has_stars": true
|
| 508 |
},
|
| 509 |
{
|
| 510 |
"name": "WhisperKit",
|
|
|
|
| 516 |
"usecases": [
|
| 517 |
"model-variants"
|
| 518 |
],
|
| 519 |
+
"github_repo": "argmaxinc/WhisperKit",
|
| 520 |
+
"has_stars": true
|
| 521 |
},
|
| 522 |
{
|
| 523 |
"name": "Careless Whisper",
|
|
|
|
| 529 |
"usecases": [
|
| 530 |
"developer"
|
| 531 |
],
|
| 532 |
+
"github_repo": null,
|
| 533 |
+
"has_stars": false
|
| 534 |
},
|
| 535 |
{
|
| 536 |
"name": "ollama-voice-mac",
|
|
|
|
| 542 |
"usecases": [
|
| 543 |
"voice-typing"
|
| 544 |
],
|
| 545 |
+
"github_repo": "apeatling/ollama-voice-mac",
|
| 546 |
+
"has_stars": true
|
| 547 |
},
|
| 548 |
{
|
| 549 |
"name": "whisperanywhere-js",
|
|
|
|
| 555 |
"usecases": [
|
| 556 |
"model-variants"
|
| 557 |
],
|
| 558 |
+
"github_repo": "unclecode/whisperanywhere-js",
|
| 559 |
+
"has_stars": true
|
| 560 |
},
|
| 561 |
{
|
| 562 |
"name": "AI Transcription",
|
|
|
|
| 568 |
"usecases": [
|
| 569 |
"developer"
|
| 570 |
],
|
| 571 |
+
"github_repo": null,
|
| 572 |
+
"has_stars": false
|
| 573 |
},
|
| 574 |
{
|
| 575 |
"name": "Whisper Typing for Windows",
|
|
|
|
| 581 |
"usecases": [
|
| 582 |
"voice-typing"
|
| 583 |
],
|
| 584 |
+
"github_repo": null,
|
| 585 |
+
"has_stars": false
|
| 586 |
},
|
| 587 |
{
|
| 588 |
"name": "WinWhisper",
|
|
|
|
| 594 |
"usecases": [
|
| 595 |
"model-variants"
|
| 596 |
],
|
| 597 |
+
"github_repo": "GewoonJaap/WinWhisper",
|
| 598 |
+
"has_stars": true
|
| 599 |
},
|
| 600 |
{
|
| 601 |
"name": "whisperIME",
|
|
|
|
| 607 |
"usecases": [
|
| 608 |
"model-variants"
|
| 609 |
],
|
| 610 |
+
"github_repo": "woheller69/whisperIME",
|
| 611 |
+
"has_stars": true
|
| 612 |
},
|
| 613 |
{
|
| 614 |
"name": "WhisperInput",
|
|
|
|
| 620 |
"usecases": [
|
| 621 |
"model-variants"
|
| 622 |
],
|
| 623 |
+
"github_repo": "alex-vt/WhisperInput",
|
| 624 |
+
"has_stars": true
|
| 625 |
},
|
| 626 |
{
|
| 627 |
"name": "WhisperKitAndroid",
|
|
|
|
| 633 |
"usecases": [
|
| 634 |
"model-variants"
|
| 635 |
],
|
| 636 |
+
"github_repo": "argmaxinc/WhisperKitAndroid",
|
| 637 |
+
"has_stars": true
|
| 638 |
},
|
| 639 |
{
|
| 640 |
"name": "RTranslator",
|
|
|
|
| 646 |
"usecases": [
|
| 647 |
"real-time"
|
| 648 |
],
|
| 649 |
+
"github_repo": "niedev/RTranslator",
|
| 650 |
+
"has_stars": true
|
| 651 |
},
|
| 652 |
{
|
| 653 |
"name": "Dictate",
|
|
|
|
| 659 |
"usecases": [
|
| 660 |
"voice-typing"
|
| 661 |
],
|
| 662 |
+
"github_repo": "DevEmperor/Dictate",
|
| 663 |
+
"has_stars": true
|
| 664 |
},
|
| 665 |
{
|
| 666 |
"name": "whisper_android",
|
|
|
|
| 672 |
"usecases": [
|
| 673 |
"model-variants"
|
| 674 |
],
|
| 675 |
+
"github_repo": "vilassn/whisper_android",
|
| 676 |
+
"has_stars": true
|
| 677 |
},
|
| 678 |
{
|
| 679 |
"name": "Whisperboard",
|
|
|
|
| 685 |
"usecases": [
|
| 686 |
"model-variants"
|
| 687 |
],
|
| 688 |
+
"github_repo": "Saik0s/Whisperboard",
|
| 689 |
+
"has_stars": true
|
| 690 |
}
|
| 691 |
]
|
script.js
CHANGED
|
@@ -99,14 +99,15 @@ function createProjectCard(project) {
|
|
| 99 |
.map(u => `<span class="meta-tag usecase-tag">${formatTag(u)}</span>`)
|
| 100 |
.join('');
|
| 101 |
|
| 102 |
-
const
|
| 103 |
-
? `<
|
| 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">
|
|
|
|
| 99 |
.map(u => `<span class="meta-tag usecase-tag">${formatTag(u)}</span>`)
|
| 100 |
.join('');
|
| 101 |
|
| 102 |
+
const starBadge = project.github_repo
|
| 103 |
+
? `<img src="https://img.shields.io/github/stars/${project.github_repo}?style=flat-square" alt="GitHub stars" class="github-stars-badge">`
|
| 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 |
+
${starBadge}
|
| 111 |
</h3>
|
| 112 |
<p class="project-description">${escapeHtml(project.description)}</p>
|
| 113 |
<div class="project-meta">
|
style.css
CHANGED
|
@@ -186,6 +186,10 @@ main {
|
|
| 186 |
color: #2d3748;
|
| 187 |
margin-bottom: 0.75rem;
|
| 188 |
font-size: 1.2rem;
|
|
|
|
|
|
|
|
|
|
|
|
|
| 189 |
}
|
| 190 |
|
| 191 |
.project-card h3 a {
|
|
@@ -197,6 +201,11 @@ main {
|
|
| 197 |
text-decoration: underline;
|
| 198 |
}
|
| 199 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 200 |
.project-description {
|
| 201 |
color: #4a5568;
|
| 202 |
margin-bottom: 1rem;
|
|
|
|
| 186 |
color: #2d3748;
|
| 187 |
margin-bottom: 0.75rem;
|
| 188 |
font-size: 1.2rem;
|
| 189 |
+
display: flex;
|
| 190 |
+
align-items: center;
|
| 191 |
+
gap: 0.75rem;
|
| 192 |
+
flex-wrap: wrap;
|
| 193 |
}
|
| 194 |
|
| 195 |
.project-card h3 a {
|
|
|
|
| 201 |
text-decoration: underline;
|
| 202 |
}
|
| 203 |
|
| 204 |
+
.github-stars-badge {
|
| 205 |
+
height: 20px;
|
| 206 |
+
vertical-align: middle;
|
| 207 |
+
}
|
| 208 |
+
|
| 209 |
.project-description {
|
| 210 |
color: #4a5568;
|
| 211 |
margin-bottom: 1rem;
|