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
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.4.0**
4
4
 
5
5
  ---
6
6
 
@@ -54,143 +54,133 @@ 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").
81
+ - Saída de lote corrigida — `readBatchProgress` agora move a saída temporária para o destino final antes de validar.
83
82
 
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+.
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+.
85
84
 
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.
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
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+).
89
+ ### ✅ v2.3.0 — Avanço automático de lote, arquitetura de privacidade, expansão de formatos de saída
90
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.
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`.
104
92
 
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.
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.
106
101
 
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.
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.
108
107
 
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.
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.
110
112
 
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.
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`).
119
120
 
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
+ ### ✅ v2.4.0 — Fortalecimento, guarda de tempo limite em primeiro plano, suíte de testes e CI
121
122
 
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
123
+ Uma passagem de segurança/robustez; a migração para Bun planejada foi movida para v2.5.0.
127
124
 
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.
125
+ **Segurança e correção:**
126
+ - Correção de contenção de caminho em `switch_model` — um diretório com prefixo-irmão (p. ex. `…\models-evil`) podia antes satisfazer a verificação de "dentro do diretório de modelos" por meio de um `startsWith` ingênuo; substituído por contenção normalizada baseada em `relative()`. Fecha a fuga que o SECURITY.md descreve.
127
+ - Barreira de privacidade/consentimento chaveada **por operação** (ferramenta + argumentos) — confirmar uma transcrição não pode mais satisfazer a barreira de uma operação diferente.
128
+ - `download_model` rejeita downloads truncados (verificação de Content-Length) antes de promover um arquivo `.part`. (A verificação completa do digest SHA256 fica para uma passagem posterior.)
129
+ - Coerção de entrada — parâmetros numéricos de ferramentas que não são números reais são descartados em vez de entregues ao whisper-cli como `NaN`.
129
130
 
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.
131
+ **Robustez:**
132
+ - **Guarda de tempo limite em primeiro plano** — um arquivo longo o suficiente para exceder o tempo limite de ferramenta MCP de ~4 minutos do Claude Desktop em modo de bloqueio é detectado de antemão e roteado para segundo plano em vez de esgotar o tempo silenciosamente. Limite configurável via `WHISPER_FOREGROUND_MAX_SEC`. Estimativas de tempo corrigidas (a antiga estimativa de GPU subestimava muito; o custo dominante de recarga do modelo agora é modelado — medido, não adivinhado).
133
+ - Gravações atômicas do estado de trabalhos/lotes (arquivo temporário + renomeação) para que um leitor concorrente não possa observar um arquivo JSON parcialmente escrito.
134
+ - IDs de trabalho/lote/temporários à prova de colisão (com sufixo UUID).
135
+ - Encerramento gracioso em SIGINT/SIGTERM que limpa os arquivos temporários do modo de bloqueio.
132
136
 
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.
137
+ **Seleção de dispositivo GPU:**
138
+ - Variável de ambiente `WHISPER_GPU_DEVICE`, e `gpu_device` agora propagado por `generate_subtitles` e pela passagem de detecção de idioma (antes apenas `transcribe_audio`). `check_config` reporta o dispositivo ativo. `check_system` não reporta mais erroneamente um problema de driver quando o `wmic` (descontinuado no Windows 11 24H2+) não retorna nada.
134
139
 
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
140
+ **Qualidade:**
141
+ - Uma suíte de testes unitários `node:test` sobre a lógica pura (contenção de caminho, chaveamento da barreira, gravações atômicas, coerção de entrada, a estimativa de tempo limite), zero dependências adicionadas, além de um fluxo de trabalho de CI do GitHub Actions executando-a a cada push/PR.
143
142
 
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.
143
+ **Identificado para um lançamento futuro:** um caminho de modelo persistente (p. ex. o `whisper-server` do whisper.cpp) para eliminar o custo de recarga do modelo pago em cada transcrição — um grande ganho de throughput para trabalho em lote/de arquivo.
149
144
 
150
145
  ---
151
146
 
