Riêng tư · Chạy trên máy · Apple Neural Engine

Phụ đề trực tiếp cho
bất cứ thứ gì máy Mac của bạn đang phát.

Video, cuộc gọi, podcast: được bóc lời ngay khi đang phát và vẽ ra dưới dạng một overlay luôn nổi trên cùng. Không có gì được tải lên, không có gì được ghi lại, không có gì lưu xuống đĩa.

Hoàn tiền trong 14 ngày, không cần lý do

$9 một lần, gồm mọi bản cập nhật về sau · macOS 14.2 trở lên · Apple Silicon
Phụ đề không giới hạn, dùng bao lâu tuỳ bạn. Không mua phút, không tài khoản, không thuê bao.

Chuyển app thì phụ đề vẫn còn: overlay nằm trên mọi cửa sổ, và cho các cú nhấp đi xuyên qua.

Bấm vào một cửa sổ để đưa nó ra trước. Giữ rồi kéo phần phụ đề để dời nó, y như trong app.

Trỏ vào phần phụ đề là chúng tan ra dưới con trỏ. Giữ để xếp chồng vài khung gần nhất lên lại. Cả hai đều chạy ở đây y hệt như trong app.

Phụ đề trực tiếp cho mọi app trên máy Mac của bạn

Subtitles lên phụ đề cho mọi âm thanh máy Mac của bạn phát được, vì nó lấy trực tiếp từ app chứ không tích hợp với riêng dịch vụ nào. Dù bạn điếc hay khiếm thính, đang nghe bằng ngoại ngữ, hay chỉ là đang làm việc ở một chỗ ồn ào, có ba tình huống cứ lặp đi lặp lại.

01

Cuộc họp và cuộc gọi

Zoom, Google Meet, Teams, một huddle trên Slack, một cuộc gọi trong tab trình duyệt: tất cả chỉ là âm thanh phát ra từ một app, nên tất cả đều được lên phụ đề. Là ngoại ngữ hay không cũng vậy, nó có ích ngay khi một giọng nói lạ tai, khi micro của ai đó quá tệ, hoặc khi hai người nói chồng lên nhau. Đọc lại một từ bạn chỉ nghe loáng thoáng thì nhanh hơn hỏi lại, và không làm gián đoạn ai cả.

02

Giữ mạch trong lúc bạn làm việc

Âm thanh không chờ ai. Ngay khi bạn chuyển sang ghi chú, sang trình soạn thảo hay một cửa sổ trình duyệt là bạn bắt đầu tuột mất cuộc trò chuyện. Overlay luôn nổi trên mọi cửa sổ và cho chuột xuyên qua, nên nó nằm yên tại chỗ trong lúc bạn làm việc phía trước. Bạn ghi chú, tra cứu gì đó, mà vẫn theo được người ta đang nói gì. Một cuốn sổ tay như Granola viết lại cuộc họp sau khi xong; đây là nửa còn lại, nửa phải xảy ra khi nó vẫn đang diễn ra.

03

Video, podcast và bài giảng

Một video không có phụ đề, hoặc có phụ đề tự động còn tệ hơn là không có. Một podcast bằng thứ tiếng bạn vẫn đang học. Một bài giảng ghi sẵn hay phát trực tiếp, một buổi phỏng vấn, một bộ phim thoại nhỏ tiếng. Phụ đề hiện lên trên đúng cửa sổ đang phát, ở cỡ chữ bạn đặt, với mười sáu ngôn ngữ và ngôn ngữ thì máy tự nhận ra giúp bạn.

Cả ba đều có chung một điểm: một cuộc họp, một cuộc gọi và một bản ghi riêng tư đều chẳng liên quan gì tới máy chủ nào. Không âm thanh nào ở đây được tải lên, vì chẳng có lý do gì phải tải: mô hình chạy ngay trên máy Mac của bạn.

Dựng quanh ba ràng buộc

Âm thanh trực tiếp không tạm dừng được, không chạy lại được, và cũng không nên phải rời khỏi máy bạn. Mọi thứ ở đây đều bắt nguồn từ đó.

Không có gì rời khỏi máy Mac

Nó chạy cục bộ và ngoại tuyến: không gọi mạng, không tài khoản, không đo đạc. Âm thanh đi thẳng từ tap vào bộ nhận dạng rồi bị bỏ đi. Thứ duy nhất từng được tải về là chính mô hình, đúng một lần.

