whisper-windows-mcp 2.2.2 → 2.3.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 (53) hide show
  1. package/{LICENSE-COMMERCIAL.md → COMMERCIAL-LICENSE.md} +58 -58
  2. package/LICENSE +40 -40
  3. package/PRIVACY.es.md +192 -135
  4. package/PRIVACY.id.md +192 -135
  5. package/PRIVACY.ja.md +192 -135
  6. package/PRIVACY.ko.md +192 -135
  7. package/PRIVACY.md +192 -135
  8. package/PRIVACY.pl.md +192 -135
  9. package/PRIVACY.pt-BR.md +192 -135
  10. package/PRIVACY.ro.md +192 -135
  11. package/PRIVACY.uk.md +192 -135
  12. package/PRIVACY.vi.md +192 -135
  13. package/README.es.md +74 -48
  14. package/README.id.md +77 -40
  15. package/README.ja.md +100 -72
  16. package/README.ko.md +63 -37
  17. package/README.md +76 -39
  18. package/README.pl.md +77 -40
  19. package/README.pt-BR.md +71 -45
  20. package/README.ro.md +78 -41
  21. package/README.uk.md +77 -40
  22. package/README.vi.md +67 -41
  23. package/ROADMAP.es.md +110 -48
  24. package/ROADMAP.id.md +77 -104
  25. package/ROADMAP.ja.md +84 -123
  26. package/ROADMAP.ko.md +73 -97
  27. package/ROADMAP.pl.md +104 -44
  28. package/ROADMAP.pt-BR.md +78 -102
  29. package/ROADMAP.ro.md +102 -44
  30. package/ROADMAP.uk.md +65 -97
  31. package/ROADMAP.vi.md +78 -102
  32. package/SECURITY.es.md +64 -47
  33. package/SECURITY.id.md +64 -47
  34. package/SECURITY.ja.md +64 -47
  35. package/SECURITY.ko.md +64 -47
  36. package/SECURITY.md +21 -4
  37. package/SECURITY.pl.md +64 -47
  38. package/SECURITY.pt-BR.md +64 -47
  39. package/SECURITY.ro.md +64 -47
  40. package/SECURITY.uk.md +64 -47
  41. package/SECURITY.vi.md +64 -47
  42. package/TROUBLESHOOTING.es.md +309 -323
  43. package/TROUBLESHOOTING.id.md +333 -323
  44. package/TROUBLESHOOTING.ja.md +399 -286
  45. package/TROUBLESHOOTING.ko.md +309 -323
  46. package/TROUBLESHOOTING.pl.md +355 -323
  47. package/TROUBLESHOOTING.pt-BR.md +309 -323
  48. package/TROUBLESHOOTING.ro.md +355 -323
  49. package/TROUBLESHOOTING.uk.md +369 -323
  50. package/TROUBLESHOOTING.vi.md +309 -323
  51. package/dist/index.js +591 -216
  52. package/package.json +45 -45
  53. package/patch_roadmaps.py +0 -72
package/ROADMAP.pt-BR.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # whisper-windows-mcp — Roadmap
2
2
 
3
- Versão atual: **v2.2.0**
3
+ Versão atual: **v2.3.0**
4
4
 
5
5
  ---
6
6
 
@@ -54,143 +54,109 @@ Arquitetura de processo desanexado: `transcribe_audio` com `background=true` cri
54
54
  ### ✅ v2.0.0 — Caminhos seguros para Unicode + SRT em segundo plano
55
55
  **Nomes de arquivo Unicode:** Arquivos com caracteres não-ASCII nos nomes causavam falha silenciosa na transcrição em segundo plano. Corrigido roteando toda a saída por um caminho temporário sanitizado baseado em ID de tarefa, depois movendo o resultado para o destino correto após a conclusão.
56
56
 
57
- **SRT no modo em segundo plano:** `spawnDetached` anteriormente codificava rigidamente `-otxt` independentemente do formato solicitado, e `generate_subtitles` bloqueava de forma síncrona e atingia o timeout MCP de 4 minutos em arquivos mais longos. Corrigido adicionando parâmetro `outputFormat` ao `spawnDetached`, suportando saída `text` e `srt` no modo em segundo plano.
57
+ **SRT no modo em segundo plano:** `spawnDetached` anteriormente codificava rigidamente `-otxt` independentemente do formato solicitado. Corrigido adicionando parâmetro `outputFormat` ao `spawnDetached`, suportando saída `text` e `srt` no modo em segundo plano.
58
58
 
59
59
  ### ✅ v2.0.1 — Correções de bugs (incluído no v2.2.0)
60
- - `--max-context 0` fixo em `buildArgs` e `spawnDetached` — previne loops de alucinação em áudio longo. `--condition-on-previous-text` e `--no-context` não são flags válidos no binário atual (era v1.8.3) — `--max-context N` é o flag correto.
60
+ - `--max-context 0` fixo em `buildArgs` e `spawnDetached` — previne loops de alucinação em áudio longo.
61
61
  - `--no-speech-thold 0.6` fixo em ambas as funções — segmentos abaixo do limiar de confiança são tratados como silêncio em vez de conteúdo alucinado.
62
62
  - Validação de caminho (`validateInputPath`) — rejeita caminhos UNC e travessias `..`.
63
63
  - Proteção de tamanho de arquivo `MAX_FILE_SIZE_MB = 10240`.
64
64
  - Comentário de segurança de injeção de transcrição em `transcribeSingle`.
65
- - Comando CLI de lote corrigido no TROUBLESHOOTING.md — documentado o método correto de pré-conversão do FFmpeg e o método `Start-Process -RedirectStandardOutput`.
65
+ - Comando CLI de lote corrigido no TROUBLESHOOTING.md.
66
66
 
67
67
  ### ✅ v2.1.0 — Suite de gerenciamento de modelos (incluído no v2.2.0)
68
68
  - `WHISPER_MODEL` alterado de `const` para `let` (mutável dentro da sessão).
69
69
  - `MODEL_REGISTRY` — 16 modelos, variantes de precisão total e quantizadas, URLs de download do Hugging Face.
70
70
  - `ALLOWED_HF_PREFIXES` — lista de permissões de URL que limita downloads aos namespaces `ggerganov/whisper.cpp` e `ggml-org`.