152
- ## Planejado — Migração para o Bun
147
+ ## Planejado — v2.5.0: Migração para Bun
153
148
 
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.
149
+ Migrar o runtime de Node.js para o [Bun](https://bun.sh).
155
150
 
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.
151
+ 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
152
 
158
153
  **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
154
+ - Etapa de compilação `tsc` e diretório `dist/` removidos
155
+ - Os usuários executam o código-fonte TypeScript diretamente
161
156
  - `tsconfig.json` torna-se opcional
162
- - Scripts `package.json` atualizados
163
- - Fluxo de trabalho de publicação no npm atualizado
157
+ - Scripts do `package.json` atualizados
158
+ - Fluxo de publicação no npm atualizado
164
159
 
165
160
  **O que não muda:**
166
161
  - Código-fonte `src/index.ts` — o Bun é compatível com o TypeScript existente e as APIs integradas do Node.js
167
162
  - Todos os comportamentos de ferramentas e formatos de saída
168
163
  - Configuração do Claude Desktop para usuários finais
169
164
 
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
165
  ---
173
166
 
174
- ## Licenciamento
167
+ ## Planejado — v2.6.0: Formatos de saída aprimorados para integração com ferramentas externas
175
168
 
176
- whisper-windows-mcp usa licença dupla.
169
+ 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.
177
170
 
178
- **Uso não comercial:** MIT — gratuito para uso pessoal, educacional e não comercial. Veja [LICENSE](LICENSE).
179
-
180
- **Uso comercial:** É necessário um contrato de licença comercial separado. Veja [LICENSE-COMMERCIAL.md](LICENSE-COMMERCIAL.md).
181
-
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.
171
+ ---
183
172
 
184
- ## Planejado — v2.3.0: Expansão de formatos de saída
173
+ ## Planejado — v2.7.0: Modo de transcrição de microfone ao vivo
185
174
 
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.
175
+ 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
176
 
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.
177
+ **Restrições de design:**
178
+ - A seleção do dispositivo deve ser explícita — sem captura silenciosa do microfone padrão
179
+ - O usuário deve poder parar o stream através da interação com o Claude Desktop
180
+ - Não deve violar a restrição de uma única instância do whisper por vez
181
+ - O trade-off entre latência e precisão deve ser configurável pelo usuário
191
182
 
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.
183
+ **Status:** Fase de design. Depende de uma API de streaming estável do whisper.cpp.
194
184
 
195
185
  ---
196
186
 
@@ -225,7 +215,7 @@ Para usuários que gerenciam grandes projetos de edição de vídeo com diretór
225
215
  ### Diarização de falantes (pyannote-audio)
226
216
  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
217
 
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.
218
+ **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
219
 
230
220
  **Status:** Funcionalidade avançada opcional com sua própria documentação de configuração. Não incluída no pacote principal.
231
221
 
@@ -247,15 +237,25 @@ Pipeline de pós-processamento:
247
237
 
248
238
  ---
249
239
 
240
+ ## Licenciamento
241
+
242
+ O whisper-windows-mcp usa licença dupla.
243
+
244
+ **Uso não comercial:** MIT — gratuito para uso pessoal, educacional e não comercial. Veja [LICENSE](LICENSE).
245
+
246
+ **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).
247
+
248
+ ---
249
+
250
250
  ## Distribuição
251
251
 