Neural Engine, không phải CPU

Khoảng 0.15 lần thời gian thực: mỗi giây tính toán bóc được sáu giây lời nói. Cũng mô hình đó chạy trên CPU thì đo được chậm hơn khoảng 100× so với mức cần để bám kịp một luồng trực tiếp.

Mọi app, hoặc chỉ một app

Mặc định nó nghe mọi thứ máy Mac của bạn phát ra, nên chẳng phải cài gì trước. Hãy thu hẹp về một app duy nhất từ thanh menu khi có hai thứ cùng nói một lúc, và nó sẽ thu app đó cùng mọi tiến trình phụ mà app sinh ra, đây chính là thứ giúp trình duyệt và app Electron chạy được, vì ở đó âm thanh không bao giờ phát ra từ tiến trình chính.

Nhạc không biến thành lời bài hát

Một bộ phát hiện giọng nói chạy trước bộ nhận dạng để nhạc nền không bao giờ tới được đó. Không có nó, nhạc lấp đầy ngữ cảnh của mô hình và những từ đầu tiên sau đó sẽ mất.

Mỗi người nói một khung riêng

Tuỳ bạn, có thể mở một dòng phụ đề mới khi người khác bắt đầu nói, giống như khi có một quãng ngắt. Mặc định tắt: nó chạy thêm một mô hình thứ hai song song với mô hình chính.

Mười sáu ngôn ngữ

Mô hình mặc định tự nhận ra ngôn ngữ. Riêng tiếng Anh có thêm bảy checkpoint chuyên dụng, đánh đổi độ trễ lấy độ chính xác, từ 160 ms trở lên.

Overlay không vướng đường

Một thứ nổi trên mọi cửa sổ chỉ dùng được nếu nó không bao giờ trở thành thứ bạn phải né. Nó không nhận cú nhấp nào, nó tan ra ở chỗ bạn trỏ tới, và nó trả lại cho bạn dòng chữ bạn đã lỡ khi nhìn đi chỗ khác.

Một lỗ thủng ngay nơi bạn trỏ tới

Đưa con trỏ lại gần khung là nó mờ đi bên dưới, nên câu bạn đang đọc không bao giờ che câu bạn đang viết. Mờ đi bao nhiêu và cái lỗ rộng tới đâu đều do bạn đặt. Giữ để nó đặc lại.

Giữ ⌥ để xem lại thứ bạn đã lỡ

Khung lật trang giống phụ đề truyền hình: nó đầy dần, xoá đi rồi bắt đầu lại, nên một dòng bạn lỡ nhìn đi chỗ khác coi như mất. Giữ thì những khung vừa đóng xếp chồng lên trên khung đang chạy, tối đa ba mươi khung, cuộn được để xem những khung cũ hơn. Buông tay ra là chúng lại biến mất. Không có gì được ghi ở đâu cả.

Overlay chính là phần xem trước

, trong menu sẽ mở phần cài đặt: một khung chứa được bao nhiêu dòng trước khi xoá, nó đậm đến đâu, vùng hé lộ quanh con trỏ rộng cỡ nào, lật lại được bao xa. Mọi thanh trượt đều tác động lên overlay ngay khi bạn kéo, nên bạn chỉnh bằng mắt chứ không phải bằng cách chọn một con số.

Cách nó hoạt động

Một luồng âm thanh realtime chỉ biết sao chép, một lõi khả chuyển không bao giờ bóc lời, và một mô hình chạy đúng chỗ của nó.

  1. 1

    Process tap của Core Audio

    48 kHz stereo, cứ 10.7 ms lại có một callback. Luồng realtime chép dữ liệu vào một ring buffer lock-free và không làm gì khác.

  2. 2

    Đổi tần số lấy mẫu và lọc

    Hạ xuống 16 kHz mono trên một luồng worker, bỏ qua các đoạn im lặng, phát lại khoảng một giây trước lời nói để không từ nào bắt đầu từ con số không.

  3. 3

    Parakeet chạy trên Neural Engine

    Một mô hình streaming, không phải loại chạy theo cửa sổ 30 giây: khác biệt giữa phụ đề bám sát âm thanh và phụ đề đến chậm vài giây.

  4. 4

    Overlay

    Những trang ba dòng, xoá đi rồi bắt đầu lại giống phụ đề truyền hình, mờ dần sau bốn giây kể từ dòng chữ mới cuối cùng chứ không phải từ lúc âm thanh dứt.

