Thực hành AI Local · Bài 7

Làm phụ đề tiếng Việt bằng Whisper chạy trên máy

Hướng dẫn từng bước biến video, bản ghi âm thành tệp phụ đề SRT tiếng Việt bằng Whisper chạy ngay trên máy tính, không gửi tệp lên dịch vụ nào. Ba cách đi: openai-whisper (dễ nhất), whisper.cpp (nhẹ, không cần Python) và faster-whisper (hợp card NVIDIA). Lệnh lấy theo tài liệu chính thức, kiểm tra ngày 20–21/10/2026.

Cập nhật 21/10/2026⏱ 10 phút đọcCài đặt & bắt đầuNgười mới → Trung cấp

Mỗi video lại mất cả buổi để gõ phụ đề

Đội Marketing quay mỗi tuần vài video, livestream, buổi chia sẻ nội bộ, và video nào cũng cần phụ đề. Gõ tay thì mất cả buổi; dùng dịch vụ trực tuyến thì phải tải tệp lên máy chủ bên ngoài, trong khi bản ghi buổi tư vấn khách hàng không nên rời công ty. (Tình huống minh hoạ.)

Bài này hướng dẫn tạo tệp phụ đề SRT tiếng Việt bằng Whisper chạy ngay trên máy của bạn, đi theo từng bước, kèm cách kiểm tra, xử lý lỗi, cập nhật và gỡ. Muốn xem bức tranh rộng hơn về chép lời, đọc giọng và video ngắn bằng AI Local, đọc trước AI Local cho video và giọng nói.

Làm phụ đề tiếng Việt bằng Whisper chạy trên máy là gì?

Làm phụ đề tiếng Việt bằng Whisper chạy trên máy là dùng model nhận dạng giọng nói mở Whisper, cài trên chính máy tính của bạn, để chép lời video hoặc bản ghi âm thành tệp phụ đề có mốc thời gian (SRT, VTT) mà không gửi tệp ra ngoài.

Quy trình làm phụ đề tiếng Việt bằng Whisper chạy trên máy: video hoặc tệp ghi âm MP4, MP3 qua FFmpeg tách tiếng thành WAV 16 kHz, Whisper chép lời với ngôn ngữ vi bằng model đa ngôn ngữ, xuất tệp phude.srt, người soát tên riêng, giá, số điện thoại; tệp ghi âm không rời máy; ba cách chạy openai-whisper, whisper.cpp, faster-whisper cùng giấy phép MIT
Hình: Từ video tới phụ đề, mọi bước chạy trên máy (minh hoạ)
  1. Tệp gốcVideo MP4 hoặc âm thanh MP3, WAV
  2. FFmpegĐọc và chuyển định dạng âm thanh
  3. WhisperChép lời tiếng Việt, gắn mốc thời gian
  4. Tệp SRTMở được trong CapCut, YouTube, trình phát video
  5. Người soátSửa tên riêng, số liệu rồi mới đăng
Năm bước từ video tới phụ đề.

Model Whisper có hỗ trợ tiếng Việt (mã vi). Các bản có đuôi .en chỉ dành cho tiếng Anh, nên với tiếng Việt luôn chọn bản đa ngôn ngữ như turbo hoặc large-v3-turbo.

Nguồn: OpenAI Whisper · Whisper – danh sách ngôn ngữ

Chọn một trong ba cách chạy Whisper

CáchCài thế nàoĐiểm mạnhCần biết
openai-whisper (bản gốc, MIT; mới nhất v20250625)Python + pip, cần FFmpegLệnh whisper xuất SRT, VTT, TXT có sẵn; mặc định model turboREADME ghi Python 3.8–3.11; chạy bằng CPU sẽ chậm
whisper.cpp (MIT; mới nhất v1.9.5, 06/10/2026)Tải mã nguồn, build bằng CMakeKhông cần Python; Mac chip Apple chạy GPU qua Metal; có CUDA, Vulkan; chạy được bằng CPU thuầnNgôn ngữ mặc định là tiếng Anh, phải thêm -l vi; nên đổi âm thanh sang WAV 16-bit
faster-whisper (MIT; mới nhất v1.2.1)Python 3.9+ và pip, không cần cài FFmpegNhanh hơn bản gốc trên card NVIDIA theo số đo của dự án; chế độ int8 tiết kiệm bộ nhớKhông có hàm xuất SRT sẵn, phải viết vài dòng Python; GPU cần CUDA 12 và cuDNN 9