252
- Disponível no [npm](https://www.npmjs.com/package/whisper-windows-mcp), [mcpservers.org](https://mcpservers.org) e [Glama](https://glama.ai).
252
+ 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
253
 
254
254
  ---
255
255
 
256
256
  ## Documentação multilíngue
257
257
 
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:
258
+ Os seguintes arquivos devem ser atualizados para corresponder aos documentos em inglês após cada release:
259
259
 
260
260
  **Japonês (`*.ja.md`)** — `README.ja.md` / `TROUBLESHOOTING.ja.md` / `ROADMAP.ja.md` / `PRIVACY.ja.md` / `SECURITY.ja.md`
261
261
 
@@ -271,9 +271,9 @@ A documentação em japonês, coreano, vietnamita, indonésio, ucraniano, portug
271
271
 
272
272
  **Espanhol (`*.es.md`)** — `README.es.md` / `TROUBLESHOOTING.es.md` / `ROADMAP.es.md` / `PRIVACY.es.md` / `SECURITY.es.md`
273
273
 
274
- **Polish (`*.pl.md`)** — `README.pl.md` / `TROUBLESHOOTING.pl.md` / `ROADMAP.pl.md` / `PRIVACY.pl.md` / `SECURITY.pl.md`
274
+ **Polonês (`*.pl.md`)** — `README.pl.md` / `TROUBLESHOOTING.pl.md` / `ROADMAP.pl.md` / `PRIVACY.pl.md` / `SECURITY.pl.md`
275
275
 
276
- **Romanian (`*.ro.md`)** — `README.ro.md` / `TROUBLESHOOTING.ro.md` / `ROADMAP.ro.md` / `PRIVACY.ro.md` / `SECURITY.ro.md`
276
+ **Romeno (`*.ro.md`)** — `README.ro.md` / `TROUBLESHOOTING.ro.md` / `ROADMAP.ro.md` / `PRIVACY.ro.md` / `SECURITY.ro.md`
277
277
 
278
278
  Contribuições da comunidade para outros idiomas são bem-vindas.
279
279
 
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.4.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,185 @@ 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
- ---
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+.
84
84
 
85
- ## Bug critic — Avansare automată lot (confirmat, în așteptarea remedierii)
85
+ ### ✅ v2.2.2 — Patch
86
+ - Corecție licență duală — LICENSE și LICENSE-COMMERCIAL.md corectate.
87
+ - Corecții minore de documentație.
86
88
 
87
- ### Lotul nu avansează fără interogare activă
89
+ ### ✅ v2.3.0 — Avansare automată lot, arhitectură confidențialitate, extindere formate de ieșire
88
90
 
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.
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`.
90
92
 
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.
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.
92
100
 
93
- **Soluție temporară curentă:** Apelează `check_batch_progress` în mod repetat până când lotul se finalizează.
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.
94
106
 
95
- ---
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.
96
111
 
97
- ## Planificat — Arhitectură confidențialitate (înainte de migrarea la Bun)
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.
98
116
 
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.
117
+ ### ✅ v2.4.0 — Întărire, gardă de expirare în prim-plan, suită de teste și CI
101
118
 
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.
119
+ O trecere de securitate/robustețe; migrarea la Bun planificată a fost mutată la v2.5.0.
104
120
 
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.
121
+ **Securitate și corectitudine:**
122
+ - Remediere a izolării căilor în `switch_model` — un director cu prefix-frate (de ex. `…\models-evil`) putea anterior satisface verificarea „în interiorul directorului de modele” printr-un `startsWith` naiv; înlocuit cu izolare normalizată bazată pe `relative()`. Închide evadarea pe care o descrie SECURITY.md.
123
+ - Bariera de confidențialitate/consimțământ cheiată **per operațiune** (instrument + argumente) — confirmarea unei transcrieri nu mai poate satisface bariera unei alte operațiuni.
124
+ - `download_model` respinge descărcările trunchiate (verificare Content-Length) înainte de a promova un fișier `.part`. (Verificarea completă a digestului SHA256 este urmărită pentru o trecere ulterioară.)
125
+ - Coerciția intrărilor — parametrii numerici de instrument care nu sunt numere reale sunt eliminați în loc să fie predați lui whisper-cli ca `NaN`.
107
126
 
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).
127
+ **Robustețe:**
128
+ - **Gardă de expirare în prim-plan** — un fișier suficient de lung încât să depășească expirarea de ~4 minute a instrumentului MCP al Claude Desktop în mod blocant este detectat din timp și direcționat în fundal în loc să expire în tăcere. Prag configurabil prin `WHISPER_FOREGROUND_MAX_SEC`. Estimările de timp corectate (vechea estimare GPU subestima grav; costul dominant de reîncărcare a modelului este acum modelat — măsurat, nu ghicit).
129
+ - Scrieri atomice ale stării lucrărilor/loturilor (fișier temporar + redenumire) astfel încât un cititor concurent să nu poată observa un fișier JSON rupt.
130
+ - ID-uri de lucrare/lot/temporare rezistente la coliziuni (cu sufix UUID).
131
+ - Oprire grațioasă la SIGINT/SIGTERM care curăță fișierele temporare ale modului blocant.
110
132
 
111
- ---
133
+ **Selectarea dispozitivului GPU:**
134
+ - Variabila de mediu `WHISPER_GPU_DEVICE`, iar `gpu_device` este acum transmis prin `generate_subtitles` și prin trecerea de detectare a limbii (anterior doar `transcribe_audio`). `check_config` raportează dispozitivul activ. `check_system` nu mai raportează greșit o problemă de driver atunci când `wmic` (depreciat în Windows 11 24H2+) nu returnează nimic.
112
135
 
113
- ## Planificat — Migrare la Bun
136
+ **Calitate:**
137
+ - O suită de teste unitare `node:test` peste logica pură (izolarea căilor, cheierea barierei, scrieri atomice, coerciția intrărilor, estimarea expirării), zero dependențe adăugate, plus un flux de lucru CI GitHub Actions care o rulează la fiecare push/PR.
114
138
 
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.
139
+ **Identificat pentru o versiune viitoare:** o cale de model persistentă (de ex. `whisper-server` din whisper.cpp) pentru a elimina costul de reîncărcare a modelului plătit la fiecare transcriere — un câștig mare de debit pentru lucrul în lot/de arhivă.
116
140
 
117
141
  ---
118
142
 
119
- ## Licențiere
143
+ ## Planificat — v2.5.0: Migrare la Bun
120
144
 
121
- whisper-windows-mcp folosește licențiere duală.
145
+ Migrează runtime-ul de la Node.js la [Bun](https://bun.sh).
122
146
 
123
- **Utilizare non-comercială:** MIT — gratuit pentru uz personal, educațional și non-comercial. Vezi [LICENSE](LICENSE).
147
+ 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.
148
+
149
+ **Ce se schimbă:**
150
+ - Elimină pasul de build `tsc` și directorul `dist/`
151
+ - Utilizatorii rulează direct codul sursă TypeScript
152
+ - `tsconfig.json` devine opțional
153
+ - Scripturi `package.json` actualizate
154
+ - Flux de lucru publicare npm actualizat
155
+
156
+ **Ce nu se schimbă:**
157
+ - Codul sursă `src/index.ts` — Bun este compatibil cu TypeScript existent și API-urile Node.js integrate
158
+ - Tot comportamentul instrumentelor și formatele de ieșire
159
+ - Configurația Claude Desktop pentru utilizatorii finali
124
160
 
125
- **Utilizare comercială:** Este necesar un acord de licență comercială separat. Vezi [LICENSE-COMMERCIAL.md](LICENSE-COMMERCIAL.md).
161
+ ---
162
+
163
+ ## Planificat — v2.6.0: Formate de ieșire îmbunătățite pentru integrarea instrumentelor externe
126
164
 
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.
165
+ 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.
166
+
167
+ ---
128
168
 
129
- ## Planificat — v2.3.0: Extindere formate de ieșire
169
+ ## Planificat — v2.7.0: Modul de transcriere live din microfon
130
170
 
131
- ### Format subtitrări VTT
132
- Ieșire WebVTT (`.vtt`) împreună cu SRT. Standard web folosit de YouTube, HTML5 `<video>` și majoritatea playerelor moderne.
171
+ 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
172
 
134
- ### Format LRC
135
- Ieșire în format LRC (`.lrc`) versuri/karaoke prin `-olrc`.
173
+ **Constrângeri de proiectare:**
174
+ - Selecția dispozitivului trebuie să fie explicită — fără captare silențioasă a dispozitivului implicit
175
+ - Utilizatorul trebuie să poată opri fluxul printr-o interacțiune Claude Desktop
176
+ - Nu trebuie să intre în conflict cu constrângerea unei singure instanțe whisper simultan
177
+ - Compromisul latență vs precizie trebuie să fie configurabil de utilizator
136
178
 
137
- ### Format CSV
138
- Ieșire CSV (`.csv`) prin `-ocsv`. Date tabulare structurate cu sincronizare segmente.
179
+ **Status:** Faza de proiectare. Depinde de un API de streaming stabil în whisper.cpp.
139
180
 
140
181
  ---
141
182
 
142
183
  ## Planificat — Versiuni viitoare
143
184
 
144
185
  ### 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.
186
+ 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.
187
+
188
+ **Status:** Planificat. Depinde de `download_model` care suportă variantele de model tdrz.
146
189
 
147
190
  ### Transcriere URL YouTube
148
- Transcriere directă din URL-uri YouTube prin yt-dlp. Necesită yt-dlp instalat și în PATH.
191
+ Transcriere directă din URL-uri YouTube prin yt-dlp. Descarcă audio și transcrie într-un singur pas. Necesită yt-dlp instalat și în PATH.
192
+
193
+ **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
194
 
150
195
  ### 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.
196
+ Pentru utilizatorii care gestionează proiecte mari de editare video cu directoare de clipuri sursă și editate:
197
+
198
+ 1. Scanează directorul sursă și subdirectorul de clipuri
199
+ 2. Potrivire fuzzy a transcrierilor clipurilor editate față de transcrierile sursă pentru a localiza punctele de origine
200
+ 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
201
+ 4. Căutare transcrieri în directorul proiectului cu rezultate în coduri de timp
202
+
203
+ **Constrângeri de proiectare:**
204
+ - Fișierele sursă nu sunt **niciodată redenumite sau modificate**
205
+ - Toate redenumirile necesită **confirmarea explicită a utilizatorului**
206
+ - Căutarea este un instrument independent, utilizabil independent
207
+ - Analiza și potrivirea au loc local — Claude este invocat doar când utilizatorul revizuiește rezultatele, minimizând apelurile API
208
+
209
+ **Status:** Faza de proiectare.
152
210
 
153
211
  ### 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.
212
+ 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.
213
+
214
+ **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ă.
215
+
216
+ **Status:** Funcție avansată opțională cu propria documentație de configurare. Nu este inclusă în pachetul principal.
155
217
 
156
218
  ### Traducere în limbi non-engleze
157
219
  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
220
 
221
+ **Opțiuni luate în considerare:** LibreTranslate (auto-găzduit, local prioritar), traducere LLM local sau documentație explicită în afara domeniului.
222
+
223
+ **Status:** Amânat în așteptarea deciziei de proiectare privind local prioritar vs dependența API.
224
+
159
225
  ### 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.
226
+ Pipeline de post-procesare:
227
+ - Eliminarea cuvintelor de umplutură și a pornirilor false (opțional, controlat de utilizator)
228
+ - Pauze de paragraf la granițele naturale ale subiectelor
229
+ - Formatare conștientă de vorbitor combinată cu ieșire diarizare
230
+ - Export în PDF sau DOCX
231
+
232
+ **Status:** Planificat. Varianta conștientă de vorbitor depinde de diarizare.
233
+
234
+ ---
235
+
236
+ ## Licențiere
237
+
238
+ whisper-windows-mcp folosește licențiere duală.
239
+
240
+ **Utilizare non-comercială:** MIT — gratuit pentru uz personal, educațional și non-comercial. Vezi [LICENSE](LICENSE).
241
+
242
+ **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
243
 
162
244
  ---
163
245
 
164
246
  ## Distribuție
165
247
 
166
- Disponibil pe [npm](https://www.npmjs.com/package/whisper-windows-mcp), [mcpservers.org](https://mcpservers.org) și [Glama](https://glama.ai).
248
+ 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
249
 
168
250
  ---
169
251
 
170
252
  ## Documentație multilingvă
171
253
 
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:
254
+ După fiecare versiune, următoarele fișiere trebuie actualizate pentru a corespunde documentelor în engleză:
173
255
 
174
256
  **Japoneză (`*.ja.md`)** — `README.ja.md` / `TROUBLESHOOTING.ja.md` / `ROADMAP.ja.md` / `PRIVACY.ja.md` / `SECURITY.ja.md`
175
257