VibeVoice — dựng speech pipeline trong một buổi chiều

VibeVoice — dựng speech pipeline trong một buổi chiều

Microsoft mở mã nguồn VibeVoice gom ASR, TTS, speech-to-speech vào một repo. Mình thử trên Colab và rút ra 4 bước triển khai cùng vài cái bẫy cần tránh.

Bạn có 20 phút và một tab Colab đang trống? Vậy là đủ.

Tối qua mình mở MarkTechPost thấy tutorial mới về Microsoft VibeVoice — bộ toolkit speech AI mã nguồn mở gom nhận dạng giọng nói (ASR), tổng hợp giọng nói (TTS), lẫn pipeline speech-to-speech vào cùng một repo. Cái hay là nó không bắt bạn lắp 5 thư viện rời rồi tự nối ống nước giữa chúng. Mọi thứ chạy trên Colab, không cần thuê server riêng.

Mình dọn lại thành 4 bước. Bạn làm theo, xong trước khi cà phê chiều nguội.

Bước 1 — Chuẩn bị nguyên liệu trước khi vào bếp

Nghĩ thế này: bạn chuẩn bị nấu bữa 3 món — ASR là khai vị, TTS là món chính, speech-to-speech là tráng miệng. Nhưng trước hết phải có bếp đã.

Mở Google Colab, chuyển runtime sang GPU (T4 miễn phí đủ cho demo). Clone repo VibeVoice chính thức của Microsoft, cài dependencies qua pip, rồi verify bằng cách kiểm tra phiên bản transformers có hỗ trợ VibeVoice hay chưa. Tutorial gốc hướng dẫn chi tiết từng dòng lệnh — mình khuyên bạn mở song song tab tutorial và tab Colab cho tiện.

Một điểm quan trọng: VibeVoice yêu cầu bản Transformers mới nhất có tích hợp ASR support riêng. Nếu dùng bản cũ, model vẫn load bình thường nhưng kết quả transcription sẽ sai lệch mà không báo lỗi — kiểu nấu phở bằng nước lạnh, vẫn ra tô nước nhưng chắc chắn không phải nước dùng.

Bước 2 — Cho model "nghe" và phân biệt ai đang nói

Load VibeVoice ASR model cùng processor, rồi viết một hàm transcription tái sử dụng được. Điểm khiến mình hứng thú nhất là speaker-aware transcription — model không chỉ chuyển giọng thành chữ mà còn gắn nhãn ai đang nói câu nào.

Kịch bản thực tế: Giả sử team bạn 4 người đang xây hệ thống ghi biên bản họp tự động cho một công ty logistics ở TP.HCM. Cuộc họp thường có 3–5 người, ai cũng nói tiếng Việt pha thuật ngữ tiếng Anh. Với Whisper thuần, bạn nhận được một khối text dài, không biết ai nói gì. Với VibeVoice, output đã tách sẵn theo speaker — bạn chỉ cần map speaker ID với tên thật là có biên bản sạch.

Bonus: VibeVoice hỗ trợ context-guided ASR — bạn cung cấp thêm ngữ cảnh (ví dụ: "cuộc họp về lộ trình Q3, sản phẩm tên Kibo") và model nhận dạng thuật ngữ chuyên ngành chính xác hơn hẳn. Tưởng tượng bạn đưa đề cương ôn thi cho sinh viên trước khi vào phòng thi — kết quả khác xa so với nói "cứ thi đi rồi biết".

Bước 3 — Biến chữ thành giọng, chọn voice như chọn đồ uống

Load VibeVoice TTS model kèm tokenizer, chọn voice preset. Tutorial có sẵn vài preset — mỗi cái cho ra giọng khác nhau về tone, tốc độ, và mức độ biểu cảm.

