opendub.ai
#ai-dubbing#omnivoice#open-source#bug-fix

Mình thử lồng tiếng một video bằng OmniVoice (và rốt cuộc sửa luôn một lỗi)

Hàn sang Anh cứ thất bại mãi. Hóa ra đó là một lỗi, nên mình mở code ra cùng Claude và sửa nó, rồi người phụ trách đã hợp nhất nó vào.

opendub · 2026-06-16 · 3 phút đọc

Lần này mình thử OmniVoice, một công cụ lồng tiếng mã nguồn mở.

Mình chạy nó trên chiếc MacBook Air, và nó cài dễ hơn nhiều so với các công cụ mã nguồn mở khác mình từng thử. Nghe có vẻ chuyện nhỏ, nhưng đó là chuyện lớn đấy. Cài các công cụ mã nguồn mở, nói thật, với mình khá là khó, nên chỉ cần làm cho một cái chạy được thôi là đã xong nửa việc rồi.

Đây là đoạn clip mình muốn lồng tiếng, một video tiếng Hàn ngắn, trước khi OmniVoice chạm vào nó:

Bản gốc: đoạn clip tiếng Hàn mình muốn lồng sang tiếng Anh

Khi đã chạy được, mình bắt đầu với Anh sang Hàn. Cái đó chạy ngon lành. Nên mình làm theo chiều ngược lại, thử Hàn sang Anh, thì lần này câu nào cũng phun ra lỗi. Mình chạy lại và vẫn y như thế. Ban đầu mình đoán là do mình mở quá nhiều thứ khác cùng lúc, nên mình tắt hết mọi thứ rồi thử lại. Vẫn thất bại.

Đó là lúc mình mở nhật ký (log) ra. Vấn đề là mình không phải dân lập trình, nên dù có nhìn chằm chằm vào nhật ký, mình cũng chẳng nói được rốt cuộc cái gì sai. Nên mình đưa nó cho Claude xem và hỏi chuyện gì đang xảy ra, mình có thể sửa thế nào.

Đây là điều bọn mình cùng nhau lần ra. Công cụ này có một bước nghe phần âm thanh và đoán xem đó là ngôn ngữ gì, và với video của mình thì nó đoán đúng. Log thậm chí còn ghi là nó đã phát hiện tiếng Hàn với độ chắc chắn 98%. Tức là rõ ràng nó có biết. Nhưng đến khi mọi thứ đi tới bước dịch, thông tin đó đã biến mất. Vì không tìm ra ngôn ngữ nguồn, đoạn code làm đúng cái nó được lập trình sẵn cho trường hợp không biết gì: mặc định coi đó là tiếng Anh. Thế là nó cố dịch tiếng Anh sang tiếng Anh, mà vì làm gì có cái gọi là gói dịch Anh-sang-Anh, nên câu nào cũng chết với cùng một lỗi. Nó biết video là tiếng Hàn, rồi quên mất ngay một bước sau đó.

Khi đã hiểu ra điều đó, mình và Claude chui vào code và tìm đúng cái chỗ nó lùi về mặc định tiếng Anh. Bọn mình thêm vào đó một lớp phòng hờ nhỏ: nếu không biết ngôn ngữ, thì cứ nhìn vào chữ trong phụ đề mà đoán xem đó là tiếng gì. (Là chữ Hàn thì là tiếng Hàn, và ý tưởng tương tự cũng áp dụng cho tiếng Nhật, tiếng Trung và vài thứ tiếng khác.)

Có một chuyện làm mình suýt phát điên. Cứ mỗi lần mình sửa code và mở lại ứng dụng, bản sửa của mình lại cứ thế biến mất. Phải một lúc mình mới nhận ra rằng mỗi lần khởi động, ứng dụng tự viết lại code của chính nó từ đầu, nên suốt từ nãy mình toàn sửa nhầm bản sao. Khi đã tìm ra đúng chỗ để sửa, nó mới chịu giữ lại.

Sau đó mình chạy lại lần nữa, và Hàn sang Anh đã chạy.

Mình nghĩ chắc người khác cũng vấp phải đúng rắc rối như mình, nên mình đăng nó lên GitHub dưới cả dạng issue lẫn pull request. Mình mở cái pull request đó chỉ để thử cầu may, với một tia hy vọng mong manh là biết đâu nó được nhận thật. Vậy mà OmniVoice đã nhận bản sửa của mình vào! Mình không phải dân lập trình, chỉ là một người thích lồng tiếng bằng AI, vậy mà được góp một tay vào code của người khác khiến mình vui thật sự.

Bạn có thể xem nó trên GitHub: issue mình đã mởpull request đã được hợp nhất.

Đây là kết quả cuối cùng:

OmniVoice: lồng tiếng Hàn → Anh, có nhân bản giọng gốc

Nói thật, kết quả này mình vẫn chưa hài lòng. Nếu lắng tai nghe kỹ, bạn sẽ nghe thấy một chút tiếng Hàn lọt ra ở đầu vài câu. Nhưng khả năng nhân bản giọng thì thật sự tốt. Đến giờ mình đã thử kha khá công cụ lồng tiếng mã nguồn mở rồi, và mình chưa thấy cái nào bắt được giọng của người nói gốc giống đến vậy. Mình sẽ cho bạn xem cách mình đang cố loại bỏ phần lọt ra đó ở bài sau.

Đánh giá

cài đặt dễ hơn hẳn · nhân bản giọng rất tốt
bình luận

Bình luận (0)

Chưa có bình luận nào, bạn là người đầu tiên nhé.