Chuyển tới nội dung chính

Phần mở rộng Vosk

Theo mặc định, plugin Runtime Speech Recognizer sử dụng whisper.cpp để nhận dạng. Trên các nền tảng không có hỗ trợ tăng tốc GPU trong whisper.cpp, đặc biệt là Android và các nền tảng dựa trên Android như Meta Quest, quá trình nhận dạng sẽ chuyển sang dùng CPU + intrinsics, vốn chậm hơn và tốn pin hơn. Plugin mở rộng Vosk bổ sung một nhà cung cấp thay thế dựa trên Vosk, một bộ công cụ nhận dạng giọng nói nhẹ, hoạt động tốt trên phần cứng hạn chế và đặc biệt hoạt động tốt trên Meta Quest.

Việc chuyển đổi giữa whisper.cpp và Vosk chỉ cần vài nút Blueprint, và chuyển trở lại cũng dễ dàng tương tự, vì vậy bạn có thể giữ cả hai tùy chọn và chọn nhà cung cấp cho từng nền tảng nếu cần.

Cài đặt

Để sử dụng tiện ích mở rộng Vosk:

  1. Đảm bảo plugin chính Runtime Speech Recognizer đã được cài đặt trong dự án của bạn.

  2. Tải xuống plugin tiện ích mở rộng Vosk từ đây

  3. Giải nén thư mục từ tệp lưu trữ đã tải về vào thư mục Plugins của dự án (tạo thư mục này nếu nó chưa tồn tại).

  4. Xây dựng lại dự án của bạn (tiện ích mở rộng này yêu cầu một dự án C++).

important
  • Tiện ích mở rộng Vosk hỗ trợ Unreal Engine 5.0 đến 5.8

  • Tiện ích mở rộng này được cung cấp dưới dạng mã nguồn và yêu cầu một dự án C++ để sử dụng.

  • Để biết thêm thông tin về cách xây dựng plugin theo cách thủ công, hãy xem hướng dẫn Xây dựng Plugin

Chuyển sang nhà cung cấp Vosk

Sau khi tiện ích mở rộng được cài đặt, việc chuyển bộ nhận dạng giọng nói sang Vosk chỉ gói gọn trong ba node, ngay sau CreateSpeechRecognizer:

Set Speech Recognizer Provider Cast To Vosk

  1. Gọi Set Speech Recognizer Provider, truyền vào lớp nhà cung cấp Vosk.
  2. Cast To Runtime Vosk Speech Recognizer Provider trên kết quả.
  3. Gọi Set Vosk Model Path (By Name) trên kết quả cast, chọn một mô hình đã tải xuống từ danh sách thả xuống.

Mọi thứ khác trong thiết lập hiện tại của bạn (Start Speech Recognition, Process Audio Data, các delegate, VAD, v.v.) vẫn hoạt động mà không cần sửa đổi. Để chuyển lại về whisper.cpp, hãy xóa ba node này, hoặc đơn giản là không gọi Set Speech Recognizer Provider nữa, vì whisper.cpp là mặc định.

Đang tải xuống các mô hình Vosk

Các mô hình Vosk được tải xuống và quản lý từ Project Settings -> Plugins -> Runtime Speech Recognizer Vosk. Bảng điều khiển liệt kê danh mục mô hình được xác định trước, nhóm theo ngôn ngữ, và mỗi mục có nút Tải xuống, với thanh tiến trình hiển thị trong khi quá trình tải xuống và giải nén đang diễn ra, và nút Xóa khi mô hình đã có trên đĩa.

Vosk model settings panel

Các mô hình đã tải về được giải nén vào thư mục Content/RuntimeSpeechRecognizerVosk/Models, và plugin sẽ tự động chuẩn bị thư mục đó cho quá trình đóng gói. Bạn cũng không bị giới hạn ở một mô hình đóng gói duy nhất: bất kỳ mô hình nào bạn tải về đều luôn khả dụng và có thể được chọn trong lúc chạy bằng Set Vosk Model Path (By Name). Trên Android, các tệp mô hình nằm bên trong ứng dụng đã đóng gói và được sao chép vào bộ nhớ lưu trữ lâu dài khi sử dụng lần đầu, việc này được xử lý nội bộ khi mô hình được chọn.

Ngôn ngữ được hỗ trợ (bấm để mở rộng)

Danh mục định sẵn bao gồm các mô hình dành cho: Tiếng Anh, Tiếng Anh Ấn Độ, Tiếng Trung, Tiếng Nga, Tiếng Pháp, Tiếng Đức, Tiếng Tây Ban Nha, Tiếng Bồ Đào Nha/Tiếng Bồ Đào Nha Brazil, Tiếng Hy Lạp, Tiếng Thổ Nhĩ Kỳ, Tiếng Việt, Tiếng Ý, Tiếng Hà Lan, Tiếng Catalan, Tiếng Ả Rập, Tiếng Ả Rập Tunisia, Tiếng Ba Tư, Tiếng Filipino, Tiếng Ukraina, Tiếng Kazakh, Tiếng Thụy Điển, Tiếng Nhật, Tiếng Esperanto, Tiếng Hindi, Tiếng Séc, Tiếng Ba Lan, Tiếng Uzbek, Tiếng Hàn, Tiếng Breton, Tiếng Gujarati, Tiếng Tajik, Tiếng Telugu, Tiếng Kyrgyz và Tiếng Georgia, cùng với một mô hình nhận dạng người nói chuyên dụng.

