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.uk.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # whisper-windows-mcp — Дорожня карта
2
2
 
3
- Поточна версія: **v2.2.0**
3
+ Поточна версія: **v2.3.0**
4
4
 
5
5
  ---
6
6
 
@@ -54,104 +54,71 @@
54
54
  ### ✅ v2.0.0 — Unicode-безпечні шляхи + Фоновий SRT
55
55
  **Імена файлів Unicode:** Файли з не-ASCII символами в іменах спричиняли тихе невдале виконання фонової транскрипції. Виправлено шляхом спрямування всього виводу через санований тимчасовий шлях на основі ID завдання, а потім переміщення результату до правильного призначення після завершення.
56
56
 
57
- **SRT у фоновому режимі:** `spawnDetached` раніше жорстко кодував `-otxt` незалежно від запитаного формату, а `generate_subtitles` синхронно блокував і досягав 4-хвилинного тайм-ауту MCP на довших файлах. Виправлено додаванням параметра `outputFormat` до `spawnDetached`, що підтримує вивід `text` і `srt` у фоновому режимі.
57
+ **SRT у фоновому режимі:** `spawnDetached` раніше жорстко кодував `-otxt` незалежно від запитаного формату. Виправлено додаванням параметра `outputFormat` до `spawnDetached`, що підтримує вивід `text` і `srt` у фоновому режимі.
58
58
 
59
59
  ### ✅ v2.0.1 — Виправлення помилок (включено у v2.2.0)
60
- - `--max-context 0` жорстко закодовано в `buildArgs` і `spawnDetached` — запобігає циклам галюцинацій на довгих аудіозаписах. `--condition-on-previous-text` і `--no-context` — недійсні прапорці в поточному бінарнику (покоління v1.8.3) — `--max-context N` є правильним прапорцем.
60
+ - `--max-context 0` жорстко закодовано в `buildArgs` і `spawnDetached` — запобігає циклам галюцинацій на довгих аудіозаписах.
61
61
  - `--no-speech-thold 0.6` жорстко закодовано в обох функціях — сегменти нижче порогу впевненості обробляються як тиша, а не як галюцинований вміст.
62
62
  - Перевірка шляху (`validateInputPath`) — відхиляє UNC-шляхи і обходи `..`.
63
63
  - Захист розміру файлу `MAX_FILE_SIZE_MB = 10240`.
64
64
  - Коментар безпеки ін'єкції транскрипції у `transcribeSingle`.
65
- - Виправлено зламану команду CLI-пакету у TROUBLESHOOTING.md — задокументовано правильний підхід до попереднього конвертування FFmpeg і метод `Start-Process -RedirectStandardOutput`.
65
+ - Виправлено зламану команду CLI-пакету у TROUBLESHOOTING.md.
66
66
 
67
67
  ### ✅ v2.1.0 — Набір інструментів управління моделями (включено у v2.2.0)
68
68
  - `WHISPER_MODEL` змінено з `const` на `let` (змінюється в межах сеансу).
69
69
  - `MODEL_REGISTRY` — 16 моделей, варіанти повної точності та квантизовані, URL завантаження Hugging Face.
70
70
  - `ALLOWED_HF_PREFIXES` — список дозволених URL, що обмежує завантаження просторами імен `ggerganov/whisper.cpp` і `ggml-org`.
71
71
  - Інструмент `list_models` — сканує теку моделей, показує активну модель, розміри, випадки використання, доступні завантаження.
72
- - Інструмент `download_model` — завантажує з Hugging Face через вбудований `https` Node.js, атомарне перейменування (виправлення стану гонки звільнення файлового дескриптора Windows).
72
+ - Інструмент `download_model` — завантажує з Hugging Face через вбудований `https` Node.js, атомарне перейменування.
73
73
  - Інструмент `switch_model` — перевіряє розширення `.bin`, обмеження теки, перевірку блокування процесу.
74
74
  - `recommendedModel()` оновлено для рекомендації `large-v3-turbo` при VRAM 6 ГБ+.
75
75
 
76
- ### ✅ v2.2.0 — Розширення якості, параметрів і апаратного забезпечення (поточна)
76
+ ### ✅ v2.2.0 — Розширення якості, параметрів і апаратного забезпечення
77
77
  - Інтерфейс `WhisperOptions` замінює позиційні аргументи в `buildArgs`.
