Bỏ qua đến nội dung chính
AI Local
Cửa sổ code nối với dạng sóng âm thanh, minh họa chép giọng nói thành chữ

Whisper: chuyển giọng nói tiếng Việt thành chữ, chạy local

AIDev TeamTham vấn chuyên môn: Nguyễn Việt Chung

Đăng 14 phút đọc2 lượt xem

Mục lục · 21

Bài này dành cho ai muốn chép ghi âm, cuộc họp hay video tiếng Việt ra chữ mà không gửi file lên dịch vụ ngoài. Mình đo sáu model trên RTX 3090 với 857 câu tiếng Việt: large-v3-turbo chạy bằng faster-whisper sai khoảng 9% số từ, chép 3 giờ ghi âm trong 4 phút và chỉ dùng 2.492MiB VRAM.

Whisper AI là model nhận dạng giọng nói (speech-to-text) mã nguồn mở của OpenAI: bạn đưa vào file ghi âm, nó trả về chữ kèm mốc thời gian, và sau khi tải model về thì nó chạy ngay trên máy của bạn, không cần mạng. OpenAI công bố Whisper tháng 9/2022 theo giấy phép MIT. Cùng một model nhận dạng được nhiều ngôn ngữ, trong đó có tiếng Việt. Ngày 26/10/2026, mình thuê một RTX 3090 trên AIDev Cloud và cho sáu model chép một bộ ghi âm tiếng Việt dài 3 giờ (hai model chậm nhất chỉ chép 51 phút đầu) để xem model nào đúng nhất, nhanh nhất và cần bao nhiêu VRAM.

Những gì mình đo được:

  • large-v3-turbo chạy bằng faster-whisper (bản chạy nhanh của Whisper) là lựa chọn cân bằng nhất: sai 9,2% số từ, chép nhanh gấp 45 lần thời gian thực, dùng 2.492MiB VRAM (bộ nhớ của card đồ họa).

  • Hai model fine-tune riêng cho tiếng Việt sai ít hơn: BuzzASR 7,2% và PhoWhisper-large 8,0% số từ. Đổi lại, chạy qua transformers (library chạy model của Hugging Face) thì chúng chậm hơn turbo 10 đến 12 lần.

  • Cùng model turbo, package openai-whisper gốc chậm gấp gần bốn lần faster-whisper mà kết quả gần như y hệt.

  • Không có GPU vẫn dùng được: trên 25 vCPU, turbo chép 1 giờ ghi âm trong khoảng 50 phút.

  • Whisper có bịa chữ thật. Đưa 60 giây im lặng, large-v3 và large-v3-turbo đều in ra "Hẹn gặp lại các bạn trong những video tiếp theo." Bật lọc tiếng nói (VAD) thì hết.

Whisper AI là gì, có miễn phí không?

Whisper được OpenAI train trên 680.000 giờ ghi âm có kèm chữ lấy từ internet, theo bài báo gốc. Model đọc âm thanh theo từng khúc 30 giây, rồi sinh chữ lần lượt từng mẩu nhỏ (token), giống cách LLM (mô hình ngôn ngữ lớn) sinh câu trả lời. Tính đến ngày 08/11/2026, repo openai/whisper có hơn 112.000 sao trên GitHub.

Bản tải về để chạy trên máy bạn thì miễn phí, kể cả cho mục đích thương mại. Thứ tính tiền là API của OpenAI, khi bạn gửi file lên server của họ. Bài này chỉ nói về cách chạy local.

Whisper có nhiều cỡ. Bảng dưới lấy số tham số từ README của OpenAI; cột VRAM là số mình đo bằng nvidia-smi khi chạy bằng faster-whisper ở chế độ float16 (trọng số dạng số thực 16 bit):

Model

Tham số

VRAM đo được

Ghi chú

small

244 triệu

1.020MiB

nhẹ, sai nhiều với tiếng Việt

medium

769 triệu

2.428MiB

large-v3

1,55 tỷ

4.380MiB

đúng nhất trong bốn cỡ

large-v3-turbo

809 triệu

2.492MiB

large-v3 cắt phần sinh chữ (decoder) từ 32 lớp xuống 4

Theo model card của large-v3-turbo, bản turbo là large-v3 được cắt bớt rồi fine-tune lại, nên nó nhẹ gần bằng medium mà vẫn giữ phần lớn độ chính xác của large-v3.

Cài Whisper chạy local thế nào?

Mình dùng faster-whisper (giấy phép MIT, hơn 26.000 sao ngày 08/11/2026). Đây là bản viết lại Whisper trên CTranslate2, một library chạy model nhanh trên CPU và GPU. Model vẫn là của OpenAI, chỉ đổi cách chạy. Mình cài trên Ubuntu 24.04 với Python 3.12, trong một virtual environment (venv) riêng để không đụng tới Python của hệ thống:

bash
sudo apt-get install -y ffmpeg
python3 -m venv ~/venv-whisper && source ~/venv-whisper/bin/activate
pip install faster-whisper==1.2.1 "av<19"

Dòng "av<19" là để tránh lỗi mình gặp ngay lần chạy đầu, kể ở mục lỗi cuối bài. faster-whisper 1.2.1 là bản mới nhất trên PyPI, kiểm lại ngày 08/11/2026 vẫn vậy. Model tự tải từ Hugging Face ở lần chạy đầu: bản large-v3-turbo khoảng 1,6GB.

Đoạn code chép một file ghi âm. Mình lưu thành chep.py rồi chạy python chep.py mau-60s.mp3, với mau-60s.mp3 là file ghi âm của bạn:

python
import sys
from faster_whisper import WhisperModel

model = WhisperModel("large-v3-turbo", device="cuda", compute_type="float16")
segments, info = model.transcribe(sys.argv[1], language="vi", vad_filter=True)
print(f"Thời lượng: {info.duration:.1f} giây")
for s in segments:
    print(f"[{s.start:6.2f} -> {s.end:6.2f}] {s.text.strip()}")

language="vi" ép model hiểu là tiếng Việt thay vì tự đoán. vad_filter=True bật VAD (voice activity detection, bộ dò đoạn có tiếng người), bỏ qua đoạn im lặng trước khi chép. Mục bịa chữ bên dưới cho thấy vì sao nên bật. Máy không có GPU thì đổi thành device="cpu", compute_type="int8".

Terminal chạy python chep.py với file 60 giây: faster-whisper large-v3-turbo in 5 đoạn tiếng Việt kèm mốc giây

Trong ảnh kết quả trên, bạn sẽ thấy vài chữ sai như "tăng ngữ" (đúng là "tân ngữ") hay tên riêng nước ngoài bị phiên âm lung tung. Đó là loại lỗi bạn sẽ gặp nhiều nhất.

Muốn ra file phụ đề SRT thì làm sao?

Gói openai-whisper gốc có sẵn lệnh whisper, xuất thẳng file phụ đề, hợp với ai không muốn viết code:

bash
pip install openai-whisper
whisper mau-60s.mp3 --model turbo --language vi --output_format srt
Lệnh whisper với model turbo in từng đoạn kèm mốc thời gian và tạo file mau-60s.srt đúng định dạng phụ đề

File .srt mở được trong CapCut, Premiere hay YouTube Studio. Lệnh này tiện nhưng chậm hơn faster-whisper nhiều, xem bảng tốc độ ở dưới.

Model Whisper nào chép tiếng Việt đúng nhất?

Mình đo trên phần test tiếng Việt của FLEURS, dataset của Google theo giấy phép CC BY 4.0: 857 câu do người Việt đọc, tổng 180 phút. Câu lấy từ bài Wikipedia dịch sang tiếng Việt, nhiều tên riêng nước ngoài, nên khó hơn trò chuyện thường ngày ở chỗ tên riêng và dễ hơn ở chỗ người đọc rõ ràng, không ồn.

Metric (thước đo) mình dùng là WER (word error rate, tỷ lệ lỗi từ): số từ bị thay, bị mất hoặc bị thêm, chia cho tổng số từ đúng. Trước khi so, mình đổi hết về chữ thường và bỏ dấu câu, nhưng giữ nguyên dấu thanh tiếng Việt. Mình đo thêm CER (tỷ lệ lỗi ký tự), nhẹ tay hơn với lỗi sai một dấu.

Ngoài bốn cỡ Whisper, mình thêm hai model fine-tune riêng cho tiếng Việt:

  • PhoWhisper-large của VinAI, fine-tune từ Whisper trên 844 giờ tiếng Việt nhiều vùng miền, giấy phép BSD-3-Clause.

  • BuzzASR/vietnamese, fine-tune từ large-v3, giấy phép MIT, công bố tháng 9/2026. Model card ghi rõ có dùng phần train của FLEURS, nên model này được lợi khi đo trên phần test của chính dataset đó.

Hai model này chạy qua transformers và mất khoảng 3 giây cho mỗi câu, nên mình chỉ cho chúng chép 250 câu đầu (51 phút). Để so cho công bằng, mọi model trong biểu đồ dưới đều tính trên đúng 250 câu đó.