Một số ngôn ngữ có nhiều biến thể trong bảng (ví dụ: một mô hình nhỏ hơn phù hợp với phần cứng di động bên cạnh một mô hình lớn hơn và chính xác hơn), vì vậy bạn nên xem xét các tùy chọn cho ngôn ngữ mục tiêu của mình trực tiếp trong bảng Project Settings thay vì giả định rằng chỉ có một biến thể khả dụng. Xem danh sách mô hình Vosk đầy đủ để biết chi tiết về độ chính xác, kích thước và giấy phép của từng biến thể.

Tham số và hành vi

Vosk là bộ nhận dạng về cơ bản khác với whisper.cpp, vì vậy hầu hết các mục trong Danh sách Tham số Nhận dạng không áp dụng cho nó. Việc gọi một setter không được hỗ trợ trên nhà cung cấp Vosk sẽ không có tác dụng, nên logic Blueprint viết cho whisper.cpp vẫn hoạt động mà không cần sửa đổi sau khi chuyển đổi nhà cung cấp. Các hàm thực sự có tác dụng trên Vosk là:

  • Đặt Ngôn ngữ: chọn mô hình của ngôn ngữ nào được sử dụng. Vosk không hỗ trợ tự động phát hiện ngôn ngữ, vì vậy nếu bạn đặt ngôn ngữ thành Auto, nó sẽ bị bỏ qua.
  • Đặt Kích thước bước: lượng âm thanh tích lũy trước khi được gửi đi để nhận dạng, cùng cơ chế với whisper.cpp. Vì Vosk là bộ nhận dạng theo luồng, một giá trị nhỏ (nhà cung cấp Vosk mặc định là 200 ms) giúp các kết quả từng phần phản hồi nhanh.
  • Đặt Số Token Tối đa: được tái sử dụng cho Vosk, được mô tả bên dưới.

Thiết lập Max Tokens và đầu ra phát trực tuyến

Tham số Set Max Tokens kiểm soát cách nhà cung cấp Vosk gửi văn bản đã nhận dạng thông qua On Recognized Text Segment:

  • 0 (mặc định): văn bản tích lũy bên trong và được gửi như một đoạn hoàn chỉnh duy nhất khi nhận dạng hoàn tất, thông qua một lần dừng do VAD kích hoạt (như trong các ví dụ Nhận dạng lệnh kích hoạt bằng giọng nói hoặc Nhận dạng giọng nói tự khởi tạo) hoặc thông qua bất kỳ logic nào trong dự án của bạn gọi Stop Speech Recognition hoặc buộc khối âm thanh cuối cùng đi qua. Điều này khớp với hành vi dựa trên đoạn mà whisper.cpp sử dụng.
  • Lớn hơn 0: nhà cung cấp chuyển sang chế độ phát trực tiếp. Thay vì chờ một đoạn hoàn chỉnh, nó phát các kết quả từng phần khi quá trình nhận dạng tiến triển, mỗi kết quả thay thế kết quả trước đó bằng một phiên bản dài hơn của cùng một cụm từ, cho đến khi đoạn kết thúc và văn bản được đặt lại cho đoạn tiếp theo. Một câu nói ngắn có thể trông như thế này qua nhiều lần phát của On Recognized Text Segment:
"The"
"The cat"
"The cat is"
"The cat is sleeping"

Giá trị số chính xác không quan trọng đối với Vosk vì nó không có giới hạn token tích hợp sẵn. Bất kỳ giá trị nào lớn hơn 0 đều bật chế độ truyền phát trực tuyến.

Vì các phần phản hồi chỉ đến với tần suất tương ứng với việc âm thanh được xếp vào hàng đợi (được điều chỉnh bởi Set Step Size), hãy kết hợp Max Tokens thấp với Step Size thấp để có đầu ra thời gian thực đáp ứng nhanh.

Hỗ trợ nền tảng

Tiện ích mở rộng Vosk hoạt động trên Windows, Android và các nền tảng dựa trên Android như Meta Quest. Nó hữu ích nhất trên Android và Meta Quest, nơi whisper.cpp không có đường tăng tốc GPU, và nó hoạt động đặc biệt tốt trên Meta Quest. Nếu bạn đang sử dụng Windows hoặc nền tảng máy tính để bàn khác có hỗ trợ tăng tốc Vulkan hoặc Metal, whisper.cpp có lẽ là lựa chọn mặc định tốt hơn. Vosk được thiết kế như một giải pháp thay thế cho các nền tảng mà whisper.cpp hoạt động yếu nhất.

Nâng cao: làm việc trực tiếp với các mô hình

Bảng Project Settings bao gồm việc tải xuống và xóa mô hình cho hầu hết các dự án. Nếu dự án của bạn cần làm việc trực tiếp với các mô hình thay vì dựa vào bảng Editor, ví dụ như kiểm tra tính khả dụng hoặc quản lý tệp trong thời gian chạy, plugin sẽ hiển thị các hàm thư viện nền tảng:

  • Get Available Vosk Model Names: trả về tên các mô hình sẵn sàng sử dụng ngay lập tức, dù đã được giải nén vào đĩa hay mới chỉ được đóng gói và chờ lần sử dụng đầu tiên. Đây là thứ cung cấp dữ liệu cho menu thả xuống trên Set Vosk Model Path (By Name).
  • Mô hình Vosk có sẵn không: cùng một kiểm tra như trên, dành cho một mô hình cụ thể theo ID.
  • Lấy Thư mục Mô hình Vosk: trả về đường dẫn tuyệt đối tới thư mục mà các mô hình được đọc từ đó trong thời gian chạy.
  • Lấy Đường Dẫn Thư Mục Mô Hình Vosk: trả về đường dẫn tuyệt đối đến thư mục của một mô hình cụ thể trên đĩa.
  • Xóa tệp mô hình Vosk: xóa các tệp đã giải nén của mô hình khỏi đĩa.