whisper-windows-mcp 2.2.1 → 2.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +20 -1
- package/LICENSE-COMMERCIAL.md +58 -0
- package/PRIVACY.pl.md +135 -0
- package/PRIVACY.ro.md +135 -0
- package/README.es.md +393 -393
- package/README.id.md +393 -393
- package/README.ja.md +402 -402
- package/README.ko.md +393 -393
- package/README.md +393 -393
- package/README.pl.md +393 -0
- package/README.pt-BR.md +393 -393
- package/README.ro.md +393 -0
- package/README.uk.md +393 -393
- package/README.vi.md +393 -393
- package/ROADMAP.es.md +200 -192
- package/ROADMAP.id.md +289 -290
- package/ROADMAP.ja.md +301 -302
- package/ROADMAP.ko.md +286 -287
- package/ROADMAP.pl.md +198 -0
- package/ROADMAP.pt-BR.md +286 -287
- package/ROADMAP.ro.md +200 -0
- package/ROADMAP.uk.md +290 -291
- package/ROADMAP.vi.md +286 -287
- package/SECURITY.pl.md +47 -0
- package/SECURITY.ro.md +47 -0
- package/TROUBLESHOOTING.pl.md +323 -0
- package/TROUBLESHOOTING.ro.md +323 -0
- package/package.json +2 -2
- package/patch_roadmaps.py +72 -0
package/ROADMAP.vi.md
CHANGED
|
@@ -1,287 +1,286 @@
|
|
|
1
|
-
# whisper-windows-mcp — Lộ trình phát triển
|
|
2
|
-
|
|
3
|
-
Phiên bản hiện tại: **v2.2.0**
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Nguyên tắc thiết kế
|
|
8
|
-
|
|
9
|
-
Các nguyên tắc này chi phối mọi quyết định trong dự án và được ưu tiên hơn tốc độ thêm tính năng.
|
|
10
|
-
|
|
11
|
-
**Giảm thiểu sử dụng Claude API.** Toàn bộ quy trình phiên âm — quét, phân tích, xếp hàng, chạy, xác nhận, chuyển đổi mô hình — phải thực hiện được với ít tương tác Claude nhất có thể. Công cụ này phải hoạt động đầy đủ cho người dùng Claude gói miễn phí không trả phí Pro hoặc Max. Mỗi lệnh gọi công cụ tốn ngân sách sử dụng. Thiết kế theo nguyên tắc này.
|
|
12
|
-
|
|
13
|
-
**Luôn chỉ một phiên bản whisper.** Không bao giờ tạo ra tiến trình whisper-cli.exe thứ hai khi đang có một tiến trình chạy. Khóa tiến trình là bắt buộc và không có ngoại lệ.
|
|
14
|
-
|
|
15
|
-
**Ưu tiên cục bộ, mặc định là riêng tư.** Âm thanh không bao giờ rời khỏi máy. Không cần API đám mây cho chức năng cốt lõi. Các tích hợp tùy chọn (ví dụ: tải mô hình từ Hugging Face) phải được ghi lại rõ ràng là tùy chọn.
|
|
16
|
-
|
|
17
|
-
**Kiểm soát người dùng rõ ràng.** Không có thao tác hàng loạt im lặng. Các hành động phá hủy hoặc không thể hoàn tác cần xác nhận. Người dùng phải luôn biết điều gì sắp xảy ra trước khi nó xảy ra.
|
|
18
|
-
|
|
19
|
-
**Đường dẫn an toàn Unicode.** Tất cả I/O tệp phải xử lý đúng tên tệp không phải ASCII, bao gồm tiếng Việt, tiếng Nhật, tiếng Trung, emoji, dấu ngoặc và các ký tự đặc biệt khác.
|
|
20
|
-
|
|
21
|
-
**Mô-đun và có thể kết hợp.** Các công cụ độc lập. Người dùng dùng những gì họ cần. Không có tính năng nào phải yêu cầu tính năng khác trừ khi không thể tránh khỏi.
|
|
22
|
-
|
|
23
|
-
**Tối ưu hóa trước tính năng.** Khi nghi ngờ giữa thêm tính năng và giảm tải hệ thống hoặc số lượng lệnh gọi API, hãy giảm tải. Các đợt tối ưu hóa lớn rất tốn kém. Thiết kế kiến trúc đúng ngay từ đầu.
|
|
24
|
-
|
|
25
|
-
---
|
|
26
|
-
|
|
27
|
-
## Đã hoàn thành
|
|
28
|
-
|
|
29
|
-
### ✅ v1.3.1 — Khóa tiến trình
|
|
30
|
-
Thêm kiểm tra `isWhisperRunning()` dùng `tasklist /FI` trước khi tạo bất kỳ tiến trình phiên âm nào. Trả về lỗi rõ ràng với hướng dẫn Task Manager thay vì tạo tiến trình cạnh tranh.
|
|
31
|
-
|
|
32
|
-
### ✅ v1.4.0 — Tăng tốc GPU Vulkan
|
|
33
|
-
Biên dịch whisper.cpp từ nguồn với `-DGGML_VULKAN=ON` dùng VS Build Tools 2022 và Vulkan SDK. Phân phối tệp nhị phân Vulkan đã biên dịch sẵn dưới dạng `whisper-vulkan-win-x64.zip`.
|
|
34
|
-
|
|
35
|
-
**Kết quả trên AMD Radeon RX Vega 56:** Mức sử dụng GPU trung bình ~16%. Tệp 58 phút hoàn thành trong ~4.5 phút trên GPU so với ~88 phút chỉ dùng CPU.
|
|
36
|
-
|
|
37
|
-
### ✅ v1.5.0 — Chẩn đoán hệ thống
|
|
38
|
-
Công cụ `check_system`: Phát hiện GPU qua `wmic`, xác nhận Vulkan DLL, báo cáo VRAM, đề xuất kích thước mô hình.
|
|
39
|
-
|
|
40
|
-
### ✅ v1.6.0 — Phân tích tệp trước
|
|
41
|
-
Công cụ `analyze_media` qua FFprobe: thời lượng, kích thước, codec, trạng thái phiên âm, ước tính thời gian CPU và GPU. Quét tệp đơn hoặc thư mục với tùy chọn sắp xếp.
|
|
42
|
-
|
|
43
|
-
### ✅ v1.7.0 — Phiên âm nền + Theo dõi tiến trình
|
|
44
|
-
Kiến trúc tiến trình tách rời: `transcribe_audio` với `background=true` tạo whisper như tiến trình tách rời và trả về ID tác vụ ngay lập tức. `check_progress` phân tích dấu thời gian đoạn stderr của whisper để tính phần trăm và ETA theo thời gian thực.
|
|
45
|
-
|
|
46
|
-
### ✅ v1.8.0 — Xử lý hàng loạt tuần tự có xác nhận
|
|
47
|
-
`start_batch` và `check_batch_progress`: xử lý tuần tự tự động, xác nhận phiên âm (phát hiện đầu ra trống/ngắn), tự động tiến queue, dấu thời gian tiến trình theo từng tệp.
|
|
48
|
-
|
|
49
|
-
### ✅ v1.9.0 — Hỗ trợ đa ngôn ngữ và dịch thuật
|
|
50
|
-
`generate_subtitles` với phát hiện `language=auto` và đầu ra SRT kép `translate_to_english=true`. Thêm hỗ trợ định dạng `.3gp` và `.ts`. `language=auto` cũng có trong `transcribe_audio`.
|
|
51
|
-
|
|
52
|
-
**Giới hạn đã biết:** Bản dịch tích hợp của Whisper chỉ nhắm đến tiếng Anh. Cần mô hình `large-v3` cho các ngôn ngữ không phải tiếng Anh — mô hình chỉ tiếng Anh (`*.en.bin`) xuất ra `[FOREIGN]` với âm thanh không phải tiếng Anh.
|
|
53
|
-
|
|
54
|
-
### ✅ v2.0.0 — Đường dẫn an toàn Unicode + SRT nền
|
|
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
|
-
|
|
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.
|
|
58
|
-
|
|
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.
|
|
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
|
-
- Xác thực đường dẫn (`validateInputPath`) — từ chối đường dẫn UNC và duyệt `..`.
|
|
63
|
-
- Bảo vệ kích thước tệp `MAX_FILE_SIZE_MB = 10240`.
|
|
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`.
|
|
66
|
-
|
|
67
|
-
### ✅ v2.1.0 — Bộ quản lý mô hình (đã gộp vào v2.2.0)
|
|
68
|
-
- Thay đổi `WHISPER_MODEL` từ `const` sang `let` (có thể thay đổi trong phiên).
|
|
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
|
-
- `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
|
-
- 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).
|
|
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
|
-
- Cập nhật `recommendedModel()` để đề xuất `large-v3-turbo` cho VRAM 6GB+.
|
|
75
|
-
|
|
76
|
-
### ✅ v2.2.0 — Mở rộng chất lượng, tham số và phần cứng (hiện tại)
|
|
77
|
-
- Interface `WhisperOptions` thay thế đối số vị trí trong `buildArgs`.
|
|
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
|
-
- Tham số mới trong `generate_subtitles`: `temperature`, `prompt`, `beam_size`, `best_of`, `diarize`, `vad_model`.
|
|
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.
|
|
149
|
-
|
|
150
|
-
---
|
|
151
|
-
|
|
152
|
-
## Đã lên kế hoạch — Chuyển đổi Bun
|
|
153
|
-
|
|
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.
|
|
155
|
-
|
|
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.
|
|
157
|
-
|
|
158
|
-
**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
|
|
161
|
-
- `tsconfig.json` trở thành tùy chọn
|
|
162
|
-
- Cập nhật script `package.json`
|
|
163
|
-
- Cập nhật quy trình publish npm
|
|
164
|
-
|
|
165
|
-
**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
|
|
167
|
-
- Tất cả hành vi công cụ và định dạng đầu ra
|
|
168
|
-
- Cấu hình Claude Desktop cho người dùng cuối
|
|
169
|
-
|
|
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
|
-
---
|
|
173
|
-
|
|
174
|
-
##
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
**
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
###
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
**
|
|
208
|
-
|
|
209
|
-
###
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
**
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
**
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
Nếu bạn đã thử nghiệm tăng tốc GPU trên phần cứng không được liệt kê ở trên, vui lòng mở issue với mô hình GPU, VRAM, kích thước mô hình và thông lượng quan sát được. Điều này giúp xây dựng tài liệu tham khảo hiệu suất chính xác cho người dùng khác.
|
|
1
|
+
# whisper-windows-mcp — Lộ trình phát triển
|
|
2
|
+
|
|
3
|
+
Phiên bản hiện tại: **v2.2.0**
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Nguyên tắc thiết kế
|
|
8
|
+
|
|
9
|
+
Các nguyên tắc này chi phối mọi quyết định trong dự án và được ưu tiên hơn tốc độ thêm tính năng.
|
|
10
|
+
|
|
11
|
+
**Giảm thiểu sử dụng Claude API.** Toàn bộ quy trình phiên âm — quét, phân tích, xếp hàng, chạy, xác nhận, chuyển đổi mô hình — phải thực hiện được với ít tương tác Claude nhất có thể. Công cụ này phải hoạt động đầy đủ cho người dùng Claude gói miễn phí không trả phí Pro hoặc Max. Mỗi lệnh gọi công cụ tốn ngân sách sử dụng. Thiết kế theo nguyên tắc này.
|
|
12
|
+
|
|
13
|
+
**Luôn chỉ một phiên bản whisper.** Không bao giờ tạo ra tiến trình whisper-cli.exe thứ hai khi đang có một tiến trình chạy. Khóa tiến trình là bắt buộc và không có ngoại lệ.
|
|
14
|
+
|
|
15
|
+
**Ưu tiên cục bộ, mặc định là riêng tư.** Âm thanh không bao giờ rời khỏi máy. Không cần API đám mây cho chức năng cốt lõi. Các tích hợp tùy chọn (ví dụ: tải mô hình từ Hugging Face) phải được ghi lại rõ ràng là tùy chọn.
|
|
16
|
+
|
|
17
|
+
**Kiểm soát người dùng rõ ràng.** Không có thao tác hàng loạt im lặng. Các hành động phá hủy hoặc không thể hoàn tác cần xác nhận. Người dùng phải luôn biết điều gì sắp xảy ra trước khi nó xảy ra.
|
|
18
|
+
|
|
19
|
+
**Đường dẫn an toàn Unicode.** Tất cả I/O tệp phải xử lý đúng tên tệp không phải ASCII, bao gồm tiếng Việt, tiếng Nhật, tiếng Trung, emoji, dấu ngoặc và các ký tự đặc biệt khác.
|
|
20
|
+
|
|
21
|
+
**Mô-đun và có thể kết hợp.** Các công cụ độc lập. Người dùng dùng những gì họ cần. Không có tính năng nào phải yêu cầu tính năng khác trừ khi không thể tránh khỏi.
|
|
22
|
+
|
|
23
|
+
**Tối ưu hóa trước tính năng.** Khi nghi ngờ giữa thêm tính năng và giảm tải hệ thống hoặc số lượng lệnh gọi API, hãy giảm tải. Các đợt tối ưu hóa lớn rất tốn kém. Thiết kế kiến trúc đúng ngay từ đầu.
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Đã hoàn thành
|
|
28
|
+
|
|
29
|
+
### ✅ v1.3.1 — Khóa tiến trình
|
|
30
|
+
Thêm kiểm tra `isWhisperRunning()` dùng `tasklist /FI` trước khi tạo bất kỳ tiến trình phiên âm nào. Trả về lỗi rõ ràng với hướng dẫn Task Manager thay vì tạo tiến trình cạnh tranh.
|
|
31
|
+
|
|
32
|
+
### ✅ v1.4.0 — Tăng tốc GPU Vulkan
|
|
33
|
+
Biên dịch whisper.cpp từ nguồn với `-DGGML_VULKAN=ON` dùng VS Build Tools 2022 và Vulkan SDK. Phân phối tệp nhị phân Vulkan đã biên dịch sẵn dưới dạng `whisper-vulkan-win-x64.zip`.
|
|
34
|
+
|
|
35
|
+
**Kết quả trên AMD Radeon RX Vega 56:** Mức sử dụng GPU trung bình ~16%. Tệp 58 phút hoàn thành trong ~4.5 phút trên GPU so với ~88 phút chỉ dùng CPU.
|
|
36
|
+
|
|
37
|
+
### ✅ v1.5.0 — Chẩn đoán hệ thống
|
|
38
|
+
Công cụ `check_system`: Phát hiện GPU qua `wmic`, xác nhận Vulkan DLL, báo cáo VRAM, đề xuất kích thước mô hình.
|
|
39
|
+
|
|
40
|
+
### ✅ v1.6.0 — Phân tích tệp trước
|
|
41
|
+
Công cụ `analyze_media` qua FFprobe: thời lượng, kích thước, codec, trạng thái phiên âm, ước tính thời gian CPU và GPU. Quét tệp đơn hoặc thư mục với tùy chọn sắp xếp.
|
|
42
|
+
|
|
43
|
+
### ✅ v1.7.0 — Phiên âm nền + Theo dõi tiến trình
|
|
44
|
+
Kiến trúc tiến trình tách rời: `transcribe_audio` với `background=true` tạo whisper như tiến trình tách rời và trả về ID tác vụ ngay lập tức. `check_progress` phân tích dấu thời gian đoạn stderr của whisper để tính phần trăm và ETA theo thời gian thực.
|
|
45
|
+
|
|
46
|
+
### ✅ v1.8.0 — Xử lý hàng loạt tuần tự có xác nhận
|
|
47
|
+
`start_batch` và `check_batch_progress`: xử lý tuần tự tự động, xác nhận phiên âm (phát hiện đầu ra trống/ngắn), tự động tiến queue, dấu thời gian tiến trình theo từng tệp.
|
|
48
|
+
|
|
49
|
+
### ✅ v1.9.0 — Hỗ trợ đa ngôn ngữ và dịch thuật
|
|
50
|
+
`generate_subtitles` với phát hiện `language=auto` và đầu ra SRT kép `translate_to_english=true`. Thêm hỗ trợ định dạng `.3gp` và `.ts`. `language=auto` cũng có trong `transcribe_audio`.
|
|
51
|
+
|
|
52
|
+
**Giới hạn đã biết:** Bản dịch tích hợp của Whisper chỉ nhắm đến tiếng Anh. Cần mô hình `large-v3` cho các ngôn ngữ không phải tiếng Anh — mô hình chỉ tiếng Anh (`*.en.bin`) xuất ra `[FOREIGN]` với âm thanh không phải tiếng Anh.
|
|
53
|
+
|
|
54
|
+
### ✅ v2.0.0 — Đường dẫn an toàn Unicode + SRT nền
|
|
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
|
+
|
|
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.
|
|
58
|
+
|
|
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.
|
|
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
|
+
- Xác thực đường dẫn (`validateInputPath`) — từ chối đường dẫn UNC và duyệt `..`.
|
|
63
|
+
- Bảo vệ kích thước tệp `MAX_FILE_SIZE_MB = 10240`.
|
|
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`.
|
|
66
|
+
|
|
67
|
+
### ✅ v2.1.0 — Bộ quản lý mô hình (đã gộp vào v2.2.0)
|
|
68
|
+
- Thay đổi `WHISPER_MODEL` từ `const` sang `let` (có thể thay đổi trong phiên).
|
|
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
|
+
- `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
|
+
- 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).
|
|
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
|
+
- Cập nhật `recommendedModel()` để đề xuất `large-v3-turbo` cho VRAM 6GB+.
|
|
75
|
+
|
|
76
|
+
### ✅ v2.2.0 — Mở rộng chất lượng, tham số và phần cứng (hiện tại)
|
|
77
|
+
- Interface `WhisperOptions` thay thế đối số vị trí trong `buildArgs`.
|
|
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
|
+
- Tham số mới trong `generate_subtitles`: `temperature`, `prompt`, `beam_size`, `best_of`, `diarize`, `vad_model`.
|
|
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.
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## Đã lên kế hoạch — Chuyển đổi Bun
|
|
153
|
+
|
|
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.
|
|
155
|
+
|
|
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.
|
|
157
|
+
|
|
158
|
+
**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
|
|
161
|
+
- `tsconfig.json` trở thành tùy chọn
|
|
162
|
+
- Cập nhật script `package.json`
|
|
163
|
+
- Cập nhật quy trình publish npm
|
|
164
|
+
|
|
165
|
+
**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
|
|
167
|
+
- Tất cả hành vi công cụ và định dạng đầu ra
|
|
168
|
+
- Cấu hình Claude Desktop cho người dùng cuối
|
|
169
|
+
|
|
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
|
+
---
|
|
173
|
+
|
|
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).
|
|
179
|
+
|
|
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).
|
|
181
|
+
|
|
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.
|
|
183
|
+
|
|
184
|
+
## Đã lên kế hoạch — v2.3.0: Mở rộng định dạng đầu ra
|
|
185
|
+
|
|
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ữ.
|
|
188
|
+
|
|
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.
|
|
191
|
+
|
|
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.
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
## Đã lên kế hoạch — Các bản phát hành tương lai
|
|
198
|
+
|
|
199
|
+
### TinyDiarize
|
|
200
|
+
Hỗ trợ flag `--tinydiarize` với các biến thể mô hình hỗ trợ `tdrz` (ví dụ: `large-v2-tdrz`). Không giống flag `--diarize` stereo, TinyDiarize hoạt động trên bản ghi mono. Cần tải xuống biến thể mô hình đặc biệt. Độ chính xác thấp hơn diarization dựa trên pyannote nhưng không có phụ thuộc bổ sung ngoài tệp mô hình.
|
|
201
|
+
|
|
202
|
+
**Trạng thái:** Đã lên kế hoạch. Phụ thuộc vào `download_model` hỗ trợ các biến thể mô hình tdrz.
|
|
203
|
+
|
|
204
|
+
### Phiên âm URL YouTube
|
|
205
|
+
Phiên âm trực tiếp từ URL YouTube qua yt-dlp. Tải xuống âm thanh và phiên âm trong một bước. Yêu cầu yt-dlp đã cài đặt và có trong PATH.
|
|
206
|
+
|
|
207
|
+
**Ràng buộc thiết kế:** yt-dlp là tùy chọn. Công cụ phải hạ cấp nhẹ nhàng với hướng dẫn cài đặt rõ ràng nếu không tìm thấy. Không thay đổi chức năng cốt lõi cho người dùng không cần nó.
|
|
208
|
+
|
|
209
|
+
### Công cụ quy trình dự án video
|
|
210
|
+
Cho người dùng quản lý các dự án chỉnh sửa video lớn với thư mục clip nguồn và đã chỉnh sửa:
|
|
211
|
+
|
|
212
|
+
1. Quét thư mục nguồn và thư mục con clip
|
|
213
|
+
2. Khớp mờ bản phiên âm clip đã chỉnh sửa với bản phiên âm nguồn để xác định điểm gốc
|
|
214
|
+
3. Hiển thị tên tệp mô tả được Claude đề xuất dựa trên nội dung phiên âm, yêu cầu xác nhận rõ ràng của người dùng trước khi thực hiện bất kỳ đổi tên nào
|
|
215
|
+
4. Tìm kiếm phiên âm trong thư mục dự án với kết quả timecode
|
|
216
|
+
|
|
217
|
+
**Ràng buộc thiết kế:**
|
|
218
|
+
- Tệp nguồn **không bao giờ bị đổi tên hoặc sửa đổi**
|
|
219
|
+
- Tất cả đổi tên cần **xác nhận rõ ràng của người dùng**
|
|
220
|
+
- Tìm kiếm là công cụ độc lập, có thể dùng độc lập
|
|
221
|
+
- Phân tích và khớp xảy ra cục bộ — Claude chỉ được gọi khi người dùng xem xét kết quả, giảm thiểu lệnh gọi API
|
|
222
|
+
|
|
223
|
+
**Trạng thái:** Giai đoạn thiết kế.
|
|
224
|
+
|
|
225
|
+
### Phân tách người nói (pyannote-audio)
|
|
226
|
+
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
|
+
|
|
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.
|
|
229
|
+
|
|
230
|
+
**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
|
+
|
|
232
|
+
### Dịch sang ngôn ngữ không phải tiếng Anh
|
|
233
|
+
Flag `--translate` của Whisper chỉ nhắm đến tiếng Anh. Hỗ trợ ngôn ngữ đích tùy ý cần API dịch bên ngoài hoặc mô hình dịch cục bộ.
|
|
234
|
+
|
|
235
|
+
**Các tùy chọn đang xem xét:** LibreTranslate (có thể tự host, ưu tiên cục bộ), dịch LLM cục bộ hoặc tài liệu rõ ràng nằm ngoài phạm vi.
|
|
236
|
+
|
|
237
|
+
**Trạng thái:** Hoãn lại chờ quyết định thiết kế về cục bộ ưu tiên vs phụ thuộc API.
|
|
238
|
+
|
|
239
|
+
### Dọn dẹp và định dạng bản phiên âm
|
|
240
|
+
Pipeline hậu xử lý:
|
|
241
|
+
- Loại bỏ từ đệm và nói vấp (tùy chọn, người dùng kiểm soát)
|
|
242
|
+
- Ngắt đoạn tại ranh giới chủ đề tự nhiên
|
|
243
|
+
- Định dạng theo người nói kết hợp với đầu ra phân tách người nói
|
|
244
|
+
- Xuất sang PDF hoặc DOCX
|
|
245
|
+
|
|
246
|
+
**Trạng thái:** Đã lên kế hoạch. Biến thể theo người nói phụ thuộc vào phân tách người nói.
|
|
247
|
+
|
|
248
|
+
---
|
|
249
|
+
|
|
250
|
+
## Phân phối
|
|
251
|
+
|
|
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).
|
|
253
|
+
|
|
254
|
+
---
|
|
255
|
+
|
|
256
|
+
## Tài liệu đa ngôn ngữ
|
|
257
|
+
|
|
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:
|
|
259
|
+
|
|
260
|
+
**Tiếng Nhật (`*.ja.md`)** — `README.ja.md` / `TROUBLESHOOTING.ja.md` / `ROADMAP.ja.md` / `PRIVACY.ja.md` / `SECURITY.ja.md`
|
|
261
|
+
|
|
262
|
+
**Tiếng Hàn (`*.ko.md`)** — `README.ko.md` / `TROUBLESHOOTING.ko.md` / `ROADMAP.ko.md` / `PRIVACY.ko.md` / `SECURITY.ko.md`
|
|
263
|
+
|
|
264
|
+
**Tiếng Việt (`*.vi.md`)** — `README.vi.md` / `TROUBLESHOOTING.vi.md` / `ROADMAP.vi.md` / `PRIVACY.vi.md` / `SECURITY.vi.md`
|
|
265
|
+
|
|
266
|
+
**Tiếng Indonesia (`*.id.md`)** — `README.id.md` / `TROUBLESHOOTING.id.md` / `ROADMAP.id.md` / `PRIVACY.id.md` / `SECURITY.id.md`
|
|
267
|
+
|
|
268
|
+
**Tiếng Ukraina (`*.uk.md`)** — `README.uk.md` / `TROUBLESHOOTING.uk.md` / `ROADMAP.uk.md` / `PRIVACY.uk.md` / `SECURITY.uk.md`
|
|
269
|
+
|
|
270
|
+
**Tiếng Bồ Đào Nha Brazil (`*.pt-BR.md`)** — `README.pt-BR.md` / `TROUBLESHOOTING.pt-BR.md` / `ROADMAP.pt-BR.md` / `PRIVACY.pt-BR.md` / `SECURITY.pt-BR.md`
|
|
271
|
+
|
|
272
|
+
**Tiếng Tây Ban Nha (`*.es.md`)** — `README.es.md` / `TROUBLESHOOTING.es.md` / `ROADMAP.es.md` / `PRIVACY.es.md` / `SECURITY.es.md`
|
|
273
|
+
|
|
274
|
+
**Polish (`*.pl.md`)** — `README.pl.md` / `TROUBLESHOOTING.pl.md` / `ROADMAP.pl.md` / `PRIVACY.pl.md` / `SECURITY.pl.md`
|
|
275
|
+
|
|
276
|
+
**Romanian (`*.ro.md`)** — `README.ro.md` / `TROUBLESHOOTING.ro.md` / `ROADMAP.ro.md` / `PRIVACY.ro.md` / `SECURITY.ro.md`
|
|
277
|
+
|
|
278
|
+
Chào mừng đóng góp cộng đồng cho các ngôn ngữ khác.
|
|
279
|
+
|
|
280
|
+
---
|
|
281
|
+
|
|
282
|
+
## Đóng góp
|
|
283
|
+
|
|
284
|
+
Chào mừng pull request. Kiểm tra các issue hiện có trước khi bắt đầu làm việc.
|
|
285
|
+
|
|
286
|
+
Nếu bạn đã thử nghiệm tăng tốc GPU trên phần cứng không được liệt kê ở trên, vui lòng mở issue với mô hình GPU, VRAM, kích thước mô hình và thông lượng quan sát được. Điều này giúp xây dựng tài liệu tham khảo hiệu suất chính xác cho người dùng khác.
|