Biểu đồ WER trên 250 câu FLEURS tiếng Việt: BuzzASR 7,24%, PhoWhisper-large 8,01%, large-v3 8,36%, large-v3-turbo 9,26%, turbo int8 9,58%, medium 12,65%, small 21,49%

Với Whisper gốc, cứ lên một cỡ là bớt sai đáng kể: small sai hơn 1/5 số từ, medium khoảng 1/8, large-v3 dưới 1/10. Turbo chỉ sai nhiều hơn large-v3 chưa tới 1 điểm phần trăm. BuzzASR sai 7,24%, gần đúng con số 7,26% mà model card của nó công bố. PhoWhisper đứng thứ hai về WER, nhưng CER của nó (4,89%) lại cao hơn large-v3 (4,12%). Nghĩa là PhoWhisper sai ít từ hơn, nhưng mỗi từ sai thường lệch nhiều ký tự hơn.

Trên trọn 857 câu, thứ tự giữa bốn cỡ Whisper không đổi: large-v3 sai 8,49%, turbo 9,16%, medium 12,30%, small 20,98%.

Whisper chạy nhanh cỡ nào, có cần GPU không?

Mình đo tốc độ bằng cách cho model chép lần lượt từng câu, không chạy theo lô. Mọi model dùng beam search cỡ 5 (mỗi bước giữ 5 phương án câu chữ tốt nhất). Mình lấy tổng thời lượng ghi âm chia cho tổng thời gian chép. Kết quả là số lần nhanh hơn thời gian thực.

Cách chạy

Máy

WER (857 câu)

Nhanh hơn thời gian thực

VRAM đo được

faster-whisper turbo float16

RTX 3090

9,16%

45,4 lần

2.492MiB

faster-whisper turbo int8

RTX 3090

9,47%

43,9 lần

1.468MiB

faster-whisper large-v3 float16

RTX 3090

8,49%

16,8 lần

4.380MiB

openai-whisper turbo

RTX 3090

9,18%

12,2 lần

5.448MiB

faster-whisper turbo int8

25 vCPU, không GPU

9,10% (100 câu)

1,2 lần

không dùng

faster-whisper small int8

25 vCPU, không GPU

20,92% (100 câu)

4,2 lần

không dùng

BuzzASR và PhoWhisper chạy bằng transformers trên cùng RTX 3090 chỉ nhanh hơn thời gian thực 4,4 và 3,8 lần, dùng 5.006MiB VRAM. Quy ra một giờ ghi âm thì như sau:

Biểu đồ thời gian chép 1 giờ ghi âm tiếng Việt quy ra từ tốc độ đo: turbo faster-whisper 79 giây, large-v3 214 giây, turbo openai-whisper 294 giây, BuzzASR 824 giây, PhoWhisper 954 giây

Mình rút ra mấy điều từ bảng này:

  • Cách chạy ảnh hưởng tới tốc độ không kém việc chọn model. Cùng model turbo, cùng card, faster-whisper nhanh gấp 3,7 lần package gốc của OpenAI và dùng chưa tới nửa VRAM.

  • Bản int8 (trọng số nén xuống 8 bit) gần như không chậm hơn và chỉ cần 1.468MiB VRAM, hợp với card 4GB. Mình chưa đo trên card 4GB thật, con số này là VRAM đo trên RTX 3090.

  • Không có GPU, turbo int8 trên 25 vCPU Xeon E5-2680 v4 vẫn chép nhanh hơn thời gian thực một chút: 1 giờ ghi âm mất khoảng 50 phút. Laptop ít nhân hơn sẽ chậm hơn, mình chưa đo.

Quy ra tiền: gói RTX 3090 trên AIDev Cloud giá 15.000đ/giờ, turbo chép 1 giờ ghi âm mất khoảng 79 giây, tức khoảng 330đ tiền máy cho mỗi giờ ghi âm khi bạn chép liên tục. Thời gian bật máy, tải model không tính vào con số này. Bảng giá các gói khác có ở bài giá thuê GPU theo giờ.

Chép file dài như cuộc họp có gì khác?

Đo từng câu ngắn chưa giống đời thật, nên mình ghép 45 câu FLEURS khác nhau thành một file 10 phút (cách nhau 0,6 giây) rồi cho chép cả file. Kết quả làm mình bất ngờ:

Model

Cách chạy

WER

Thời gian chép file 10 phút

large-v3

mặc định

66,28%

54,0 giây

large-v3

condition_on_previous_text=False

9,68%

32,1 giây

large-v3-turbo

mặc định

12,02%

10,9 giây

large-v3-turbo

condition_on_previous_text=False

10,70%

10,4 giây

large-v3-turbo

vad_filter=True

22,43%

11,9 giây