Mọi thứ từ ring buffer tới ranh giới của mô hình đều là Rust khả chuyển và cố ý không bóc lời: nó chỉ đưa ra các khung dữ liệu. Cái tap và overlay là hai phần duy nhất gắn riêng với Mac.

Hoàn tiền trong 14 ngày, không cần lý do.

Không có gì để xem xét, không có gì để từ chối

Lý do bạn dám nhắm cái này vào một cuộc gọi công việc là vì nó không phải một dịch vụ. Không có máy chủ, không có tài khoản và không có bản ghi lời, nên chẳng có gì để gửi và chẳng có ai khác trong vòng lặp. Bản dài dòng đã được viết ra. Mã nguồn là công khai, nên bạn không phải tin suông điều nào cả.

  • Không có bot nào vào cuộc gọi. Nó thu chính âm thanh máy Mac của bạn đang phát, nên không có gì hiện trong danh sách người tham dự và không ai được báo là có thứ gì đang chạy. Phần lớn các công cụ cùng loại lại gửi vào một người tham dự nhìn thấy được, và rất nhiều công ty cấm thẳng chuyện đó.
  • Không ghi âm, và không ghi gì xuống đĩa. Âm thanh đi từ tap vào bộ nhận dạng rồi bị bỏ ngay tại chỗ. Phụ đề hiện trên màn hình rồi biến mất; những khung mà gọi lại chỉ nằm trong bộ nhớ cho tới khi bạn thoát app, và sau đó không có file nào để tìm, trên máy Mac của bạn hay ở bất cứ đâu.
  • Micro không bao giờ được mở. App chỉ nghe những gì máy Mac của bạn phát ra. Đó là một giới hạn thật, và cũng là lý do không lời nào của bạn có thể đi đâu được.
  • Không tài khoản, không đo đạc, không mạng. Không có gì để đăng nhập và không có dữ liệu sử dụng nào được gửi đi đâu. Mô hình tải về một lần, khoảng 633 MB, sau đó không còn lệnh gọi mạng nào nữa: rút Wi-Fi ra thì nó vẫn chạy phụ đề.
  • Không có gì để huấn luyện. Không tồn tại bản ghi nào để gửi đi, nên không có cài đặt huấn luyện nào phải đi tìm, không có mặc định nào phải kiểm tra, và không có bên xử lý nào phải khai trong thoả thuận dữ liệu. Chuyện đó có qua được chính sách của bạn hay không là quyết định của bạn, nhưng ở đây không có bên thứ ba nào để mà xem xét.
  • Ngoại lệ duy nhất là lúc mua. Gumroad nhận thanh toán và thấy email của bạn, như mọi cửa hàng, rồi gửi mail khi app có bản cập nhật. Bản thân app không bao giờ hỏi bạn thứ nào trong hai thứ đó.

Chọn ngôn ngữ, không phải chọn mô hình

Ngôn ngữ là thứ đầu tiên quyết định một mô hình có dùng được hay không, nên nó nằm ở cấp trên cùng của menu. Đổi trong cùng một gói là tức thì; nhảy sang gói khác thì phải tải gói kia về, còn thứ bạn đã có thì vẫn giữ nguyên.

Đổi ý giữa chừng khi đang tải thì nó huỷ và bắt đầu tải cái mới ngay. Lát nữa quay lại thì nó chạy tiếp chứ không tải lại từ đầu.

Tổng cộng mười sáu: tiếng Anh, Tây Ban Nha, Pháp, Ý, Bồ Đào Nha, Đức, Hà Lan, Thổ Nhĩ Kỳ, Nga, Ả Rập, Hindi, Nhật, Hàn, Việt, Ukraina và Quan Thoại. Cứ để ở chế độ Đa ngôn ngữ thì nó tự đoán ra đang nghe thứ tiếng nào, hoặc chỉ định thẳng ngôn ngữ để nó thôi phải đoán.

Nó sống trên thanh menu

Không có biểu tượng ở Dock, không có cửa sổ nào phải quản. Biểu tượng cho bạn biết nó đang làm gì: màu chàm khi đang nghe, xanh dương khi đang tải mô hình, vàng khi đường ống bắt đầu tụt lại, và không bao giờ đỏ, vì đỏ nghĩa là đang ghi, mà ở đây không có gì được ghi ở đâu cả. Các công tắc nằm trong menu, và , ở đó mở ra cửa sổ cài đặt cho những núm vặn phía sau chúng.

