whisper-windows-mcp 2.2.2 → 2.4.0

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.
Files changed (57) hide show
  1. package/.github/workflows/ci.yml +24 -0
  2. package/.github/workflows/publish.yml +24 -0
  3. package/{LICENSE-COMMERCIAL.md → COMMERCIAL-LICENSE.md} +58 -58
  4. package/LICENSE +40 -40
  5. package/PRIVACY.es.md +194 -135
  6. package/PRIVACY.id.md +194 -135
  7. package/PRIVACY.ja.md +194 -135
  8. package/PRIVACY.ko.md +194 -135
  9. package/PRIVACY.md +194 -135
  10. package/PRIVACY.pl.md +194 -135
  11. package/PRIVACY.pt-BR.md +194 -135
  12. package/PRIVACY.ro.md +194 -135
  13. package/PRIVACY.uk.md +194 -135
  14. package/PRIVACY.vi.md +194 -135
  15. package/README.es.md +80 -48
  16. package/README.id.md +83 -40
  17. package/README.ja.md +106 -72
  18. package/README.ko.md +69 -37
  19. package/README.md +82 -39
  20. package/README.pl.md +83 -40
  21. package/README.pt-BR.md +77 -45
  22. package/README.ro.md +84 -41
  23. package/README.uk.md +83 -40
  24. package/README.vi.md +73 -41
  25. package/ROADMAP.es.md +131 -45
  26. package/ROADMAP.id.md +86 -89
  27. package/ROADMAP.ja.md +93 -108
  28. package/ROADMAP.ko.md +82 -82
  29. package/ROADMAP.pl.md +125 -41
  30. package/ROADMAP.pt-BR.md +87 -87
  31. package/ROADMAP.ro.md +123 -41
  32. package/ROADMAP.uk.md +82 -90
  33. package/ROADMAP.vi.md +87 -87
  34. package/SECURITY.es.md +76 -47
  35. package/SECURITY.id.md +76 -47
  36. package/SECURITY.ja.md +76 -47
  37. package/SECURITY.ko.md +76 -47
  38. package/SECURITY.md +33 -4
  39. package/SECURITY.pl.md +76 -47
  40. package/SECURITY.pt-BR.md +76 -47
  41. package/SECURITY.ro.md +76 -47
  42. package/SECURITY.uk.md +76 -47
  43. package/SECURITY.vi.md +76 -47
  44. package/TROUBLESHOOTING.es.md +325 -323
  45. package/TROUBLESHOOTING.id.md +349 -323
  46. package/TROUBLESHOOTING.ja.md +415 -286
  47. package/TROUBLESHOOTING.ko.md +325 -323
  48. package/TROUBLESHOOTING.pl.md +371 -323
  49. package/TROUBLESHOOTING.pt-BR.md +325 -323
  50. package/TROUBLESHOOTING.ro.md +371 -323
  51. package/TROUBLESHOOTING.uk.md +385 -323
  52. package/TROUBLESHOOTING.vi.md +325 -323
  53. package/dist/index.js +743 -289
  54. package/dist/lib.d.ts +37 -0
  55. package/dist/lib.js +123 -0
  56. package/package.json +46 -45
  57. package/patch_roadmaps.py +0 -72
