Kiến trúc

Bên trong bốn quy trình dịch thuật vận hành InterMIND

Không có "bản dịch" duy nhất trong InterMIND. Có bốn quy trình — giọng nói, trò chuyện, ghi chú, tài liệu — mỗi quy trình có công cụ xử lý, ngân sách độ trễ và giới hạn chất lượng riêng. Đây là những gì thực sự diễn ra giữa khoảnh khắc bạn cất lời và khoảnh khắc một người tham gia bằng ngôn ngữ khác hiểu được bạn.

The Mind.com Team

Bên trong bốn quy trình dịch thuật vận hành InterMIND

Bên trong bốn luồng dịch thuật vận hành InterMIND

Trang /product/overview/how-it-works cũ trên mind.com đã lỗi thời sau nhiều bản phát hành lớn. Trang đó mô tả một "động cơ dịch thuật" đơn nhất giống như hầu hết các trang của nhà cung cấp khác — một mũi tên lớn từ "bạn nói" đến "họ nghe." Hình ảnh đó đã là sự đơn giản hóa từ hai năm trước. Ngày nay, nó sai.

Sự thật là InterMIND vận hành bốn luồng dịch thuật riêng biệt, mỗi luồng giải quyết một vấn đề khác nhau với một động cơ khác nhau, một ngân sách độ trễ khác nhau, và một dải chất lượng khác nhau. Chúng chia sẻ một bộ chọn ngôn ngữ. Chúng không chia sẻ động cơ.

Đây là câu trả lời cập nhật cho câu hỏi "nó hoạt động như thế nào."

Bài viết đồng hành: "Bạn hỗ trợ bao nhiêu ngôn ngữ?" đề cập đến những gì mỗi luồng phủ sóng (23 / 23 / 30 / 17). Bài viết này đề cập đến những gì mỗi luồng làm — và tại sao mỗi luồng là một thực thể riêng biệt.


Tại sao "một động cơ cho mọi thứ" là một lời nói dối

Một nền tảng họp trực tiếp có ít nhất bốn nhiệm vụ phải thực hiện cùng lúc, và chúng kéo theo những hướng không tương thích:

  1. Giọng nói thời gian thực — âm thanh đầu vào, âm thanh đã dịch đầu ra, dưới một giây, mỗi người xem bằng ngôn ngữ của họ. Ràng buộc khó khăn là độ trễ.
  2. Văn bản trò chuyện thời gian thực — tin nhắn ngắn, nhanh, với các chỉnh sửa và trích dẫn và cấu trúc HTML được bảo toàn.
  3. Ghi chú chia sẻ thời gian thực — gõ cộng tác từng ký tự một, với cấu trúc phân cấp (danh sách, tiêu đề, hộp kiểm) phải tồn tại qua quá trình dịch.
  4. Tệp tài liệu không đồng bộ — một PDF 40 trang được thả vào trò chuyện. Không có ngân sách độ trễ. Ràng buộc khó khăn là độ trung thực — định dạng, bảng, số trang, phông chữ.

Bạn có thể xây dựng một lệnh gọi LLM khổng lồ cố gắng thực hiện cả bốn. Chúng tôi đã thử. Nó làm tệ tất cả bốn việc. Ngân sách độ trễ cho giọng nói có nghĩa là mô hình không thể suy nghĩ; ngân sách độ trung thực cho tài liệu có nghĩa là mô hình phải suy nghĩ. Một chỉnh sửa trò chuyện cần một diff trong ngôn ngữ của người xem; một PDF 40 trang cần bảo toàn định dạng mà không mô hình token-streaming nào cung cấp cho bạn.

Vì vậy, chúng tôi chạy bốn luồng. Dưới đây là từng luồng.


Luồng 1: Dịch giọng nói thời gian thực