S
Tạm dừng và chạy tiếp
Giữ
Cho phép kéo overlay; bình thường nó để chuột xuyên qua
Giữ
Xếp chồng vài khung gần nhất lên trên khung đang chạy; cuộn để xem cũ hơn
,
Phần cài đặt, mở từ menu: số dòng mỗi khung, độ mờ đục, vùng hé lộ quanh con trỏ, lật lại được bao xa
Thanh menu
Mô hình, nguồn âm thanh, cỡ chữ, vị trí overlay, trạng thái quyền

Sao không dùng Phụ đề trực tiếp của Apple?

macOS có sẵn phụ đề, miễn phí, trên mọi máy Mac chạy Apple silicon, nằm trong Cài đặt Hệ thống, Trợ năng, Phụ đề trực tiếp. Nếu chừng đó lo được thứ bạn cần thì cứ dùng. Còn đây là những chỗ nó thôi lo được cho tôi, và có cả một bảng so sánh từng dòng nếu bạn muốn bản dài.

  • Mười sáu ngôn ngữ, máy tự nhận ra giúp bạn. Bản của Apple không có ở mọi ngôn ngữ, mọi quốc gia hay khu vực. Mô hình mặc định ở đây tự đoán ra ngôn ngữ, và thanh menu chuyển qua lại giữa chúng.
  • Bạn chọn mô hình. Bảy checkpoint tiếng Anh đánh đổi độ trễ lấy độ chính xác, từ 160 ms trở lên, cộng thêm mô hình đa ngôn ngữ. Apple cho bạn phụ đề, không cho bạn nút vặn.
  • Overlay cho chuột xuyên qua. Bản của Apple là một cửa sổ bạn phải dời và chỉnh kích thước. Cái này không nhận cú nhấp nào, nên bạn làm việc xuyên thẳng qua nó. Giữ khi bạn thật sự muốn dời nó.
  • Nó nhường chỗ ngay nơi bạn trỏ tới. Khung mờ đi dưới con trỏ để bạn đọc được thứ nằm bên dưới, mờ bao nhiêu và rộng cỡ nào là do bạn đặt. Bản của Apple là một cửa sổ đục, bạn chỉ có thể dời nó sang chỗ khác.
  • Tất cả, hoặc chỉ một. Cả hai đều bắt đầu từ mọi thứ máy đang phát. Khác biệt là bản này thu hẹp được về đúng app bạn quan tâm, nên cuộc gọi thì có phụ đề còn phần còn lại của máy vẫn im lặng.
  • Nhạc không biến thành lời bài hát. Một bộ phát hiện giọng nói chạy trước bộ nhận dạng, nên nhạc nền không bao giờ tới được đó.
  • Mỗi người nói một khung riêng. Tuỳ chọn, mặc định tắt, và tính năng có sẵn của macOS không có gì tương đương.

Đáng biết trước khi bạn tải về

  • Lần mở đầu tiên mất vài phút. Mô hình nặng khoảng 633 MB và tự tải về ở lần chạy đầu. Thanh menu hiển thị tiến trình.
  • macOS sẽ xin quyền ghi âm thanh hệ thống. Bỏ qua lời nhắc đó thì mọi mẫu âm thanh về tới nơi đều là im lặng số, không báo lỗi ở đâu cả, nên app giữ một mục kiểm tra quyền trong menu thay vì giả vờ là biết. Bản tải về được ký và công chứng, nên câu trả lời bạn đã chọn vẫn còn nguyên qua mọi bản cập nhật.
  • Hát cũng được tính là lời nói. Bộ phát hiện giọng nói không phân biệt được, nên nhạc có lời sẽ hiện ra thành lời bài hát.
  • Điểm ngắt giữa người nói là chuyện hồi tố. Việc phân tách người nói chạy theo nhịp, nên một hai từ đầu của người nói mới có thể rơi vào khung cũ trước khi khung đó được xoá.
  • Một màn hình. Overlay dùng màn hình chính.
  • Mô hình đã thử thì nằm lại trên đĩa. Chuyển qua lại giữa tám mô hình là cách bạn tìm ra cái mình muốn, và mỗi cái bạn thử đều được giữ lại. Phần cài đặt có một nút xoá những mô hình không còn dùng, và không bao giờ xoá cái đang dùng.

Những câu người ta hỏi đầu tiên