large-v3-turbo

chạy theo lô 16

16,79%

4,7 giây

large-v3 với tham số mặc định sai 2/3 số từ. Mở file phụ đề ra thì thấy model mắc kẹt: từ giây 43 đến giây 67, nó in đi in lại một câu "Số rốt bi kết quả" 22 lần, gần như mỗi lần 1 giây, bỏ mất đoạn nói thật trong khoảng đó.

File SRT của large-v3 với tham số mặc định: từ 00:00:59 trở đi mỗi dòng 1 giây đều là câu Số rốt bi kết quả lặp lại

Nguyên nhân là tham số condition_on_previous_text, mặc định bật. Khi chép khúc 30 giây tiếp theo, Whisper đọc lại chữ của khúc trước làm ngữ cảnh. Một khi đã sai và lặp, nó cứ thế lặp tiếp. Tắt tham số này thì WER của large-v3 về 9,68%, gần bằng lúc đo từng câu. Với file dài, mình khuyên bạn luôn đặt condition_on_previous_text=False.

Bật VAD trên file này lại làm turbo sai nhiều hơn: số từ bị mất tăng từ 13 lên 185. Nhiều khả năng bộ lọc VAD với ngưỡng mặc định đã cắt mất một phần câu nói. Chạy theo lô 16 (BatchedInferencePipeline) nhanh gấp đôi nhưng cũng mất từ. Mình chưa thử chỉnh ngưỡng VAD. Với file có ít khoảng lặng, mình tắt VAD và tắt luôn condition_on_previous_text.

Whisper có bịa chữ không?

Có. Cuối năm 2024, báo chí đã đưa tin Whisper "bịa chuyện" khi chép lời. Mình thử với tiếng Việt bằng hai file không có tiếng người: 60 giây im lặng hoàn toàn và 60 giây tiếng ồn trắng nhỏ.

Terminal: large-v3 và large-v3-turbo với 60 giây im lặng in Hẹn gặp lại các bạn trong những video tiếp theo, với tiếng ồn turbo in Hãy subscribe cho kênh La La School; bật vad_filter thì không có chữ

Không bật VAD, cả hai model đều "nghe" thấy câu chào cuối video YouTube. Nhiều khả năng dữ liệu train có rất nhiều video kết thúc bằng câu chào trên nền nhạc hay im lặng. Turbo còn in cả tên một kênh YouTube. Bật vad_filter=True thì cả bốn trường hợp đều không ra chữ nào.

Cách mình chọn: file có những đoạn im lặng dài hoặc nhạc nền (video, podcast, ghi âm có lúc tạm dừng) thì bật VAD. File nói liên tục như bài giảng thì tắt VAD để khỏi mất chữ, và đọc lại những đoạn đầu, cuối file.

Khi nào không nên tự chạy Whisper?

Tự chạy Whisper hợp khi bạn có nhiều giờ ghi âm, cần giữ file trong máy mình, hoặc muốn gắn vào app của bạn. Nó không hợp khi:

  • Bạn cần biết ai nói câu nào (diarization, tách người nói). Whisper chỉ ra chữ, phải ghép thêm công cụ khác, mình chưa thử.

  • Ghi âm nhiều người nói chen nhau, giọng địa phương nặng hoặc nhiều thuật ngữ chuyên ngành. Số đo ở trên là giọng đọc rõ ràng; cuộc họp thật nhiều khả năng sai nhiều hơn, mình chưa đo được bao nhiêu.

  • Bạn cần chữ chính xác tuyệt đối, như biên bản pháp lý. Sai 9% số từ nghĩa là cứ khoảng 11 từ có một từ sai, vẫn phải có người đọc lại.

  • Bạn chỉ chép vài file ngắn mỗi tháng. Dịch vụ có sẵn giao diện sẽ đỡ công cài đặt hơn.

Lỗi mình đã gặp khi cài và chạy

TypeError: open() got an unexpected keyword argument 'metadata_errors'

Lần chạy đầu, faster-whisper 1.2.1 báo lỗi ngay ở bước đọc file âm thanh:

text
  File "av/container/core.py", line 479, in av.container.core.open
TypeError: open() got an unexpected keyword argument 'metadata_errors'

faster-whisper dùng library PyAV (package av) để giải mã âm thanh và chỉ yêu cầu av>=11, nên pip kéo bản mới nhất là 19.0.2. Bản này đã bỏ tham số metadata_errors mà faster-whisper 1.2.1 vẫn truyền vào. Cài pip install "av<19" (mình dùng 18.1.0) là chạy được.

CUDNN_STATUS_SUBLIBRARY_VERSION_MISMATCH

