Hãy tưởng tượng bạn tham gia một cuộc gọi video với một nhà cung cấp ở Seoul hoặc một khách hàng ở São Paulo và nói chuyện chính xác như cách bạn nói với một đồng nghiệp ở ngay phòng bên cạnh. Không cần thông dịch viên phải chờ đợi trong trạng thái tắt tiếng. Không có ai phải cúi đầu bên bàn phím để gõ vào khung chat. Dịch thuật giọng nói bằng AI thời gian thực đang biến điều này thành hiện thực ngay lúc này. Thay vì thay thế sự kết nối giữa con người, nó loại bỏ những rào cản ngăn cách chúng ta. Nhưng việc xây dựng một hệ thống mang lại cảm giác như một cuộc trò chuyện tự nhiên thực sự rất khó khăn. Bạn không chỉ đơn thuần là chuyển đổi từ ngữ. Bạn đang tái cấu trúc luồng nói của con người bên trong phần mềm.
Năm lớp của quy trình (Pipeline)
Một hệ thống hoạt động được chia thành năm phần riêng biệt. Chỉ cần bỏ qua hoặc làm yếu một phần, toàn bộ ảo giác sẽ tan biến.
Lớp Truyền thông Giọng nói (Voice Communication Layer) là nền tảng. Nó xử lý việc thu âm từ micro, khử tiếng ồn, triệt tiêu tiếng vang và truyền tải gói tin qua internet. Hãy coi nó như một đường dây điện thoại kỹ thuật số. Nếu lớp này làm mất gói tin hoặc gây ra hiện tượng jitter, phần còn lại của quy trình sẽ phải làm việc với những dữ liệu rác. Hầu hết các đội ngũ đều sử dụng WebRTC ở đây vì nó xử lý các kết nối ngang hàng (peer-to-peer) và tích hợp sẵn các biện pháp bảo vệ âm học.
Tiếp theo là Chuyển đổi Giọng nói thành Văn bản (STT). Bạn cần chuyển đổi âm thanh đầu vào thành văn bản nhanh nhất có thể. Các công cụ STT dạng streaming không chờ đợi sự im lặng. Chúng đưa ra các bản ghi chép từng phần ngay khi các âm tiết vừa xuất hiện. Hành vi này là thiết yếu. Nếu mô-đun STT của bạn lưu đệm cho đến khi nghe thấy một khoảng nghỉ, bạn đã lãng phí những mili giây quý giá. Các triển khai streaming hiện đại xử lý âm thanh đầu vào một cách liên tục và điều chỉnh các dự đoán của chúng khi có thêm ngữ cảnh.
Dịch máy (MT) nằm ở giữa. Nó lấy văn bản thô và viết lại bằng ngôn ngữ mục tiêu. Các hệ thống sơ khai chỉ làm được việc hoán đổi cụm từ. Các mô hình dựa trên transformer hiện nay xử lý cú pháp và các phụ thuộc khoảng cách xa tốt hơn nhiều, nhưng chúng vẫn đòi hỏi sự tích hợp cẩn thận. Bạn cần một mô-đun MT chấp nhận đầu vào dạng streaming để nó có thể bắt đầu dịch các phân đoạn câu trước khi người nói kết thúc ý tưởng.
Sau đó là Chuyển đổi Văn bản thành Giọng nói (TTS). Đây là nơi hệ thống của bạn tìm thấy giọng nói của mình. Công nghệ TTS nối âm (concatenative TTS) cũ nghe giống như giọng GPS thông báo lối ra đường cao tốc. Các mô hình Neural TTS đã thay đổi cuộc chơi bằng cách dự đoán trực tiếp các phổ ký (spectrograms) hoặc dạng sóng thô (raw waveforms). Chúng tạo ra những giọng nói có sự lên xuống, trầm bổng và nhịp thở. Chúng cũng có thể bảo tồn một số sắc thái cảm xúc, điều này rất quan trọng vì một lời xin lỗi vô hồn được đưa ra bằng giọng máy móc đơn điệu có thể nghe như đang mỉa mai một cách vô ý.
Cuối cùng, lớp Truyền tải Âm thanh (Audio Streaming) sẽ gửi giọng nói đã dịch trở lại người nghe. Thời điểm cũng rất quan trọng ở đây. Âm thanh tổng hợp phải khớp với thời gian mạng để không đến quá sớm gây ra tiếng vang, hoặc quá muộn khiến người nghe phải chờ đợi trong im lặng.
Vấn đề về Độ trễ
Độ trễ (Latency) là kẻ thù lớn nhất của bạn. Cuộc hội thoại giữa con người chỉ chấp nhận những khoảng ngắt rất ngắn. Nếu hệ thống đợi người dùng nói hết cả câu rồi mới bắt đầu dịch, sự tương tác sẽ cảm thấy chậm chạp và rời rạc. Mọi người bắt đầu nói chèn lên nhau, hoặc tệ hơn, họ rơi vào nhịp điệu cứng nhắc như đang nói qua bộ đàm. Mục tiêu của bạn nên là tổng độ trễ đầu cuối (end-to-end) dưới một giây.
Để đạt được mốc đó, bạn phải xử lý âm thanh theo từng đoạn nhỏ (chunks). Hãy giữ kích thước đoạn trong khoảng từ 20 mili giây đến 100 mili giây. 20 mili giây nắm bắt xấp xỉ thời lượng của một phụ âm đơn lẻ. 100 mili giây chứa khoảng một âm tiết rưỡi. Hãy đưa các đoạn này vào một quy trình streaming để STT, dịch thuật và TTS đều có thể làm việc trên các thông tin từng phần. Không có gì được phép chờ đợi cho đến khi kết thúc câu.
Sử dụng xử lý âm thanh dạng streaming ở mọi giai đoạn. Điều đó có nghĩa là công cụ STT liên tục đưa ra các bản ghi chép từng phần, công cụ MT dịch các phân đoạn ngay khi nhận đủ số lượng từ để tạo thành một mệnh đề mạch lạc, và công cụ TTS bắt đầu nói nửa đầu câu trong khi nửa sau vẫn đang được giải mã.
Để đạt được độ trễ dưới một giây, cần có sự kỷ luật trong mọi bước: thu âm, mã hóa, truyền tải, xếp hàng, xử lý, tổng hợp và phát lại. Loại bỏ việc đệm (buffering) không cần thiết ở mỗi bước. Ví dụ, tránh chạy các thuật toán khử tiếng ồn cần tới nửa giây nhìn trước (lookahead) trừ khi thực sự cần thiết. Sử dụng các giao thức nén hiệu quả như Opus thay vì PCM thô. Thực hiện suy luận (inference) trên các máy chủ cạnh (edge servers) nằm gần cả hai người gọi về mặt địa lý để các vòng lặp mạng (network round trips) luôn ngắn.
Nơi các mô hình AI vẫn còn gặp khó khăn
AI mang đến những rào cản đặc thù mà các trình dịch sao chép-dán chưa bao giờ phải đối mặt.
Ngữ cảnh thực sự rất khó khăn. Trong tiếng Anh, từ "duck" có thể là một con vật, một động từ có nghĩa là cúi đầu xuống, hoặc thậm chí là một từ thân mật trong một số phương ngữ nhất định. Một công cụ nếu chỉ nhìn từ đó một cách cô lập sẽ đoán sai. Việc khuếch đại luồng (streaming amplification) khiến điều này trở nên khó khăn hơn vì hệ thống phải chốt một từ trước khi toàn bộ câu làm rõ ý nghĩa của nó. Một số đội ngũ giải quyết vấn đề này bằng cách xây dựng các cửa sổ hoàn tác (rollback windows) nhỏ vào công cụ STT, cho phép nó chỉnh sửa bản ghi nếu âm thanh sau đó làm thay đổi cách diễn giải.
Độ tự nhiên của giọng nói quan trọng hơn nhiều so với những gì hầu hết các kỹ sư mong đợi. Mọi người ghét những âm thanh máy móc. Các mô hình Neural TTS giữ được cảm xúc trong giọng nói bằng cách sao chép các mẫu ngữ điệu (prosody patterns) từ tiếng nói con người. Nếu người nói ban đầu có vẻ hào hứng hoặc lo lắng, đầu ra được dịch cũng nên mang theo một phần năng lượng đó thay vì đọc mọi dòng như một bản tin thời tiết. Việc truyền các dấu câu hoặc dấu hiệu ngữ điệu từ âm thanh nguồn vào mô-đun TTS sẽ giúp bảo tồn kết cấu con người đó.
Các cuộc hội thoại thường rất lộn xộn. Mọi người ngắt lời nhau, nói ngược lại, nói "ờ", và bắt đầu những câu mà họ không bao giờ kết thúc. Hệ thống của bạn cần Voice Activity Detection (VAD) để xử lý những quãng ngắt này một cách thông minh. Một VAD tốt sẽ phân biệt được giữa tiếng nói thực sự và tiếng ồn nền, nhưng cũng phân biệt được giữa một khoảng dừng ngắn trong một lượt nói và điểm kết thúc thực sự của lượt nói đó. Nếu VAD quá nhạy, nó sẽ cắt mất phần đầu của các câu trả lời. Nếu nó quá thận trọng, nó sẽ gửi khoảng lặng qua công cụ dịch, gây lãng phí tài nguyên tính toán và tạo ra những khoảng trống kỳ lạ trong luồng hội thoại.
Khả năng mở rộng và Bảo mật
Hãy xây dựng để có thể mở rộng ngay từ bản phác thảo kiến trúc đầu tiên. Một kiến trúc nguyên khối (monolith) có thể dịch một cuộc gọi mượt mà sẽ sụp đổ dưới tải trọng của hàng ngàn cuộc hội thoại đồng thời. Hãy sử dụng microservices để bạn có thể mở rộng từng giai đoạn một cách độc lập. Nếu hàng đợi TTS của bạn bị tắc nghẽn vì một ngôn ngữ yêu cầu độ phức tạp về ngữ âm cao hơn ngôn ngữ khác, bạn có thể khởi chạy thêm nhiều worker TTS mà không cần chạm vào cụm STT. Nếu dịch vụ MT của bạn bị quá tải với một cặp ngôn ngữ cụ thể, bạn có thể cô lập và mở rộng riêng thành phần đó.
Bảo mật là yếu tố tiên quyết. Dữ liệu giọng nói là dữ liệu sinh trắc học và mang tính cá nhân sâu sắc. Hãy sử dụng mã hóa đầu cuối để bảo vệ âm thanh thô trong quá trình truyền tải. Đừng lưu trữ dữ liệu giọng nói thô trừ khi bạn có một lý do cụ thể và đã được công bố, chẳng hạn như sự đồng ý rõ ràng của người dùng để cải thiện mô hình. Ngay cả khi đó, hãy lưu trữ các bản ghi dưới dạng mã hóa và xóa chúng theo một lịch trình nghiêm ngặt. Một hệ thống dịch thuật giọng nói làm rò rỉ nội dung cuộc gọi hoặc bí mật lưu giữ các cuộc hội thoại sẽ phá hủy lòng tin của người dùng vĩnh viễn.
Bắt đầu xây dựng
Các nhà phát triển hiện đã có quyền truy cập vào các mô hình STT mã nguồn mở, các API MT dựa trên đám mây và các checkpoint neural TTS đã được huấn luyện trước mà vài năm trước đây là không thể tìm thấy. Các mảnh ghép đã sẵn sàng. Kiến trúc đã được hiểu rõ.
Hãy bắt đầu từ quy mô nhỏ. Truyền hai giây âm thanh từ microphone qua một công cụ STT dạng streaming