78
78
  - Нові параметри у `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
  - Нові параметри у `generate_subtitles`: `temperature`, `prompt`, `beam_size`, `best_of`, `diarize`, `vad_model`.
80
80
  - Рефакторинг `spawnDetached` — усі прапорці якості тепер застосовуються у фоновому/пакетному режимі.
81
- - `runSrtPass` оновлено для прийняття `extraOpts`.
82
- - Виправлення виводу пакету — `readBatchProgress` тепер переміщає тимчасовий вивід до кінцевого призначення перед перевіркою (це була корінна причина всіх результатів "помилка" у пакеті).
81
+ - Виправлення виводу пакету — `readBatchProgress` тепер переміщає тимчасовий вивід до кінцевого призначення перед перевіркою.
83
82
 
84
- **Примітка щодо сумісності прапорців:** `gpu_device` / `-g` додано у whisper.cpp v1.8.4. Готовий Vulkan-бінарник у релізах є покоління v1.8.3 — цей параметр приймається інструментом, але не матиме ефекту, доки користувачі не оновляться до бінарника v1.8.4+.
83
+ **Примітка щодо сумісності прапорців:** `gpu_device` / `--device` додано у whisper.cpp v1.8.4. Готовий Vulkan-бінарник у релізах є покоління v1.8.3 — цей параметр приймається інструментом, але не матиме ефекту, доки користувачі не оновляться до бінарника v1.8.4+.
85
84
 
86
- **Підтверджені дійсні прапорці у поточному бінарнику (покоління v1.8.3):**
87
- `--max-context`, `--no-speech-thold`, `--processors`, `--offset-t`, `--duration`, `--best-of`, `--beam-size`, `--diarize`, `--tinydiarize`, `--temperature`, `--prompt`, VAD-прапорці.
85
+ ### ✅ v2.2.2 — Патч
86
+ - Виправлення подвійної ліцензії — LICENSE і LICENSE-COMMERCIAL.md виправлено.
87
+ - Незначні виправлення документації.
88
88
 
89
- **Відсутні у поточному бінарнику:** `--no-context` (використовуйте `--max-context 0`), `--condition-on-previous-text` (лише назва Python API), `--gpu-device` / `-g` (v1.8.4+).
89
+ ### ✅ v2.3.0 — Автопросування пакету, архітектура конфіденційності, розширення форматів виводу
90
90
 
91
- ---
92
-
93
- ## Критична помилка — Автоматичне просування пакету (підтверджено, очікує виправлення)
94
-
95
- ### Пакет не просувається без активного опитування
96
-
97
- `start_batch` не просуває чергу автономно між файлами. Пакет просувається лише при виклику `check_batch_progress`. Без опитування пакет зависає на невизначений час після кожного файлу — whisper-cli.exe завершується, новий процес не запускається, черга не просувається.
98
-
99
- Це підриває мету дизайну автономної нічної пакетної обробки і безпосередньо порушує принцип мінімізації викликів Claude API. Пакет з 95 коротких кліпів вимагав близько 200 викликів опитування протягом 100 хвилин для завершення.
100
-
101
- **Корінна причина:** `readBatchProgress` містить всю логіку просування черги. Він виконується лише при явному виклику `check_batch_progress`. Немає фонового таймера, спостерігача файлів або автономного циклу.
102
-
103
- **Заплановане виправлення — Варіант Б (зворотній виклик виходу, наполегливо рекомендовано):** Прикріпити обробник `on('exit')` до породженого дочірнього процесу whisper-cli. Коли процес завершується, негайно викликати логіку просування для перевірки виводу і запуску наступного завдання. Подієво-орієнтований, спрацьовує рівно один раз при завершенні кожного файлу, нульові витрати на опитування, нуль спожитих викликів API.
104
-
105
- **Варіант А (лише резервний):** Фоновий `setInterval` з інтервалом опитування на основі тривалості, виведеним з даних тривалості FFprobe, вже наявних у JSON стану пакету. Розмір файлу не є надійним замінником тривалості.
106
-
107
- **Додаткове обмеження:** Виправлення не повинно породжувати другий whisper-cli.exe, поки один вже виконується — блокування процесу має дотримуватися в шляху автопросування.
108
-
109
- **Обхідне рішення (поточне):** Повторно викликайте `check_batch_progress` до завершення пакету. Приблизно один виклик опитування на файл.
110
-
111
- ---
112
-
113
- ## Заплановано — Архітектура конфіденційності (до міграції на Bun)
114
-
115
- Ці зміни мають бути випущені до міграції на Bun і до будь-яких змін ліцензії, що сприяють комерційному або корпоративному прийняттю. Випуск інструментів корпоративного рівня без вирішених засобів захисту відповідності створює відповідальність для користувачів у регульованих галузях.
116
-
117
- ### Змінна середовища `WHISPER_PRIVACY_MODE`
118
- Інструмент наразі гарантує, що жодне **аудіо** не покидає комп'ютер. Ця гарантія не поширюється на **текст транскрипції** — коли вміст транскрипції повертається в рядку у відповіді інструменту, цей текст опрацьовується API Claude і покидає локальне середовище.
119
-
120
- Цей розрив невидимий для користувачів, які розумно тлумачать "дані не покидають ваш комп'ютер" як таке, що охоплює весь контент, отриманий з їхнього аудіо.
121
-
122
- Додати `WHISPER_PRIVACY_MODE` як змінну середовища у `claude_desktop_config.json`. При увімкненні:
123
- - Усі відповіді інструментів повертають лише метадані: ім'я файлу, тривалість, кількість слів, статус завершення
124
- - Жоден текст транскрипції не включається до жодної відповіді інструменту
125
- - Claude не може читати, аналізувати або передавати вміст транскрипції в жодній формі
126
- - Транскрипція існує лише як локальний `.txt`-файл
127
-
128
- Це правильне рішення для медичних, юридичних, фінансових і корпоративних розгортань. Нуль викликів API, нуль передачі даних, нуль ризику відповідності.
91
+ **Автопросування пакету (критичне виправлення помилки):** `start_batch` раніше вимагав активного опитування для просування черги. Тепер до кожного породженого дочірнього процесу whisper-cli прикріплено обробник `on('exit')`. Коли процес завершується, пакет самостійно просувається через зворотній виклик виходу з нульовими витратами на опитування і нульовим споживанням API. М'ютекс запобігає подвійному запуску між паралельним обробником виходу і викликами `check_batch_progress`.
129
92
 
130
- ### Ворота згоди для вмісту транскрипції
131
- Коли `WHISPER_PRIVACY_MODE` не увімкнено (типово), будь-яка відповідь інструменту, що містить текст транскрипції, має передуватися повідомленням про розкриття інформації при першому використанні за сеанс. Це повідомлення має чітко передати, що текст транскрипції передається до API Anthropic, що це виходить за межі гарантії "дані не покидають ваш комп'ютер", і що користувачі, які працюють з регульованим контентом, мають перевірити зобов'язання відповідності перед продовженням.
93
+ **Архітектура конфіденційності:**
94
+ - Змінна середовища `WHISPER_PRIVACY_MODE` — при значенні `true` всі відповіді інструментів повертають лише метадані (ім'я файлу, кількість слів, шлях збереження). Жоден текст транскрипції не передається API Claude за жодних обставин. Транскрипції існують лише як локальні файли.
95
+ - Змінна середовища `WHISPER_CONSENT_ACKNOWLEDGED` — при значенні `true` пригнічує одноразові ворота згоди сеансу для нечутливого контенту.
96
+ - Параметр `privacy_mode` для окремого виклику у `transcribe_audio`, `transcribe_batch`, `start_batch` і `check_progress`. Перевизначає глобальну змінну середовища в обох напрямках. Перезапуск не потрібен для перемикання для окремого виклику.
97
+ - Ворота режиму конфіденційності (`checkPrivacyGate()`) — спрацьовують перед кожною операцією, коли ефективний режим конфіденційності активний.
98
+ - Ворота згоди сеансу (`transcriptPolicy()`) — спрацьовують один раз за сеанс перед першим викликом, що повертає транскрипцію, у стандартному режимі.
99
+ - `PRIVACY.md` — повна документація відповідності, що охоплює HIPAA, GDPR, адвокатську таємницю, FERPA, SOX, PCI-DSS і NDA/комерційну таємницю.
132
100
 
133
- Реалізація: змінна середовища `WHISPER_CONSENT_ACKNOWLEDGED` за замовчуванням `false`. При першому поверненні транскрипції за сеанс, якщо не підтверджено, Claude представляє повідомлення про розкриття і просить явного підтвердження. Після підтвердження для сеансу наступні транскрипції повертаються без повторного запиту.
101
+ **Розширення форматів виводу:**
102
+ - `vtt` — вивід WebVTT через `-ovtt`. Доступний у `transcribe_audio`, `generate_subtitles`, `start_batch` і фоновому режимі.
103
+ - `lrc` — формат LRC текстів/караоке через `-olrc`. Доступний у `transcribe_audio` і фоновому режимі.
104
+ - `csv` — CSV з мітками часу через `-ocsv`. Доступний у `transcribe_audio` і фоновому режимі.
105
+ - Типовий `output_format` змінено з `"text"` на `"timestamps"` у всіх інструментах і шляхах коду.
134
106
 
135
- ### Документація `PRIVACY.md`
136
- Створити `PRIVACY.md` у кореневій теці репозиторію:
137
- - Які дані завжди залишаються локально: аудіо, відео, файли моделей
138
- - Які дані можуть покидати локальне середовище (за замовчуванням): текст транскрипції у відповідях інструментів
139
- - Які дані ніколи не покидають локальне середовище (з режимом конфіденційності): все
140
- - Настанови щодо відповідності за галуззю (HIPAA, GDPR, адвокатська таємниця, FERPA, SOX, PCI-DSS, NDA/комерційна таємниця)
141
- - Як налаштувати режим конфіденційності
142
- - Відмова від відповідальності: автори інструменту не є юридичними радниками
107
+ **Виправлення помилок:**
108
+ - Помилка 1: `output_format` не передавався фоновим завданням — використовувався типовий `"text"` незалежно від запитаного формату. Виправлено зміною типового значення на `"timestamps"` і правильним пересиланням.
109
+ - Помилка 2: Тихий `catch {}` у операції переміщення виводу фонового завдання приховував збої. Додано явну перевірку `existsSync` з детальним повідомленням про збій після переміщення.
110
+ - Помилка 3: Додано коментар про дизайн у точці фонового запуску, що документує, чому ворота згоди навмисно відкладаються до `check_progress` для не-конфіденційних фонових завдань.
143
111
 
144
- ### Попередження конфіденційності у схемі інструментів
145
- Оновити описи інструментів `ListToolsRequestSchema`, включивши примітку про конфіденційність для будь-якого інструменту, що повертає текст транскрипції. Це відображається в описах інструментів Claude Desktop і підвищує обізнаність у точці використання.
146
-
147
- ### Автоматичне очищення тимчасової теки
148
- `%TEMP%\whisper-mcp-jobs\` накопичує файли стану завдань і журнали з часом. Додати автоматичне очищення завершених файлів завдань після налаштованого вікна збереження (типово: 7 днів). Наразі вимагає ручного `Remove-Item` від користувача.
112
+ **Додатково:**
113
+ - Автоматичне очищення тимчасової теки — `cleanupOldJobFiles()` запускається при старті, видаляє файли `.json` і `.log` старші 7 днів з `%TEMP%\whisper-mcp-jobs\`.
114
+ - `check_config` тепер повідомляє статус режиму конфіденційності.
115
+ - Журнал запуску повідомляє про увімкнення/вимкнення режиму конфіденційності.
149
116
 
150
117
  ---
151
118
 
152
- ## Заплановано — Міграція на Bun
119
+ ## Заплановано — v2.4.0: Міграція на Bun
153
120
 
154
- Перенести середовище виконання з Node.js на [Bun](https://bun.sh) після завершення архітектури конфіденційності і до додавання функцій v2.3.0.
121
+ Перенести середовище виконання з Node.js на [Bun](https://bun.sh).
155
122
 
156
123
  Оскільки Claude Desktop запускає MCP-сервер заново при кожному запуску сеансу, час запуску знаходиться на критичному шляху. Bun виконує TypeScript нативно без кроку компіляції, запускається значно швидше за Node і має швидший введення-виведення.
157
124
 
@@ -167,30 +134,25 @@
167
134
  - Уся поведінка інструментів і формати виводу
168
135
  - Конфігурація Claude Desktop для кінцевих користувачів
169
136
 
170
- **Чому після конфіденційності, до v2.3.0:** Кодова база найлегше піддається міграції зараз. Міграція після додавання більшої кількості інструментів лише збільшує поверхню без вигоди. Архітектура конфіденційності має бути реалізована першою, як зазначено вище.
171
-
172
137
  ---
173
138
 
174
- ## Ліцензування
139
+ ## Заплановано — v2.5.0: Розширені формати виводу для інтеграції зовнішніх інструментів
175
140
 
176
- whisper-windows-mcp використовує подвійну ліцензію.
141
+ Розширена підтримка форматів виводу, орієнтована на робочі процеси аналізу нижнього рівня та інтеграції. Точний обсяг буде визначено на основі відгуків користувачів після v2.3.0.
177
142
 
178
- **Некомерційне використання:** MIT — безкоштовно для особистого, освітнього та некомерційного використання. Дивіться [LICENSE](LICENSE).
179
-
180
- **Комерційне використання:** Необхідна окрема комерційна ліцензійна угода. Дивіться [LICENSE-COMMERCIAL.md](LICENSE-COMMERCIAL.md).
181
-
182
- `WHISPER_PRIVACY_MODE` для регульованих галузей розробляється і планується у майбутньому релізі. Дивіться [PRIVACY.md](PRIVACY.md) для поточних рекомендацій.
143
+ ---
183
144
 
184
- ## Заплановано — v2.3.0: Розширення форматів виводу
145
+ ## Заплановано — v2.6.0: Режим живого транскрибування з мікрофона
185
146
 
186
- ### Формат субтитрів VTT
187
- Вивід WebVTT (`.vtt`) разом з SRT. VTT — веб-стандарт, що використовується YouTube, HTML5 `<video>` і більшістю сучасних програвачів. whisper-cli підтримує його нативно. Додати `vtt` як дійсний формат виводу у `transcribe_audio`, `generate_subtitles` і `spawnDetached`. Оновити `buildArgs` і всі відповідні схеми інструментів, README і багатомовну документацію.
147
+ Транскрибування в реальному часі з живого мікрофонного входу. Потокова передача аудіо з вибраного пристрою запису до whisper частинами із поверненням поточних сегментів транскрипції по мірі їх завершення.
188
148
 
189
- ### Формат LRC
190
- Вивід у форматі LRC (`.lrc`) текстів пісень/караоке через `-olrc`. Використовується медіапрогравачами для синхронізованого відображення текстів. Нульові витрати на реалізацію — рідний прапорець CLI.
149
+ **Обмеження проєктування:**
150
+ - Вибір пристрою має бути явним — без тихого захоплення пристрою за замовчуванням
151
+ - Користувач має мати можливість зупинити потік через взаємодію з Claude Desktop
152
+ - Не повинно конфліктувати з обмеженням одного екземпляра whisper одночасно
153
+ - Компроміс між затримкою і точністю має бути налаштовуваним користувачем
191
154
 
192
- ### Формат CSV
193
- Вивід CSV (`.csv`) через `-ocsv`. Структуровані табличні дані з часовою розміткою сегментів — корисні для аналізу нижнього рівня, робочих процесів вирівнювання кліпів та імпорту в табличні інструменти. Нульові витрати на реалізацію — рідний прапорець CLI.
155
+ **Статус:** Фаза проєктування. Залежить від стабільного потокового API у whisper.cpp.
194
156
 
195
157
  ---
196
158
 
@@ -225,7 +187,7 @@ whisper-windows-mcp використовує подвійну ліцензію.
225
187
  ### Розрізнення доповідачів (pyannote-audio)
226
188
  Повне розрізнення доповідачів у моно з мітками ID доповідача — позначає переходи між доповідачами по всьому запису незалежно від конфігурації каналів. Відрізняється від вбудованого стерео-прапорця `--diarize` (v2.2.0) і TinyDiarize.
227
189
 
228
- **Реалізація:** Потребує [pyannote-audio](https://github.com/pyannote/pyannote-audio) — бібліотеки на основі Python з вимогою токена доступу до моделей Hugging Face. Повністю окремий стек залежностей від конвеєра whisper.cpp.
190
+ **Реалізація:** Потребує [pyannote-audio](https://github.com/pyannote/pyannote-audio) — бібліотеки на основі Python з вимогою токена доступу до моделей Hugging Face. Повністю окремий стек залежностей.
229
191
 
230
192
  **Статус:** Необов'язкова розширена функція з власною документацією з налаштування. Не входить до основного пакету.
231
193
 
@@ -247,27 +209,33 @@ whisper-windows-mcp використовує подвійну ліцензію.
247
209
 
248
210
  ---
249
211
 
212
+ ## Ліцензування
213
+
214
+ whisper-windows-mcp використовує подвійну ліцензію.
215
+
216
+ **Некомерційне використання:** MIT — безкоштовно для особистого, освітнього та некомерційного використання. Дивіться [LICENSE](LICENSE).
217
+
218
+ **Комерційне використання:** Необхідна окрема комерційна ліцензійна угода для будь-якого бізнес-, професійного або комерційного використання. Дивіться [COMMERCIAL-LICENSE.md](COMMERCIAL-LICENSE.md) для умов та контактної інформації.
219
+
220
+ ---
221
+
250
222
  ## Поширення
251
223
 
252
- Доступно на [npm](https://www.npmjs.com/package/whisper-windows-mcp), [mcpservers.org](https://mcpservers.org) і [Glama](https://glama.ai).
224
+ Доступно на [npm](https://www.npmjs.com/package/whisper-windows-mcp), [mcpservers.org](https://mcpservers.org), [Glama](https://glama.ai) і [awesome-mcp-servers](https://github.com/punkpeye/awesome-mcp-servers).
253
225
 
254
226
  ---
255
227
 
256
228
  ## Багатомовна документація
257
229
 
258
- Документація японською, корейською, в'єтнамською, індонезійською та українською мовами підтримується паралельно з англійською. Після кожного релізу необхідно оновлювати такі файли відповідно до англійської документації:
230
+ Після кожного релізу необхідно оновлювати такі файли відповідно до англійської документації:
259
231
 
260
- **Японська (`*.ja.md`)**
261
- - `README.ja.md` / `TROUBLESHOOTING.ja.md` / `ROADMAP.ja.md` / `PRIVACY.ja.md` / `SECURITY.ja.md`
232
+ **Японська (`*.ja.md`)** — `README.ja.md` / `TROUBLESHOOTING.ja.md` / `ROADMAP.ja.md` / `PRIVACY.ja.md` / `SECURITY.ja.md`
262
233
 
263
- **Корейська (`*.ko.md`)**
264
- - `README.ko.md` / `TROUBLESHOOTING.ko.md` / `ROADMAP.ko.md` / `PRIVACY.ko.md` / `SECURITY.ko.md`
234
+ **Корейська (`*.ko.md`)** — `README.ko.md` / `TROUBLESHOOTING.ko.md` / `ROADMAP.ko.md` / `PRIVACY.ko.md` / `SECURITY.ko.md`
265
235
 
266
- **В'єтнамська (`*.vi.md`)**
267
- - `README.vi.md` / `TROUBLESHOOTING.vi.md` / `ROADMAP.vi.md` / `PRIVACY.vi.md` / `SECURITY.vi.md`
236
+ **В'єтнамська (`*.vi.md`)** — `README.vi.md` / `TROUBLESHOOTING.vi.md` / `ROADMAP.vi.md` / `PRIVACY.vi.md` / `SECURITY.vi.md`
268
237
 
269
- **Індонезійська (`*.id.md`)**
270
- - `README.id.md` / `TROUBLESHOOTING.id.md` / `ROADMAP.id.md` / `PRIVACY.id.md` / `SECURITY.id.md`
238
+ **Індонезійська (`*.id.md`)** — `README.id.md` / `TROUBLESHOOTING.id.md` / `ROADMAP.id.md` / `PRIVACY.id.md` / `SECURITY.id.md`
271
239
 
272
240
  **Українська (`*.uk.md`)** — `README.uk.md` / `TROUBLESHOOTING.uk.md` / `ROADMAP.uk.md` / `PRIVACY.uk.md` / `SECURITY.uk.md`
273
241
 
@@ -275,9 +243,9 @@ whisper-windows-mcp використовує подвійну ліцензію.
275
243
 
276
244
  **Іспанська (`*.es.md`)** — `README.es.md` / `TROUBLESHOOTING.es.md` / `ROADMAP.es.md` / `PRIVACY.es.md` / `SECURITY.es.md`
277
245
 
278
- **Polish (`*.pl.md`)** — `README.pl.md` / `TROUBLESHOOTING.pl.md` / `ROADMAP.pl.md` / `PRIVACY.pl.md` / `SECURITY.pl.md`
246
+ **Польська (`*.pl.md`)** — `README.pl.md` / `TROUBLESHOOTING.pl.md` / `ROADMAP.pl.md` / `PRIVACY.pl.md` / `SECURITY.pl.md`
279
247
 
280
- **Romanian (`*.ro.md`)** — `README.ro.md` / `TROUBLESHOOTING.ro.md` / `ROADMAP.ro.md` / `PRIVACY.ro.md` / `SECURITY.ro.md`
248
+ **Румунська (`*.ro.md`)** — `README.ro.md` / `TROUBLESHOOTING.ro.md` / `ROADMAP.ro.md` / `PRIVACY.ro.md` / `SECURITY.ro.md`
281
249
 
282
250
  Внески спільноти для інших мов вітаються.
283
251
 
package/ROADMAP.vi.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # whisper-windows-mcp — Lộ trình phát triển
2
2
 
3
- Phiên bản hiện tại: **v2.2.0**
3
+ Phiên bản hiện tại: **v2.3.0**
4
4
 
5
5
  ---
6
6
 
@@ -54,143 +54,109 @@ Kiến trúc tiến trình tách rời: `transcribe_audio` với `background=tru
54
54
  ### ✅ v2.0.0 — Đường dẫn an toàn Unicode + SRT nền
