OpenAI Whisper: Model Nhận Diện Giọng Nói Mã Nguồn Mở
OpenAI Whisper là một model nhận diện giọng nói, chuyển giọng nói thành văn bản và dịch qua nhiều ngôn ngữ chỉ từ một bộ trọng số duy nhất, thay thế cả một pipeline nhiều bước bằng một model Transformer. Nên dùng nếu bạn cần chuyển giọng nói thành văn bản ngoại tuyến, có thể viết script bằng Python; bỏ qua nếu bạn cần phụ đề thời gian thực, vì Whisper xử lý audio theo từng đoạn 30 giây chứ không phải luồng trực tiếp.
Tìm Hiểu Khả Năng Cốt Lõi Của Whisper
Whisper là model nhận diện giọng nói của OpenAI dựa trên kiến trúc Transformer, được huấn luyện trên một tập audio lớn và đa dạng nên không giới hạn ở một giọng hay lĩnh vực nào. Nó xử lý nhiều tác vụ như một bài toán dự đoán chuỗi duy nhất: nhận diện giọng nói đa ngôn ngữ, dịch sang tiếng Anh, xác định ngôn ngữ đang nói, và phát hiện xem audio có chứa giọng nói hay không, nhờ các token đặc biệt báo cho decoder biết cần làm gì.
Tính Năng Chính Của Các Model Whisper
- ✓Sáu kích thước model, từ tiny (39M tham số) đến large (1550M), cộng thêm biến thể turbo (809M) tối ưu cho tốc độ, giúp bạn đánh đổi giữa độ chính xác, VRAM, và tốc độ suy luận.
- ✓Bốn trong sáu kích thước còn có bản chỉ tiếng Anh (tiny.en, base.en, small.en, medium.en); README nói các bản này cho kết quả tốt hơn rõ rệt so với bản đa ngôn ngữ tương ứng, đặc biệt ở kích thước tiny và base.
- ✓Đa tác vụ theo thiết kế: cùng một bộ trọng số vừa nhận diện giọng nói, vừa dịch sang tiếng Anh, vừa xác định ngôn ngữ đang nói, vừa phát hiện xem một đoạn audio có chứa giọng nói hay không.
- ✓Turbo, theo README, là biến thể được tinh chỉnh tốc độ từ large-v3, đánh đổi một phần nhỏ độ chính xác để lấy tốc độ suy luận nhanh hơn đáng kể, dù không được huấn luyện cho tác vụ dịch.
- ✓Xử lý audio qua một cửa sổ trượt 30 giây với decoding tự hồi quy (autoregressive), theo mô tả của README về phương thức transcribe().
- ✓Có API mức thấp qua whisper.load_audio(), pad_or_trim(), log_mel_spectrogram(), detect_language(), và decode(), cho ai muốn kiểm soát nhiều hơn thay vì chỉ gọi transcribe() ở mức cao.
- ✓Yêu cầu VRAM được ghi rõ theo từng kích thước: khoảng 1 GB cho tiny hoặc base, lên đến khoảng 10 GB cho large, để bạn chọn model phù hợp với GPU mình đang có.
Cài Đặt OpenAI Whisper
Cài bản phát hành bằng `pip install -U openai-whisper`, hoặc lấy commit mới nhất trực tiếp bằng `pip install git+https://github.com/openai/whisper.git`. README cũng ghi lệnh nâng cấp: `pip install --upgrade --no-deps --force-reinstall git+https://github.com/openai/whisper.git`. Whisper còn cần công cụ dòng lệnh `ffmpeg` trên hệ thống; README liệt kê lệnh cài cho apt/Debian, pacman của Arch, Homebrew trên macOS, và Chocolatey hoặc Scoop trên Windows. Nếu tiktoken không có sẵn wheel dựng sẵn cho hệ điều hành của bạn, bạn có thể cần cài thêm Rust toolchain, và nếu cài đặt báo lỗi `No module named 'setuptools_rust'`, chạy `pip install setuptools-rust` sẽ khắc phục. Dự án được build và test với Python 3.9.9 và PyTorch 1.10.1, và README nói codebase được kỳ vọng chạy được với Python 3.8 đến 3.11 cùng các bản PyTorch gần đây.
Chuyển Giọng Nói Thành Văn Bản Và Dịch Với Whisper
Câu lệnh cơ bản là `whisper audio.flac audio.mp3 audio.wav --model turbo`, sẽ chuyển giọng nói thành văn bản cho từng file bằng model turbo, model mặc định của CLI. Turbo nhanh, nhưng README nói rõ nó không được huấn luyện để dịch, nên để dịch giọng nói không phải tiếng Anh sang tiếng Anh, hãy dùng một trong các model đa ngôn ngữ: `whisper japanese.wav --model medium --language Japanese --task translate`. Để chỉ chuyển giọng nói thành văn bản (không dịch) cho audio không phải tiếng Anh, chỉ cần chỉ định ngôn ngữ: `whisper japanese.wav --language Japanese`. Một điểm README lưu ý: dùng `--task translate` với turbo thì Whisper vẫn trả về đúng ngôn ngữ gốc, không dịch; muốn dịch thật, hãy dùng `medium` hoặc `large`. Chạy `whisper --help` để xem toàn bộ tuỳ chọn. Xem `whisper/tokenizer.py` để biết danh sách ngôn ngữ được hỗ trợ. Trong Python, chỉ vài dòng: `model = whisper.load_model("turbo")` rồi `result = model.transcribe("audio.mp3")`, hàm này đọc toàn bộ file và trượt qua từng cửa sổ 30 giây, dự đoán tự hồi quy trên mỗi cửa sổ. Các hàm mức thấp hơn (`load_audio`, `pad_or_trim`, `log_mel_spectrogram`, `detect_language`, `decode`) cũng có sẵn nếu bạn muốn tự xây pipeline riêng thay vì gọi thẳng `transcribe()`.
Điểm mạnh
- ✓Một bộ trọng số làm được bốn việc cùng lúc: chuyển giọng nói thành văn bản, dịch sang tiếng Anh, xác định ngôn ngữ đang nói, và phát hiện xem một đoạn có chứa giọng nói hay không, thay vì phải ghép nhiều công cụ riêng lẻ.
- ✓Sáu lựa chọn kích thước giúp bạn chọn tiny (39M tham số, ~1GB VRAM) để test nhanh trên máy cá nhân, hoặc large (1550M tham số) để lấy độ chính xác, mà không cần đổi codebase.
- ✓Giấy phép MIT cho cả code lẫn trọng số model.
- ✓Cả CLI (`whisper`) lẫn API Python đều được ghi tài liệu, nên dùng trong shell script hay trong ứng dụng đều dễ như nhau.
- ✓Turbo đánh đổi rất ít độ chính xác để lấy tốc độ nhanh hơn hẳn so với large-v3, theo README.
Những Điều Cần Cân Nhắc Và Đánh Đổi Của Whisper
- △Turbo, model mặc định của CLI, không được huấn luyện để dịch, nên nếu chọn nhầm nó cho tác vụ dịch, kết quả sẽ chỉ là chuyển giọng nói thành văn bản sai ngôn ngữ chứ không dịch được.
- △Whisper đọc file và xử lý theo từng đoạn 30 giây thay vì một luồng trực tiếp, nên nó không phù hợp để làm phụ đề thời gian thực ngay từ đầu.
- △Độ chính xác chênh lệch khá nhiều giữa các ngôn ngữ: bảng so sánh WER/CER theo từng ngôn ngữ của README cho large-v2 và large-v3 không gộp lại thành một con số độ chính xác tổng duy nhất.
- △Model large cần khoảng 10 GB VRAM theo README, nên một GPU laptop sẽ giới hạn bạn ở các kích thước nhỏ hơn.
- △Cài tiktoken có thể cần một Rust toolchain hoạt động khi không có sẵn wheel dựng sẵn cho nền tảng của bạn, một dependency phát sinh mà đa số người dùng Python không lường trước.
Lựa Chọn Thay Thế Cho OpenAI Whisper
Câu Hỏi Thường Gặp Về Whisper
Code và trọng số model của OpenAI Whisper đều được phát hành theo giấy phép MIT, theo file LICENSE của repository, nên không có giấy phép trọng số riêng nào khác cần kiểm tra.
OpenAI Whisper hỗ trợ chuyển giọng nói thành văn bản đa ngôn ngữ; danh sách đầy đủ các ngôn ngữ được định nghĩa trong file tokenizer.py của dự án chứ không liệt kê trong README.
Whisper có sáu kích thước: tiny (39M tham số, ~1GB VRAM), base (74M, ~1GB), small (244M, ~2GB), medium (769M, ~5GB), large (1550M, ~10GB), và turbo (809M, ~6GB).
Các model đa ngôn ngữ của Whisper có thể dịch giọng nói không phải tiếng Anh sang văn bản tiếng Anh bằng `--task translate`, dù README nói riêng model turbo không được huấn luyện cho tác vụ này.
Chạy cục bộ, Whisper cần Python (đã test trên 3.9.9, kỳ vọng chạy được từ 3.8 đến 3.11), PyTorch, công cụ dòng lệnh `ffmpeg`, và VRAM GPU khoảng 1GB đến 10GB tuỳ kích thước model.
Trong Python, tải model bằng `whisper.load_model("turbo")`, sau đó gọi `model.transcribe("audio.mp3")` và đọc văn bản từ `result["text"]`, theo đúng ví dụ trong README.
Trường hợp sử dụng tốt nhất
- •Chuyển giọng nói thành văn bản hàng loạt cho một thư mục file audio từ dòng lệnh chỉ với một lệnh whisper.
- •Xây dựng script hoặc service Python xoay quanh việc chuyển giọng nói thành văn bản, gọi trực tiếp whisper.load_model() và model.transcribe() thay vì dùng CLI.
- •Dịch giọng nói không phải tiếng Anh sang văn bản tiếng Anh bằng các model đa ngôn ngữ, khi turbo không được huấn luyện để dịch.
- •Thử nghiệm trên phần cứng khiêm tốn với model tiny hoặc base, trước khi đầu tư ngân sách GPU cho large hoặc turbo.
- •Dùng riêng phần xác định ngôn ngữ hoặc phát hiện giọng nói (voice-activity) như một đầu ra độc lập, thay vì chạy toàn bộ quá trình chuyển giọng nói thành văn bản.
Ai nên dùng — và ai nên bỏ qua
Hãy thử Whisper nếu bạn là nhà phát triển Python cần chuyển giọng nói thành văn bản và dịch ngoại tuyến hoặc tự host, thay vì ghép riêng các service ASR và dịch máy; sáu kích thước model giúp bạn chọn đúng cho một GPU laptop hay một server thật. Bỏ qua nếu bạn cần phụ đề thời gian thực, vì Whisper xử lý audio theo từng đoạn 30 giây chứ không phải luồng trực tiếp, hoặc nếu bạn định dựa vào model turbo để dịch, vì README nói nó không được huấn luyện cho tác vụ đó.
Vẫn đang phân vân về whisper?
Một cú bấm sẽ gửi câu hỏi kèm trang này cho AI — xem AI nói gì về whisper.