Gợi ý: người mới bắt đầu bằng cách 1. Máy Mac chip Apple, hoặc máy không muốn cài Python, dùng cách 2. Có card NVIDIA và cần chép lời nhiều tệp, thử cách 3. Cả ba đều tạo ra cùng một loại tệp SRT.

So sánh ba cách chạy Whisper trên máy để làm phụ đề tiếng Việt: openai-whisper cài bằng pip, cần FFmpeg, xuất SRT sẵn, mặc định turbo; whisper.cpp build bằng CMake, Mac dùng Metal, NVIDIA build cờ CUDA, phải thêm -l vi, đổi sang WAV 16-bit; faster-whisper cài bằng pip, không cần FFmpeg, CUDA 12 và cuDNN 9, int8, tự ghi SRT; cả ba giấy phép MIT
Hình: Ba cách chạy Whisper, chọn theo máy và việc (minh hoạ)
PhoWhisper của VinAI là Whisper tinh chỉnh trên 844 giờ tiếng Việt nhiều vùng miền, có 5 bản từ tiny tới large, giấy phép BSD-3-Clause. Model card không hướng dẫn dùng thẳng với lệnh whisper, whisper.cpp hay faster-whisper, và model ở định dạng Transformers nên có thể phải chuyển đổi. Aduca chưa xác minh được cách dùng trực tiếp, nên bài này không đưa lệnh cho PhoWhisper.

Nguồn: Whisper v20250625 · whisper.cpp – bản mới nhất · faster-whisper v1.2.1 · faster-whisper – README, số đo · PhoWhisper-large

Chuẩn bị trước khi cài

Cài FFmpeg theo đúng lệnh trong README của Whisper:

Lệnh trên máy tính của bạnChỉ chạy dòng đúng hệ điều hành của bạn
# Ubuntu hoặc Debian
sudo apt update && sudo apt install ffmpeg
# macOS dùng Homebrew
brew install ffmpeg
# Windows dùng Chocolatey
choco install ffmpeg
# Windows dùng Scoop
scoop install ffmpeg

FFmpeg chính thức chỉ phát hành mã nguồn; trang tải của FFmpeg dẫn sang các bản dựng sẵn cho Windows (gyan.dev, BtbN). Bản ổn định mới nhất lúc kiểm tra là 9.0.2. Gõ ffmpeg -version để chắc đã cài xong.

Nguồn: Whisper – cài FFmpeg, bảng model · whisper.cpp – bộ nhớ · FFmpeg – trang tải

Cách 1: openai-whisper, dễ nhất cho người mới

Bước 1. Cài và chạy lệnh đầu tiên

Lệnh trên máy tính của bạnDán vào Terminal hoặc PowerShell; thay tên tệp của bạn
pip install -U openai-whisper
whisper <tên tệp>.mp3 --model turbo --language vi --output_format srt

Lần chạy đầu, model tự tải về thư mục ~/.cache/whisper. Kết quả là tệp .srt cùng tên nằm trong thư mục đang đứng (đổi bằng --output_dir). Mặc định --output_format all xuất mọi định dạng (txt, vtt, srt, tsv, json, jsonl); ghi rõ srt cho gọn.

Bước 2. Chia dòng phụ đề cho dễ đọc

Ba cờ --highlight_words, --max_line_width, --max_line_count chỉ chạy khi bật --word_timestamps True. Lệnh dưới đặt tối đa 42 ký tự mỗi dòng, 2 dòng mỗi khung (hai con số là ví dụ minh hoạ; lệnh ghép từ cú pháp chính thức, hãy thử trên máy thử trước):

Lệnh trên máy tính của bạnDán vào Terminal; chỉnh 42 và 2 theo khổ video
whisper <tên tệp>.mp3 --model turbo --language vi --output_format srt --output_dir phude --word_timestamps True --max_line_width 42 --max_line_count 2

Bước 3. Gợi ý tên riêng (tuỳ chọn)

Cờ --initial_prompt "…" nhận một đoạn chữ làm lời mồi cho đoạn âm thanh đầu. Bạn có thể thử ghi sẵn tên thương hiệu, tên sản phẩm rồi so kết quả với lần chạy không có lời mồi; hiệu quả tuỳ từng tệp.