Vấn đề: Một người tham gia nói tiếng Pháp. Một người khác tham gia bằng tiếng Đức, người thứ ba bằng tiếng Bồ Đào Nha Brazil, người thứ tư bằng tiếng Nhật. Mỗi người cần nghe người nói bằng ngôn ngữ của mình, trong tai của mình, với độ trễ đủ ngắn để duy trì giao tiếp bằng mắt.

Ngân sách: Dưới một giây từ đầu đến cuối. Bất cứ thứ gì vượt quá ~1.2 giây và cuộc trò chuyện sẽ đổ vỡ — mọi người bắt đầu nói đè lên bản dịch, và cuộc họp trôi về phía "hãy chuyển sang tiếng Anh."

Âm thanh di chuyển như thế nào thực tế

Luồng dịch giọng nói: trình duyệt của người nói gửi âm thanh qua WebRTC đến động cơ riêng của chúng tôi — máy chủ phương tiện Mind API tại OVH, Pháp — thực hiện ASR và dịch sang mọi ngôn ngữ đích có mặt trong phòng; mỗi người xem nhận được đường âm thanh đã dịch của riêng mình, và ws-server nhận các từ bản ghi để tóm tắt.

Một vài điều đáng được nêu đích danh:

  • ASR chạy trên máy chủ phương tiện. Âm thanh của người nói đi qua WebRTC đến động cơ riêng của chúng tôi — Mind API tại OVH, Pháp — và được nhận diện tại đó, trên cùng máy chủ mang cuộc gọi; trình duyệt chỉ gửi âm thanh và nhận lại các từ. Không có nhà cung cấp giọng nói riêng biệt và không có bước trung gian nào trước khi dịch có thể bắt đầu. (Ghi âm giọng nói trong trò chuyện là ngoại lệ: chuyển-giọng-sang-văn-bản của chúng chạy trên Azure AI Speech, dịch vụ giọng nói của cổng AI mặc định.)
  • Dịch không phải là một phân tán đơn lẻ. Động cơ dịch theo từng ngôn ngữ đích có mặt trong phòng, không phải theo từng người xem: dịch sang một ngôn ngữ bắt đầu khi người nghe đầu tiên trong ngôn ngữ đó yêu cầu một luồng đã dịch, ba người tham gia chọn tiếng Đức chia sẻ một bản dịch tiếng Đức, và không ai nghe tiếng Arabic có nghĩa là không có gì được dịch sang tiếng Arabic. Đây là lý do tại sao một cuộc họp bốn ngôn ngữ có chi phí tương đương một cuộc họp bốn mươi ngôn ngữ cho đến điểm là ai thực sự tham dự — chúng tôi không bao giờ dịch sang các ngôn ngữ mà không người tham gia nào đang nghe.
  • Giọng nói tổng hợp theo từng người xem. Mỗi người tham gia nhận được đường âm thanh đã dịch riêng của mình, trộn với video của người nói gốc. Họ không đang xem một "cuộc họp đã dịch" chủ — họ đang xem cùng một cuộc họp, với kênh âm thanh cá nhân được dịch sang ngôn ngữ họ chọn. Đây là lý do tại sao hai người trong cùng một căn phòng vật lý có thể mỗi người cắm tai nghe và nghe các ngôn ngữ khác nhau.

Tại sao điều này quan trọng khi một cuộc họp gặp trục trặc

Trong một cuộc gọi 60 phút với tám ngôn ngữ, mọi thứ đổ vỡ theo những cách thú vị: WebSockets bị rớt, ASR tạm thời phiên âm sai một danh từ riêng, mạng của một người tham gia bị giật. Kiến trúc trên là điều cho phép chúng tôi cô lập các lỗi: âm thanh của một người xem bị giật không ảnh hưởng đến bảy người còn lại, vì động cơ dịch thuật chưa từng tạo ra "bản dịch" ngay từ đầu — nó tạo ra tám bản, song song, và chỉ bản bị ảnh hưởng mới phải phục hồi.