Kịch bản thứ hai: Giả sử team bạn 3 người đang làm ứng dụng đọc tin tức bằng giọng cho người khiếm thị. Bạn cần giọng tự nhiên, không robotic, và phải đọc được bài dài mà không "ngắt thở" giữa chừng. VibeVoice hỗ trợ long-form generation — feed cả bài báo vào, nhận lại audio liền mạch thay vì phải tự cắt đoạn rồi nối.

Mình thử generate một đoạn podcast script với 2 voice preset khác nhau. Giọng "expressive" nghe sống động hơn đáng kể so với preset mặc định. Đọc tin cần neutral, kể chuyện cần expressive — tùy use case mà bạn chọn gia vị phù hợp.

Bước 4 — Nối ống: speech-to-speech trọn vòng

Đây là phần tráng miệng — gom ASR và TTS thành một pipeline liền. Audio vào, text trung gian ở giữa (bạn có thể xử lý, dịch, chỉnh sửa), rồi audio mới chạy ra.

Tutorial hướng dẫn luôn cách dựng Gradio interface để có web UI đơn giản — nói vào mic, nhận lại audio response. Từ đây bạn biến tấu được: gắn thêm LLM ở bước trung gian để thành voice assistant, hoặc chèn translation model để làm phiên dịch real-time. Pipeline này là khung xương — thịt da do bạn đắp.

Ba cái bẫy mình suýt dính

Bẫy 1: Quên chuyển GPU runtime. Mọi thứ vẫn chạy trên CPU, nhưng chậm đến mức bạn tưởng Colab bị treo. Mình ngồi đợi gần 8 phút cho một đoạn audio 10 giây trước khi nhận ra — tựa như mở quán phở mà quên bật bếp gas vậy.

Bẫy 2: Bỏ qua context-guided ASR khi audio có thuật ngữ chuyên ngành. Model sẽ "nghe nhầm" thành từ phổ biến hơn. Ví dụ minh họa: "Kibo platform" biến thành "people platform" — sai một từ, report lệch cả trang.

Bẫy 3: Kỳ vọng TTS hoạt động tốt với mọi ngôn ngữ. VibeVoice được train chủ yếu trên tiếng Anh. Nếu cần TTS tiếng Việt chất lượng cao, bạn nên kết hợp ASR của VibeVoice với một TTS engine khác hỗ trợ tiếng Việt tốt hơn, hoặc chờ community fine-tune thêm.

Nó đứng ở đâu so với các lựa chọn khác?

Bạn không nhất thiết phải all-in VibeVoice. Whisper vẫn là lựa chọn vững chắc cho ASR thuần, đặc biệt nếu pipeline hiện tại của bạn đã tích hợp sẵn. Coqui TTS (cũng mã nguồn mở) hỗ trợ nhiều ngôn ngữ hơn ở phía tổng hợp giọng.

Điểm mạnh thật sự của VibeVoice nằm ở chỗ gom cả hai chiều vào một hệ sinh thái thống nhất: speaker diarization built-in, context-guided ASR, expressive TTS, và pipeline speech-to-speech — tất cả chạy miễn phí trên Colab. Nếu bạn đang bắt đầu một dự án speech AI mới từ zero, VibeVoice tiết kiệm cho bạn cả tuần ghép nối thư viện.

Xong rồi — giờ thử biến tấu thêm

Bạn vừa có một speech pipeline hoàn chỉnh trên Colab miễn phí trong chưa đầy một buổi chiều. Thử gắn thêm LLM ở bước trung gian để biến nó thành voice chatbot, hoặc thêm translation layer cho phiên dịch real-time. Repo VibeVoice đang active — nếu bạn fine-tune được cho tiếng Việt thì đó là contribution cực kỳ giá trị cho cộng đồng.

Spoiler: không có silver bullet — nhưng VibeVoice là bộ dao bếp gọn gàng nhất cho speech AI mà mình gặp trong năm nay.

---

Bụi Wire — nghiện đọc release notes lúc 2 giờ sáng

Nguồn tham khảo