Bỏ qua để vào nội dung chính
AnySpeechRecognizer: đổi engine ASR on-device trên macOS 26

AnySpeechRecognizer: đổi engine ASR on-device trên macOS 26

Bởi Olivia Reed
30 thg 10, 20264 phút đọc

Swift package của Hugging Face cho phép thay engine ASR dưới API SpeechAnalyzer của Apple: Parakeet v3 đạt WER 1,55% so với 2,12% của Apple.

Hugging Face vừa phát hành AnySpeechRecognizer, Swift package cho phép thay engine ASR nằm dưới API SpeechAnalyzer của Apple mà gần như không phải viết lại code gọi.

Package này mirror API SpeechAnalyzer — thứ Apple giới thiệu cùng macOS 26 và iOS 26 — và giữ chính engine của Apple làm mặc định. Theo bài giới thiệu, team đang dùng API đó chuyển sang package bằng cách đổi import; muốn chạy engine khác thì chỉ sửa chỗ khởi tạo transcriber. Đây là kiểu đánh đổi quen thuộc: bạn giữ nguyên call site, đổi backend.

Bốn engine, và câu hỏi tiếng Việt

Danh sách engine trong bản 0.1.0: Parakeet v3 (NVIDIA) nhận 25 ngôn ngữ châu Âu và tự phát hiện ngôn ngữ đang nói; Parakeet Ultra là bản post-train của Moondream dựa trên v3; Parakeet Unified chỉ chạy tiếng Anh; Qwen3-ASR (Alibaba) phủ 30 ngôn ngữ cùng 22 phương ngữ tiếng Trung, nhưng chậm hơn, chỉ trả kết quả cuối và hợp với file hơn là audio realtime.

Lưu ý quan trọng cho người đọc ở Việt Nam: bài giới thiệu không nêu tiếng Việt trong phần mô tả ngôn ngữ của bất kỳ engine nào. Nếu use case của bạn là tiếng Việt, đừng suy ra từ con số "30 ngôn ngữ" — hãy coi đây là điều phải tự benchmark trước khi chọn, chứ không phải tính năng đã được công bố.

WER 1,55% so với 2,12% — đọc kỹ điều kiện đo

Trên file LibriSpeech, đo trên máy M4 Max Mac Studio, Parakeet v3 đạt word error rate 1,55% ở clean set, so với 2,12% của transcriber Apple. Một giờ audio mất khoảng 20 đến 40 giây khi xử lý từ file.

Phần còn lại của con số đó mới đáng chú ý: với bản ghi họp AMI, nơi nhiều người nói chồng lên nhau, mọi engine được thử đều vượt 23% WER. Nói cách khác, khoảng cách giữa các engine ở audio sạch nhỏ hơn nhiều so với khoảng cách giữa audio sạch và audio họp thật. Tác giả cũng nói rõ họ chỉ test trên macOS 27, không test trên iPhone, và khuyên đo trên audio của chính bạn.

SpeakerDiarizer: thứ framework Apple chưa có

Package kèm module SpeakerDiarizer dựng trên Streaming Sortformer của NVIDIA, theo được tối đa bốn người nói kể cả khi họ nói chồng tiếng, và gán từng từ về một người. Bài viết nêu thẳng: framework của Apple không có thứ tương đương. Nếu sản phẩm của bạn cần biên bản họp có tên người nói, đây là lý do rõ ràng nhất để rời engine mặc định.

Điều kiện chạy và chi phí tải

Cả hai package yêu cầu Swift 6.2 và macOS 26 hoặc iOS 26. Runtime Parakeet, Sortformer và backend MLX cần Apple silicon. Model đã được convert sang Core ML và đăng trên Hugging Face Hub dưới các license gồm CC BY 4.0, Apache 2.0 và NVIDIA Open Model License — phải kiểm tra license nào áp vào use case của bạn trước khi ship. Mỗi bản Parakeet nặng khoảng 600 MB; Qwen3-ASR từ 0,9 đến 2,4 GB, tức là một khoản app size hoặc một bước download sau cài đặt phải thiết kế từ đầu.

Trạng thái: còn sớm

Version hiện tại là 0.1.0 cho AnySpeechRecognizer và 0.6.0 cho AnyDecisionModel — package thứ hai trả về xác suất cho câu hỏi yes/no hoặc lựa chọn có kiểu, thay vì sinh text rồi parse. Hai package chưa dùng chung được trong mọi cấu hình: trait Core AI của AnyDecisionModel hiện xung đột dependency với AnySpeechRecognizer.

Việc nên làm trước: dựng một bộ audio thật của chính bạn — giọng miền Nam, miền Bắc, có nhiễu nền văn phòng — rồi chạy cùng một bộ qua engine Apple mặc định và Parakeet v3 trước khi cam kết. Việc nên theo dõi: số version 0.1.0 và xung đột dependency ở trên đều là tín hiệu nên pin version nếu đưa vào production sớm.

Không spam, hủy đăng ký bất kỳ lúc nào.

Bài viết liên quan