Chuyển đến nội dung chính
SubtitleMatrix

Đọc văn bản thành giọng nói

Đầu vào mediaPhụ đề thành giọng nói
Hoặc dán văn bản phụ đề

Lần chạy đầu tiên tải mô hình giọng đọc và bộ chuyển âm — khoảng 98 MB cộng lại, do trang này phục vụ và được trình duyệt lưu đệm sau đó. Phụ đề hoặc văn bản bạn thả vào không bao giờ rời khỏi thẻ này. Chọn MP3 hoặc M4A sẽ tải thêm 31 MB bộ mã hóa, đó là lý do WAV là mặc định.

Tùy chọn

Một giọng quyết định trọng âm và âm sắc, và — ít rõ hơn — hệ âm mà văn bản được đọc theo. Ghép một giọng tiếng Tây Ban Nha với một câu tiếng Anh không thất bại: nó đọc các từ tiếng Anh bằng âm tiếng Tây Ban Nha, còn tệ hơn một thông báo lỗi. Bảy ngôn ngữ được đưa ra, không phải mười hai, vì bộ chuyển âm đi kèm trang này không có giọng cho tiếng Nhật hay tiếng Trung. Hãy nghe thử một tệp ngắn trước khi làm một tệp dài; mọi giọng dùng chung một mô hình, nên đổi giọng tốn một lần tổng hợp, không phải một lần tải.

Giọng đọc nhanh đến mức nào, được áp dụng thêm trên nhịp độ mà mô hình coi là tự nhiên. Mức Chậm là 0.8× và mức Nhanh là 1.2× — cố ý nhẹ, vì vượt khoảng 1.5× mô hình bắt đầu nuốt âm tiết và kết quả nghe như ai đó đang vội chứ không phải đang nói nhanh. Khi một cue phụ đề quá ngắn so với câu thoại của nó, trang này tự tăng tốc lên tới 1.4× trước khi cắt bớt, và mức tăng đó nhân với thiết lập bạn chọn ở đây.

WAV không nén, 24 kHz mono, được ghi ở đây không dùng bộ mã hóa nào — đó là lý do nó là mặc định và không có gì phải tải thêm cho nó. MP3 và M4A cần bộ máy video 31 MB để nén, nhưng ra nhỏ hơn khoảng mười lần: mười phút lời nói khoảng 28 MB dưới dạng WAV và khoảng 2.8 MB dưới dạng MP3. Chọn WAV để nghe thử một giọng, chọn MP3 để gửi tệp cho người khác.

Trang này đọc văn bản thành tiếng. Dán một đoạn hoặc thả một tệp — .txt, .srt, .vtt, bất kỳ định dạng nào trong mười hai định dạng phụ đề — chọn một trong mười giọng, và nhận lại một tệp âm thanh duy nhất đọc trọn từ đầu đến cuối. Không có gì được canh thời gian, vì không có gì để canh: đầu ra là một mạch đọc liền, không phải track dựng để nằm dưới hình. Đây là giọng tổng hợp do máy đọc, không phải lồng tiếng.

Khi tệp bạn thả vào là tệp phụ đề, timecode được phân tích rồi bỏ đi. Thứ được đọc là chữ của từng cue, theo thứ tự, nối thành đoạn; ngắt dòng trong một cue thành dấu cách vì đó là lựa chọn trình bày trên màn hình, còn ranh giới cue biến mất hoàn toàn. Đó là điều ngược lại với trang đọc phụ đề theo từng cue, và hai trang đứng cạnh nhau để lựa chọn hiện ra thay vì bị giấu trong một ô đánh dấu: một trang cho ra âm thanh bám dòng thời gian, trang kia cho ra âm thanh cứ thế trôi.

Văn bản được tổng hợp thành từng khúc chứ không một lượt. Bộ tokenizer của mô hình lặng lẽ cắt mọi thứ vượt 510 âm vị — một bài hai nghìn từ sẽ trở về hai câu đầu và tệp trông vẫn hoàn toàn hợp lệ. Nên văn bản được tách ở chỗ ngắt đoạn, rồi ở dấu kết câu, rồi mạnh tay hơn với một câu dài quá 400 ký tự, và các khúc được tổng hợp lần lượt với một khoảng nghỉ ngắn giữa chúng. Việc đọc diễn ra trên một luồng riêng, nên nút hủy dừng nó trong chớp mắt thay vì chờ câu hiện tại đọc xong, và trang vẫn dùng được trong lúc tạo âm thanh; phần tải mô hình khoảng 98 MB cũng hủy được giữa chừng. Chữ bạn dán không rời khỏi trình duyệt.