Bản thân động cơ là của chúng tôi, lưu trữ trên hạ tầng riêng. Chúng tôi không định tuyến giọng nói thời gian thực qua các LLM mục đích chung của bên thứ ba. Ngân sách độ trễ loại trừ chúng; câu chuyện vị trí lưu trữ dữ liệu loại trừ chúng đối với các khách hàng được quản lý thật sự quan tâm.

Những gì chúng tôi công bố về chất lượng giọng nói: /benchmark chạy luồng giọng nói sản xuất trên các câu FLORES-200 cho mọi cặp ngôn ngữ đã công bố, hàng tháng. Người đánh giá được nêu đích danh (Gemini 3.7 Flash chính, Claude Sonnet 5 dự phòng). Toàn bộ phân phối — trung vị, p10, p90, min, max, kích thước mẫu — có trên trang. Xem phương pháp để biết những con số đó đo gì và không đo gì.


Luồng 2: Dịch trò chuyện thời gian thực

Vấn đề: Mọi tin nhắn trò chuyện trong cuộc họp, được dịch cho mỗi người tham gia bằng ngôn ngữ của họ, ngay khi được gửi. Cộng thêm các chỉnh sửa — và các chỉnh sửa cần trông giống như chỉnh sửa, không giống như dịch lại.

Ngân sách: Nhanh, nhưng không dưới một giây. Một tin nhắn trò chuyện có thể mất nửa giây để xuất hiện bằng ngôn ngữ khác mà không ai quan tâm. Điều mọi người quan tâm là liệu bản dịch có chính xác và liệu các chỉnh sửa có hợp lý.

Luồng trò chuyện thực sự làm gì

Mỗi tin nhắn đi qua cùng động cơ dịch thuật mà luồng giọng nói sử dụng — nhưng với tiền xử lý và hậu xử lý khác nhau:

  • Cấu trúc HTML được bảo toàn. Trò chuyện hỗ trợ văn bản phong phú (đoạn văn, danh sách, trích dẫn, in đậm, in nghi). Chúng tôi chuyển sang văn bản thuần cho mô hình, dịch, sau đó bọc lại kết quả trong các thẻ gốc. Mô hình không bao giờ thấy HTML — nó thấy văn xuôi sạch.
  • Trích dẫn được dịch độc lập. Nếu bạn trả lời một tin nhắn và trích dẫn nó, khối [QUOTE]…[/QUOTE] và nội dung mới được dịch như các đơn vị riêng biệt, để mô hình không thể nhầm lẫn giữa hai thứ.
  • Tin nhắn dài được chia nhỏ. Chúng tôi chia theo ranh giới đoạn văn tại 1.000 ký tự mỗi khối. Mỗi khối là một lệnh gọi dịch riêng biệt. Chúng tôi không đưa các tiểu thuyết 4.000 ký tự cho mô hình trong một lần — các chế độ lỗi (cắt ngắn, mất đoạn văn, cắt giữa câu) quá xấu.
  • Dịch thuật lười biếng. Chúng tôi sử dụng IntersectionObserver: một tin nhắn chỉ được dịch khi nó cuộn vào vùng nhìn thấy của người xem. Chuyển ngôn ngữ trong một kênh chạy dài từng phải phát lại mọi lệnh gọi API dịch từ lịch sử. Giờ thì không còn nữa.

Phần thú vị: chỉnh sửa dưới dạng diff

Trong v1.2, chúng tôi đã thay đổi cách chỉnh sửa trò chuyện hoạt động cho người xem bằng ngôn ngữ khác. Hành vi cũ là: ai đó chỉnh sửa một tin nhắn, chúng tôi dịch lại toàn bộ, bạn thấy một đoạn văn mới và phải tự tìm xem điều gì đã thay đổi.

