Máy đọc thành tiếng thế nào. Bên trong kỹ thuật ElevenLabs.
Bạn gõ một câu. Loa phát ra giọng người. Giữa hai thứ đó là một pipeline năm khối: chuẩn hoá văn bản, grapheme-to-phoneme, prosody, acoustic model, vocoder. Thêm một lớp speaker embedding, và hệ thống học xong một giọng chỉ sau 30 giây audio.
Bạn mở Google Maps, bấm dẫn đường về nhà. Một giọng nói vang lên trong xe: “Rẽ phải tại ngã tư Nguyễn Huệ sau 200 mét”. Giọng đó không phải ai đọc sẵn từng câu trong phòng thu. Toàn bộ câu nói vừa được máy ghép ra trong chưa tới một giây, từ một chuỗi ký tự thuần mà app vừa tính ra từ bản đồ.
Hiện tượng đó được gọi là text-to-speech(TTS). Đầu vào là một đoạn văn bản bình thường. Đầu ra là một đoạn âm thanh nghe như người thật đang đọc. Nhìn từ ngoài trông đơn giản, nhưng ở giữa có năm sáu bước rất kỹ thuật, mỗi bước phụ trách một phần nhỏ của cảm giác “nghe y như người”.
Bài viết này mổ xẻ chuỗi các bước đó theo thứ tự một câu tiếng Việt đi qua pipeline của một TTS hiện đại, lấy ElevenLabs làm mốc tham chiếu vì đây là hệ thống thương mại có tài liệu kỹ thuật công khai nhất hiện nay. Cuối bài nói tới voice cloning và những rủi ro mà cùng một pipeline tạo ra khi rơi vào tay kẻ xấu.
Pipeline từ chữ đến sóng âm
Ở mức cao nhất, một TTS model hiện đại không làm một phép biến đổi duy nhất từ chữ sang âm. Nó chia việc đó thành một dây chuyền năm khối, mỗi khối nhận đầu ra của khối trước, chế biến thêm, rồi đẩy sang khối sau. Bố cục đó cho phép mỗi khối được huấn luyện riêng với dữ liệu chuyên biệt, và cho phép thay một khối mới mà không phá vỡ toàn bộ hệ thống.
Câu “Chào bạn, hôm nay 23 tháng 4 năm 2026” đi qua pipeline như sau. Đầu tiên text normalisation viết lại các con số và ký hiệu thành dạng chữ đọc được. Sau đó grapheme-to-phoneme (G2P) chuyển từng chữ thành chuỗi phoneme, tức là đơn vị âm thanh nhỏ nhất phân biệt nghĩa trong ngôn ngữ. Tiếp theo prosody model quyết định nhịp, cao độ, và chỗ nhấn cho từng phoneme. Bộ acoustic model biến chuỗi phoneme kèm prosody thành một bảng năng lượng theo tần số và thời gian. Cuối cùng vocoder chuyển bảng năng lượng đó thành sóng âm thật mà loa có thể phát.
Năm khối, năm model nhỏ, chạy nối tiếp. Từ bên ngoài, người dùng chỉ thấy duy nhất khoảng trễ từ lúc gõ chữ đến lúc loa kêu, thường nằm trong vài trăm ms với một server TTS được tối ưu.
Đọc con số, không phải nhìn con số
Đưa cho một người Việt chuỗi ký tự 23/4/2026, họ biết phải đọc là “ngày hai mươi ba tháng tư năm hai nghìn không trăm hai mươi sáu”. Đưa chính chuỗi đó cho một acoustic model, nó không hiểu. Model chỉ có quan hệ giữa chuỗi ký tự và âm thanh tương ứng đã thấy trong dữ liệu huấn luyện. Chuỗi 23/4/2026 gần như không bao giờ xuất hiện nguyên văn trong tập audio huấn luyện, nên không có âm thanh đáng tin nào gắn với nó.
Bước đầu tiên trong pipeline, text normalisation, giải quyết đúng vấn đề này. Một tập quy tắc cứng viết tay cộng với một model nhỏ đọc đoạn đầu vào, phát hiện các token đặc biệt, rồi viết lại chúng thành dạng đã có trong tập huấn luyện.
Vài ví dụ trên tiếng Việt. Số 123biến thành “một trăm hai mươi ba”. Viết tắt TP.HCMbiến thành “Thành phố Hồ Chí Minh”. Số điện thoại 0903123456biến thành “không chín không ba, một hai ba, bốn năm sáu” với nhịp nhóm ba chữ số. Ngày 23/4/2026biến thành “ngày hai mươi ba tháng tư năm hai nghìn không trăm hai mươi sáu”. Mỗi quy tắc đi kèm một bộ heuristic cho ngữ cảnh: 12/3 có thể là ngày tháng, có thể là phân số, có thể là tỷ số trận đấu. Model hay hệ thống phía sau cần nhìn cả câu chứ không chỉ token rời.
Tới cuối bước này, đầu vào không còn ký tự lạ nào. Toàn bộ chuỗi đều là từ đọc được. Đây cũng là bước quyết định phần lớn cảm giác “TTS này nói tiếng Việt tự nhiên chưa”: một pipeline dịch con số và từ viết tắt sai sẽ nghe lộ máy ngay từ giây đầu.
Chữ viết và âm đọc không trùng nhau
Bạn nhìn chữ phở. Bạn đọc ra âm /fəː˧˩˧/. Giữa cái bạn nhìn và cái bạn phát ra có một bước dịch mà não bạn làm tự động, gần như miễn phí. Một TTS model cũng phải làm bước đó, gọi là grapheme-to-phoneme (G2P). Grapheme là ký tự trên trang. Phoneme là đơn vị âm thanh nhỏ nhất phân biệt nghĩa giữa hai từ trong cùng một ngôn ngữ.
Lý do cần bước này nằm ở chỗ chữ viết và âm đọc không tương ứng một-một. Tiếng Anh có chữ read đọc thành /riːd/ ở thì hiện tại và /rɛd/ ở thì quá khứ. Tiếng Việt đỡ hơn nhờ bảng chữ cái latin đã được thiết kế theo âm, nhưng vẫn có trường hợp phụ âm ghép: gi trước a đọc là /z/ ở Bắc và /j/ ở Nam, ph luôn đọc là /f/ chứ không phải hai âm /p/ và /h/ ghép lại. Dấu thanh cũng cần được nhận ra riêng để phoneme mang đủ thông tin cho bước prosody sau đó.
Các G2P model hiện đại là một seq2seq nhỏ, thường cỡ vài triệu tham số. Đầu vào là chuỗi ký tự, đầu ra là chuỗi phoneme trong bảng ký hiệu IPA hoặc một bảng nội bộ do nhóm làm TTS tự định nghĩa. Model này được huấn luyện trên một bảng tra thủ công cỡ trăm nghìn từ cộng với tập audio đã được gắn nhãn phoneme. Với từ mới hoặc tên riêng chưa xuất hiện trong bảng tra, model suy ra phoneme dựa trên mẫu chính tả học được, gần giống cách bạn đọc tên nước ngoài lần đầu.
Cùng câu, khác dấu, khác nhạc
Gõ câu “ăn chưa” vào một TTS với dấu hỏi ở cuối. Nghe thấy cao độ đi lên ở âm cuối, ngữ điệu hỏi rõ ràng. Đổi dấu hỏi thành dấu chấm, gõ lại. Cùng một chuỗi phoneme, nhưng ngữ điệu đi ngang, thành một câu kể. Bước phụ trách sự khác biệt đó là prosody model.
Prosody, tức nhịp điệu, là tập hợp ba tín hiệu trên mỗi phoneme: độ dài (duration), cao độ (pitch contour), và năng lượng (energy). Ba tín hiệu này quyết định một câu nghe như đang hỏi, đang kể, đang ngắt giữa hai ý, hay đang nhấn vào một từ quan trọng. Không có prosody, chuỗi phoneme đúng đến đâu cũng phát ra như một dòng chữ đọc đều đều, nghe máy móc tức thì.
Prosody model nhận hai thứ: chuỗi phoneme đã sinh ở bước G2P, và một ngữ cảnh từ câu nguồn (dấu câu, trọng âm từ loại, nhãn cảm xúc nếu người dùng bật tuỳ chọn đó). Nó xuất ra một pitch contour (đường cong cao độ theo thời gian) và một bảng duration cho biết mỗi phoneme nên kéo dài bao lâu. Đây là khối nhỏ nhưng ảnh hưởng lớn: phần lớn khoảng cách cảm nhận giữa TTS rẻ và TTS đắt nằm ở chất lượng của prosody, không phải ở acoustic model.
Từ âm vị đến bản đồ năng lượng
Sau G2P và prosody, pipeline đã có chuỗi phoneme kèm pitch, duration, energy cho từng âm. Bước tiếp theo là biến mớ đó thành một đối tượng trung gian mà vocoder ở cuối có thể đọc được. Đối tượng đó là mel-spectrogram.
Một mel-spectrogram là một bảng số hai chiều: trục ngang là thời gian cắt thành các khung nhỏ cỡ 10ms, trục dọc là tần số, mỗi ô chứa năng lượng âm thanh ở khung thời gian và tần số đó. Nhìn bằng mắt, nó giống một biểu đồ nhiệt, chỗ sáng là năng lượng cao, chỗ tối là im lặng. Trục tần số được chia theo thang mel, thang phi tuyến được thiết kế theo độ nhạy của tai người: tai nghe rõ khác biệt giữa 200Hz và 400Hz hơn là giữa 10kHz và 10.2kHz, nên bảng dồn phân giải về phía tần số thấp.
Acoustic model, thường là một transformer seq2seq kiểu FastSpeech hoặc một diffusion model, học quan hệ giữa (phoneme + prosody) và mel-spectrogram tương ứng. Nó được huấn luyện trên hàng nghìn giờ audio người thật đã được cắt khớp theo phoneme và bóc sẵn mel-spectrogram. Đầu ra là một bảng số chứ chưa phải âm thanh. Bảng này đẹp ở chỗ nó nhỏ, mịn, và dễ dự đoán hơn sóng âm thô: ở bước này model làm việc với vài chục khung trên một giây, thay vì hàng chục nghìn mẫu.
Vocoder dựng sóng âm thật
Mel-spectrogram chưa phát được qua loa. Loa cần một chuỗi mẫu sóng âm ở tốc độ 22050 hoặc 44100 mẫu trên giây. Bước cuối cùng của pipeline làm đúng việc dựng lại sóng âm đó từ bảng năng lượng. Bước này do một vocoder đảm nhiệm.
Thế hệ vocoder đầu tiên dùng một thuật toán xác định tên là Griffin-Lim. Nó ước lượng pha bị mất khi chuyển từ sóng âm sang spectrogram bằng cách lặp đi lặp lại một phép biến đổi Fourier thuận nghịch. Cách này rẻ, nhưng âm ra khô, lộ vết kim loại ở âm xát và âm bật. Thế hệ sau, khởi đầu bằng WaveNet của DeepMind năm 2016, thay bằng một mạng nơ-ron tự hồi quy: sinh ra từng mẫu sóng âm một, mỗi mẫu phụ thuộc vào các mẫu đã sinh trước đó và vào mel-spectrogram đầu vào. Chất lượng gần như bằng giọng người, nhưng chạy chậm vì phải sinh tuần tự tới 22050 bước mỗi giây audio.
Thế hệ đang chạy trong ElevenLabs và các hệ thống thương mại tương đương là vocoder dạng song song, đại diện phổ biến nhất là HiFi-GAN. Đây là một generator GAN được huấn luyện đối kháng với hai discriminator, sinh một khối mẫu sóng âm trong một lần forward thay vì từng mẫu một. Tốc độ nhanh hơn WaveNet cỡ vài trăm lần trên cùng phần cứng, với chất lượng xấp xỉ. Nhánh mới hơn nữa dùng diffusion model (WaveGrad, DiffWave), đánh đổi tốc độ lấy một ít chất lượng ở âm cuối dải cao.
30 giây để học một giọng
Một tính năng nổi bật của ElevenLabs là cho người dùng upload khoảng 30 giây đến vài phút thu âm giọng của mình, rồi tổng hợp câu mới bằng chính giọng đó. Hiện tượng này gọi là voice cloning, nhân bản giọng. Với một pipeline truyền thống, để có một giọng đọc mới cần vài chục giờ thu âm và một lần huấn luyện lại acoustic model. Giảm xuống còn 30 giây đòi hỏi một cách tiếp cận khác.
Kỹ thuật chủ đạo là speaker embedding. Một encoder riêng, được huấn luyện trên hàng nghìn giọng khác nhau, học cách biến bất kỳ đoạn audio ngắn nào thành một vector vài trăm chiều đại diện cho đặc điểm của người nói: tần số cơ bản, hình thái formant, màu giọng, cách hít thở. Acoustic model và vocoder khi tổng hợp câu mới được điều hoà (conditioned) trên vector này. Nói cách khác, pipeline vẫn chạy năm bước như cũ, nhưng mỗi bước “biết” đang phải phát ra giọng ai.
Kết quả là một giọng đọc gần giống bản gốc, đủ để qua mặt người quen trong một cuộc gọi ngắn. Càng nhiều audio tham chiếu (đi từ 30 giây lên vài phút lên vài giờ), độ giống càng cao và tay nghề giọng càng đa dạng. Hệ thống thương mại thêm một lớp fine-tune nhẹ cho các khách hàng professional, đẩy chất lượng lên mức có thể dùng cho audiobook dài hoặc podcast đều đặn.
Cùng một pipeline, hai mặt lợi hại
Voice cloning là trường hợp mẫu của một công nghệ hữu ích và nguy hiểm cùng lúc. Mặt hữu ích thì rõ: người mất giọng sau phẫu thuật lấy lại giọng cũ của mình, nhà làm phim dựng lại giọng diễn viên đã mất, studio tiểu thuyết audio sản xuất nhanh hơn vài bậc. Mặt nguy hiểm đã đi vào bản tin: kẻ gian ghép 30 giây giọng mẹ từ Facebook, gọi điện cho con cái dựng kịch bản cấp cứu, yêu cầu chuyển khoản gấp. Nạn nhân nhận ra giọng thân quen, bộ não tin ngay, tiền đi trước khi lý trí kịp kiểm chứng.
Các biện pháp bảo vệ hiện tại đi theo hai hướng. Một, audio watermark: nhà cung cấp TTS nhúng một dấu hiệu rất nhỏ vào sóng âm, không nghe thấy nhưng máy phát hiện được. ElevenLabs công bố cơ chế này từ 2023. Nhược điểm: watermark bị loại bỏ được nếu attacker biết cơ chế, và không áp dụng được cho TTS mã mở tự host. Hai, model-level consent: trước khi clone một giọng, hệ thống bắt người upload đọc một câu xác nhận ngẫu nhiên theo thời gian thực để khớp với audio gốc. Cách này ngăn được một phần trường hợp ghép giọng từ clip công khai trên mạng, nhưng chưa phải giải pháp toàn diện.
Quy tắc thực tế cho người dùng phổ thông: nếu nhận một cuộc gọi khẩn cấp có yêu cầu tiền, dù giọng có quen đến đâu, gọi lại qua số cũ đã lưu trong danh bạ trước khi làm bất cứ điều gì. Đó là một thói quen rẻ, và nó vô hiệu hoá gần như toàn bộ kịch bản lừa đảo dựa trên voice cloning hiện nay.
Nhìn cả pipeline, TTS hiện đại là một minh hoạ đẹp của nguyên tắc chia bài toán thành các module nhỏ: mỗi khối chỉ biết một việc, kết nối bằng một cấu trúc dữ liệu rõ ràng (ký tự, phoneme, mel-spectrogram, sóng âm). Chính sự tách lớp đó giúp ngành audio AI tiến bộ nhanh: cải tiến một khối không cần huấn luyện lại toàn bộ. Và cũng chính sự tách lớp đó, qua speaker embedding, biến một chiếc loa nhân tạo thành một bản sao giọng bất kỳ chỉ sau nửa phút nghe.