55
55
  **Tên tệp Unicode:** Tệp có ký tự không phải ASCII trong tên tệp gây ra phiên âm nền thất bại lặng lẽ. Đã sửa bằng cách định tuyến tất cả đầu ra qua đường dẫn tạm thời đã làm sạch dựa trên ID tác vụ, sau đó di chuyển kết quả đến đích chính xác sau khi hoàn thành.
56
56
 
57
- **SRT trong chế độ nền:** `spawnDetached` trước đây mã cứng `-otxt` bất kể định dạng được yêu cầu, và `generate_subtitles` chặn đồng bộ và bị timeout MCP 4 phút với tệp dài hơn. Đã sửa bằng cách thêm tham số `outputFormat` vào `spawnDetached`, hỗ trợ đầu ra `text` và `srt` trong chế độ nền.
57
+ **SRT trong chế độ nền:** `spawnDetached` trước đây mã cứng `-otxt` bất kể định dạng được yêu cầu. Đã sửa bằng cách thêm tham số `outputFormat` vào `spawnDetached`, hỗ trợ đầu ra `text` và `srt` trong chế độ nền.
58
58
 
59
59
  ### ✅ v2.0.1 — Sửa lỗi (đã gộp vào v2.2.0)
60
- - Mã cứng `--max-context 0` trong cả `buildArgs` và `spawnDetached` — ngăn vòng lặp ảo giác trên âm thanh dài. `--condition-on-previous-text` và `--no-context` không phải flag hợp lệ trong tệp nhị phân hiện tại (thế hệ v1.8.3) — `--max-context N` là flag đúng.
60
+ - Mã cứng `--max-context 0` trong cả `buildArgs` và `spawnDetached` — ngăn vòng lặp ảo giác trên âm thanh dài.
61
61
  - Mã cứng `--no-speech-thold 0.6` trong cả hai hàm — xử lý các đoạn dưới ngưỡng tin cậy là im lặng thay vì nội dung ảo giác.
