Bỏ qua tới nội dung
Yappy Tải xuống
Ngôn ngữ: vi

mảnh ghép mà không ai khác chỉ bạn

Từ chữ viết thành lời nói.

Đọc to không phải đánh vần, mà là diễn giải. “1492” đọc là “một nghìn bốn trăm chín mươi hai”; “Henry VIII” đọc là “Henry thứ tám”, nhưng “Louis XIV” tiếng Pháp lại đọc là “Louis mười bốn”; “EL CID” không phải số La Mã; FBI thì đánh vần từng chữ, NASA thì không. Trước khi tổng hợp nổi một âm tiết, Yappy đã chuyển văn bản thành kịch bản đọc: bản nhạc ghi đúng những gì giọng nói sắp đọc.

Trình soạn kịch bản

Thử ngay tại đây: vẫn là chính Rust của ứng dụng, biên dịch để chạy trong trình duyệt của bạn.

Kịch bản sẽ hiện ra ở đây, phần đã chuyển đổi được gạch chân.

Mười hai nghề trong một lượt.

Ngày tháng

“24/5/1533” được đọc trọn vẹn, theo đúng trật tự và cách nói của từng ngôn ngữ.

Giờ

“14:05” được đọc như người thật nói, chứ không như chiếc đồng hồ đọc.

Tiền tệ

“3,50 €” được đọc thành “ba euro năm mươi”, đúng cách tiếng đó gọi số tiền.

Phần trăm

“7%” đọc là “bảy phần trăm”, còn “0,5%” không biến thành “không phẩy năm”.

Đơn vị

“230 °C” đọc là “hai trăm ba mươi độ C”.

Số thứ tự

“3.ª” được đọc thành “tercera”, với đúng giống và biến cách nếu thứ tiếng đó có.

Số La Mã có nguyên tắc

“thế kỷ XX” đọc như số đếm, “Enrique VIII” đọc như số thứ tự, còn “EL CID” không phải là số.

Từ viết tắt theo phát âm

FBI thì đánh vần từng chữ, NASA thì đọc trọn một mạch. Quyết định là cách nó nghe, không phải một danh sách.

Chữ viết tắt

“v.v.”, “tr.”, “TK XIX”: mỗi thứ tiếng có bảng riêng của nó.

Số lớn

Bằng ngữ pháp RBNF của Unicode CLDR, có luôn cả giống và biến cách.

31 thứ tiếng

Cùng một bộ quy tắc, nhưng theo ngữ pháp của từng thứ tiếng. Không có danh sách viết tay.

Nhịp điệu

Tiêu đề nghỉ lấy hơi sau khi đọc xong; các danh sách giữ nhịp đều đặn. Khoảng nghỉ thuộc về kịch bản, không thuộc về tình cờ.

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

Ngữ pháp RBNF là gì?
RBNF là viết tắt của Rule-Based Number Format: bộ quy tắc mà Unicode CLDR dùng để mô tả cách đọc một con số trong từng thứ tiếng. Đó không phải bảng nghìn từ, mà là một ngữ pháp: nhờ vậy nó biết tiếng Tây Ban Nha nói “doscientas páginas” chứ không phải “doscientos páginas”, biết tiếng Nga biến cách số từ, và biết tiếng Pháp đếm tới chín mươi bằng từng chục hai mươi. Yappy diễn giải chúng bằng Rust thuần, không hề có danh sách viết tay.
Vì sao cần bộ soạn kịch bản? Giọng đọc tự lo không được à?
Không, và đó là chủ ý. Mô hình giọng nói của Yappy làm việc ở cấp ký tự: nó đọc đúng y những gì được đưa vào. Nhờ vậy nó nhanh và nhẹ, nhưng cũng có nghĩa là nếu nhận “1492”, nó sẽ cố đọc y như vậy, từng ký tự một. Với mô hình kiểu này, chuẩn hoá chính là phát âm. Bộ soạn kịch bản là mảnh ghép biến mỗi con số, mỗi chữ viết tắt, mỗi ký hiệu thành những từ mà một con người sẽ nói.
Hoạt động với bao nhiêu thứ tiếng?
Với cả 31 thứ tiếng mà giọng đọc hỗ trợ, mỗi thứ có luật riêng: thứ tự ngày tháng, cách nối tên đồng tiền, số thứ tự, chữ viết tắt và số La Mã. “Thế kỷ XV” đọc là “thế kỷ mười lăm” theo kiểu Tây Ban Nha, còn tiếng Anh thì “fifteenth century”; “Louis XIV” là “Louis quatorze” chứ không phải “Louis fourteenth”. Cùng mười hai đầu việc, ba mươi mốt bộ ngữ pháp.
Vì sao karaoke luôn rơi đúng vào từ đang đọc?
Vì kịch bản không chỉ là văn bản đã biến đổi: nó lưu sơ đồ giữa chữ viết và lời đọc. Khi giọng đọc nói “một nghìn bốn trăm chín mươi hai”, kịch bản biết bốn từ đó đến từ bốn chữ số của “1492”, nên dấu gạch chân đậu lên đúng chỗ mà không bị lệch. Đó là khác biệt giữa rọi sáng văn bản và đoán mò.
Có từ bị phát âm sai. Tôi có thể sửa lại không?
Tính đến hôm nay vẫn chưa có từ điển phát âm dành cho người dùng. Vì mô hình đọc theo từng ký tự, cách nhanh là viết từ đó theo đúng âm của nó trong trình soạn thảo rồi nghe lại. Còn nếu lỗi nằm ở một quy tắc chung (một từ viết tắt, một tên tắt, một đơn vị), hãy kể lại trong các issue trên GitHub: các bảng của bộ kịch bản hóa lớn dần nhờ từng trường hợp như thế.
Bộ kịch bản hóa trên trang này có giống bộ trong ứng dụng không?
Cùng một mã nguồn, được biên dịch sang WebAssembly để chạy ngay trong trình duyệt. Bạn gõ gì ở đây cũng không rời khỏi tab. Và vì cả dự án đều mở, bạn có thể đọc lần lượt từng quy tắc trong kho mã nguồn.

Kịch bản là một nửa câu chuyện; nửa còn lại để nghe.

Nghe thử