Hành vi mới:

  1. Tin nhắn gốc đã được dịch sang ngôn ngữ của bạn.
  2. Khi người gửi chỉnh sửa, chúng tôi dịch lại phiên bản mới.
  3. Chúng tôi tính toán diff giữa bản dịch trước của bạn và bản dịch mới của bạn, bằng ngôn ngữ của bạn.
  4. Chúng tôi hiển thị diff đó nội tuyến — giống cách Git hiển thị cho bạn những gì đã thay đổi.

Vì vậy, khi "review by Tuesday" trở thành "review by Thursday" trong tiếng Anh, đồng nghiệp đọc tiếng Tây Ban Nha của bạn thấy martes → jueves được tô sáng, không phải một đoạn văn được dịch lại mà họ phải đọc lại.

Điều này yêu cầu xử lý luồng trò chuyện như một bộ đệm có trạng thái theo từng người xem, không phải một endpoint dịch-theo-yêu-cầu không trạng thái. Tài liệu và giọng nói không cần điều này. Trò chuyện thì có.


Luồng 3: Dịch ghi chú chia sẻ thời gian thực

Vấn đề: Chủ trì mở một khung ghi chú chia sẻ và bắt đầu gõ. Mỗi người tham gia thấy ghi chú bằng ngôn ngữ của họ, từng ký tự một, với cấu trúc của tài liệu — tiêu đề, danh sách lồng nhau, danh sách kiểm tra, khối mã — nguyên vẹn.

Ngân sách: Giống như trò chuyện (~nửa giây), nhưng với hai ràng buộc thêm:

  • Thứ đang được dịch thay đổi giữa chừng khi dịch. Chủ trì vẫn đang gõ. Một hệ thống ngây thơ dịch "toàn bộ tài liệu" mỗi lần gõ phím sẽ tạo ra nhấp nháy và tiêu tốn ngân sách API. Chúng tôi dịch ở mức chi tiết của đơn vị thay đổi, không phải toàn bộ tài liệu.
  • Cấu trúc phải tồn tại. Nếu bạn yêu cầu một mô hình dịch thuật dịch một blob markdown với ba danh sách lồng nhau, bạn nhận lại thứ trông giống bản gốc nhưng với cấu trúc phân cấp bị san bằng tinh tế, các mục được đánh số lại, hoặc thụt lề bị di chuyển. Chúng tôi không để mô hình thấy toàn bộ blob.

Luồng ghi chú khác với trò chuyện như thế nào

Bảo toàn cấu trúc là điều chính. Chúng tôi dịch mỗi mục danh sách độc lập thay vì như một tài liệu. Mô hình thấy:

"Đánh giá tuân thủ — Sản phẩm bàn giao Q2"

— không phải:

"# Kế hoạch dự án\n## Quý\n- Đánh giá tuân thủ — Sản phẩm bàn giao Q2\n- Chấm điểm nhà cung cấp\n - Nhà cung cấp Tier 1..."

Tài liệu bao bọc — các <ul>, tiêu đề, thụt lề — được tái dựng ở phía máy khách sử dụng cùng cấu trúc mà tài liệu gốc có, với mỗi nút lá được thay bằng bản dịch của nó. Mô hình không bao giờ được "cải thiện" cấu trúc phân cấp.

Ghi chú cũng sử dụng cùng mô hình diff theo từng người xem như chỉnh sửa trò chuyện: nếu chủ trì thay đổi một dòng, người xem bằng ngôn ngữ khác thấy các từ đã thay đổi được tô sáng, không phải một đoạn văn mới.


Luồng 4: Dịch tài liệu không đồng bộ

Vấn đề: Ai đó thả một PDF 40 trang, một tài liệu Word, một bản trình bày PowerPoint, hoặc một bảng tính Excel vào trò chuyện. Mỗi người tham gia có thể yêu cầu một bản sao bằng ngôn ngữ của mình. Tệp đã dịch phải trông giống bản gốc — cùng phông chữ, cùng bảng, cùng số trang, cùng tiêu đề, cùng biểu đồ ở đúng vị trí.