62
62
  - Xác thực đường dẫn (`validateInputPath`) — từ chối đường dẫn UNC và duyệt `..`.
63
63
  - Bảo vệ kích thước tệp `MAX_FILE_SIZE_MB = 10240`.
64
64
  - Chú thích bảo mật tiêm nhiễm phiên âm trong `transcribeSingle`.
65
- - Sửa lệnh CLI batch bị hỏng trong TROUBLESHOOTING.md — ghi lại phương pháp chuyển đổi FFmpeg đúng và cách dùng `Start-Process -RedirectStandardOutput`.
65
+ - Sửa lệnh CLI batch bị hỏng trong TROUBLESHOOTING.md.
66
66
 
67
67
  ### ✅ v2.1.0 — Bộ quản lý mô hình (đã gộp vào v2.2.0)
68
68
  - Thay đổi `WHISPER_MODEL` từ `const` sang `let` (có thể thay đổi trong phiên).
69
69
  - `MODEL_REGISTRY` — 16 mô hình, biến thể độ chính xác đầy đủ và lượng tử hóa, URL tải xuống Hugging Face.
70
70
  - `ALLOWED_HF_PREFIXES` — danh sách URL cho phép giới hạn tải xuống vào namespace `ggerganov/whisper.cpp` và `ggml-org`.