faster-whisper chạy bình thường, nhưng package openai-whisper và transformers (dùng PyTorch) thì dừng ở lớp tích chập đầu tiên:

text
RuntimeError: CUDNN_BACKEND_TENSOR_DESCRIPTOR cudnnFinalize failedptrDesc->finalize() cudnn_status: CUDNN_STATUS_SUBLIBRARY_VERSION_MISMATCH

Máy có hai bản cuDNN (library tăng tốc mạng nơ-ron của NVIDIA): bản 9.24 cài sẵn trong hệ điều hành và bản 9.20 đi kèm torch 2.13.0. Bản 9.20 thiếu file libcudnn_engines_tensor_ir.so.9, nên một phần của cuDNN được nạp từ bản hệ thống và hai phiên bản lệch nhau. Mình cài nvidia-cudnn-cu13==9.24.0.43 vào venv cho trùng bản hệ thống thì hết lỗi. Nếu máy bạn không cài cuDNN riêng thì thường không gặp lỗi này.

ValueError: You have passed more than 3000 mel input features

PhoWhisper chạy qua pipeline của transformers dừng ở một câu dài hơn 30 giây:

text
ValueError: You have passed more than 3000 mel input features (> 30 seconds) which automatically enables long-form generation which requires the model to predict timestamp tokens. Please either pass `return_timestamps=True` or make sure to pass no more than 3000 mel input features.

Với file trên 30 giây, transformers bắt buộc model sinh cả mốc thời gian. Thêm return_timestamps=True khi gọi pipeline là được.

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

Whisper có hiểu tiếng Việt không dấu hay giọng miền Nam, miền Trung không?

Whisper nhận ra tiếng Việt và viết có dấu đầy đủ. Bộ FLEURS không ghi vùng miền của từng người đọc, nên mình không tách được số liệu theo giọng. PhoWhisper được fine-tune riêng trên nhiều giọng Việt, nếu ghi âm của bạn giọng địa phương nặng thì nên thử thêm model này.

Whisper AI có dùng được trên điện thoại không?

Có app chạy Whisper trên điện thoại, thường dùng bản nhỏ (tiny, base, small). Bản small sai khoảng 21% số từ tiếng Việt trong phép đo của mình, nên chép tiếng Việt trên điện thoại sẽ kém hơn chạy large-v3-turbo trên máy tính khá nhiều.

Card đồ họa 4GB có chạy được large-v3-turbo không?

Bản int8 dùng 1.468MiB VRAM khi mình đo trên RTX 3090, nên về dung lượng thì vừa card 4GB. Mình chưa có card 4GB để đo tốc độ.

Whisper có dịch tiếng Việt sang tiếng Anh được không?

Các bản large-v3, medium, small dịch được sang tiếng Anh bằng task="translate". README của OpenAI ghi bản turbo không được train để dịch. Mình chưa đo chất lượng dịch.

Nên dùng Whisper hay PhoWhisper cho tiếng Việt?

Nếu cần nhanh và cài dễ, dùng large-v3-turbo qua faster-whisper. Nếu độ chính xác quan trọng hơn tốc độ, thử PhoWhisper-large hoặc BuzzASR rồi so trên chính ghi âm của bạn, vì phép đo trên FLEURS có lợi cho BuzzASR.

Đọc tiếp

Có cả thư mục ghi âm cần chép mà máy không có GPU? Bạn có thể thuê RTX 3090 trên AIDev Cloud, cài faster-whisper bằng ba lệnh ở trên và chép cả thư mục trong vài phút, xong thì trả máy.

Đo ngày 26/10/2026 trên máy AIDev Cloud RTX 3090 24GB gói Standard (25 vCPU Xeon E5-2680 v4, 53GB RAM, Ubuntu 24.04, driver 610.43.02, CUDA 13.3). faster-whisper 1.2.1 (CTranslate2 4.8.4, av 18.1.0), openai-whisper 20250625, transformers 5.20.2, torch 2.13.0+cu130, Python 3.12.3. Dữ liệu FLEURS vi_vn phần test (CC BY 4.0).

Chuyên mục

AI Local

Tham vấn chuyên môn

Nguyễn Việt Chung

Nhà sáng lập AIDev và VietPlatform · Thạc sĩ AI MSE

  • Tốt nghiệp thủ khoa xuất sắc Thạc sĩ AI MSE.
  • Đồng sáng lập, CTO E-University, SVOnline: số hóa 10+ đại học, 40.000+ sinh viên.
  • Xây hệ thống AI cho doanh nghiệp tại VietPlatform.
Biên soạn: AIDev Team · Rà soát · Quy trình biên tập