71
71
  - Ferramenta `list_models` — varre o diretório de modelos, mostra o modelo ativo, tamanhos, casos de uso, downloads disponíveis.
72
- - Ferramenta `download_model` — baixa do Hugging Face via `https` integrado do Node.js, renomeação atômica (corrige condição de corrida de liberação de handle de arquivo do Windows).
72
+ - Ferramenta `download_model` — baixa do Hugging Face via `https` integrado do Node.js, renomeação atômica.
73
73
  - Ferramenta `switch_model` — valida extensão `.bin`, restrição de diretório, verificação de bloqueio de processo.
74
74
  - `recommendedModel()` atualizado para recomendar `large-v3-turbo` para VRAM de 6GB+.
75
75
 
76
- ### ✅ v2.2.0 — Expansão de qualidade, parâmetros e hardware (atual)
76
+ ### ✅ v2.2.0 — Expansão de qualidade, parâmetros e hardware
77
77
  - Interface `WhisperOptions` substituindo argumentos posicionais em `buildArgs`.
78
78
  - Novos parâmetros em `transcribe_audio`: `temperature`, `prompt`, `condition_on_prev_text`, `no_speech_thold`, `beam_size`, `best_of`, `gpu_device`, `processors`, `word_timestamps`, `max_segment_length`, `split_on_word`, `diarize`, `vad_model`, `offset_t`, `duration`.
79
79
  - Novos parâmetros em `generate_subtitles`: `temperature`, `prompt`, `beam_size`, `best_of`, `diarize`, `vad_model`.
80
80
  - `spawnDetached` refatorado — todos os flags de qualidade agora são aplicados no modo em segundo plano/lote.