71
71
  - Công cụ `list_models` — quét thư mục mô hình, hiển thị mô hình đang hoạt động, kích thước, trường hợp sử dụng, các tải xuống có sẵn.
72
- - Công cụ `download_model` — tải xuống từ Hugging Face qua `https` tích hợp sẵn của Node.js, đổi tên nguyên tử (sửa race condition giải phóng file handle Windows).
72
+ - Công cụ `download_model` — tải xuống từ Hugging Face qua `https` tích hợp sẵn của Node.js, đổi tên nguyên tử.
73
73
  - Công cụ `switch_model` — xác thực phần mở rộng `.bin`, ràng buộc thư mục, kiểm tra khóa tiến trình.
74
74
  - Cập nhật `recommendedModel()` để đề xuất `large-v3-turbo` cho VRAM 6GB+.
75
75
 
76
- ### ✅ v2.2.0 — Mở rộng chất lượng, tham số và phần cứng (hiện tại)
76
+ ### ✅ v2.2.0 — Mở rộng chất lượng, tham số và phần cứng
77
77
  - Interface `WhisperOptions` thay thế đối số vị trí trong `buildArgs`.
78
78
  - Tham số mới trong `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
  - Tham số mới trong `generate_subtitles`: `temperature`, `prompt`, `beam_size`, `best_of`, `diarize`, `vad_model`.
80
80
  - Tái cấu trúc `spawnDetached` — tất cả flag chất lượng giờ được áp dụng trong chế độ nền/đợt.
81
- - Cập nhật `runSrtPass` để chấp nhận `extraOpts`.
82
- - Sửa đầu ra đợt — `readBatchProgress` giờ di chuyển đầu ra tạm thời đến đích cuối cùng trước khi xác nhận (nguyên nhân gốc của tất cả kết quả "thất bại" trong đợt).
83
-
84
- **Lưu ý tương thích flag:** `gpu_device` / `-g` được thêm trong whisper.cpp v1.8.4. Tệp nhị phân Vulkan đã biên dịch sẵn trong các bản phát hành là thế hệ v1.8.3 — tham số này được công cụ chấp nhận nhưng sẽ không có hiệu lực cho đến khi người dùng cập nhật lên tệp nhị phân v1.8.4+.
85
-
86
- **Flag hợp lệ đã xác nhận trong tệp nhị phân hiện tại (thế hệ v1.8.3):**
87
- `--max-context`, `--no-speech-thold`, `--processors`, `--offset-t`, `--duration`, `--best-of`, `--beam-size`, `--diarize`, `--tinydiarize`, `--temperature`, `--prompt`, flag VAD.
88
-
89
- **Không có trong tệp nhị phân hiện tại:** `--no-context` (dùng `--max-context 0`), `--condition-on-previous-text` (chỉ là tên Python API), `--gpu-device` / `-g` (v1.8.4+).
90
-
91
- ---
92
-
93
- ## Lỗi nghiêm trọng — Tự động tiến đợt (đã xác nhận, chờ sửa)
94
-
95
- ### Đợt không tự động tiến khi không có polling tích cực
96
-
97
- `start_batch` không tự chủ tiến queue giữa các tệp. Đợt chỉ tiến khi `check_batch_progress` được gọi. Không có polling, đợt dừng vô thời hạn sau mỗi tệp — whisper-cli.exe thoát, không có tiến trình mới được tạo, queue không tiến.
98
-
99
- Điều này phá vỡ mục tiêu thiết kế cốt lõi là xử lý hàng loạt qua đêm không giám sát, và trực tiếp vi phạm nguyên tắc thiết kế giảm thiểu lệnh gọi Claude API. Một đợt 95 tệp clip ngắn yêu cầu khoảng 200 lệnh gọi polling trong 100 phút để hoàn thành.
100
-
101
- **Nguyên nhân gốc:** `readBatchProgress` chứa tất cả logic tiến queue. Nó chỉ thực thi khi `check_batch_progress` được gọi rõ ràng. Không có bộ đếm thời gian nền, trình theo dõi tệp hay vòng lặp tự chủ.
102
-
103
- **Sửa đã lên kế hoạch — Tùy chọn B (exit callback, mạnh mẽ khuyến nghị):** Gắn handler `on('exit')` vào tiến trình con whisper-cli đã tạo. Khi tiến trình thoát, ngay lập tức gọi logic tiến để xác nhận đầu ra và tạo tác vụ tiếp theo. Dựa trên sự kiện, kích hoạt chính xác một lần mỗi lần hoàn thành tệp, không tốn chi phí polling và API.
104
-
105
- **Tùy chọn A (chỉ dự phòng):** `setInterval` nền với khoảng polling dựa trên thời lượng được suy ra từ dữ liệu thời lượng FFprobe đã có trong JSON trạng thái đợt. Kích thước tệp không phải là đại diện đáng tin cậy cho thời lượng.
106
-
107
- **Ràng buộc bổ sung:** Bản sửa không được tạo whisper-cli.exe thứ hai khi đã có một tiến trình đang chạy — khóa tiến trình phải được tôn trọng trong đường dẫn tự động tiến.
108
-
109
- **Giải pháp tạm thời (hiện tại):** Gọi `check_batch_progress` lặp lại cho đến khi đợt hoàn thành. Cần khoảng một lần polling mỗi tệp.
110
-
111
- ---
112
-
113
- ## Đã lên kế hoạch — Kiến trúc quyền riêng tư (trước khi chuyển đổi Bun)
114
-
115
- Những thay đổi này phải được phát hành trước khi chuyển đổi Bun và trước bất kỳ thay đổi giấy phép nào tạo điều kiện cho việc áp dụng thương mại hoặc doanh nghiệp. Phát hành công cụ cấp doanh nghiệp mà không có các biện pháp bảo vệ tuân thủ đã được giải quyết tạo ra trách nhiệm pháp lý cho người dùng trong các ngành được quản lý.
116
-
117
- ### Biến môi trường `WHISPER_PRIVACY_MODE`
118
- Công cụ hiện đảm bảo không có **âm thanh** nào rời khỏi máy. Nó không mở rộng đảm bảo này cho **văn bản phiên âm** — khi nội dung phiên âm được trả về trong phản hồi công cụ, văn bản đó được xử lý bởi API của Claude và rời khỏi môi trường cục bộ.
119
-
120
- Khoảng cách này vô hình với người dùng hợp lý hiểu "không có dữ liệu nào rời khỏi máy" bao gồm tất cả nội dung được tạo ra từ âm thanh của họ.
121
-
122
- Thêm `WHISPER_PRIVACY_MODE` như biến môi trường trong `claude_desktop_config.json`. Khi được bật:
123
- - Tất cả phản hồi công cụ chỉ trả về siêu dữ liệu: tên tệp, thời lượng, số từ, trạng thái hoàn thành
124
- - Không có văn bản phiên âm nào được bao gồm trong bất kỳ phản hồi công cụ nào
125
- - Claude không thể đọc, phân tích hoặc chuyển tiếp nội dung phiên âm dưới bất kỳ hình thức nào
126
- - Bản phiên âm chỉ tồn tại dưới dạng tệp `.txt` cục bộ
127
-
128
- Đây là giải pháp đúng cho triển khai y tế, pháp lý, tài chính và doanh nghiệp. Không lệnh gọi API, không truyền dữ liệu, không rủi ro tuân thủ.
129
-
130
- ### Cổng đồng ý cho nội dung phiên âm
131
- Khi `WHISPER_PRIVACY_MODE` không được bật (mặc định), bất kỳ phản hồi công cụ nào bao gồm văn bản phiên âm phải có thông báo tiết lộ ở lần sử dụng đầu tiên trong mỗi phiên. Thông báo tiết lộ phải truyền đạt rõ ràng rằng văn bản phiên âm được truyền đến API của Anthropic, rằng điều này nằm ngoài đảm bảo "không có dữ liệu nào rời khỏi máy", và rằng người dùng xử lý nội dung được quản lý phải xác nhận nghĩa vụ tuân thủ trước khi tiếp tục.
132
-
133
- Triển khai: biến môi trường `WHISPER_CONSENT_ACKNOWLEDGED` mặc định là `false`. Ở lần trả về phiên âm đầu tiên trong phiên, nếu chưa được xác nhận, Claude trình bày thông báo tiết lộ và yêu cầu xác nhận rõ ràng. Sau khi được xác nhận trong phiên, các bản phiên âm tiếp theo được trả về mà không cần nhắc lại.
134
-
135
- ### Tài liệu `PRIVACY.md`
136
- Tạo `PRIVACY.md` trong thư mục gốc repo bao gồm:
137
- - Dữ liệu luôn ở cục bộ: tệp âm thanh, video, mô hình
138
- - Dữ liệu có thể rời khỏi cục bộ (mặc định): văn bản phiên âm trong phản hồi công cụ
139
- - Dữ liệu không bao giờ rời khỏi cục bộ (với chế độ riêng tư): tất cả
140
- - Hướng dẫn khung tuân thủ theo ngành (HIPAA, GDPR, đặc quyền luật sư-khách hàng, FERPA, SOX, PCI-DSS, NDA/bí mật thương mại)
141
- - Cách cấu hình chế độ riêng tư
142
- - Tuyên bố miễn trách nhiệm rằng tác giả công cụ không phải là cố vấn pháp lý
143
-
144
- ### Cảnh báo riêng tư trong schema công cụ
145
- Cập nhật mô tả công cụ `ListToolsRequestSchema` để bao gồm ghi chú riêng tư trên bất kỳ công cụ nào trả về văn bản phiên âm. Điều này hiển thị trong mô tả công cụ của Claude Desktop và tạo nhận thức tại điểm sử dụng.
146
-
147
- ### Tự động dọn dẹp thư mục tạm thời
148
- `%TEMP%\whisper-mcp-jobs\` tích lũy tệp trạng thái tác vụ và nhật ký theo thời gian. Thêm tự động dọn dẹp tệp tác vụ hoàn thành sau khoảng thời gian lưu giữ có thể cấu hình (mặc định: 7 ngày). Hiện tại yêu cầu người dùng chạy `Remove-Item` thủ công.
81
+ - Sửa đầu ra đợt — `readBatchProgress` giờ di chuyển đầu ra tạm thời đến đích cuối cùng trước khi xác nhận.
82
+
83
+ **Lưu ý tương thích flag:** `gpu_device` / `--device` được thêm trong whisper.cpp v1.8.4. Tệp nhị phân Vulkan đã biên dịch sẵn trong các bản phát hành là thế hệ v1.8.3 — tham số này được công cụ chấp nhận nhưng sẽ không có hiệu lực cho đến khi người dùng cập nhật lên tệp nhị phân v1.8.4+.
84
+
85
+ ### ✅ v2.2.2 — Bản vá
86
+ - Sửa cấp phép kép — chỉnh sửa LICENSE và LICENSE-COMMERCIAL.md.
87
+ - Sửa lỗi tài liệu nhỏ.
88
+
89
+ ### ✅ v2.3.0 — Tự động tiến đợt, kiến trúc quyền riêng tư, mở rộng định dạng đầu ra
90
+
91
+ **Tự động tiến đợt (sửa lỗi nghiêm trọng):** `start_batch` trước đây yêu cầu polling tích cực để tiến queue. Giờ mỗi tiến trình con whisper-cli được tạo ra đều có handler `on('exit')` được gắn vào. Khi tiến trình thoát, đợt ngay lập tức tự động tiến qua exit callback — không tốn chi phí polling và API. Mutex ngăn tạo kép giữa exit handler + lệnh gọi `check_batch_progress` đồng thời.
92
+
93
+ **Kiến trúc quyền riêng tư:**
94
+ - Biến môi trường `WHISPER_PRIVACY_MODE` — khi đặt thành `true`, tất cả phản hồi công cụ chỉ trả về siêu dữ liệu (tên tệp, số từ, đường dẫn lưu). Không có văn bản phiên âm nào được gửi đến API của Claude. Bản phiên âm chỉ tồn tại dưới dạng tệp cục bộ.
95
+ - Biến môi trường `WHISPER_CONSENT_ACKNOWLEDGED` — khi đặt thành `true`, bỏ qua cổng đồng ý phiên một lần cho nội dung không nhạy cảm.
96
+ - Tham số `privacy_mode` theo từng lệnh gọi trong `transcribe_audio`, `transcribe_batch`, `start_batch`, `check_progress`. Ghi đè biến môi trường toàn cục theo cả hai hướng. Không cần khởi động lại để bật/tắt.
97
+ - Cổng chế độ quyền riêng tư (`checkPrivacyGate()`) — chạy trước mỗi thao tác khi chế độ quyền riêng tư hiệu quả đang hoạt động. Kích hoạt lần đầu gọi (hiển thị công khai), giải phóng lần gọi thứ hai (cho phép). Đặt lại sau mỗi thao tác. Hoàn toàn độc lập với cổng đồng ý phiên.
98
+ - Cổng đồng ý phiên (`transcriptPolicy()`) — chạy một lần mỗi phiên trước lệnh gọi trả về phiên âm đầu tiên ở chế độ tiêu chuẩn. Tiêu thụ bằng flag `sessionConsentGiven`.
99
+ - `PRIVACY.md` — tài liệu tuân thủ đầy đủ bao gồm HIPAA, GDPR, đặc quyền luật sư-khách hàng, FERPA, SOX, PCI-DSS, NDA/bí mật thương mại.
100
+ - Cảnh báo quyền riêng tư trong mô tả công cụ của tất cả công cụ trả về văn bản phiên âm.
101
+
102
+ **Mở rộng định dạng đầu ra:**
103
+ - `vtt` — đầu ra phụ đề WebVTT qua `-ovtt`. Có sẵn trong `transcribe_audio`, `generate_subtitles`, `start_batch` và chế độ nền.
104
+ - `lrc` — định dạng lời bài hát/karaoke LRC qua `-olrc`. Có sẵn trong `transcribe_audio` và chế độ nền.
105
+ - `csv` — CSV có dấu thời gian qua `-ocsv`. Có sẵn trong `transcribe_audio` và chế độ nền.
106
+ - Giá trị mặc định `output_format` thay đổi từ `"text"` sang `"timestamps"` trên tất cả công cụ và đường dẫn mã. Văn bản thuần túy giờ là tùy chọn.
107
+
108
+ **Sửa lỗi:**
109
+ - Lỗi 1: `output_format` không được truyền đến tác vụ nền — mặc định `"text"` được dùng bất kể định dạng được yêu cầu. Đã sửa bằng cách thay đổi mặc định thành `"timestamps"` và truyền đúng cách.
110
+ - Lỗi 2: `catch {}` im lặng trên thao tác di chuyển đầu ra tác vụ nền nuốt lỗi thất bại. Thêm kiểm tra `existsSync` rõ ràng sau khi di chuyển với thông báo thất bại chi tiết.
111
+ - Lỗi 3: Thêm chú thích thiết kế tại điểm tạo nền giải thích tại sao cổng đồng ý được trì hoãn có chủ ý đến `check_progress` cho tác vụ nền không riêng tư.
112
+
113
+ **Bổ sung:**
114
+ - Tự động dọn dẹp thư mục tạm thời — `cleanupOldJobFiles()` chạy khi khởi động xóa tệp `.json` và `.log` cũ hơn 7 ngày trong `%TEMP%\whisper-mcp-jobs\`.
115
+ - `check_config` giờ báo cáo trạng thái chế độ quyền riêng tư.
116
+ - Báo cáo bật/tắt chế độ quyền riêng tư trong nhật ký khởi động.
117
+ - Trường `privacyMode: boolean` được thêm vào interface `Job`.
118
+ - Trường `privacyMode: boolean` được thêm vào interface `BatchState`.
119
+ - Kiểu `BackgroundFormat` loại trừ `json` (json trong chế độ nền không được hỗ trợ — dự phòng về `text`).
149
120
 
150
121
  ---
151
122
 
152
- ## Đã lên kế hoạch — Chuyển đổi Bun
123
+ ## Đã lên kế hoạch — v2.4.0: Chuyển đổi Bun
153
124
 
154
- Chuyển đổi runtime từ Node.js sang [Bun](https://bun.sh) sau khi kiến trúc quyền riêng tư hoàn thành và trước khi thêm tính năng v2.3.0.
125
+ Chuyển đổi runtime từ Node.js sang [Bun](https://bun.sh).
155
126
 
156
- Vì Claude Desktop tạo máy chủ MCP mới khi khởi động mỗi phiên, thời gian khởi động nằm trên đường dẫn quan trọng. Bun chạy TypeScript gốc không cần bước biên dịch, khởi động nhanh hơn đáng kể so với Node và có I/O nhanh hơn.
127
+ Claude Desktop tạo máy chủ MCP mới vào mỗi lần khởi động phiên, vì vậy thời gian khởi động nằm trên đường dẫn quan trọng. Bun chạy TypeScript gốc mà không cần bước biên dịch, khởi động nhanh hơn đáng kể so với Node và I/O cũng nhanh hơn.
157
128
 
158
129
  **Những gì thay đổi:**
159
- - Loại bỏ bước build `tsc` và thư mục `dist/`
160
- - Người dùng chạy trực tiếp source TypeScript
130
+ - Bước biên dịch `tsc` và thư mục `dist/` bị xóa
131
+ - Người dùng chạy mã nguồn TypeScript trực tiếp
161
132
  - `tsconfig.json` trở thành tùy chọn
162
133
  - Cập nhật script `package.json`
163
- - Cập nhật quy trình publish npm
134
+ - Cập nhật quy trình phát hành npm
164
135
 
165
136
  **Những gì không thay đổi:**
166
- - Source code `src/index.ts` — Bun tương thích với TypeScript hiện có và API tích hợp sẵn của Node.js
137
+ - Mã nguồn `src/index.ts` — Bun tương thích với TypeScript hiện tại và các API tích hợp sẵn của Node.js
167
138
  - Tất cả hành vi công cụ và định dạng đầu ra
168
139
  - Cấu hình Claude Desktop cho người dùng cuối
169
140
 
170
- **Tại sao sau riêng tư, trước v2.3.0:** Codebase ở trạng thái dễ chuyển đổi nhất ngay bây giờ. Chuyển đổi sau khi thêm công cụ chỉ tăng khối lượng công việc mà không có lợi ích. Kiến trúc quyền riêng tư phải ra mắt trước như đã lưu ý ở trên.
171
-
172
141
  ---
173
142
 
174
- ## Giấy phép
175
-
176
- whisper-windows-mcp được cấp phép kép.
177
-
178
- **Sử dụng phi thương mại:** MIT — miễn phí cho mục đích cá nhân, giáo dục và phi thương mại. Xem [LICENSE](LICENSE).
143
+ ## Đã lên kế hoạch — v2.5.0: Định dạng đầu ra nâng cao cho tích hợp công cụ bên ngoài
179
144
 
180
- **Sử dụng thương mại:** Cần có thỏa thuận giấy phép thương mại riêng. Xem [LICENSE-COMMERCIAL.md](LICENSE-COMMERCIAL.md).
145
+ Hỗ trợ định dạng đầu ra mở rộng nhắm đến quy trình phân tích và tích hợp downstream. Phạm vi chính xác sẽ được xác định dựa trên phản hồi của người dùng sau v2.3.0.
181
146
 
182
- `WHISPER_PRIVACY_MODE` cho triển khai trong ngành được quản lý đang được phát triển và dự kiến trong phiên bản tương lai. Xem [PRIVACY.md](PRIVACY.md) để biết hướng dẫn hiện tại.
147
+ ---
183
148
 
184
- ## Đã lên kế hoạch — v2.3.0: Mở rộng định dạng đầu ra
149
+ ## Đã lên kế hoạch — v2.6.0: Chế độ phiên âm microphone trực tiếp
185
150
 
186
- ### Định dạng phụ đề VTT
187
- Đầu ra WebVTT (`.vtt`) cùng với SRT. VTT là tiêu chuẩn web được YouTube, HTML5 `<video>` và hầu hết các trình phát hiện đại sử dụng. whisper-cli hỗ trợ gốc. Thêm `vtt` như định dạng đầu ra hợp lệ trong `transcribe_audio`, `generate_subtitles` và `spawnDetached`. Cập nhật `buildArgs` và tất cả schema công cụ liên quan, README và tài liệu đa ngôn ngữ.
151
+ Phiên âm theo thời gian thực từ đầu vào microphone trực tiếp. Phát trực tuyến âm thanh theo từng đoạn từ thiết bị ghi âm được chọn đến whisper, trả về các đoạn phiên âm đã hoàn thành theo cách cuộn.
188
152
 
189
- ### Định dạng LRC
190
- Đầu ra định dạng LRC (`.lrc`) lời bài hát/karaoke qua `-olrc`. Được dùng bởi các trình phát phương tiện để hiển thị lời bài hát đồng bộ. Chi phí triển khai bằng không — flag CLI gốc.
153
+ **Ràng buộc thiết kế:**
154
+ - Lựa chọn thiết bị phải rõ ràng — không tự động thu microphone mặc định im lặng
155
+ - Người dùng phải có thể dừng luồng qua tương tác Claude Desktop
156
+ - Không được vi phạm ràng buộc một phiên bản whisper tại một thời điểm
157
+ - Đánh đổi giữa độ trễ và độ chính xác phải có thể cấu hình bởi người dùng
191
158
 
192
- ### Định dạng CSV
193
- Đầu ra CSV (`.csv`) qua `-ocsv`. Dữ liệu bảng có cấu trúc với thời gian đoạn — hữu ích cho phân tích downstream, quy trình căn chỉnh clip và nhập vào công cụ bảng tính. Chi phí triển khai bằng không — flag CLI gốc.
159
+ **Trạng thái:** Giai đoạn thiết kế. Phụ thuộc vào API phát trực tuyến ổn định của whisper.cpp.
194
160
 
195
161
  ---
196
162
 
@@ -225,7 +191,7 @@ Cho người dùng quản lý các dự án chỉnh sửa video lớn với thư
225
191
  ### Phân tách người nói (pyannote-audio)
226
192
  Phân tách người nói mono đầy đủ với nhãn ID người nói — đánh dấu chuyển đổi người nói trong toàn bộ bản ghi bất kể cấu hình kênh. Khác với flag `--diarize` stereo tích hợp (v2.2.0) và TinyDiarize.
227
193
 
228
- **Triển khai:** Cần [pyannote-audio](https://github.com/pyannote/pyannote-audio) — thư viện dựa trên Python với yêu cầu token truy cập mô hình Hugging Face. Stack phụ thuộc hoàn toàn riêng biệt so với pipeline whisper.cpp.
194
+ **Triển khai:** Cần [pyannote-audio](https://github.com/pyannote/pyannote-audio) — thư viện dựa trên Python với yêu cầu token truy cập mô hình Hugging Face. Stack phụ thuộc hoàn toàn riêng biệt.
229
195
 
230
196
  **Trạng thái:** Tính năng nâng cao tùy chọn với tài liệu cài đặt riêng. Không bao gồm trong gói chính.
231
197
 
@@ -247,15 +213,25 @@ Pipeline hậu xử lý:
247
213
 
248
214
  ---
249
215
 
216
+ ## Giấy phép
217
+
218
+ whisper-windows-mcp được cấp phép kép.
219
+
220
+ **Sử dụng phi thương mại:** MIT — miễn phí cho mục đích cá nhân, giáo dục và phi thương mại. Xem [LICENSE](LICENSE).
221
+
222
+ **Sử dụng thương mại:** Cần có thỏa thuận giấy phép thương mại riêng cho bất kỳ mục đích kinh doanh, chuyên nghiệp hoặc tạo doanh thu nào. Xem [COMMERCIAL-LICENSE.md](COMMERCIAL-LICENSE.md).
223
+
224
+ ---
225
+
250
226
  ## Phân phối
251
227
 
252
- Có sẵn trên [npm](https://www.npmjs.com/package/whisper-windows-mcp), [mcpservers.org](https://mcpservers.org) và [Glama](https://glama.ai).
228
+ Có sẵn trên [npm](https://www.npmjs.com/package/whisper-windows-mcp), [mcpservers.org](https://mcpservers.org), [Glama](https://glama.ai) và [awesome-mcp-servers](https://github.com/punkpeye/awesome-mcp-servers) (PR đã gửi).
253
229
 
254
230
  ---
255
231
 
256
232
  ## Tài liệu đa ngôn ngữ
257
233
 
258
- Tài liệu tiếng Nhật, tiếng Hàn và tiếng Việt được duy trì song song với tiếng Anh. Các tệp sau phải được cập nhật để khớp với tài liệu tiếng Anh sau mỗi bản phát hành:
234
+ Sau mỗi bản phát hành, các tệp sau phải được cập nhật để khớp với tài liệu tiếng Anh:
259
235
 
260
236
  **Tiếng Nhật (`*.ja.md`)** — `README.ja.md` / `TROUBLESHOOTING.ja.md` / `ROADMAP.ja.md` / `PRIVACY.ja.md` / `SECURITY.ja.md`
261
237
 
@@ -271,9 +247,9 @@ Tài liệu tiếng Nhật, tiếng Hàn và tiếng Việt được duy trì so
271
247
 
272
248
  **Tiếng Tây Ban Nha (`*.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
+ **Tiếng Ba Lan (`*.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
+ **Tiếng Romania (`*.ro.md`)** — `README.ro.md` / `TROUBLESHOOTING.ro.md` / `ROADMAP.ro.md` / `PRIVACY.ro.md` / `SECURITY.ro.md`
277
253
 
278
254
  Chào mừng đóng góp cộng đồng cho các ngôn ngữ khác.
279
255