Ngân sách: Không có ràng buộc thời gian thực. Một phút là ổn. Hai phút là ổn. Ràng buộc là độ trung thực — nếu PDF đã dịch không trông giống bản gốc, người nhận sẽ không tin tưởng nó.

Tại sao luồng này không chia sẻ động cơ với giọng nói

Một LLM chung, ngay cả một LLM rất tốt, sẽ trả lại cho bạn một văn bản đã dịch của một tài liệu. Nó sẽ không trả lại cho bạn một PDF đã dịch với cùng bố cục. Mô hình không có khái niệm về "ngắt trang phải khớp với bản nguồn" hoặc "ô bảng phải giữ nguyên chiều rộng cột."

Cho bề mặt này, chúng tôi sử dụng DeepL Document API trực tiếp. Nó được xây dựng chuyên dụng để dịch tệp như tệp, không phải văn xuôi được trích xuất từ tệp. DeepL xử lý:

  • PDF (với bảo toàn bố cục)
  • DOCX, DOC
  • PPTX
  • XLSX

Tài liệu được tải lên luồng của DeepL, dịch ở phía máy chủ với định dạng nguyên vẹn, và trả về cùng định dạng. Sau đó, chúng tôi tải kết quả lên bộ lưu trữ đối tượng của mình và hiển thị lại trong trò chuyện dưới dạng tệp đính kèm có thể tải xuống.

Chi phí này là bao nhiêu và tại sao chúng tôi không giấu nó

DeepL tính phí tối thiểu 50.000 ký tự mỗi tài liệu — khoảng một đô la Mỹ mỗi tệp trên gói Pro, bất kể tài liệu là một trang hay ba mươi trang. Chúng tôi chịu chi phí đó thay vì tính phí theo từng tệp; nó hiển thị trong phần sử dụng dịch thuật của cuộc họp dưới dạng ký tự đã tính phí, chuyển đổi sang đơn vị từ khớp với cách phần còn lại của sản phẩm báo cáo hoạt động dịch.

Chúng tôi chọn DeepL cho bề mặt này vì dịch tệp như tệp chính xác là công việc nó được xây dựng để làm — chúng tôi không cố xây dựng một thứ tốt hơn. Điều ngược lại không đúng — DeepL không chạy luồng giọng nói trực tiếp kiểu như chúng tôi xây dựng cho các cuộc họp. Vấn đề khác; công cụ khác. Phiên bản trung thực của "cái gì vận hành dịch thuật InterMIND" là "động cơ đúng cho mỗi luồng" — không phải "động cơ của chúng tôi, ở mọi nơi."

Các ngôn ngữ mà luồng này phủ sóng nhưng giọng nói thì không

Luồng tài liệu phủ sóng 30 ngôn ngữ, so với 23 cho giọng nói. Các ngôn ngữ thêm bao gồm: tiếng Bulgaria, tiếng Hy Lạp, tiếng Estonia, tiếng Indonesia, tiếng Litva, tiếng Latvia, tiếng Slovak, tiếng Slovenia. (Tiếng Arabic cũng nằm trong danh sách này, và nó là một trong các ngôn ngữ thêm: nó được rút khỏi bộ chọn thời gian thực khi chất lượng giọng nói dưới tiêu chuẩn của chúng tôi, và điểm theo từng cặp vẫn công khai trên /benchmark — con số đó chính là thứ mang nó trở lại. Sự bất đối xứng chạy theo chiều ngược lại đối với tiếng Hindi — trực tiếp trên giọng nói, nhưng chưa có trên tệp.)

Sự bất đối xứng đó là có thật. Nó có nghĩa là một người tham gia tiếng Pháp trong một cuộc họp có thể yêu cầu PDF hợp đồng bằng tiếng Estonia mặc dù họ không thể nghe cuộc họp bằng tiếng Estonia. Chúng tôi đánh dấu nó trong bộ chọn thay vì che đậy bằng một con số duy nhất. Lý do có trong bài viết đếm ngôn ngữ.