@@ -1,323 +1,325 @@
1
- # whisper-windows-mcp — Solución de Problemas
2
-
3
- ---
4
-
5
- ## Lista de verificación rápida
6
-
7
- Antes de investigar más a fondo, verifica todos los siguientes puntos:
8
-
9
- - Las rutas en `claude_desktop_config.json` usan **barras invertidas dobles** (`C:\\whisper\\...`)
10
- - `whisper-cli.exe` existe en la ruta especificada en `WHISPER_CLI_PATH`
11
- - El archivo de modelo `.bin` existe en la ruta especificada en `WHISPER_MODEL`
12
- - FFmpeg está instalado y accesible (`ffmpeg -version` funciona en el símbolo del sistema)
13
- - Claude Desktop fue **completamente reiniciado** tras editar la configuración (saliendo desde la bandeja del sistema, no solo cerrando la ventana)
14
- - El servidor whisper aparece como **en ejecución** (insignia verde) en Configuración → Desarrollador
15
-
16
- ---
17
-
18
- ## "whisper no está conectado" o no hay herramientas disponibles
19
-
20
- **Causa más común:** Claude Desktop no fue completamente reiniciado tras editar la configuración.
21
-
22
- 1. Clic derecho en el ícono de Claude en la bandeja del sistema → Salir
23
- 2. Vuelve a abrir Claude Desktop
24
- 3. Ve a Configuración → Desarrollador y verifica la insignia verde **en ejecución** junto a whisper
25
-
26
- Si sigue sin aparecer:
27
-
28
- 1. Abre `claude_desktop_config.json` y verifica errores de sintaxis JSON (comas faltantes, llaves no coincidentes)
29
- 2. Asegúrate de que todas las rutas usen barras invertidas dobles
30
- 3. Ejecuta `check_config` en Claude Desktop para obtener un diagnóstico
31
-
32
- ---
33
-
34
- ## download_model alcanza timeout en modelos grandes
35
-
36
- Claude Desktop tiene un timeout de 4 minutos en las llamadas a herramientas MCP. Las descargas de modelos grandes en conexiones lentas pueden exceder este límite.
37
-
38
- **Tamaños de archivo:**
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
- En una conexión rápida (100 Mbps+), incluso large-v3 termina en menos de 4 minutos. En conexiones más lentas, usa un navegador o PowerShell para descargar directamente y coloca el archivo en tu directorio de modelos manualmente:
47
-
48
- ```powershell
49
- # Ejemplo — descargar large-v3-turbo directamente
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
- Luego usa `switch_model ggml-large-v3-turbo.bin` para activarlo.
55
-
56
- ---
57
-
58
- ## `check_config` reporta que whisper-cli.exe no fue encontrado
59
-
60
- La ruta en tu configuración no coincide con la ubicación real del archivo.
61
-
62
- Verifica que el archivo existe:
63
- ```
64
- dir C:\whisper\Release\whisper-cli.exe
65
- ```
66
-
67
- Si está en otro lugar, actualiza `WHISPER_CLI_PATH` en tu configuración para que coincida con la ruta real.
68
-
69
- ---
70
-
71
- ## `check_config` reporta que FFmpeg no fue encontrado
72
-
73
- FFmpeg no está instalado o no está en el PATH del sistema.
74
-
75
- Instala via winget:
76
- ```
77
- winget install ffmpeg
78
- ```
79
-
80
- O descarga desde [ffmpeg.org](https://ffmpeg.org/download.html), extrae y agrega la carpeta `bin` al PATH del sistema.
81
-
82
- Tras instalar, abre un nuevo símbolo del sistema y verifica:
83
- ```
84
- ffmpeg -version
85
- ```
86
-
87
- Si instalaste FFmpeg en una ubicación no estándar, establece la variable de entorno `FFMPEG_PATH` en tu configuración de Claude Desktop:
88
- ```json
89
- "env": {
90
- "FFMPEG_PATH": "C:\\ffmpeg\\bin\\ffmpeg.exe"
91
- }
92
- ```
93
-
94
- ---
95
-
96
- ## La salida de transcripción está llena de etiquetas `[FOREIGN]`
97
-
98
- **Causa:** Estás usando un modelo solo inglés (ej.: `ggml-medium.en.bin`) en audio que no es inglés. Los modelos solo inglés no pueden procesar otros idiomas y generan `[FOREIGN]` como marcador para cada segmento que no pueden manejar.
99
-
100
- **Solución:** Descarga y usa `ggml-large-v3.bin` — el modelo multilingüe. Esto es necesario para cualquier transcripción que no sea inglés, detección automática de idioma o traducción.
101
-
102
- ```
103
- https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-large-v3.bin
104
- ```
105
-
106
- Guarda en `C:\whisper\models\` y actualiza tu configuración:
107
- ```json
108
- "WHISPER_MODEL": "C:\\whisper\\models\\ggml-large-v3.bin"
109
- ```
110
-
111
- O anula por transcripción usando el parámetro `model` en `transcribe_audio` o `generate_subtitles`.
112
-
113
- > **Nota:** Los modelos solo inglés (`*.en.bin`) son más rápidos y precisos para contenido en inglés, pero son completamente incapaces de manejar otros idiomas. Si trabajas con contenido multilingüe, `large-v3` es el modelo correcto independientemente del hardware.
114
-
115
- ---
116
-
117
- ## La transcripción no produce salida o el archivo está vacío
118
-
119
- **Posibles causas:**
120
-
121
- 1. **Modelo incorrecto para el idioma** — Los modelos solo inglés (`*.en.bin`) no pueden transcribir otros idiomas. Usa `ggml-large-v3.bin` para contenido multilingüe.
122
-
123
- 2. **Calidad de audio muy baja** — Los archivos con tasa de bits muy baja (ej.: grabaciones antiguas de celular `.3gp` usando códec AMR-NB a ~12kbps) pueden estar en el límite de lo que whisper puede procesar. Los entornos ruidosos (ruido de fondo, eco, hablantes distantes) también son desafiantes. Prueba `large-v3`, que maneja mejor el audio degradado.
124
-
125
- 3. **Archivo silencioso o corrupto** — Ejecuta `analyze_media` en el archivo para verificar si FFprobe detecta un flujo de audio válido.
126
-
127
- 4. **Fallo en la conversión** — El archivo puede no estar convirtiéndose a WAV correctamente. Intenta convertir manualmente primero:
128
- ```
129
- ffmpeg -i yourfile.3gp -ar 16000 -ac 1 output.wav
130
- ```
131
- Luego transcribe el WAV directamente.
132
-
133
- ---
134
-
135
- ## La tarea en segundo plano falla en archivos con caracteres especiales o Unicode en el nombre
136
-
137
- **Causa:** whisper-cli.exe no puede escribir el archivo de salida cuando la ruta contiene caracteres Unicode (español, japonés, chino, emoji, corchetes, etc.) o ciertos caracteres especiales.
138
-
139
- **Solución alternativa actual:** Renombra el archivo para usar solo caracteres ASCII antes de transcribir, luego renombra de vuelta si es necesario.
140
-
141
- ```
142
- ren "archivo_español.mp4" "temp_transcribe.mp4"
143
- ```
144
-
145
- **Estado:** Este es un bug conocido. Hay una corrección planificada que enrutará la salida a través de una ruta temporal saneada y moverá el resultado al destino correcto tras completarse.
146
-
147
- ---
148
-
149
- ## La tarea en segundo plano muestra "fallo" sin salida
150
-
151
- **Posibles causas:**
152
-
153
- 1. **Nombre de archivo Unicode** — Ver arriba.
154
-
155
- 2. **Ruta del modelo incorrecta** — El proceso separado no hereda las rutas corregidas. Ejecuta `check_config` para verificar las rutas.
156
-
157
- 3. **Proceso fue terminado** — Si whisper-cli.exe fue terminado manualmente a mitad de una tarea, no existirá ningún archivo de salida. Vuelve a intentarlo.
158
-
159
- 4. **VRAM insuficiente** — Los modelos grandes en GPUs con poca VRAM pueden fallar silenciosamente. Prueba un modelo más pequeño.
160
-
161
- 5. **Fallo en la conversión del archivo** — Intenta transcribir un archivo WAV directamente para aislar si el problema está en la conversión o en la transcripción.
162
-
163
- ---
164
-
165
- ## La transcripción en segundo plano no produce salida SRT
166
-
167
- **Causa:** El modo en segundo plano (`background=true` en `transcribe_audio`) actualmente solo produce salida `.txt`. El formato SRT en modo en segundo plano aún no ha sido implementado.
168
-
169
- **Solución alternativa:** Para archivos de menos de ~4 minutos, usa `generate_subtitles` en modo de bloqueo. Para archivos más largos, transcribe primero en modo en segundo plano para obtener el `.txt`, luego si necesitas el SRT, usa `generate_subtitles` en el mismo archivo (volverá a transcribir).
170
-
171
- **Estado:** El soporte de SRT en modo en segundo plano está planificado para un release futuro.
172
-
173
- ---
174
-
175
- ## La GPU no está siendo usada (CPU atascada por encima del 50%)
176
-
177
- **Causa:** Estás ejecutando el binario solo CPU que viene con el release estándar de whisper.cpp.
178
-
179
- **Solución:** Descarga la build con Vulkan activado desde la [página de releases](https://github.com/eviscerations/whisper-windows-mcp/releases/tag/v1.4.0) y extrae en `C:\whisper\Release\`.
180
-
181
- Verifica que la aceleración GPU está activa:
182
- - Pide a Claude ejecutar `check_system`
183
- - Busca `✅ Vulkan binary: ggml-vulkan.dll found` en la salida
184
- - Observa el Administrador de Tareas → Rendimiento → GPU durante una transcripción — la utilización de GPU debería subir al 15–30%
185
-
186
- ---
187
-
188
- ## `check_system` reporta cantidad de VRAM incorrecta
189
-
190
- Esta es una limitación conocida de Windows. El comando `wmic` lee la VRAM del registro, que en muchas tarjetas AMD reporta la mitad de la VRAM física. Una Vega 56 con 8GB HBM2 típicamente mostrará 4GB. Esto es solo un problema de visualización — whisper usa toda la VRAM física durante la inferencia.
191
-
192
- ---
193
-
194
- ## Error "Transcripción ya en progreso"
195
-
196
- Hay un proceso `whisper-cli.exe` ejecutándose de una tarea anterior. Espera a que termine, o:
197
-
198
- 1. Abre el Administrador de Tareas → pestaña Detalles
199
- 2. Encuentra `whisper-cli.exe`
200
- 3. Clic derecho → Finalizar tarea
201
-
202
- Luego vuelve a intentarlo.
203
-
204
- ---
205
-
206
- ## La detección automática de idioma es incorrecta
207
-
208
- La detección automática de Whisper se ejecuta en los primeros 30 segundos del audio. Si el archivo comienza en un idioma diferente al de la mayoría de su contenido, la detección puede ser incorrecta.
209
-
210
- **Solución:** Especifica el idioma explícitamente (ej.: `language=es`) en lugar de depender de la detección automática.
211
-
212
- ---
213
-
214
- ## La generación de subtítulos produce "(hablando en idioma extranjero)" en todo el video
215
-
216
- Whisper detectó habla pero no pudo transcribir. Causas más comunes:
217
-
218
- 1. **Modelo incorrecto** — Usando un modelo solo inglés en audio que no es inglés. Usa `large-v3`.
219
-
220
- 2. **Calidad de audio** — Los entornos ruidosos (cocinas, multitudes, eco) pueden superar al modelo medium. Prueba `large-v3`.
221
-
222
- 3. **Idioma mixto** — Los archivos con dos idiomas alternando tendrán el idioma minoritario reemplazado por marcadores con una configuración de idioma único.
223
-
224
- ---
225
-
226
- ## La traducción de subtítulos solo produce inglés
227
-
228
- Este es el comportamiento esperado. El flag `--translate` integrado de Whisper solo traduce **al inglés**. Para traducción a otros idiomas de destino, procesa el contenido del archivo `.srt` por separado.
229
-
230
- ---
231
-
232
- ## La transcripción por lotes dejó de avanzar
233
-
234
- Llama a `check_batch_progress` nuevamente. Si sigue atascado:
235
-
236
- 1. Verifica en el Administrador de Tareas si hay un proceso `whisper-cli.exe` en ejecución
237
- 2. Revisa los logs de tareas en `%TEMP%\whisper-mcp-jobs\`
238
- 3. Los archivos con error están marcados en el informe del lote — ejecútalos individualmente con `transcribe_audio`
239
-
240
- ---
241
-
242
- ## Limpiar el directorio temporal de tareas
243
-
244
- whisper-windows-mcp escribe archivos de estado de tareas y logs en `%TEMP%\whisper-mcp-jobs\` durante la transcripción. Estos se acumulan con el tiempo y pueden consumir espacio en disco, especialmente los archivos `.log` de tareas de transcripción largas.
245
-
246
- Una vez que un lote o tarea esté completo y hayas verificado las transcripciones de salida, puedes eliminar de forma segura todo en este directorio:
247
-
248
- ```powershell
249
- Remove-Item "$env:TEMP\whisper-mcp-jobs\*" -Recurse -Force
250
- ```
251
-
252
- El directorio se recreará automáticamente en la siguiente transcripción. Ningún archivo de salida de transcripción se almacena permanentemente aquí — se mueven al directorio de origen al completarse. Solo quedan metadatos de tareas y logs.
253
-
254
- **Nota:** No elimines este directorio mientras una transcripción esté en progreso — los archivos de estado del lote son necesarios para que `check_batch_progress` funcione.
255
-
256
- ---
257
-
258
- ## Lote grande sin supervisión desde la línea de comandos
259
-
260
- Para lotes muy grandes donde quieres ejecutar durante la noche sin Claude, usa PowerShell.
261
-
262
- **Importante:** whisper-cli.exe no puede leer MP4, MKV ni la mayoría de los formatos de video directamente. FFmpeg debe pre-convertir cada archivo a WAV primero. Whisper también escribe la transcripción al stdout y la salida de diagnóstico al stderr — usa `Start-Process -RedirectStandardOutput` para capturar la transcripción correctamente. Usar pipe con `|` o redirigir stderr con `2>$null` no captura nada.
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
- Cambia `*.mp4` por `*.mkv`, `*.m4a` etc. para que coincida con tus tipos de archivo. La verificación de salto `Test-Path` significa que volver a ejecutar el script tras una interrupción no reprocesará los archivos ya completados.
290
-
291
- Esto escribe archivos `.txt` junto a cada fuente. Las herramientas MCP los reconocerán como ya transcritos cuando ejecutes `analyze_media` o `start_batch` después.
292
-
293
- ---
294
-
295
- ## Ubicación del archivo de configuración
296
-
297
- ```
298
- C:\Users\TuUsuario\AppData\Roaming\Claude\claude_desktop_config.json
299
- ```
300
-
301
- Si `AppData` no es visible: Ver → Mostrar → Elementos ocultos en el Explorador de archivos.
302
-
303
- ---
304
-
305
- ## Ejemplo de configuración completa funcionando
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` tiene como predeterminado `ffmpeg` (asume que está en el PATH). Establécelo explícitamente solo si FFmpeg está instalado en una ubicación no estándar.
1
+ # whisper-windows-mcp — Solución de Problemas
2
+
3
+ ---
4
+
5
+ ## Lista de verificación rápida
6
+
7
+ Antes de investigar más a fondo, verifica todos los siguientes puntos:
8
+
9
+ - Las rutas en `claude_desktop_config.json` usan **barras invertidas dobles** (`C:\\whisper\\...`)
10
+ - `whisper-cli.exe` existe en la ruta especificada en `WHISPER_CLI_PATH`
11
+ - El archivo de modelo `.bin` existe en la ruta especificada en `WHISPER_MODEL`
12
+ - FFmpeg está instalado y accesible (`ffmpeg -version` funciona en el símbolo del sistema)
13
+ - Claude Desktop fue **completamente reiniciado** tras editar la configuración (saliendo desde la bandeja del sistema, no solo cerrando la ventana)
14
+ - El servidor whisper aparece como **en ejecución** (insignia verde) en Configuración → Desarrollador
15
+
16
+ ---
17
+
18
+ ## "whisper no está conectado" o no hay herramientas disponibles
19
+
20
+ **Causa más común:** Claude Desktop no fue completamente reiniciado tras editar la configuración.
21
+
22
+ 1. Clic derecho en el ícono de Claude en la bandeja del sistema → Salir
23
+ 2. Vuelve a abrir Claude Desktop
24
+ 3. Ve a Configuración → Desarrollador y verifica la insignia verde **en ejecución** junto a whisper
25
+
26
+ Si sigue sin aparecer:
27
+
28
+ 1. Abre `claude_desktop_config.json` y verifica errores de sintaxis JSON (comas faltantes, llaves no coincidentes)
29
+ 2. Asegúrate de que todas las rutas usen barras invertidas dobles
30
+ 3. Ejecuta `check_config` en Claude Desktop para obtener un diagnóstico
31
+
32
+ ---
33
+
34
+ ## download_model alcanza timeout en modelos grandes
35
+
36
+ Claude Desktop tiene un timeout de 4 minutos en las llamadas a herramientas MCP. Las descargas de modelos grandes en conexiones lentas pueden exceder este límite.
37
+
38
+ **Tamaños de archivo:**
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
+ En una conexión rápida (100 Mbps+), incluso large-v3 termina en menos de 4 minutos. En conexiones más lentas, usa un navegador o PowerShell para descargar directamente y coloca el archivo en tu directorio de modelos manualmente:
47
+
48
+ ```powershell
49
+ # Ejemplo — descargar large-v3-turbo directamente
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
+ Luego usa `switch_model ggml-large-v3-turbo.bin` para activarlo.
55
+
56
+ ---
57
+
58
+ ## `check_config` reporta que whisper-cli.exe no fue encontrado
59
+
60
+ La ruta en tu configuración no coincide con la ubicación real del archivo.
61
+
62
+ Verifica que el archivo existe:
63
+ ```
64
+ dir C:\whisper\Release\whisper-cli.exe
65
+ ```
66
+
67
+ Si está en otro lugar, actualiza `WHISPER_CLI_PATH` en tu configuración para que coincida con la ruta real.
68
+
69
+ ---
70
+
71
+ ## `check_config` reporta que FFmpeg no fue encontrado
72
+
73
+ FFmpeg no está instalado o no está en el PATH del sistema.
74
+
75
+ Instala via winget:
76
+ ```
77
+ winget install ffmpeg
78
+ ```
79
+
80
+ O descarga desde [ffmpeg.org](https://ffmpeg.org/download.html), extrae y agrega la carpeta `bin` al PATH del sistema.
81
+
82
+ Tras instalar, abre un nuevo símbolo del sistema y verifica:
83
+ ```
84
+ ffmpeg -version
85
+ ```
86
+
87
+ Si instalaste FFmpeg en una ubicación no estándar, establece la variable de entorno `FFMPEG_PATH` en tu configuración de Claude Desktop:
88
+ ```json
89
+ "env": {
90
+ "FFMPEG_PATH": "C:\\ffmpeg\\bin\\ffmpeg.exe"
91
+ }
92
+ ```
93
+
94
+ ---
95
+
96
+ ## La salida de transcripción está llena de etiquetas `[FOREIGN]`
97
+
98
+ **Causa:** Estás usando un modelo solo inglés (ej.: `ggml-medium.en.bin`) en audio que no es inglés. Los modelos solo inglés no pueden procesar otros idiomas y generan `[FOREIGN]` como marcador para cada segmento que no pueden manejar.
99
+
100
+ **Solución:** Descarga y usa `ggml-large-v3.bin` — el modelo multilingüe. Esto es necesario para cualquier transcripción que no sea inglés, detección automática de idioma o traducción.
101
+
102
+ ```
103
+ https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-large-v3.bin
104
+ ```
105
+
106
+ Guarda en `C:\whisper\models\` y actualiza tu configuración:
107
+ ```json
108
+ "WHISPER_MODEL": "C:\\whisper\\models\\ggml-large-v3.bin"
109
+ ```
110
+
111
+ O anula por transcripción usando el parámetro `model` en `transcribe_audio` o `generate_subtitles`.
112
+
113
+ > **Nota:** Los modelos solo inglés (`*.en.bin`) son más rápidos y precisos para contenido en inglés, pero son completamente incapaces de manejar otros idiomas. Si trabajas con contenido multilingüe, `large-v3` es el modelo correcto independientemente del hardware.
114
+
115
+ ---
116
+
117
+ ## La transcripción no produce salida o el archivo está vacío
118
+
119
+ **Posibles causas:**
120
+
121
+ 1. **Modelo incorrecto para el idioma** — Los modelos solo inglés (`*.en.bin`) no pueden transcribir otros idiomas. Usa `ggml-large-v3.bin` para contenido multilingüe.
122
+
123
+ 2. **Calidad de audio muy baja** — Los archivos con tasa de bits muy baja (ej.: grabaciones antiguas de celular `.3gp` usando códec AMR-NB a ~12kbps) pueden estar en el límite de lo que whisper puede procesar. Los entornos ruidosos (ruido de fondo, eco, hablantes distantes) también son desafiantes. Prueba `large-v3`, que maneja mejor el audio degradado que los modelos más pequeños.
124
+
125
+ 3. **Archivo silencioso o corrupto** — Ejecuta `analyze_media` en el archivo para verificar si FFprobe detecta un flujo de audio válido.
126
+
127
+ 4. **Fallo en la conversión** — El archivo puede no estar convirtiéndose a WAV correctamente. Intenta convertir manualmente primero:
128
+ ```
129
+ ffmpeg -i yourfile.3gp -ar 16000 -ac 1 output.wav
130
+ ```
131
+ Luego transcribe el WAV directamente.
132
+
133
+ ---
134
+
135
+ ## "Este archivo dura ~X — ejecútalo en segundo plano" / la transcripción en primer plano agota el tiempo
136
+
137
+ Claude Desktop impone un tiempo de espera de ~4 minutos en cualquier llamada individual a una herramienta MCP. Un archivo largo transcrito en modo **primer plano** (bloqueante) puede superarlo — la transcripción aún termina y se escribe en disco, pero la propia llamada a la herramienta da error. Para evitar ese fallo silencioso, `transcribe_audio` y `generate_subtitles` estiman el tiempo de ejecución de antemano y, si probablemente cruzaría el límite, devuelven un mensaje indicándote que vuelvas a ejecutar con `background=true`. El modo en segundo plano devuelve un ID de tarea de inmediato y no tiene ese límite — monitorízalo con `check_progress`.
138
+
139
+ Gran parte del tiempo real de una transcripción es **carga del modelo**, no transcripción: whisper-cli recarga el modelo en cada invocación, y un modelo grande (p. ej. `large-v3`, 2,9 GB) en una GPU con memoria limitada puede tardar ~2 minutos en cargar antes de que siquiera comience la transcripción (un modelo más pequeño o cuantizado carga más rápido). El umbral de la guarda es configurable con `WHISPER_FOREGROUND_MAX_SEC` (segundos; predeterminado 210).
140
+
141
+ ## La tarea en segundo plano falla en archivos con caracteres especiales o Unicode en el nombre
142
+
143
+ **Causa:** whisper-cli.exe no puede escribir el archivo de salida cuando la ruta contiene caracteres Unicode (español, japonés, chino, emoji, corchetes, etc.) o ciertos caracteres especiales.
144
+
145
+ **Corregido en v2.0.0.** Si estás ejecutando la versión actual, este problema no debería ocurrir. Si sigue ocurriendo, actualiza con `npm install -g whisper-windows-mcp` y reinicia Claude Desktop.
146
+
147
+ Si usas una versión anterior, la solución alternativa es renombrar el archivo para usar solo caracteres ASCII antes de transcribir, luego renombra de vuelta si es necesario.
148
+
149
+ ```
150
+ ren "archivo_español.mp4" "temp_transcribe.mp4"
151
+ ```
152
+
153
+ ---
154
+
155
+ ## La tarea en segundo plano muestra "fallo" sin salida
156
+
157
+ **Posibles causas:**
158
+
159
+ 1. **Ruta del modelo incorrecta** — El proceso separado no hereda las rutas corregidas. Ejecuta `check_config` para verificar las rutas.
160
+
161
+ 2. **Proceso fue terminado** — Si whisper-cli.exe fue terminado manualmente a mitad de una tarea, no existirá ningún archivo de salida. Vuelve a intentarlo.
162
+
163
+ 3. **VRAM insuficiente** — Los modelos grandes en GPUs con poca VRAM pueden fallar silenciosamente. Prueba un modelo más pequeño.
164
+
165
+ 4. **Fallo en la conversión del archivo** — Intenta transcribir un archivo WAV directamente para aislar si el problema está en la conversión o en la transcripción.
166
+
167
+ ---
168
+
169
+ ## La GPU no está siendo usada (CPU atascada por encima del 50%)
170
+
171
+ **Causa:** Estás ejecutando el binario solo CPU que viene con el release estándar de whisper.cpp.
172
+
173
+ **Solución:** Descarga la build con Vulkan activado desde la [página de releases](https://github.com/eviscerations/whisper-windows-mcp/releases/tag/v1.4.0) y extrae en `C:\whisper\Release\`.
174
+
175
+ Verifica que la aceleración GPU está activa:
176
+ - Pide a Claude ejecutar `check_system`
177
+ - Busca `✅ Vulkan binary: ggml-vulkan.dll found` en la salida
178
+ - Observa el Administrador de Tareas → Rendimiento → GPU durante una transcripción — la utilización de GPU debería subir al 15–30%
179
+
180
+ ---
181
+
182
+ ## La transcripción se ejecuta en la GPU equivocada (sistemas multi-GPU)
183
+
184
+ Por defecto, whisper-cli usa el dispositivo Vulkan 0. En una máquina con múltiples GPU, puede que no sea la tarjeta que quieres. Fija un dispositivo específico con la variable de entorno `WHISPER_GPU_DEVICE` (o el parámetro `gpu_device` por llamada, que ahora también funciona en `generate_subtitles`):
185
+
186
+ ```json
187
+ "env": { "WHISPER_GPU_DEVICE": "1" }
188
+ ```
189
+
190
+ ⚠️ **El índice es el orden de enumeración de Vulkan, NO el orden "GPU 0 / GPU 1" de Windows** — a menudo difieren. Para encontrar el número correcto, ejecuta `whisper-cli.exe` sobre cualquier archivo una vez y lee su registro de inicio: imprime `ggml_vulkan: 0 = <nombre>`, `ggml_vulkan: 1 = <nombre>`. Usa el índice que liste tu tarjeta objetivo. `check_config` muestra el dispositivo activo para que puedas confirmar que la fijación surtió efecto.
191
+
192
+ ## `check_system` reporta cantidad de VRAM incorrecta
193
+
194
+ Esta es una limitación conocida de Windows. El comando `wmic` lee la VRAM del registro, que en muchas tarjetas AMD reporta la mitad de la VRAM física. Una Vega 56 con 8GB HBM2 típicamente mostrará 4GB. Esto es solo un problema de visualización — whisper usa toda la VRAM física durante la inferencia.
195
+
196
+ ---
197
+
198
+ ## Error "Transcripción ya en progreso"
199
+
200
+ Hay un proceso `whisper-cli.exe` ejecutándose de una tarea anterior. Espera a que termine, o:
201
+
202
+ 1. Abre el Administrador de Tareas → pestaña Detalles
203
+ 2. Encuentra `whisper-cli.exe`
204
+ 3. Clic derecho → Finalizar tarea
205
+
206
+ Luego vuelve a intentarlo.
207
+
208
+ ---
209
+
210
+ ## La detección automática de idioma es incorrecta
211
+
212
+ La detección automática de Whisper se ejecuta en los primeros 30 segundos del audio. Si el archivo comienza en un idioma diferente al de la mayoría de su contenido, la detección puede ser incorrecta.
213
+
214
+ **Solución:** Especifica el idioma explícitamente (ej.: `language=es`) en lugar de depender de la detección automática.
215
+
216
+ ---
217
+
218
+ ## La generación de subtítulos produce "(hablando en idioma extranjero)" en todo el video
219
+
220
+ Whisper detectó habla pero no pudo transcribir. Causas más comunes:
221
+
222
+ 1. **Modelo incorrecto** — Usando un modelo solo inglés en audio que no es inglés. Usa `large-v3`.
223
+
224
+ 2. **Calidad de audio** — Los entornos ruidosos (cocinas, multitudes, eco) pueden superar al modelo medium. Prueba `large-v3`.
225
+
226
+ 3. **Idioma mixto** — Los archivos con dos idiomas alternando tendrán el idioma minoritario reemplazado por marcadores con una configuración de idioma único.
227
+
228
+ ---
229
+
230
+ ## La traducción de subtítulos solo produce inglés
231
+
232
+ Este es el comportamiento esperado. El flag `--translate` integrado de Whisper solo traduce **al inglés**. Para traducción a otros idiomas de destino, procesa el contenido del archivo `.srt` por separado.
233
+
234
+ ---
235
+
236
+ ## La transcripción por lotes dejó de avanzar
237
+
238
+ Llama a `check_batch_progress` nuevamente. Si sigue atascado:
239
+
240
+ 1. Verifica en el Administrador de Tareas si hay un proceso `whisper-cli.exe` en ejecución
241
+ 2. Revisa los logs de tareas en `%TEMP%\whisper-mcp-jobs\`
242
+ 3. Los archivos con error están marcados en el informe del lote — ejecútalos individualmente con `transcribe_audio`
243
+
244
+ ---
245
+
246
+ ## Limpiar el directorio temporal de tareas
247
+
248
+ whisper-windows-mcp escribe archivos de estado de tareas y logs en `%TEMP%\whisper-mcp-jobs\` durante la transcripción. El servidor limpia automáticamente los archivos con más de 7 días de antigüedad al arrancar. Para limpiar manualmente, una vez que un lote o tarea esté completo y hayas verificado las transcripciones de salida, puedes eliminar de forma segura todo en este directorio:
249
+
250
+ ```powershell
251
+ Remove-Item "$env:TEMP\whisper-mcp-jobs\*" -Recurse -Force
252
+ ```
253
+
254
+ El directorio se recreará automáticamente en la siguiente transcripción. Ningún archivo de salida de transcripción se almacena permanentemente aquí — se mueven al directorio de origen al completarse. Solo quedan metadatos de tareas y logs.
255
+
256
+ **Nota:** No elimines este directorio mientras una transcripción esté en progreso — los archivos de estado del lote son necesarios para que `check_batch_progress` funcione.
257
+
258
+ ---
259
+
260
+ ## Lote grande sin supervisión desde la línea de comandos
261
+
262
+ Para lotes muy grandes donde quieres ejecutar durante la noche sin Claude, usa PowerShell.
263
+
264
+ **Importante:** whisper-cli.exe no puede leer MP4, MKV ni la mayoría de los formatos de video directamente. FFmpeg debe pre-convertir cada archivo a WAV primero. Whisper también escribe la transcripción al stdout y la salida de diagnóstico al stderr — usa `Start-Process -RedirectStandardOutput` para capturar la transcripción correctamente. Usar pipe con `|` o redirigir stderr con `2>$null` no captura nada.
265
+
266
+ ```powershell
267
+ $whisper = "C:\whisper\Release\whisper-cli.exe"
268
+ $model = "C:\whisper\models\ggml-medium.en.bin"
269
+ $dir = "C:\path\to\your\folder"
270
+ $ffmpeg = "ffmpeg"
271
+ $tmp = "$env:TEMP\whisper_convert.wav"
272
+
273
+ Get-ChildItem "$dir\*.mp4" | ForEach-Object {
274
+ $out = ($_.FullName -replace '\.mp4$', '') + ".txt"
275
+ if (Test-Path $out) {
276
+ Write-Host "SKIP (exists): $($_.Name)"
277
+ return
278
+ }
279
+ Write-Host "Converting: $($_.Name)"
280
+ & $ffmpeg -y -i $_.FullName -ar 16000 -ac 1 -c:a pcm_s16le $tmp 2>$null
281
+ Write-Host "Transcribing: $($_.Name)"
282
+ $wArgs = "-m `"$model`" -f `"$tmp`" --threads 8 --condition-on-previous-text 0 --no-speech-thold 0.6"
283
+ Start-Process -FilePath $whisper -ArgumentList $wArgs -RedirectStandardOutput $out -Wait -NoNewWindow
284
+ Write-Host "Done: $($_.BaseName).txt"
285
+ }
286
+
287
+ Remove-Item $tmp -ErrorAction SilentlyContinue
288
+ Write-Host "All done."
289
+ ```
290
+
291
+ Cambia `*.mp4` por `*.mkv`, `*.m4a` etc. para que coincida con tus tipos de archivo. La verificación de salto `Test-Path` significa que volver a ejecutar el script tras una interrupción no reprocesará los archivos ya completados.
292
+
293
+ Esto escribe archivos `.txt` junto a cada fuente. Las herramientas MCP los reconocerán como ya transcritos cuando ejecutes `analyze_media` o `start_batch` después.
294
+
295
+ ---
296
+
297
+ ## Ubicación del archivo de configuración
298
+
299
+ ```
300
+ C:\Users\TuUsuario\AppData\Roaming\Claude\claude_desktop_config.json
301
+ ```
302
+
303
+ Si `AppData` no es visible: Ver → Mostrar → Elementos ocultos en el Explorador de archivos.
304
+
305
+ ---
306
+
307
+ ## Ejemplo de configuración completa funcionando
308
+
309
+ ```json
310
+ {
311
+ "mcpServers": {
312
+ "whisper": {
313
+ "command": "npx",
314
+ "args": ["-y", "whisper-windows-mcp"],
315
+ "env": {
316
+ "WHISPER_CLI_PATH": "C:\\whisper\\Release\\whisper-cli.exe",
317
+ "WHISPER_MODEL": "C:\\whisper\\models\\ggml-medium.en.bin",
318
+ "FFMPEG_PATH": "ffmpeg"
319
+ }
320
+ }
321
+ }
322
+ }
323
+ ```
324
+
325
+ `FFMPEG_PATH` tiene como predeterminado `ffmpeg` (asume que está en el PATH). Establécelo explícitamente solo si FFmpeg está instalado en una ubicación no estándar.