whisper-windows-mcp 2.2.1 → 2.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +20 -1
- package/LICENSE-COMMERCIAL.md +58 -0
- package/PRIVACY.pl.md +135 -0
- package/PRIVACY.ro.md +135 -0
- package/README.es.md +393 -393
- package/README.id.md +393 -393
- package/README.ja.md +402 -402
- package/README.ko.md +393 -393
- package/README.md +393 -393
- package/README.pl.md +393 -0
- package/README.pt-BR.md +393 -393
- package/README.ro.md +393 -0
- package/README.uk.md +393 -393
- package/README.vi.md +393 -393
- package/ROADMAP.es.md +200 -192
- package/ROADMAP.id.md +289 -290
- package/ROADMAP.ja.md +301 -302
- package/ROADMAP.ko.md +286 -287
- package/ROADMAP.pl.md +198 -0
- package/ROADMAP.pt-BR.md +286 -287
- package/ROADMAP.ro.md +200 -0
- package/ROADMAP.uk.md +290 -291
- package/ROADMAP.vi.md +286 -287
- package/SECURITY.pl.md +47 -0
- package/SECURITY.ro.md +47 -0
- package/TROUBLESHOOTING.pl.md +323 -0
- package/TROUBLESHOOTING.ro.md +323 -0
- package/package.json +2 -2
- package/patch_roadmaps.py +72 -0
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
# whisper-windows-mcp — Depanare
|
|
2
|
+
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
## Listă de verificare rapidă
|
|
6
|
+
|
|
7
|
+
Înainte de a investiga mai profund, verifică toate punctele de mai jos:
|
|
8
|
+
|
|
9
|
+
- Căile din `claude_desktop_config.json` folosesc **bare oblice inverse duble** (`C:\\whisper\\...`)
|
|
10
|
+
- `whisper-cli.exe` există la calea specificată în `WHISPER_CLI_PATH`
|
|
11
|
+
- Fișierul model `.bin` există la calea specificată în `WHISPER_MODEL`
|
|
12
|
+
- FFmpeg este instalat și accesibil (`ffmpeg -version` funcționează în linia de comandă)
|
|
13
|
+
- Claude Desktop a fost **repornit complet** după editarea configurației (ieșit din bara de sistem, nu doar închis fereastra)
|
|
14
|
+
- Serverul whisper apare ca **în execuție** (insignă verde) în Setări → Dezvoltator
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## "whisper nu este conectat" sau niciun instrument disponibil
|
|
19
|
+
|
|
20
|
+
**Cauza cea mai frecventă:** Claude Desktop nu a fost repornit complet după editarea configurației.
|
|
21
|
+
|
|
22
|
+
1. Fă clic dreapta pe pictograma Claude din bara de sistem → Ieși
|
|
23
|
+
2. Redeschide Claude Desktop
|
|
24
|
+
3. Mergi la Setări → Dezvoltator și verifică insigna verde **în execuție** de lângă whisper
|
|
25
|
+
|
|
26
|
+
Dacă tot nu apare:
|
|
27
|
+
|
|
28
|
+
1. Deschide `claude_desktop_config.json` și verifică erorile de sintaxă JSON (virgule lipsă, acolade nepotrivite)
|
|
29
|
+
2. Asigură-te că toate căile folosesc bare oblice inverse duble
|
|
30
|
+
3. Rulează `check_config` în Claude Desktop pentru a obține o diagnosticare
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## download_model atinge limita de timp pentru modele mari
|
|
35
|
+
|
|
36
|
+
Claude Desktop are o limită de timp de 4 minute pentru apelurile instrumentelor MCP. Descărcările de modele mari pe conexiuni lente pot depăși acest lucru.
|
|
37
|
+
|
|
38
|
+
**Dimensiunile fișierelor:**
|
|
39
|
+
- `large-v3` — 2,9 GB
|
|
40
|
+
- `large-v3-turbo` — 1,6 GB
|
|
41
|
+
- `large-v3-q5_0` — 1,1 GB
|
|
42
|
+
- `large-v3-turbo-q5_0` — 547 MB
|
|
43
|
+
- `medium.en` — 1,5 GB
|
|
44
|
+
- `medium.en-q5_0` — 514 MB
|
|
45
|
+
|
|
46
|
+
Pe o conexiune rapidă (100 Mbps+), chiar și large-v3 se descarcă în mai puțin de 4 minute. Pe conexiuni mai lente, folosește un browser sau PowerShell pentru a descărca direct și plasează fișierul în directorul de modele manual:
|
|
47
|
+
|
|
48
|
+
```powershell
|
|
49
|
+
# Exemplu — descărcare directă large-v3-turbo
|
|
50
|
+
Invoke-WebRequest -Uri "https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-large-v3-turbo.bin" `
|
|
51
|
+
-OutFile "C:\whisper\models\ggml-large-v3-turbo.bin"
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Apoi folosește `switch_model ggml-large-v3-turbo.bin` pentru activare.
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## `check_config` raportează că whisper-cli.exe nu a fost găsit
|
|
59
|
+
|
|
60
|
+
Calea din configurația ta nu corespunde locației reale a fișierului.
|
|
61
|
+
|
|
62
|
+
Verifică dacă fișierul există:
|
|
63
|
+
```
|
|
64
|
+
dir C:\whisper\Release\whisper-cli.exe
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Dacă este altundeva, actualizează `WHISPER_CLI_PATH` în configurația ta pentru a corespunde căii reale.
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## `check_config` raportează că FFmpeg nu a fost găsit
|
|
72
|
+
|
|
73
|
+
FFmpeg nu este instalat sau nu este în PATH-ul sistemului.
|
|
74
|
+
|
|
75
|
+
Instalare via winget:
|
|
76
|
+
```
|
|
77
|
+
winget install ffmpeg
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Sau descarcă de la [ffmpeg.org](https://ffmpeg.org/download.html), extrage și adaugă folderul `bin` la PATH-ul sistemului.
|
|
81
|
+
|
|
82
|
+
După instalare, deschide o nouă linie de comandă și verifică:
|
|
83
|
+
```
|
|
84
|
+
ffmpeg -version
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Dacă ai instalat FFmpeg într-o locație non-standard, setează variabila de mediu `FFMPEG_PATH` în configurația Claude Desktop:
|
|
88
|
+
```json
|
|
89
|
+
"env": {
|
|
90
|
+
"FFMPEG_PATH": "C:\\ffmpeg\\bin\\ffmpeg.exe"
|
|
91
|
+
}
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## Ieșirea transcrierii este plină de etichete `[FOREIGN]`
|
|
97
|
+
|
|
98
|
+
**Cauza:** Folosești un model numai engleză (ex.: `ggml-medium.en.bin`) pe audio în altă limbă decât engleza. Modelele numai engleză nu pot procesa alte limbi și generează `[FOREIGN]` ca substituent pentru fiecare segment pe care nu îl pot gestiona.
|
|
99
|
+
|
|
100
|
+
**Soluție:** Descarcă și folosește `ggml-large-v3.bin` — modelul multilingv. Acesta este necesar pentru orice transcriere non-engleză, detectarea automată a limbii sau traducere.
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-large-v3.bin
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
Salvează în `C:\whisper\models\` și actualizează configurația:
|
|
107
|
+
```json
|
|
108
|
+
"WHISPER_MODEL": "C:\\whisper\\models\\ggml-large-v3.bin"
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
Sau suprascrie per-transcriere folosind parametrul `model` în `transcribe_audio` sau `generate_subtitles`.
|
|
112
|
+
|
|
113
|
+
> **Notă:** Modelele numai engleză (`*.en.bin`) sunt mai rapide și mai precise pentru conținut în engleză, dar sunt complet incapabile să gestioneze alte limbi. Dacă lucrezi cu conținut multilingv, `large-v3` este modelul corect indiferent de hardware.
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## Transcrierea nu produce ieșire sau fișier gol
|
|
118
|
+
|
|
119
|
+
**Cauze posibile:**
|
|
120
|
+
|
|
121
|
+
1. **Model greșit pentru limbă** — Modelele numai engleză (`*.en.bin`) nu pot transcriere alte limbi. Folosește `ggml-large-v3.bin` pentru conținut multilingv.
|
|
122
|
+
|
|
123
|
+
2. **Calitate audio prea scăzută** — Fișierele cu rată de biți foarte mică (ex.: înregistrări vechi de telefon `.3gp` folosind codec AMR-NB ~12kbps) pot fi la limita a ceea ce whisper poate procesa. Mediile zgomotoase (zgomot de fundal, ecou, vorbitori depărtați) sunt de asemenea dificile. Încearcă `large-v3` care gestionează mai bine audio degradat.
|
|
124
|
+
|
|
125
|
+
3. **Fișier silențios sau corupt** — Rulează `analyze_media` pe fișier pentru a verifica dacă FFprobe detectează un flux audio valid.
|
|
126
|
+
|
|
127
|
+
4. **Eșec de conversie** — Fișierul poate să nu se convertească corect la WAV. Încearcă să convertești manual mai întâi:
|
|
128
|
+
```
|
|
129
|
+
ffmpeg -i yourfile.3gp -ar 16000 -ac 1 output.wav
|
|
130
|
+
```
|
|
131
|
+
Apoi transcrie WAV-ul direct.
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## Sarcina în fundal eșuează pe fișiere cu caractere speciale sau Unicode în nume
|
|
136
|
+
|
|
137
|
+
**Cauza:** whisper-cli.exe nu poate scrie fișierul de ieșire când calea conține caractere Unicode (română, japoneză, chineză, emoji, paranteze etc.) sau anumite caractere speciale.
|
|
138
|
+
|
|
139
|
+
**Soluție temporară curentă:** Redenumește fișierul pentru a folosi doar caractere ASCII înainte de transcriere, apoi redenumește înapoi dacă este necesar.
|
|
140
|
+
|
|
141
|
+
```
|
|
142
|
+
ren "fisier_romanesc.mp4" "temp_transcribe.mp4"
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
**Status:** Acesta este un bug cunoscut. O corecție este planificată care va direcționa ieșirea printr-o cale temporară igienizată și va muta rezultatul la destinația corectă după finalizare.
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## Sarcina în fundal arată "eșuat" fără ieșire
|
|
150
|
+
|
|
151
|
+
**Cauze posibile:**
|
|
152
|
+
|
|
153
|
+
1. **Nume de fișier Unicode** — Vezi mai sus.
|
|
154
|
+
|
|
155
|
+
2. **Cale model greșită** — Procesul detașat nu moștenește căile corectate. Rulează `check_config` pentru a verifica căile.
|
|
156
|
+
|
|
157
|
+
3. **Procesul a fost terminat** — Dacă whisper-cli.exe a fost terminat manual în mijlocul unei sarcini, nu va exista niciun fișier de ieșire. Încearcă din nou.
|
|
158
|
+
|
|
159
|
+
4. **VRAM insuficient** — Modelele mari pe GPU-uri cu VRAM redus pot eșua silențios. Încearcă un model mai mic.
|
|
160
|
+
|
|
161
|
+
5. **Eșec de conversie a fișierului** — Încearcă să transcrii direct un fișier WAV pentru a izola dacă problema este la conversie sau transcriere.
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## Transcrierea în fundal nu produce ieșire SRT
|
|
166
|
+
|
|
167
|
+
**Cauza:** Modul în fundal (`background=true` în `transcribe_audio`) produce în prezent doar ieșire `.txt`. Formatul SRT în modul fundal nu a fost încă implementat.
|
|
168
|
+
|
|
169
|
+
**Soluție temporară:** Pentru fișiere sub ~4 minute, folosește `generate_subtitles` în modul de blocare. Pentru fișiere mai lungi, transcrie mai întâi în modul fundal pentru a obține `.txt`, apoi dacă este nevoie de SRT, folosește `generate_subtitles` pe același fișier (va transcriere din nou).
|
|
170
|
+
|
|
171
|
+
**Status:** Suportul SRT în modul fundal este planificat pentru o versiune viitoare.
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## GPU-ul nu este folosit (CPU blocat peste 50%)
|
|
176
|
+
|
|
177
|
+
**Cauza:** Rulezi binarul numai CPU care vine cu versiunea standard whisper.cpp.
|
|
178
|
+
|
|
179
|
+
**Soluție:** Descarcă compilarea cu Vulkan activat de pe [pagina de versiuni](https://github.com/eviscerations/whisper-windows-mcp/releases/tag/v1.4.0) și extrage în `C:\whisper\Release\`.
|
|
180
|
+
|
|
181
|
+
Verifică că accelerarea GPU este activă:
|
|
182
|
+
- Cere lui Claude să ruleze `check_system`
|
|
183
|
+
- Caută `✅ Vulkan binary: ggml-vulkan.dll found` în ieșire
|
|
184
|
+
- Urmărește Task Manager → Performanță → GPU în timpul unei transcrieri — utilizarea GPU ar trebui să urce la 15–30%
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
## `check_system` raportează cantitatea greșită de VRAM
|
|
189
|
+
|
|
190
|
+
Aceasta este o limitare cunoscută Windows. Comanda `wmic` citește VRAM din registry, care pe multe plăci AMD raportează jumătate din VRAM-ul fizic. Un Vega 56 cu 8GB HBM2 va arăta de obicei 4GB. Aceasta este doar o problemă de afișare — whisper folosește tot VRAM-ul fizic în timpul inferenței.
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## Eroarea "Transcrierea este deja în curs"
|
|
195
|
+
|
|
196
|
+
Un proces `whisper-cli.exe` rulează dintr-o sarcină anterioară. Așteaptă să se termine, sau:
|
|
197
|
+
|
|
198
|
+
1. Deschide Task Manager → fila Detalii
|
|
199
|
+
2. Găsește `whisper-cli.exe`
|
|
200
|
+
3. Fă clic dreapta → Încheie sarcina
|
|
201
|
+
|
|
202
|
+
Apoi încearcă din nou.
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
## Detectarea automată a limbii este greșită
|
|
207
|
+
|
|
208
|
+
Detectarea automată a Whisper rulează pe primele 30 de secunde de audio. Dacă fișierul începe într-o limbă diferită față de cea mai mare parte a conținutului său, detectarea poate fi greșită.
|
|
209
|
+
|
|
210
|
+
**Soluție:** Specifică limba explicit (ex.: `language=ro`) în loc să te bazezi pe detectarea automată.
|
|
211
|
+
|
|
212
|
+
---
|
|
213
|
+
|
|
214
|
+
## Generarea subtitrărilor produce "(vorbind în limbă străină)" pe tot videoclipul
|
|
215
|
+
|
|
216
|
+
Whisper a detectat vorbire, dar nu a putut transcriere. Cele mai frecvente cauze:
|
|
217
|
+
|
|
218
|
+
1. **Model greșit** — Folosind un model numai engleză pe audio non-englezesc. Folosește `large-v3`.
|
|
219
|
+
|
|
220
|
+
2. **Calitate audio** — Mediile zgomotoase (bucătării, mulțimi, ecou) pot depăși modelul medium. Încearcă `large-v3`.
|
|
221
|
+
|
|
222
|
+
3. **Limbă mixtă** — Fișierele cu două limbi alternante vor avea limba minoritară înlocuită cu substituenți cu setare de limbă unică.
|
|
223
|
+
|
|
224
|
+
---
|
|
225
|
+
|
|
226
|
+
## Traducerea subtitrărilor produce doar engleză
|
|
227
|
+
|
|
228
|
+
Acesta este comportamentul intenționat. Indicatorul `--translate` integrat al Whisper traduce doar **în engleză**. Pentru traducere în alte limbi țintă, procesează conținutul fișierului `.srt` separat.
|
|
229
|
+
|
|
230
|
+
---
|
|
231
|
+
|
|
232
|
+
## Transcrierea în lot a încetat să avanseze
|
|
233
|
+
|
|
234
|
+
Apelează din nou `check_batch_progress`. Dacă tot este blocată:
|
|
235
|
+
|
|
236
|
+
1. Verifică Task Manager pentru un proces `whisper-cli.exe` care rulează
|
|
237
|
+
2. Verifică jurnalele sarcinilor în `%TEMP%\whisper-mcp-jobs\`
|
|
238
|
+
3. Fișierele cu erori sunt marcate în raportul lotului — rulează-le individual cu `transcribe_audio`
|
|
239
|
+
|
|
240
|
+
---
|
|
241
|
+
|
|
242
|
+
## Curățarea directorului temporar de sarcini
|
|
243
|
+
|
|
244
|
+
whisper-windows-mcp scrie fișiere de stare a sarcinilor și jurnale în `%TEMP%\whisper-mcp-jobs\` în timpul transcrierii. Acestea se acumulează în timp și pot consuma spațiu pe disc, în special fișierele `.log` din sarcinile lungi de transcriere.
|
|
245
|
+
|
|
246
|
+
Odată ce un lot sau o sarcină este finalizată și ai verificat transcrierile de ieșire, poți șterge în siguranță totul din acest director:
|
|
247
|
+
|
|
248
|
+
```powershell
|
|
249
|
+
Remove-Item "$env:TEMP\whisper-mcp-jobs\*" -Recurse -Force
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
Directorul va fi recreat automat la următoarea transcriere. Niciun fișier de ieșire a transcrierii nu este stocat permanent aici — sunt mutate în directorul sursă la finalizare. Rămân doar metadate ale sarcinilor și jurnale.
|
|
253
|
+
|
|
254
|
+
**Notă:** Nu șterge acest director în timp ce o transcriere este în curs — fișierele de stare a lotului sunt necesare pentru funcționarea `check_batch_progress`.
|
|
255
|
+
|
|
256
|
+
---
|
|
257
|
+
|
|
258
|
+
## Lot mare nesupravegheit din linia de comandă
|
|
259
|
+
|
|
260
|
+
Pentru loturi foarte mari în care vrei să rulezi peste noapte fără Claude, folosește PowerShell.
|
|
261
|
+
|
|
262
|
+
**Important:** whisper-cli.exe nu poate citi direct MP4, MKV sau majoritatea formatelor video. FFmpeg trebuie să preconvertească fiecare fișier la WAV mai întâi. Whisper scrie de asemenea transcrierea la stdout și ieșirea de diagnosticare la stderr — folosește `Start-Process -RedirectStandardOutput` pentru a capta corect transcrierea. Folosirea pipe `|` sau redirecționarea stderr cu `2>$null` nu capturează nimic.
|
|
263
|
+
|
|
264
|
+
```powershell
|
|
265
|
+
$whisper = "C:\whisper\Release\whisper-cli.exe"
|
|
266
|
+
$model = "C:\whisper\models\ggml-medium.en.bin"
|
|
267
|
+
$dir = "C:\path\to\your\folder"
|
|
268
|
+
$ffmpeg = "ffmpeg"
|
|
269
|
+
$tmp = "$env:TEMP\whisper_convert.wav"
|
|
270
|
+
|
|
271
|
+
Get-ChildItem "$dir\*.mp4" | ForEach-Object {
|
|
272
|
+
$out = ($_.FullName -replace '\.mp4$', '') + ".txt"
|
|
273
|
+
if (Test-Path $out) {
|
|
274
|
+
Write-Host "SKIP (exists): $($_.Name)"
|
|
275
|
+
return
|
|
276
|
+
}
|
|
277
|
+
Write-Host "Converting: $($_.Name)"
|
|
278
|
+
& $ffmpeg -y -i $_.FullName -ar 16000 -ac 1 -c:a pcm_s16le $tmp 2>$null
|
|
279
|
+
Write-Host "Transcribing: $($_.Name)"
|
|
280
|
+
$wArgs = "-m `"$model`" -f `"$tmp`" --threads 8 --condition-on-previous-text 0 --no-speech-thold 0.6"
|
|
281
|
+
Start-Process -FilePath $whisper -ArgumentList $wArgs -RedirectStandardOutput $out -Wait -NoNewWindow
|
|
282
|
+
Write-Host "Done: $($_.BaseName).txt"
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
Remove-Item $tmp -ErrorAction SilentlyContinue
|
|
286
|
+
Write-Host "All done."
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
Schimbă `*.mp4` cu `*.mkv`, `*.m4a` etc. pentru a corespunde tipurilor tale de fișiere. Verificarea de sărire `Test-Path` înseamnă că rularea din nou a scriptului după o întrerupere nu va reprocesa fișierele deja finalizate.
|
|
290
|
+
|
|
291
|
+
Aceasta scrie fișiere `.txt` lângă fiecare sursă. Instrumentele MCP le vor recunoaște ca deja transcrise când rulezi ulterior `analyze_media` sau `start_batch`.
|
|
292
|
+
|
|
293
|
+
---
|
|
294
|
+
|
|
295
|
+
## Locația fișierului de configurare
|
|
296
|
+
|
|
297
|
+
```
|
|
298
|
+
C:\Users\NumeUtilizator\AppData\Roaming\Claude\claude_desktop_config.json
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
Dacă `AppData` nu este vizibil: Vizualizare → Afișare → Elemente ascunse în File Explorer.
|
|
302
|
+
|
|
303
|
+
---
|
|
304
|
+
|
|
305
|
+
## Exemplu de configurare completă funcțională
|
|
306
|
+
|
|
307
|
+
```json
|
|
308
|
+
{
|
|
309
|
+
"mcpServers": {
|
|
310
|
+
"whisper": {
|
|
311
|
+
"command": "npx",
|
|
312
|
+
"args": ["-y", "whisper-windows-mcp"],
|
|
313
|
+
"env": {
|
|
314
|
+
"WHISPER_CLI_PATH": "C:\\whisper\\Release\\whisper-cli.exe",
|
|
315
|
+
"WHISPER_MODEL": "C:\\whisper\\models\\ggml-medium.en.bin",
|
|
316
|
+
"FFMPEG_PATH": "ffmpeg"
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
`FFMPEG_PATH` are implicit valoarea `ffmpeg` (presupune că este în PATH). Setează explicit doar dacă FFmpeg este instalat într-o locație non-standard.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "whisper-windows-mcp",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.2",
|
|
4
4
|
"description": "Windows-native MCP server for local audio transcription using whisper.cpp with Vulkan GPU acceleration",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"multilingual"
|
|
32
32
|
],
|
|
33
33
|
"author": "eviscerations",
|
|
34
|
-
"license": "
|
|
34
|
+
"license": "SEE LICENSE IN LICENSE",
|
|
35
35
|
"dependencies": {
|
|
36
36
|
"@modelcontextprotocol/sdk": "^1.0.0"
|
|
37
37
|
},
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
patch_roadmaps.py
|
|
4
|
+
Adds new language entries to the multilingual documentation tracking section
|
|
5
|
+
in existing ROADMAP files. Run from the repo root. Outputs to ./patched_output/.
|
|
6
|
+
|
|
7
|
+
NOTE: ROADMAP.pl.md and ROADMAP.ro.md are NOT in the target list because those
|
|
8
|
+
files were generated fresh with the complete language list already included.
|
|
9
|
+
Only the previously-existing ROADMAPs need patching.
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
import os
|
|
13
|
+
|
|
14
|
+
NEW_ENTRIES = [
|
|
15
|
+
"**Polish (`*.pl.md`)** — `README.pl.md` / `TROUBLESHOOTING.pl.md` / `ROADMAP.pl.md` / `PRIVACY.pl.md` / `SECURITY.pl.md`",
|
|
16
|
+
"**Romanian (`*.ro.md`)** — `README.ro.md` / `TROUBLESHOOTING.ro.md` / `ROADMAP.ro.md` / `PRIVACY.ro.md` / `SECURITY.ro.md`",
|
|
17
|
+
]
|
|
18
|
+
|
|
19
|
+
# Only patch the previously-existing ROADMAPs.
|
|
20
|
+
# ROADMAP.pl.md and ROADMAP.ro.md are excluded — they were generated with
|
|
21
|
+
# the full language list already in their native languages.
|
|
22
|
+
ROADMAP_FILES = {
|
|
23
|
+
"ROADMAP.md": "Community contributions for other languages welcome.",
|
|
24
|
+
"ROADMAP.ja.md": "他の言語へのコミュニティ貢献を歓迎します。",
|
|
25
|
+
"ROADMAP.ko.md": "다른 언어로의 커뮤니티 기여를 환영합니다.",
|
|
26
|
+
"ROADMAP.vi.md": "Chào mừng đóng góp cộng đồng cho các ngôn ngữ khác.",
|
|
27
|
+
"ROADMAP.id.md": "Kontribusi komunitas untuk bahasa lain disambut.",
|
|
28
|
+
"ROADMAP.uk.md": "Внески спільноти для інших мов вітаються.",
|
|
29
|
+
"ROADMAP.pt-BR.md": "Contribuições da comunidade para outros idiomas são bem-vindas.",
|
|
30
|
+
"ROADMAP.es.md": "Las contribuciones de la comunidad para otros idiomas son bienvenidas.",
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
OUTPUT_DIR = "patched_output"
|
|
34
|
+
|
|
35
|
+
def patch_roadmap(filename, marker, entries):
|
|
36
|
+
with open(filename, "r", encoding="utf-8") as f:
|
|
37
|
+
content = f.read()
|
|
38
|
+
if marker not in content:
|
|
39
|
+
print(f" WARNING: marker not found in {filename} — skipping")
|
|
40
|
+
return None
|
|
41
|
+
to_insert = [e for e in entries if e.split("(")[0].strip() not in content]
|
|
42
|
+
if not to_insert:
|
|
43
|
+
print(f" INFO: all entries already present in {filename} — skipping")
|
|
44
|
+
return content
|
|
45
|
+
insert_block = "\n".join(to_insert) + "\n\n"
|
|
46
|
+
return content.replace(marker, f"{insert_block}{marker}")
|
|
47
|
+
|
|
48
|
+
def main():
|
|
49
|
+
os.makedirs(OUTPUT_DIR, exist_ok=True)
|
|
50
|
+
print(f"Output directory: {OUTPUT_DIR}/")
|
|
51
|
+
print(f"Processing {len(ROADMAP_FILES)} ROADMAP files...\n")
|
|
52
|
+
success = 0
|
|
53
|
+
for filename, marker in ROADMAP_FILES.items():
|
|
54
|
+
if not os.path.exists(filename):
|
|
55
|
+
print(f" MISSING: {filename} — skipping")
|
|
56
|
+
continue
|
|
57
|
+
print(f" Patching {filename}...")
|
|
58
|
+
patched = patch_roadmap(filename, marker, NEW_ENTRIES)
|
|
59
|
+
if patched is None:
|
|
60
|
+
continue
|
|
61
|
+
out_path = os.path.join(OUTPUT_DIR, filename)
|
|
62
|
+
with open(out_path, "w", encoding="utf-8") as f:
|
|
63
|
+
f.write(patched)
|
|
64
|
+
print(f" OK -> {out_path}")
|
|
65
|
+
success += 1
|
|
66
|
+
print(f"\nDone. {success}/{len(ROADMAP_FILES)} files patched.")
|
|
67
|
+
print(f"\nReview files in ./{OUTPUT_DIR}/ before replacing originals.")
|
|
68
|
+
print("To replace originals (cmd.exe):")
|
|
69
|
+
print(f" copy /Y {OUTPUT_DIR}\\ROADMAP*.md .")
|
|
70
|
+
|
|
71
|
+
if __name__ == "__main__":
|
|
72
|
+
main()
|