Nơi các luồng giao nhau

Bốn luồng không chạy cô lập. Một phòng họp là nơi chúng chạm vào nhau, và các đường nối quan trọng:

  • Một tin nhắn trò chuyện với tệp đính kèm tài liệu kích hoạt luồng trò chuyện cho văn bản và luồng tài liệu cho tệp. Người tham gia bằng ngôn ngữ khác thấy tin nhắn được dịch ngay lập tức và bản dịch tệp đính kèm đến không đồng bộ dưới dạng có thể tải xuống.
  • Một ghi chú chia sẻ trích dẫn một dòng bản ghi giao nhau giữa ghi chú ↔ giọng nói. Bản ghi là thứ mà luồng giọng nói đã tạo ra cho ngôn ngữ của người gửi; bản dịch ghi chú tạo ra một bản sao theo từng người xem của trích dẫn đó bằng ngôn ngữ của mọi người khác, với nguồn gốc được bảo toàn.
  • Một bản ghi được xuất sau cuộc họp chạy luồng văn bản kiểu trò chuyện trên toàn bộ cuộc trò chuyện, tạo ra một tệp theo từng ngôn ngữ mà người tham gia có thể tải xuống. Đây là cùng đường dẫn mã như dịch trò chuyện, chỉ khác là theo lô.

Bộ chọn ngôn ngữ là một phần giao diện. Hạ tầng bên dưới là bốn luồng, giao tiếp với nhau.


Những gì chúng tôi cố tình không làm

  • Không có "mô hình dịch thống nhất." Chúng tôi không xây dựng một mô hình làm giọng nói, trò chuyện, ghi chú, và tài liệu. Sự đánh đổi giữa độ trễ và độ trung thực không có người chiến thắng. Chúng tôi sử dụng động cơ đúng cho mỗi bề mặt.
  • Không định tuyến lại thầm lặng. Nếu luồng tệp không thể dịch sang tiếng Hindi hôm nay, chúng tôi không âm thầm dự phòng sang động cơ giọng nói và giả vờ nó hoạt động — bộ chọn tệp đánh dấu khoảng trống thay vì giấu nó.
  • Không có "chúng tôi dịch sang 200 ngôn ngữ." Động cơ của chúng tôi xuất ra 24. Các bề mặt trực tiếp phân phối 23, tài liệu 30 — và thay vì một con số thân thiện với marketing, chất lượng theo từng cặp phải đứng trước mặt một kiểm toán viên được công khai trên /benchmark, bao gồm cả các cặp yếu hơn.

Tự mình thử

  • Thử bản demo trực tiếp — chạy luồng giọng nói trực tiếp trên âm thanh của bạn, bằng bất kỳ trong 23 ngôn ngữ sản phẩm nào. Cùng luồng đạt điểm trên /benchmark.
  • Xem benchmark — chất lượng theo từng cặp, theo từng tháng trên lưu lượng thực tế. Mọi cặp trong bộ chọn, mạnh hay yếu, đều có thể liên kết sâu.
  • Đọc phương pháp — các con số là gì, không là gì, người đánh giá là ai.

Bốn luồng, bốn động cơ, một phòng họp. Đó là sự thay thế trung thực cho trang how-it-works cũ.

— Đội ngũ Mind.com


Nguồn: DeepL — ngôn ngữ được hỗ trợ, DeepL — số lượng sử dụng và thanh toán (tối thiểu 50.000 ký tự mỗi tệp), FLORES-200; các sự thực luồng nội bộ được xác minh dựa trên mã đã phân phối, kiểm tra tháng 8 năm 2026.

Nhận bài viết mới và cập nhật sản phẩm qua email

Một email mỗi tháng với các bài viết mới và cập nhật sản phẩm. Hủy đăng ký bất cứ lúc nào.