81
- - `runSrtPass` atualizado para aceitar `extraOpts`.
82
- - Saída de lote corrigida — `readBatchProgress` agora move a saída temporária para o destino final antes de validar (esta era a causa raiz de todos os resultados de lote "com falha").
83
-
84
- **Nota de compatibilidade de flags:** `gpu_device` / `-g` foi adicionado no whisper.cpp v1.8.4. O binário Vulkan pré-compilado nos releases é da era v1.8.3 — este parâmetro é aceito pela ferramenta mas não terá efeito até que os usuários atualizem para binários v1.8.4+.
85
-
86
- **Flags válidos confirmados no binário atual (era v1.8.3):**
87
- `--max-context`, `--no-speech-thold`, `--processors`, `--offset-t`, `--duration`, `--best-of`, `--beam-size`, `--diarize`, `--tinydiarize`, `--temperature`, `--prompt`, flags VAD.
88
-
89
- **Ausentes no binário atual:** `--no-context` (use `--max-context 0`), `--condition-on-previous-text` (apenas nome da API Python), `--gpu-device` / `-g` (v1.8.4+).
90
-
91
- ---
92
-
93
- ## Bug crítico — Avanço automático do lote (confirmado, aguardando correção)
94
-
95
- ### Lote não avança sem polling ativo
96
-
97
- `start_batch` não avança a fila autonomamente entre os arquivos. O lote só avança quando `check_batch_progress` é chamado. Sem polling, o lote fica parado indefinidamente após cada arquivo — o whisper-cli.exe sai, nenhum novo processo é criado e a fila não avança.
98
-
99
- Isso destrói o objetivo de design central de processamento em lote autônomo durante a noite e viola diretamente o princípio de design de minimizar chamadas à API do Claude. Um lote de 95 clipes curtos exigiu cerca de 200 chamadas de polling ao longo de 100 minutos para ser concluído.
100
-
101
- **Causa raiz:** `readBatchProgress` contém toda a lógica de avanço de fila. Ele só é executado quando `check_batch_progress` é chamado explicitamente. Não há timer em segundo plano, observador de arquivo ou loop autônomo.
102
-
103
- **Correção planejada — Opção B (callback de saída, fortemente preferido):** Attach de um handler `on('exit')` ao processo filho whisper-cli criado. Quando o processo sair, imediatamente chamar a lógica de avanço para validar a saída e criar a próxima tarefa. Baseado em eventos, disparado exatamente uma vez por conclusão de arquivo, sem overhead de polling, sem chamadas de API consumidas.
104
-
105
- **Opção A (somente fallback):** `setInterval` em segundo plano com intervalo de polling baseado em duração derivado dos dados de duração do FFprobe já presentes no JSON de estado do lote. O tamanho do arquivo não é um substituto confiável para a duração.
106
-
107
- **Restrição adicional:** A correção não deve criar um segundo whisper-cli.exe quando um já está em execução — o bloqueio de processo deve ser respeitado no caminho de avanço automático.
108
-
109
- **Solução alternativa (atual):** Chame `check_batch_progress` repetidamente até que o lote seja concluído. Cerca de um polling por arquivo é necessário.
110
-
111
- ---
112
-
113
- ## Planejado — Arquitetura de Privacidade (antes da migração para o Bun)
114
-
115
- Essas mudanças devem ser lançadas antes da migração para o Bun e antes de quaisquer mudanças de licença que facilitem a adoção comercial ou empresarial. Lançar uma ferramenta de nível empresarial sem proteções de conformidade resolvidas cria responsabilidade para usuários em setores regulamentados.
116
-
117
- ### Variável de ambiente `WHISPER_PRIVACY_MODE`
118
- A ferramenta atualmente garante que nenhum **áudio** sai da máquina. Ela não estende essa garantia ao **texto de transcrição** — quando o conteúdo de transcrição é retornado inline em uma resposta de ferramenta, esse texto é processado pela API do Claude e sai do ambiente local.
119
-
120
- Essa lacuna é invisível para usuários que razoavelmente interpretam "nenhum dado sai da sua máquina" como cobrindo todo o conteúdo derivado do seu áudio.
121
-
122
- Adicionar `WHISPER_PRIVACY_MODE` como variável de ambiente em `claude_desktop_config.json`. Quando ativado:
123
- - Todas as respostas das ferramentas retornam apenas metadados: nome do arquivo, duração, contagem de palavras, status de conclusão
124
- - Nenhum texto de transcrição é incluído em qualquer resposta de ferramenta
125
- - O Claude não pode ler, analisar ou retransmitir conteúdo de transcrição de nenhuma forma
126
- - As transcrições existem apenas como arquivos `.txt` locais
127
-
128
- Esta é a configuração correta para implantações médicas, jurídicas, financeiras e corporativas. Zero chamadas de API, zero transmissão de dados, zero risco de conformidade.
129
-
130
- ### Gateway de consentimento para conteúdo de transcrição
131
- Quando `WHISPER_PRIVACY_MODE` não está ativado (padrão), qualquer resposta de ferramenta que inclua texto de transcrição deve ser precedida de uma divulgação no primeiro uso por sessão. A divulgação deve comunicar claramente que o texto de transcrição é enviado à API da Anthropic, que isso está fora da garantia "nenhum dado sai da sua máquina", e que usuários que lidam com conteúdo regulamentado devem verificar suas obrigações de conformidade antes de prosseguir.
132
-
133
- Implementação: variável de ambiente `WHISPER_CONSENT_ACKNOWLEDGED` com padrão `false`. No primeiro retorno de transcrição por sessão, se não reconhecido, o Claude apresenta a divulgação e solicita confirmação explícita. Uma vez reconhecido para a sessão, as transcrições subsequentes são retornadas sem solicitar novamente.
134
-
135
- ### Documentação `PRIVACY.md`
136
- Criar `PRIVACY.md` na raiz do repositório cobrindo:
137
- - Quais dados sempre ficam locais: arquivos de áudio, vídeo, modelos
138
- - Quais dados podem sair do local (por padrão): texto de transcrição em respostas de ferramentas
139
- - Quais dados nunca saem do local (com modo de privacidade): tudo
140
- - Orientação de framework de conformidade por setor (HIPAA, GDPR, privilégio advogado-cliente, FERPA, SOX, PCI-DSS, NDA/segredo comercial)
141
- - Como configurar o modo de privacidade
142
- - Isenção de responsabilidade de que os autores da ferramenta não são consultores jurídicos
143
-
144
- ### Avisos de privacidade no esquema de ferramentas
145
- Atualizar as descrições de ferramentas `ListToolsRequestSchema` para incluir uma nota de privacidade em qualquer ferramenta que retorne texto de transcrição. Isso aparece nas descrições de ferramentas do Claude Desktop e cria consciência no ponto de uso.
146
-
147
- ### Limpeza automática do diretório temporário
148
- `%TEMP%\whisper-mcp-jobs\` acumula arquivos de estado de tarefas e logs ao longo do tempo. Adicionar limpeza automática de arquivos de tarefas concluídas após uma janela de retenção configurável (padrão: 7 dias). Atualmente requer `Remove-Item` manual pelo usuário.
81
+ - Saída de lote corrigida — `readBatchProgress` agora move a saída temporária para o destino final antes de validar.
82
+
83
+ **Nota de compatibilidade de flags:** `gpu_device` / `--device` foi adicionado no whisper.cpp v1.8.4. Os binários Vulkan pré-compilados nos releases são da era v1.8.3 — este parâmetro é aceito pela ferramenta mas não terá efeito até que os usuários atualizem para binários v1.8.4+.
84
+
85
+ ### ✅ v2.2.2 — Patch
86
+ - Correção de licença dual — revisão de LICENSE e LICENSE-COMMERCIAL.md.
87
+ - Correções menores de documentação.
88
+
89
+ ### ✅ v2.3.0 — Avanço automático de lote, arquitetura de privacidade, expansão de formatos de saída
90
+
91
+ **Avanço automático de lote (correção de bug crítico):** `start_batch` antes exigia polling ativo para avançar a fila. Agora cada processo filho whisper-cli criado tem um handler `on('exit')` anexado. Quando o processo termina, o lote avança imediatamente de forma autônoma através do callback de saída — sem custo de polling nem chamadas de API. Um mutex previne a criação dupla entre o handler de saída e chamadas simultâneas a `check_batch_progress`.
92
+
93
+ **Arquitetura de privacidade:**
94
+ - Variável de ambiente `WHISPER_PRIVACY_MODE` — quando definida como `true`, todas as respostas das ferramentas retornam apenas metadados (nome do arquivo, contagem de palavras, caminho de salvamento). Nenhum texto de transcrição é enviado à API do Claude. As transcrições existem apenas como arquivos locais.
95
+ - Variável de ambiente `WHISPER_CONSENT_ACKNOWLEDGED` — quando definida como `true`, suprime a porta de consentimento única por sessão para conteúdo não sensível.
96
+ - Parâmetro `privacy_mode` por chamada em `transcribe_audio`, `transcribe_batch`, `start_batch`, `check_progress`. Substitui a variável de ambiente global em ambas as direções. Não requer reinicialização para ativar/desativar.
97
+ - Porta do modo de privacidade (`checkPrivacyGate()`) — executada antes de cada operação quando o modo de privacidade efetivo está ativo. Primeira chamada ativa (exibe divulgação), segunda chamada libera (permite). Reinicia após cada operação. Completamente independente da porta de consentimento de sessão.
98
+ - Porta de consentimento de sessão (`transcriptPolicy()`) — executada uma vez por sessão antes da primeira chamada que retorne transcrição no modo padrão. Consumida pelo flag `sessionConsentGiven`.
99
+ - `PRIVACY.md` — documentação de conformidade completa cobrindo HIPAA, GDPR, privilégio advogado-cliente, FERPA, SOX, PCI-DSS, NDA/segredo comercial.
100
+ - Avisos de privacidade nas descrições de ferramentas de todas as ferramentas que retornam texto de transcrição.
101
+
102
+ **Expansão de formatos de saída:**
103
+ - `vtt` — saída de legenda WebVTT via `-ovtt`. Disponível em `transcribe_audio`, `generate_subtitles`, `start_batch` e modo em segundo plano.
104
+ - `lrc` — formato de letras/karaokê LRC via `-olrc`. Disponível em `transcribe_audio` e modo em segundo plano.
105
+ - `csv` — CSV com carimbos de tempo via `-ocsv`. Disponível em `transcribe_audio` e modo em segundo plano.
106
+ - O valor padrão de `output_format` muda de `"text"` para `"timestamps"` em todas as ferramentas e caminhos de código. Texto simples agora é opcional.
107
+
108
+ **Correções de bugs:**
109
+ - Bug 1: `output_format` não era passado para tarefas em segundo plano — `"text"` padrão era usado independentemente do formato solicitado. Corrigido mudando o padrão para `"timestamps"` e passando corretamente.
110
+ - Bug 2: `catch {}` silencioso na operação de movimentação de saída de tarefa em segundo plano engolia falhas. Adicionada verificação `existsSync` explícita após a movimentação com mensagem de falha detalhada.
111
+ - Bug 3: Adicionado comentário de design no ponto de criação em segundo plano explicando por que a porta de consentimento é adiada intencionalmente para `check_progress` para tarefas em segundo plano não privadas.
112
+
113
+ **Adições:**
114
+ - Limpeza automática do diretório temporário — `cleanupOldJobFiles()` é executado na inicialização e exclui arquivos `.json` e `.log` com mais de 7 dias em `%TEMP%\whisper-mcp-jobs\`.
115
+ - `check_config` agora reporta o status do modo de privacidade.
116
+ - O log de inicialização reporta modo de privacidade ativado/desativado.
117
+ - Campo `privacyMode: boolean` adicionado à interface `Job`.
118
+ - Campo `privacyMode: boolean` adicionado à interface `BatchState`.
119
+ - O tipo `BackgroundFormat` exclui `json` (json no modo em segundo plano não é suportado — cai de volta para `text`).
149
120
 
150
121
  ---
151
122
 
152
- ## Planejado — Migração para o Bun
123
+ ## Planejado — v2.4.0: Migração para Bun
153
124
 
154
- Migrar o runtime do Node.js para o [Bun](https://bun.sh) após a conclusão da arquitetura de privacidade e antes das adições de funcionalidades do v2.3.0.
125
+ Migrar o runtime de Node.js para o [Bun](https://bun.sh).
155
126
 
156
- Como o Claude Desktop cria um novo servidor MCP a cada início de sessão, o tempo de inicialização está no caminho crítico. O Bun executa TypeScript nativamente sem etapa de compilação, inicia significativamente mais rápido que o Node e tem E/S mais rápida.
127
+ O Claude Desktop cria um novo servidor MCP a cada início de sessão, portanto o tempo de inicialização está no caminho crítico. O Bun executa TypeScript nativamente sem etapa de compilação, inicia significativamente mais rápido que o Node e tem E/S mais rápida.
157
128
 
158
129
  **O que muda:**
159
- - Eliminação da etapa de build `tsc` e do diretório `dist/`
160
- - Os usuários executam o código TypeScript fonte diretamente
130
+ - Etapa de compilação `tsc` e diretório `dist/` removidos
131
+ - Os usuários executam o código-fonte TypeScript diretamente
161
132
  - `tsconfig.json` torna-se opcional
162
- - Scripts `package.json` atualizados
163
- - Fluxo de trabalho de publicação no npm atualizado
133
+ - Scripts do `package.json` atualizados
134
+ - Fluxo de publicação no npm atualizado
164
135
 
165
136
  **O que não muda:**
166
137
  - Código-fonte `src/index.ts` — o Bun é compatível com o TypeScript existente e as APIs integradas do Node.js
167
138
  - Todos os comportamentos de ferramentas e formatos de saída
168
139
  - Configuração do Claude Desktop para usuários finais
169
140
 
170
- **Por que após a privacidade, antes do v2.3.0:** O código-fonte está em seu estado mais fácil de migrar agora. Migrar após adicionar mais ferramentas apenas aumenta a área de superfície sem benefício. A arquitetura de privacidade deve ser lançada primeiro conforme observado acima.
171
-
172
141
  ---
173
142
 
174
- ## Licenciamento
175
-
176
- whisper-windows-mcp usa licença dupla.
177
-
178
- **Uso não comercial:** MIT — gratuito para uso pessoal, educacional e não comercial. Veja [LICENSE](LICENSE).
143
+ ## Planejado — v2.5.0: Formatos de saída aprimorados para integração com ferramentas externas
179
144
 
180
- **Uso comercial:** É necessário um contrato de licença comercial separado. Veja [LICENSE-COMMERCIAL.md](LICENSE-COMMERCIAL.md).
145
+ Suporte expandido de formatos de saída voltado para fluxos de trabalho de análise e integração downstream. O escopo exato será definido com base no feedback dos usuários após o v2.3.0.
181
146
 
182
- `WHISPER_PRIVACY_MODE` para implantações em setores regulamentados está em desenvolvimento e planejado para uma versão futura. Veja [PRIVACY.md](PRIVACY.md) para orientações atuais.
147
+ ---
183
148
 
184
- ## Planejado — v2.3.0: Expansão de formatos de saída
149
+ ## Planejado — v2.6.0: Modo de transcrição de microfone ao vivo
185
150
 
186
- ### Formato de legenda VTT
187
- Saída WebVTT (`.vtt`) junto com SRT. VTT é o padrão web usado pelo YouTube, HTML5 `<video>` e a maioria dos players modernos. O whisper-cli o suporta nativamente. Adicionar `vtt` como formato de saída válido em `transcribe_audio`, `generate_subtitles` e `spawnDetached`. Atualizar `buildArgs` e todos os esquemas de ferramentas relevantes, README e documentação multilíngue.
151
+ Transcrição em tempo real a partir de entrada de microfone ao vivo. Transmite áudio em fragmentos do dispositivo de gravação selecionado para o whisper, retornando segmentos de transcrição concluídos de forma contínua.
188
152
 
189
- ### Formato LRC
190
- Saída no formato LRC (`.lrc`) de letras/karaokê via `-olrc`. Usado por players de mídia para exibição sincronizada de letras. Custo de implementação zero — flag CLI nativo.
153
+ **Restrições de design:**
154
+ - A seleção do dispositivo deve ser explícita — sem captura silenciosa do microfone padrão
155
+ - O usuário deve poder parar o stream através da interação com o Claude Desktop
156
+ - Não deve violar a restrição de uma única instância do whisper por vez
157
+ - O trade-off entre latência e precisão deve ser configurável pelo usuário
191
158
 
192
- ### Formato CSV
193
- Saída CSV (`.csv`) via `-ocsv`. Dados tabulares estruturados com timing de segmentos — útil para análise downstream, fluxos de trabalho de alinhamento de clipes e importação em ferramentas de planilha. Custo de implementação zero — flag CLI nativo.
159
+ **Status:** Fase de design. Depende de uma API de streaming estável do whisper.cpp.
194
160
 
195
161
  ---
196
162
 
@@ -225,7 +191,7 @@ Para usuários que gerenciam grandes projetos de edição de vídeo com diretór
225
191
  ### Diarização de falantes (pyannote-audio)
226
192
  Diarização de falantes mono completa com rótulos de ID de falante — marca transições de falantes em toda a gravação independentemente da configuração de canal. Diferente do flag `--diarize` estéreo integrado (v2.2.0) e do TinyDiarize.
227
193
 
228
- **Implementação:** Requer [pyannote-audio](https://github.com/pyannote/pyannote-audio) — biblioteca baseada em Python com requisito de token de acesso a modelos do Hugging Face. Pilha de dependências completamente separada do pipeline whisper.cpp.
194
+ **Implementação:** Requer [pyannote-audio](https://github.com/pyannote/pyannote-audio) — biblioteca baseada em Python com requisito de token de acesso a modelos do Hugging Face. Pilha de dependências completamente separada.
229
195
 
230
196
  **Status:** Funcionalidade avançada opcional com sua própria documentação de configuração. Não incluída no pacote principal.
231
197
 
@@ -247,15 +213,25 @@ Pipeline de pós-processamento:
247
213
 
248
214
  ---
249
215
 
216
+ ## Licenciamento
217
+
218
+ O whisper-windows-mcp usa licença dupla.
219
+
220
+ **Uso não comercial:** MIT — gratuito para uso pessoal, educacional e não comercial. Veja [LICENSE](LICENSE).
221
+
222
+ **Uso comercial:** É necessário um contrato de licença comercial separado para qualquer uso empresarial, profissional ou que gere receita. Veja [COMMERCIAL-LICENSE.md](COMMERCIAL-LICENSE.md).
223
+
224
+ ---
225
+
250
226
  ## Distribuição
251
227
 
252
- Disponível no [npm](https://www.npmjs.com/package/whisper-windows-mcp), [mcpservers.org](https://mcpservers.org) e [Glama](https://glama.ai).
228
+ Disponível no [npm](https://www.npmjs.com/package/whisper-windows-mcp), [mcpservers.org](https://mcpservers.org), [Glama](https://glama.ai) e [awesome-mcp-servers](https://github.com/punkpeye/awesome-mcp-servers) (PR enviado).
253
229
 
254
230
  ---
255
231
 
256
232
  ## Documentação multilíngue
257
233
 
258
- A documentação em japonês, coreano, vietnamita, indonésio, ucraniano, português brasileiro e espanhol é mantida em paralelo com o inglês. Os seguintes arquivos devem ser atualizados para corresponder aos documentos em inglês após cada release:
234
+ Os seguintes arquivos devem ser atualizados para corresponder aos documentos em inglês após cada release:
259
235
 
260
236
  **Japonês (`*.ja.md`)** — `README.ja.md` / `TROUBLESHOOTING.ja.md` / `ROADMAP.ja.md` / `PRIVACY.ja.md` / `SECURITY.ja.md`
261
237
 
@@ -271,9 +247,9 @@ A documentação em japonês, coreano, vietnamita, indonésio, ucraniano, portug
271
247
 
272
248
  **Espanhol (`*.es.md`)** — `README.es.md` / `TROUBLESHOOTING.es.md` / `ROADMAP.es.md` / `PRIVACY.es.md` / `SECURITY.es.md`
273
249
 
274
- **Polish (`*.pl.md`)** — `README.pl.md` / `TROUBLESHOOTING.pl.md` / `ROADMAP.pl.md` / `PRIVACY.pl.md` / `SECURITY.pl.md`
250
+ **Polonês (`*.pl.md`)** — `README.pl.md` / `TROUBLESHOOTING.pl.md` / `ROADMAP.pl.md` / `PRIVACY.pl.md` / `SECURITY.pl.md`
275
251
 
276
- **Romanian (`*.ro.md`)** — `README.ro.md` / `TROUBLESHOOTING.ro.md` / `ROADMAP.ro.md` / `PRIVACY.ro.md` / `SECURITY.ro.md`
252
+ **Romeno (`*.ro.md`)** — `README.ro.md` / `TROUBLESHOOTING.ro.md` / `ROADMAP.ro.md` / `PRIVACY.ro.md` / `SECURITY.ro.md`
277
253
 
278
254
  Contribuições da comunidade para outros idiomas são bem-vindas.
279
255
 
package/ROADMAP.ro.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # whisper-windows-mcp — Foaie de parcurs
2
2
 
3
- Versiunea curentă: **v2.2.0**
3
+ Versiunea curentă: **v2.3.0**
4
4
 
5
5
  ---
6
6
 
@@ -54,7 +54,7 @@ Arhitectură proces detașat: `transcribe_audio` cu `background=true` pornește
54
54
  ### ✅ v2.0.0 — Căi sigure Unicode + SRT în fundal
55
55
  **Nume fișiere Unicode:** Fișierele cu caractere non-ASCII în nume cauzau eșecuri silențioase ale transcrierii în fundal. Remediat prin direcționarea tuturor ieșirilor printr-o cale temporară igienizată bazată pe ID sarcină, apoi mutarea rezultatului la destinația corectă după finalizare.
56
56
 
57
- **SRT în modul fundal:** `spawnDetached` anterior codifica rigid `-otxt` indiferent de formatul solicitat, iar `generate_subtitles` bloca sincron și atingea limita de timp MCP de 4 minute pe fișiere mai lungi. Remediat prin adăugarea parametrului `outputFormat` la `spawnDetached`, suportând ieșire `text` și `srt` în modul fundal.
57
+ **SRT în modul fundal:** `spawnDetached` anterior codifica rigid `-otxt` indiferent de formatul solicitat. Remediat prin adăugarea parametrului `outputFormat` la `spawnDetached`, suportând ieșire `text` și `srt` în modul fundal.
58
58
 
59
59
  ### ✅ v2.0.1 — Corecții erori (incluse în v2.2.0)
60
60
  - `--max-context 0` codificat rigid în `buildArgs` și `spawnDetached` — previne buclele de halucinație pe audio lung.
@@ -73,103 +73,161 @@ Arhitectură proces detașat: `transcribe_audio` cu `background=true` pornește
73
73
  - Instrument `switch_model` — validează extensia `.bin`, restricție director, verificare blocare proces.
74
74
  - `recommendedModel()` actualizat pentru a recomanda `large-v3-turbo` pentru VRAM 6GB+.
75
75
 
76
- ### ✅ v2.2.0 — Extindere calitate, parametri și hardware (curent)
76
+ ### ✅ v2.2.0 — Extindere calitate, parametri și hardware
77
77
  - Interfață `WhisperOptions` înlocuind argumentele poziționale în `buildArgs`.
78
78
  - Parametri noi în `transcribe_audio`: `temperature`, `prompt`, `condition_on_prev_text`, `no_speech_thold`, `beam_size`, `best_of`, `gpu_device`, `processors`, `word_timestamps`, `max_segment_length`, `split_on_word`, `diarize`, `vad_model`, `offset_t`, `duration`.
79
79
  - Parametri noi în `generate_subtitles`: `temperature`, `prompt`, `beam_size`, `best_of`, `diarize`, `vad_model`.
80
80
  - `spawnDetached` refactorizat — toate indicatoarele de calitate sunt acum aplicate în modul fundal/lot.
81
81
  - Ieșire lot corectată — `readBatchProgress` acum mută ieșirea temporară la destinația finală înainte de validare.
82
82
 
83
- ---
84
-
85
- ## Bug critic — Avansare automată lot (confirmat, în așteptarea remedierii)
83
+ **Notă compatibilitate indicatoare:** `gpu_device` / `--device` a fost adăugat în whisper.cpp v1.8.4. Binarul Vulkan precompilat în versiuni este de generație v1.8.3 — acest parametru este acceptat de instrument dar nu va avea efect până când utilizatorii nu actualizează la un binar v1.8.4+.
86
84
 
87
- ### Lotul nu avansează fără interogare activă
85
+ ### ✅ v2.2.2 — Patch
86
+ - Corecție licență duală — LICENSE și LICENSE-COMMERCIAL.md corectate.
87
+ - Corecții minore de documentație.
88
88
 
89
- `start_batch` nu avansează autonom coada între fișiere. Lotul avansează doar când este apelat `check_batch_progress`. Fără interogare, lotul se oprește pe termen nedefinit după fiecare fișier.
89
+ ### ✅ v2.3.0 — Avansare automată lot, arhitectură confidențialitate, extindere formate de ieșire
90
90
 
91
- **Remediere planificată — Opțiunea B (callback ieșire):** Atașează un handler `on('exit')` la procesul copil whisper-cli pornit. Când procesul iese, apelează imediat logica de avansare pentru a valida ieșirea și a porni sarcina următoare.
91
+ **Avansare automată lot (corecție bug critic):** `start_batch` necesita anterior interogare activă pentru a avansa coada. Un handler `on('exit')` este acum atașat fiecărui proces copil whisper-cli pornit. Când procesul iese, lotul avansează automat prin callback-ul de ieșire cu zero costuri de interogare și zero apeluri API consumate. Un mutex previne lansarea dublă între handler-ul de ieșire concurrent și apelurile `check_batch_progress`.
92
92
 
93
- **Soluție temporară curentă:** Apelează `check_batch_progress` în mod repetat până când lotul se finalizează.
93
+ **Arhitectură confidențialitate:**
94
+ - Variabila de mediu `WHISPER_PRIVACY_MODE` — când `true`, toate răspunsurile instrumentelor returnează doar metadate (numele fișierului, numărul de cuvinte, calea de salvare). Niciun text de transcriere nu este transmis vreodată la API-ul Claude. Transcrierile există doar ca fișiere locale.
95
+ - Variabila de mediu `WHISPER_CONSENT_ACKNOWLEDGED` — când `true`, suprimă poarta de consimțământ unică per sesiune pentru conținut non-sensibil.
96
+ - Parametrul `privacy_mode` per apel în `transcribe_audio`, `transcribe_batch`, `start_batch` și `check_progress`. Suprascrie variabila de mediu globală în ambele direcții. Nu necesită repornire pentru a comuta per apel.
97
+ - Poarta modului de confidențialitate (`checkPrivacyGate()`) — se activează înainte de fiecare operațiune când modul de confidențialitate efectiv este activ.
98
+ - Poarta de consimțământ sesiune (`transcriptPolicy()`) — se activează o dată per sesiune înainte de primul apel care returnează transcriere în modul standard.
99
+ - `PRIVACY.md` — documentație completă de conformitate acoperind HIPAA, GDPR, privilegiu avocat-client, FERPA, SOX, PCI-DSS și NDA/secret comercial.
94
100
 
95
- ---
101
+ **Extindere formate de ieșire:**
102
+ - `vtt` — ieșire WebVTT prin `-ovtt`. Disponibil în `transcribe_audio`, `generate_subtitles`, `start_batch` și modul fundal.
103
+ - `lrc` — format LRC versuri/karaoke prin `-olrc`. Disponibil în `transcribe_audio` și modul fundal.
104
+ - `csv` — CSV cu marcaje de timp prin `-ocsv`. Disponibil în `transcribe_audio` și modul fundal.
105
+ - `output_format` implicit schimbat din `"text"` în `"timestamps"` în toate instrumentele și căile de cod.
96
106
 
97
- ## Planificat — Arhitectură confidențialitate (înainte de migrarea la Bun)
107
+ **Corecții bug:**
108
+ - Bug 1: `output_format` nu era transmis sarcinilor în fundal — implicit `"text"` era folosit indiferent de formatul solicitat. Remediat prin schimbarea implicită la `"timestamps"` și transmitere corectă.
109
+ - Bug 2: `catch {}` silențios în operațiunea de mutare a ieșirii sarcinii în fundal înghițea eșecurile. Adăugat verificare explicită `existsSync` cu mesaj de eșec detaliat după mutare.
110
+ - Bug 3: Comentariu de design adăugat la punctul de lansare în fundal documentând de ce poarta de consimțământ este intenționat amânată la `check_progress` pentru sarcinile în fundal fără mod de confidențialitate.
98
111
 
99
- ### Variabila de mediu `WHISPER_PRIVACY_MODE`
100
- Adaugă `WHISPER_PRIVACY_MODE` ca variabilă de mediu în `claude_desktop_config.json`. Când este activată, toate răspunsurile instrumentelor returnează doar metadate — niciun text de transcriere nu este inclus.
112
+ **Suplimentar:**
113
+ - Curățare automată director temporar — `cleanupOldJobFiles()` rulează la pornire, șterge fișierele `.json` și `.log` mai vechi de 7 zile din `%TEMP%\whisper-mcp-jobs\`.
114
+ - `check_config` raportează acum starea modului de confidențialitate.
115
+ - Jurnalul de pornire raportează modul de confidențialitate activat/dezactivat.
101
116
 
102
- ### Poartă de consimțământ pentru conținut de transcriere
103
- Când `WHISPER_PRIVACY_MODE` nu este activat (implicit), orice răspuns al instrumentului care include text de transcriere trebuie precedat de o dezvăluire la prima utilizare per sesiune.
117
+ ---
104
118
 
105
- ### Documentația `PRIVACY.md`
106
- Creează `PRIVACY.md` în rădăcina depozitului cu îndrumări complete privind confidențialitatea și cadre de conformitate.
119
+ ## Planificat — v2.4.0: Migrare la Bun
107
120
 
108
- ### Curățare automată director temporar
109
- Adaugă curățare automată a fișierelor de sarcini finalizate după o fereastră de retenție configurabilă (implicit: 7 zile).
121
+ Migrează runtime-ul de la Node.js la [Bun](https://bun.sh).
110
122
 
111
- ---
123
+ Deoarece Claude Desktop pornește serverul MCP din nou la fiecare pornire de sesiune, timpul de pornire este pe calea critică. Bun rulează TypeScript nativ fără pas de compilare, pornește semnificativ mai rapid decât Node și are I/O mai rapid.
112
124
 
113
- ## Planificat — Migrare la Bun
125
+ **Ce se schimbă:**
126
+ - Elimină pasul de build `tsc` și directorul `dist/`
127
+ - Utilizatorii rulează direct codul sursă TypeScript
128
+ - `tsconfig.json` devine opțional
129
+ - Scripturi `package.json` actualizate
130
+ - Flux de lucru publicare npm actualizat
114
131
 
115
- Migrează runtime-ul de la Node.js la [Bun](https://bun.sh) după finalizarea arhitecturii de confidențialitate și înainte de adăugările de funcții v2.3.0. Bun rulează TypeScript nativ fără pas de compilare și pornește semnificativ mai rapid decât Node.
132
+ **Ce nu se schimbă:**
133
+ - Codul sursă `src/index.ts` — Bun este compatibil cu TypeScript existent și API-urile Node.js integrate
134
+ - Tot comportamentul instrumentelor și formatele de ieșire
135
+ - Configurația Claude Desktop pentru utilizatorii finali
116
136
 
117
137
  ---
118
138
 
119
- ## Licențiere
139
+ ## Planificat — v2.5.0: Formate de ieșire îmbunătățite pentru integrarea instrumentelor externe
120
140
 
121
- whisper-windows-mcp folosește licențiere duală.
141
+ Suport extins pentru formate de ieșire destinat fluxurilor de lucru de analiză și integrare din aval. Domeniul exact va fi definit pe baza feedback-ului utilizatorilor după v2.3.0.
122
142
 
123
- **Utilizare non-comercială:** MIT — gratuit pentru uz personal, educațional și non-comercial. Vezi [LICENSE](LICENSE).
124
-
125
- **Utilizare comercială:** Este necesar un acord de licență comercială separat. Vezi [LICENSE-COMMERCIAL.md](LICENSE-COMMERCIAL.md).
126
-
127
- `WHISPER_PRIVACY_MODE` pentru implementări în sectoare reglementate este în curs de dezvoltare și planificat pentru o versiune viitoare. Vezi [PRIVACY.md](PRIVACY.md) pentru îndrumări actuale.
143
+ ---
128
144
 
129
- ## Planificat — v2.3.0: Extindere formate de ieșire
145
+ ## Planificat — v2.6.0: Modul de transcriere live din microfon
130
146
 
131
- ### Format subtitrări VTT
132
- Ieșire WebVTT (`.vtt`) împreună cu SRT. Standard web folosit de YouTube, HTML5 `<video>` și majoritatea playerelor moderne.
147
+ Transcriere în timp real din intrare microfon live. Transmite audio de la un dispozitiv de înregistrare selectat la whisper în bucăți, returnând segmente de transcriere continue pe măsură ce se finalizează.
133
148
 
134
- ### Format LRC
135
- Ieșire în format LRC (`.lrc`) versuri/karaoke prin `-olrc`.
149
+ **Constrângeri de proiectare:**
150
+ - Selecția dispozitivului trebuie să fie explicită — fără captare silențioasă a dispozitivului implicit
151
+ - Utilizatorul trebuie să poată opri fluxul printr-o interacțiune Claude Desktop
152
+ - Nu trebuie să intre în conflict cu constrângerea unei singure instanțe whisper simultan
153
+ - Compromisul latență vs precizie trebuie să fie configurabil de utilizator
136
154
 
137
- ### Format CSV
138
- Ieșire CSV (`.csv`) prin `-ocsv`. Date tabulare structurate cu sincronizare segmente.
155
+ **Status:** Faza de proiectare. Depinde de un API de streaming stabil în whisper.cpp.
139
156
 
140
157
  ---
141
158
 
142
159
  ## Planificat — Versiuni viitoare
143
160
 
144
161
  ### TinyDiarize
145
- Suport pentru indicatorul `--tinydiarize` cu variante de model care suportă `tdrz`. Funcționează pe înregistrări mono spre deosebire de indicatorul `--diarize` stereo.
162
+ Suport pentru indicatorul `--tinydiarize` cu variante de model care suportă `tdrz` (ex.: `large-v2-tdrz`). Spre deosebire de indicatorul `--diarize` stereo, TinyDiarize funcționează pe înregistrări mono. Necesită descărcarea unui variant de model special. Precizie mai mică decât diarizarea bazată pe pyannote, dar zero dependențe suplimentare în afara fișierului model.
163
+
164
+ **Status:** Planificat. Depinde de `download_model` care suportă variantele de model tdrz.
146
165
 
147
166
  ### Transcriere URL YouTube
148
- Transcriere directă din URL-uri YouTube prin yt-dlp. Necesită yt-dlp instalat și în PATH.
167
+ Transcriere directă din URL-uri YouTube prin yt-dlp. Descarcă audio și transcrie într-un singur pas. Necesită yt-dlp instalat și în PATH.
168
+
169
+ **Constrângere de proiectare:** yt-dlp este opțional. Instrumentul trebuie să degradeze elegant cu instrucțiuni clare de instalare dacă nu este găsit. Fără modificări ale funcționalității de bază pentru utilizatorii care nu au nevoie de aceasta.
149
170
 
150
171
  ### Instrumente flux de lucru proiect video
151
- Pentru utilizatorii care gestionează proiecte mari de editare video cu directoare de clipuri sursă și editate. Fișierele sursă nu sunt niciodată redenumite sau modificate fără confirmarea explicită a utilizatorului.
172
+ Pentru utilizatorii care gestionează proiecte mari de editare video cu directoare de clipuri sursă și editate:
173
+
174
+ 1. Scanează directorul sursă și subdirectorul de clipuri
175
+ 2. Potrivire fuzzy a transcrierilor clipurilor editate față de transcrierile sursă pentru a localiza punctele de origine
176
+ 3. Afișează nume de fișiere descriptive sugerate de Claude bazate pe conținutul transcrierii, necesitând confirmarea explicită a utilizatorului înainte de orice redenumire
177
+ 4. Căutare transcrieri în directorul proiectului cu rezultate în coduri de timp
178
+
179
+ **Constrângeri de proiectare:**
180
+ - Fișierele sursă nu sunt **niciodată redenumite sau modificate**
181
+ - Toate redenumirile necesită **confirmarea explicită a utilizatorului**
182
+ - Căutarea este un instrument independent, utilizabil independent
183
+ - Analiza și potrivirea au loc local — Claude este invocat doar când utilizatorul revizuiește rezultatele, minimizând apelurile API
184
+
185
+ **Status:** Faza de proiectare.
152
186
 
153
187
  ### Diarizare vorbitori (pyannote-audio)
154
- Diarizare completă mono cu etichete ID vorbitor. Necesită pyannote-audio — bibliotecă bazată pe Python cu cerință de token acces modele Hugging Face.
188
+ Diarizare completă mono cu etichete ID vorbitor — marchează tranzițiile vorbitorilor pe toată înregistrarea indiferent de configurația canalelor. Diferit de indicatorul `--diarize` stereo integrat (v2.2.0) și TinyDiarize.
189
+
190
+ **Implementare:** Necesită [pyannote-audio](https://github.com/pyannote/pyannote-audio) — bibliotecă bazată pe Python cu cerință de token acces modele Hugging Face. Stivă de dependențe complet separată.
191
+
192
+ **Status:** Funcție avansată opțională cu propria documentație de configurare. Nu este inclusă în pachetul principal.
155
193
 
156
194
  ### Traducere în limbi non-engleze
157
195
  Indicatorul `--translate` al Whisper țintește doar engleza. Suportarea limbilor țintă arbitrare necesită un API de traducere extern sau un model de traducere local.
158
196
 
197
+ **Opțiuni luate în considerare:** LibreTranslate (auto-găzduit, local prioritar), traducere LLM local sau documentație explicită în afara domeniului.
198
+
199
+ **Status:** Amânat în așteptarea deciziei de proiectare privind local prioritar vs dependența API.
200
+
159
201
  ### Curățare și formatare transcrieri
160
- Pipeline de post-procesare: eliminarea cuvintelor de umplutură, pauze de paragraf la granițele naturale ale subiectelor, formatare conștientă de vorbitor, export în PDF sau DOCX.
202
+ Pipeline de post-procesare:
203
+ - Eliminarea cuvintelor de umplutură și a pornirilor false (opțional, controlat de utilizator)
204
+ - Pauze de paragraf la granițele naturale ale subiectelor
205
+ - Formatare conștientă de vorbitor combinată cu ieșire diarizare
206
+ - Export în PDF sau DOCX
207
+
208
+ **Status:** Planificat. Varianta conștientă de vorbitor depinde de diarizare.
209
+
210
+ ---
211
+
212
+ ## Licențiere
213
+
214
+ whisper-windows-mcp folosește licențiere duală.
215
+
216
+ **Utilizare non-comercială:** MIT — gratuit pentru uz personal, educațional și non-comercial. Vezi [LICENSE](LICENSE).
217
+
218
+ **Utilizare comercială:** Este necesar un acord de licență comercială separat pentru orice utilizare în afaceri, profesională sau generatoare de venituri. Vezi [COMMERCIAL-LICENSE.md](COMMERCIAL-LICENSE.md) pentru termeni și informații de contact.
161
219
 
162
220
  ---
163
221
 
164
222
  ## Distribuție
165
223
 
166
- Disponibil pe [npm](https://www.npmjs.com/package/whisper-windows-mcp), [mcpservers.org](https://mcpservers.org) și [Glama](https://glama.ai).
224
+ Disponibil pe [npm](https://www.npmjs.com/package/whisper-windows-mcp), [mcpservers.org](https://mcpservers.org), [Glama](https://glama.ai) și [awesome-mcp-servers](https://github.com/punkpeye/awesome-mcp-servers).
167
225
 
168
226
  ---
169
227
 
170
228
  ## Documentație multilingvă
171
229
 
172
- Documentația în japoneză, coreeană, vietnameză, indoneziană, ucraineană, portugheză braziliană, spaniolă, poloneză și română este menținută în paralel cu engleza. Următoarele fișiere trebuie actualizate pentru a corespunde documentelor în engleză după fiecare versiune:
230
+ După fiecare versiune, următoarele fișiere trebuie actualizate pentru a corespunde documentelor în engleză:
173
231
 
174
232
  **Japoneză (`*.ja.md`)** — `README.ja.md` / `TROUBLESHOOTING.ja.md` / `ROADMAP.ja.md` / `PRIVACY.ja.md` / `SECURITY.ja.md`
175
233