Nó có chạy với Zoom, Teams và Google Meet không?
Có. Nó lấy âm thanh mà một app phát ra chứ không tích hợp với riêng dịch vụ nào, nên một cửa sổ Zoom, một huddle trên Slack và một cuộc gọi trong tab trình duyệt đều được lên phụ đề như nhau. Kể cả trình duyệt và app Electron: nó thu các tiến trình phụ mà chúng sinh ra, nơi âm thanh của chúng thật sự phát ra.
Một cái overlay thì có vướng không?
Nó hoàn toàn không nhận cú nhấp nào, nên bạn làm việc xuyên thẳng qua nó, và nó mờ đi dưới con trỏ để bạn đọc được thứ nằm bên dưới. Mờ tới mức nào, vùng mờ rộng tới đâu, khung đặc tới đâu và chứa bao nhiêu dòng đều chỉnh được. Giữ để nó đặc lại rồi kéo sang chỗ khác; bạn đặt nó ở đâu, app nhớ ở đó.
Nó có lên phụ đề cho giọng của chính tôi không?
Không. Nó chỉ nghe được thứ máy Mac của bạn phát ra, không bao giờ nghe micro. Trong một cuộc gọi, nghĩa là bạn đọc lời người khác chứ không đọc lời mình.
Nó có cần kết nối internet không?
Một lần, để tải mô hình về ở lần chạy đầu, khoảng 633 MB. Sau đó nó chạy hoàn toàn ngoại tuyến và không gọi mạng lần nào nữa.
Tôi lưu hay xuất bản ghi lời được không?
Không, và đó là chủ ý. Không có gì được ghi xuống đĩa: phụ đề tồn tại trên màn hình rồi biến mất. Giữ sẽ gọi vài khung gần nhất quay lại trong lúc app đang chạy, việc đó là để bắt lại dòng bạn vừa nhìn đi chỗ khác, không phải để lưu giữ. Nếu bạn cần lưu lại một cuộc trò chuyện, đây là công cụ sai.
Bộ phận IT có phải duyệt không?
Ở đây chẳng có nhà cung cấp nào để mà duyệt: không tài khoản, không máy chủ, không bản ghi lời nào rời khỏi máy Mac, và không có gì tham gia cuộc gọi như một người dự, nên không ai trong cuộc họp đang bị thứ gì ghi lại cả. Đây là một app đã ký và công chứng, chạy trên một cái máy, và sau lần tải mô hình duy nhất thì nó hoàn toàn không gọi mạng nữa. Chuyện đó có qua được chính sách của bạn hay không là quyết định của bạn, nhưng ở đây không có bên thứ ba nào để mà xem xét.
Nó có chạy với tai nghe hay AirPods không?
Có. Nó thu âm thanh do một app tạo ra, không thu tiếng phát ra từ loa, nên bạn nghe bằng gì cũng không khác gì cả.
Nó có làm máy Mac của tôi chậm đi không?
Việc bóc lời chạy trên Neural Engine chứ không phải CPU, ở mức khoảng 0.15 lần thời gian thực, tức là sáu giây lời nói cho mỗi giây tính toán. Cũng mô hình đó chạy trên CPU thì đo được chậm hơn khoảng 100× so với mức cần để bám kịp.
Nó chạy trên những máy Mac nào?
Apple Silicon, macOS 14.2 trở lên. Cái mốc phiên bản đó là do process tap của Core Audio, API mà toàn bộ app này được dựng lên trên đó.
Đây có phải thuê bao không?
Không. $9 một lần, gồm mọi bản cập nhật về sau, không phải tạo tài khoản và không phải mua phút. Nếu nó không hợp với bạn, có khoản hoàn tiền trong 14 ngày.
Tôi xem được mã nguồn không?
Có. Nó được công bố theo giấy phép FSL-1.1-ALv2, giấy phép này chuyển thành Apache 2.0 hai năm sau mỗi lần phát hành. Bạn đọc mã, hoặc tự dựng lấy, tại github.com/daformat/subtitles.

Phụ đề cho mọi thứ, mà không gửi âm thanh đi đâu cả.

Hoàn tiền trong 14 ngày, không cần lý do

$9 một lần, gồm mọi bản cập nhật về sau · macOS 14.2 trở lên · Apple Silicon
Phụ đề trực tiếp không giới hạn, chừng nào chiếc Mac còn là của bạn. Không mua phút, không tài khoản, không thuê bao.