Câu hỏi thường gặp

Nếu tôi thả tệp .srt vào đây, bản đọc có gồm timecode hay số thứ tự cue không?

Không có cả hai. Tệp được phân tích bằng đúng tầng định dạng mà các trang chuyển đổi dùng, và chỉ chữ của từng cue được giữ — số thứ tự, mốc 00:00:01,000 -->, cùng mọi thẻ nội tuyến như <i> hay {\pos()} đều biến mất trước khi tổng hợp. Bạn nghe đúng các từ theo thứ tự xuất hiện. Nếu muốn mốc thời gian được tôn trọng thay vì bỏ đi, hãy dùng trang đọc tệp phụ đề thành âm thanh theo từng cue.

Ô dán văn bản nhận được cả bài dài hay chỉ một hai câu?

Cả bài dài vẫn được, vì văn bản được chia khúc trước khi tới mô hình. Nội dung dán được gói thành tệp văn bản thuần và vào cùng hàng đợi với tệp thả vào, nên nó hưởng cùng cách chia khúc 400 ký tự, cùng thanh tiến trình và cùng nút hủy. Giới hạn thực tế là bộ nhớ chứ không phải độ dài: một bài dài cho một WAV dài, và một giờ PCM mono 24 kHz là vài trăm megabyte, nên chọn MP3 đáng khi bản đọc dài hơn vài phút.

Vì sao khoảng nghỉ giữa các câu ở đây nghe dài hơn khi đọc phụ đề?

Vì một phần tư giây im lặng được chèn giữa các khúc để các câu liền nhau không dính vào nhau, trong khi trang đọc phụ đề đặt từng dòng đúng mốc bắt đầu của cue và lấp đúng khoảng trống phụ đề đã có. Ở đây khoảng nghỉ cố định 250 ms bất kể nội dung, vì không có dòng thời gian nào để trung thành. Các câu trong cùng một khúc do cách mô hình xử lý dấu câu nối, nên chỉ ranh giới khúc — khoảng mỗi 400 ký tự — nhận thêm khoảng nghỉ đó.

Có những giọng nào cho tiếng Tây Ban Nha và Bồ Đào Nha, một giọng hay nhiều giọng?

Mỗi ngôn ngữ một giọng: ef_dora cho tiếng Tây Ban Nha và pf_dora cho Bồ Đào Nha Brasil, bên cạnh hai biến thể tiếng Anh Mỹ (af_heart, af_bella), thêm một giọng Mỹ (am_michael), hai giọng Anh (bf_emma, bm_george), ff_siwis cho tiếng Pháp, hf_alpha cho tiếng Hindi và if_sara cho tiếng Ý. Nhiều giọng tiếng Anh vì đó là nơi phần lớn yêu cầu đọc nằm; ngôn ngữ khác có một giọng để danh sách đủ ngắn mà nghe thử hết. Một giọng đặt cả giọng điệu lẫn âm sắc, nên nó cũng quyết định dùng âm vị của ngôn ngữ nào để đọc chữ.

MP3 hay M4A tạo ra có an toàn để công bố như một đoạn podcast không?

Về kỹ thuật thì có — cả hai là container chuẩn được một bản ffmpeg cục bộ mã hóa, và âm thanh là 24 kHz mono, ổn cho lời nói và mỏng cho nhạc. Về biên tập, hãy nghe trước khi công bố: mô hình đôi khi nuốt phụ âm cuối, nhấn sai một danh từ riêng, hoặc đọc từ viết tắt theo từng chữ cái. Không gì được tải lên trong lúc đó, không có watermark hay theo dõi nào được nhúng, nhưng giọng tổng hợp cũng không tự khai nó là máy đọc, nên nếu khán giả của bạn chờ một người đọc thật, hãy nói rõ đây là giọng tổng hợp.

Công cụ liên quan