Bản turbo không được huấn luyện cho việc dịch: dùng --task translate nó vẫn trả về ngôn ngữ gốc. Nếu cài báo lỗi No module named 'setuptools_rust', chạy pip install setuptools-rust rồi cài lại.

Nguồn: Whisper README · Whisper – các cờ

Cách 2: whisper.cpp, nhẹ và không cần Python

Bước 1. Tải mã nguồn, tải model, build

Lệnh trên máy tính của bạnDán vào Terminal macOS hoặc Linux; cần git, CMake và trình biên dịch C++
git clone https://github.com/ggml-org/whisper.cpp.git
cd whisper.cpp
sh ./models/download-ggml-model.sh large-v3-turbo   # model đa ngôn ngữ, có tiếng Việt
cmake -B build
cmake --build build -j --config Release

Lệnh theo phần bắt đầu nhanh trong README, đổi model mẫu base.en sang large-v3-turbo để có tiếng Việt. Máy yếu có thể chọn bản nén large-v3-turbo-q5_0 hoặc large-v3-turbo-q8_0. Trên Windows, script tải model là .\models\download-ggml-model.cmd kèm tên model.

Bước 2. Đổi sang WAV rồi chép lời tiếng Việt

Lệnh trên máy tính của bạnChạy trong thư mục whisper.cpp; lệnh thứ hai ghép từ cú pháp chính thức, hãy thử trên máy thử trước
ffmpeg -i <tên tệp>.mp3 -ar 16000 -ac 1 -c:a pcm_s16le output.wav
./build/bin/whisper-cli -m models/ggml-large-v3-turbo.bin -f output.wav -l vi -osrt -of phude

README ghi whisper-cli hiện chạy với tệp WAV 16-bit, nên lệnh FFmpeg ở dòng đầu đổi âm thanh sang 16 kHz, một kênh. Ở dòng hai: -l vi là bắt buộc vì mặc định là en; -osrt xuất SRT (-ovtt, -otxt cho định dạng khác); -of phude là tên tệp ra, không đuôi; -ml giới hạn độ dài mỗi đoạn.

Muốn bỏ bớt khoảng lặng, tải model VAD bằng ./models/download-vad-model.sh silero-v6.2.0 rồi thêm --vad -vm models/ggml-silero-v6.2.0.bin vào lệnh chép lời.

Nguồn: whisper.cpp README · whisper-cli – các cờ · whisper-cli README

Cách 3: faster-whisper cho máy có card NVIDIA

Bước 1. Cài thư viện

Lệnh trên máy tính của bạnDán vào Terminal, trong môi trường Python 3.9+
pip install faster-whisper
pip install nvidia-cublas-cu12 nvidia-cudnn-cu12==9.*   # chỉ Linux có card NVIDIA, khi máy chưa có thư viện GPU

Bước 2. Lưu đoạn mã ghi SRT

faster-whisper trả về các đoạn lời có giờ bắt đầu, giờ kết thúc nhưng không có hàm xuất SRT sẵn. Đoạn mã dưới dùng đúng lời gọi trong README, thêm vài dòng ghi tệp SRT (ghép từ cú pháp chính thức, hãy thử trên máy thử trước):

Tệp phude.pyCopy, lưu thành phude.py, thay tên tệp âm thanh rồi chạy: python phude.py
from faster_whisper import WhisperModel


def moc(t):
    ms = int(round(t * 1000))
    h, ms = divmod(ms, 3600000)
    m, ms = divmod(ms, 60000)
    s, ms = divmod(ms, 1000)
    return f"{h:02d}:{m:02d}:{s:02d},{ms:03d}"


model = WhisperModel("large-v3-turbo", device="cuda", compute_type="float16")
# Máy không có card NVIDIA: WhisperModel("large-v3-turbo", device="cpu", compute_type="int8")
segments, info = model.transcribe("<tên tệp>.mp3", language="vi", beam_size=5,
                                  vad_filter=True, vad_parameters=dict(min_silence_duration_ms=500))
with open("phude.srt", "w", encoding="utf-8") as f:
    for i, seg in enumerate(segments, start=1):
        f.write(f"{i}\n{moc(seg.start)} --> {moc(seg.end)}\n{seg.text.strip()}\n\n")

Model tải về bộ nhớ đệm Hugging Face nếu không đặt download_root.

