Xử lý sự cố
Các vấn đề về giai đoạn staging của mô hình ngôn ngữ
Hầu hết các vấn đề đều liên quan đến việc staging mô hình ngôn ngữ, điều này có thể gây ra sự cố trong bản build đã đóng gói. Cụ thể, bạn có thể gặp phải các log sau:
LogRuntimeSpeechRecognizer: Error: Language model loading failed: Failed to load the language model asset '/RuntimeSpeechRecognizer/LanguageModels/LanguageModel.LanguageModel'
Để khắc phục điều này, hãy đến Project Settings, sau đó điều hướng đến phần Project -> Packaging. Cuộn xuống và mở rộng danh mục Advanced, và đảm bảo rằng:
DirectoriesToAlwaysCook(được dán nhãn làAdditional Asset Directories to Cook) có một mục cho/RuntimeSpeechRecognizer/LanguageModelsbên trong. Việc này được plugin tự động thực hiện trong lúc biên tập, nhưng một số người dùng đã báo cáo rằng họ phải làm thủ công, vì vậy hãy đảm bảo kiểm tra. Điều này cần thiết để đảm bảo rằng asset mô hình ngôn ngữ luôn được đưa vào bản build đóng gói.

bCookMapsOnlyđược đặt thànhfalse. Nếu đặt thànhtrue, nó sẽ bỏ qua thuộc tính trước đó và có khả năng asset mô hình ngôn ngữ sẽ không được đưa vào staging đúng cách. Việc này cũng được plugin tự động thực hiện, nhưng để chắc chắn, vui lòng kiểm tra biến này theo cách thủ công.

Sự cố trên Android và iOS
Trong một số trường hợp trên Android và iOS, sự cố có thể xảy ra trong thời gian chạy (chẳng hạn như khi kiểm thử TestFlight). Nguyên nhân là do các yêu cầu cấp phát bộ nhớ của thư viện cơ sở whisper.cpp xung đột với bộ cấp phát mặc định của Unreal Engine trên các nền tảng này. Trên các nền tảng khác, FMalloc mặc định sử dụng bộ cấp phát ANSI, vì vậy vấn đề này chỉ xảy ra trên Android và iOS.
Để giải quyết vấn đề này, bạn cần buộc bộ cấp phát ANSI trong tệp Target.cs của dự án:
Dành cho Unreal Engine 5.5 trở về trước:
- Dự án của bạn phải sử dụng engine được build từ mã nguồn (không phải bản binary được biên dịch sẵn)
- Thêm dòng sau vào tệp
Target.cscủa bạn:
GlobalDefinitions.Add("FORCE_ANSI_ALLOCATOR=1");
Đối với Unreal Engine 5.6 trở lên:
- Hoạt động với cả bản dựng engine từ mã nguồn và bản dựng engine biên dịch sẵn
- Thêm hai dòng sau vào tệp
Target.cscủa bạn:
bOverrideBuildEnvironment = true;
StaticAllocator = StaticAllocatorType.Ansi;
Điều này buộc Unreal Engine sử dụng bộ cấp phát ANSI trên Android và iOS, khớp với bộ cấp phát được whisper.cpp sử dụng.
Cách khắc phục này giải quyết xung đột bộ cấp phát đặc thù của whisper.cpp. Nếu dự án của bạn sử dụng tiện ích mở rộng Vosk làm nhà cung cấp trên Android, bước này không bắt buộc.