Nguồn: faster-whisper README · faster-whisper – tham số transcribe · faster-whisper – tên model

Kiểm tra đã chạy đúng

Soát phụ đề trước khi đăng

Phụ đề do máy chép là bản nháp. Một người đọc lại theo thứ tự ưu tiên:

  1. Tên riêng: thương hiệu, sản phẩm, tên người, địa danh.
  2. Con số: giá, khuyến mãi, ngày giờ, số điện thoại. Sai ở đây có thể gây hiểu nhầm cho khách.
  3. Đoạn khó: nói chồng nhau, nhạc nền to, giọng địa phương, từ tiếng Anh xen giữa.
  4. Độ dài dòng: chia lại dòng quá dài để người xem kịp đọc trên điện thoại.

Quy trình video ngắn đầy đủ (đọc giọng, model video): AI Local cho video và giọng nói.

Lỗi thường gặp và cách xử lý

Hiện tượngNguyên nhân thường gặpCách xử lý
Báo không tìm thấy ffmpegChưa cài FFmpeg hoặc chưa mở lại cửa sổ dòng lệnhCài theo mục Chuẩn bị, mở lại Terminal, gõ ffmpeg -version
Cài openai-whisper lỗi setuptools_rustGói tiktoken không có bản dựng sẵn cho máypip install setuptools-rust; có thể cần cài thêm Rust
whisper.cpp ra chữ tiếng AnhThiếu -l vi, hoặc dùng model đuôi .enThêm -l vi; tải model đa ngôn ngữ như large-v3-turbo
whisper.cpp không đọc được tệpTệp không phải WAV 16-bitĐổi bằng lệnh FFmpeg ở cách 2
faster-whisper báo thiếu thư viện CUDA, cuDNNMáy chưa có CUDA 12, cuDNN 9Linux: cài nvidia-cublas-cu12, nvidia-cudnn-cu12==9.* qua pip; hoặc chạy bằng CPU
Chạy rất chậmĐang chạy bằng CPU, hoặc model quá lớn so với máyChọn model nhỏ hơn, bản nén q5_0 của whisper.cpp, int8 của faster-whisper
Kết quả là bản dịch hoặc sai ngôn ngữĐể trống ngôn ngữ nên model tự đoán saiLuôn ghi rõ --language vi, -l vi hoặc language="vi"

Nguồn: Whisper README · whisper.cpp README · faster-whisper README

Cập nhật và gỡ cài đặt

Công cụCập nhậtGỡ
openai-whisperpip install -U openai-whisper; README có thêm lệnh lấy bản mới nhất từ GitHub: pip install --upgrade --no-deps --force-reinstall git+https://github.com/openai/whisper.gitpip uninstall openai-whisper, rồi tự xoá thư mục model ~/.cache/whisper
whisper.cppLấy mã nguồn bản mới (hiện là v1.9.5) và build lại như bước 1Xoá thư mục whisper.cpp (gồm cả model trong models/)
faster-whisperpip install -U faster-whisperpip uninstall faster-whisper, rồi xoá model trong bộ nhớ đệm Hugging Face nếu cần chỗ

Lệnh pip cập nhật và gỡ là lệnh chuẩn của Python, README không ghi riêng.

Nguồn: Whisper README · Whisper – thư mục model · whisper.cpp – bản mới nhất

An toàn và dữ liệu

Nguồn: whisper-server · PhoWhisper – giấy phép

Bắt đầu từ đâu?

  1. Hôm nay: cài FFmpeg và openai-whisper, chạy một tệp 3 phút với --language vi --output_format srt.
  2. Tuần này: thử thêm whisper.cpp hoặc faster-whisper trên cùng tệp, chọn cách cho kết quả ổn định trên máy của bạn, viết danh sách tên riêng hay sai để người soát đối chiếu.
  3. Khi làm đều: đặt quy trình cố định: chép lời, một người soát, rồi mới đăng.

Tài liệu nội bộ cũng có thể chạy hoàn toàn trên máy: xem Hỏi đáp tài liệu nội bộ bằng AnythingLLM. Muốn được tư vấn hoặc cài đặt AI Local theo nhu cầu riêng, bạn có thể đăng ký Tư vấn 1-1 hoặc Coaching 1-1 cho doanh nghiệp; chi phí báo sau buổi tư vấn.

Đọc tiếp: Hỏi đáp tài liệu nội bộ →

Câu hỏi thường gặp

Làm phụ đề bằng Whisper trên máy có mất phí không?

Không mất phí phần mềm: openai-whisper, whisper.cpp và faster-whisper đều dùng giấy phép MIT. Bạn chỉ tốn công cài, dung lượng ổ cứng cho model và thời gian máy chạy. Chỉ cần Internet khi cài và tải model lần đầu.

Máy không có card NVIDIA có chạy được không?

Được. whisper.cpp chạy được bằng CPU thuần, trên Mac chip Apple dùng GPU qua Metal mặc định. faster-whisper cũng có chế độ CPU với int8. Máy yếu nên chọn model nhỏ hơn và chấp nhận chờ lâu hơn.

Vì sao whisper.cpp trả ra chữ tiếng Anh dù video nói tiếng Việt?

Vì ngôn ngữ mặc định của whisper-cli là tiếng Anh. Thêm cờ -l vi vào lệnh. Ngoài ra không dùng các model có đuôi .en, vì đó là bản chỉ dành cho tiếng Anh.

Có nên dùng PhoWhisper của VinAI không?

PhoWhisper được tinh chỉnh trên 844 giờ tiếng Việt, giấy phép BSD-3-Clause. Tuy vậy model card không hướng dẫn dùng thẳng với lệnh whisper, whisper.cpp hay faster-whisper; model ở định dạng Transformers nên có thể phải chuyển đổi. Hãy coi đây là phương án để người kỹ thuật thử thêm, không phải bước bắt buộc.

Phụ đề tạo ra có đăng thẳng được không?

Không nên. Hãy coi đó là bản nháp: đọc lại tên riêng, tên sản phẩm, giá, số điện thoại và các đoạn nói chồng nhau trước khi đăng lên YouTube, TikTok hay Facebook.

Tài liệu liên quan

Xem tất cả tài liệu hướng dẫn →

Đăng ký Tư vấn 1-1 về AI Local – Nguyễn Đức, Aduca
Bước tiếp theo

Đăng ký Tư vấn 1-1 về AI Local

Chuyên gia Aduca cùng bạn xem nhu cầu, máy đang có và dữ liệu cần bảo vệ, rồi đề xuất nên chạy AI Local, dùng đám mây hay kết hợp. Dịch vụ cài AI Local nằm trong gói Tư vấn 1-1 hoặc Coaching 1-1; chi phí báo sau buổi tư vấn.

Về AducaChuỗi bài do đội ngũ Aduca biên soạn từ kinh nghiệm đào tạo và triển khai AI Agent cho Marketing – Sales. Aduca Academy do Nguyễn Đức – Chủ tịch Aduca Group sáng lập; ông kinh doanh thương mại điện tử từ 2012, chạy quảng cáo Facebook từ 2014 và đào tạo từ 2016. Phần thực hành từng bước nằm trong các thư mục OpenClaw, Hermes Agent, Claude, ChatGPT và n8n, Second Brain.

Nguồn tham khảo

Lịch sử cập nhật

Miễn trừ trách nhiệm

Bài viết thuộc chuỗi kiến thức của Công ty Cổ phần Giáo dục Aduca, chia sẻ miễn phí cho mục đích học tập. Thông tin kỹ thuật đối chiếu với tài liệu chính thức của các dự án và nền tảng tại ngày cập nhật (có ghi nguồn); phần nhận định là quan điểm của Aduca. OpenClaw, Hermes Agent, Claude (thương hiệu của Anthropic), ChatGPT (thương hiệu của OpenAI), n8n (thương hiệu của n8n GmbH), các phần mềm chạy model và các model AI mở (Ollama, LM Studio, Qwen, Gemma, gpt-oss…), Obsidian, Notion, phương pháp Building a Second Brain (Tiago Forte) cùng các phần mềm, dịch vụ nêu trong bài thuộc về chủ sở hữu tương ứng, không thuộc Aduca; Aduca không phải đối tác chính thức của các công ty này. Tính năng, gói và giá có thể thay đổi bất cứ lúc nào – hãy kiểm tra trang chính thức trước khi mua. Kết quả áp dụng phụ thuộc quy trình, dữ liệu và con người của từng doanh nghiệp; bài viết không cam kết doanh thu hay hiệu quả cụ thể. © 2026 Aduca — được trích dẫn khi ghi rõ nguồn aduca.vn.