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

Cách sử dụng plugin

Plugin Runtime Speech Recognizer được thiết kế để nhận dạng từ ngữ từ dữ liệu âm thanh đầu vào. Nó sử dụng phiên bản được sửa đổi nhẹ của whisper.cpp để hoạt động với engine. Để sử dụng plugin, hãy làm theo các bước sau:

Phía Editor

  1. Chọn các mô hình ngôn ngữ phù hợp cho dự án của bạn như được mô tả tại đây.

Phía runtime

  1. Tạo Speech Recognizer và thiết lập các tham số cần thiết (CreateSpeechRecognizer, xem tham số tại đây).
  2. Liên kết với các delegate cần thiết (OnRecognitionFinished, OnRecognizedTextSegmentOnRecognitionError).
  3. Bắt đầu nhận dạng giọng nói (StartSpeechRecognition).
  4. Xử lý dữ liệu âm thanh và chờ kết quả từ các delegate (ProcessAudioData).
  5. Dừng Speech Recognizer khi cần (ví dụ: sau khi OnRecognitionFinished được phát).

Plugin hỗ trợ âm thanh đầu vào ở định dạng PCM dấu phẩy động 32-bit xen kẽ. Mặc dù plugin hoạt động tốt với Runtime Audio Importer, nhưng nó không phụ thuộc trực tiếp vào công cụ này.

Tham số nhận dạng

Plugin hỗ trợ cả nhận dạng dữ liệu âm thanh dạng streaming lẫn non-streaming. Để điều chỉnh các tham số nhận dạng cho trường hợp sử dụng cụ thể của bạn, hãy gọi SetStreamingDefaults hoặc SetNonStreamingDefaults. Ngoài ra, bạn có thể tự do thiết lập thủ công từng tham số riêng lẻ như số luồng, kích thước bước, có dịch ngôn ngữ đầu vào sang tiếng Anh hay không, và có sử dụng bản phiên âm trước hay không. Tham khảo Danh sách Tham số Nhận dạng để xem danh sách đầy đủ các tham số có sẵn.

Cải thiện hiệu suất

Vui lòng tham khảo phần Cách cải thiện hiệu suất để biết các mẹo tối ưu hóa hiệu suất của plugin. Trên Android và các nền tảng dựa trên Android như Meta Quest, cũng nên cân nhắc tiện ích mở rộng Vosk, cung cấp một nhà cung cấp thay thế cho phần cứng không có hỗ trợ tăng tốc GPU trong whisper.cpp.

Phát hiện hoạt động giọng nói (VAD)

Khi xử lý đầu vào âm thanh, đặc biệt trong các tình huống phát trực tuyến, bạn nên sử dụng Phát hiện hoạt động giọng nói (VAD) để lọc các đoạn âm thanh trống hoặc chỉ có tiếng ồn trước khi chúng đến bộ nhận dạng. Quá trình lọc này có thể được bật ở phía sóng âm có thể thu nhận bằng plugin Runtime Audio Importer, giúp ngăn các mô hình ngôn ngữ bị "ảo giác" - cố gắng tìm kiếm các mẫu trong nhiễu và tạo ra bản phiên âm không chính xác.

Để có kết quả nhận dạng giọng nói tối ưu, chúng tôi khuyên bạn nên sử dụng nhà cung cấp Silero VAD, vốn có khả năng chịu nhiễu vượt trội và phát hiện giọng nói chính xác hơn. Silero VAD có sẵn dưới dạng tiện ích mở rộng cho plugin Runtime Audio Importer. Để biết hướng dẫn chi tiết về cấu hình VAD, hãy tham khảo tài liệu Phát hiện hoạt động giọng nói.

ghi chú

Các node có thể sao chép trong các ví dụ bên dưới sử dụng nhà cung cấp VAD mặc định vì lý do tương thích. Để nâng cao độ chính xác nhận dạng, bạn có thể dễ dàng chuyển sang Silero VAD bằng cách:

  1. Cài đặt tiện ích mở rộng Silero VAD như được mô tả trong phần Tiện ích mở rộng Silero VAD
  2. Sau khi bật VAD bằng node Toggle VAD, hãy thêm node Set VAD Provider và chọn "Silero" từ trình đơn thả xuống

Trong dự án demo đi kèm với plugin, VAD được bật theo mặc định. Bạn có thể tìm thêm thông tin về cách triển khai demo tại Dự án Demo.

Ví dụ

Có một bản demo dự án tốt nằm trong thư mục Content -> Demo của plugin, mà bạn có thể sử dụng làm ví dụ để triển khai.

Các ví dụ này minh họa cách sử dụng plugin Runtime Speech Recognizer với cả đầu vào âm thanh theo luồng (streaming) và không theo luồng (non-streaming), sử dụng Runtime Audio Importer để lấy dữ liệu âm thanh làm ví dụ. Xin lưu ý rằng bạn cần tải riêng RuntimeAudioImporter để có thể truy cập cùng bộ tính năng nhập âm thanh được trình bày trong các ví dụ (ví dụ: sóng âm thanh có thể ghi lại và ImportAudioFromFile). Các ví dụ này chỉ nhằm minh họa khái niệm cốt lõi và không bao gồm xử lý lỗi.

Ví dụ về đầu vào âm thanh phát trực tuyến

Lưu ý: Trong UE 5.3 và các phiên bản khác, bạn có thể gặp phải các nút bị thiếu sau khi sao chép Blueprints. Điều này có thể xảy ra do sự khác biệt trong tuần tự hóa nút giữa các phiên bản engine. Luôn kiểm tra rằng tất cả các nút được kết nối đúng cách trong quá trình triển khai của bạn.

1. Nhận dạng trực tuyến cơ bản

Ví dụ này trình bày cách thiết lập cơ bản để thu dữ liệu âm thanh từ micro dưới dạng luồng (stream) bằng Capturable Sound Wave và truyền nó đến bộ nhận dạng giọng nói. Nó ghi âm khoảng 5 giây rồi xử lý nhận dạng, phù hợp cho các bài kiểm tra nhanh và các triển khai đơn giản. Các node có thể sao chép.

Các tính năng chính của thiết lập này:

  • Thời lượng ghi âm cố định 5 giây
  • Nhận dạng một lần đơn giản
  • Yêu cầu thiết lập tối thiểu
  • Hoàn hảo để kiểm tra và tạo nguyên mẫu

2. Nhận dạng luồng có kiểm soát

Ví dụ này mở rộng thiết lập streaming cơ bản bằng cách thêm khả năng điều khiển thủ công đối với quá trình nhận dạng. Nó cho phép bạn bắt đầu và dừng quá trình nhận dạng theo ý muốn, phù hợp với các tình huống cần kiểm soát chính xác thời điểm nhận dạng diễn ra. Các node có thể sao chép.

Các tính năng chính của thiết lập này:

  • Điều khiển bắt đầu/dừng thủ công
  • Khả năng nhận dạng liên tục
  • Thời lượng ghi âm linh hoạt
  • Phù hợp cho các ứng dụng tương tác

3. Nhận dạng lệnh kích hoạt bằng giọng nói

Ví dụ này được tối ưu hóa cho các tình huống nhận dạng lệnh. Nó kết hợp nhận dạng trực tuyến với phát hiện hoạt động giọng nói (VAD) để tự động xử lý giọng nói khi người dùng ngừng nói. Bộ nhận dạng chỉ bắt đầu xử lý giọng nói tích lũy khi phát hiện im lặng, khiến nó trở nên lý tưởng cho các giao diện dựa trên lệnh. Các nút có thể sao chép.

Các tính năng chính của thiết lập này:

  • Điều khiển bắt đầu/dừng thủ công
  • Phát hiện hoạt động giọng nói (VAD) được bật để phát hiện các đoạn hội thoại
  • Tự động kích hoạt nhận dạng khi phát hiện khoảng lặng
  • Tối ưu cho nhận dạng lệnh ngắn
  • Giảm tải xử lý bằng cách chỉ nhận dạng giọng nói thực tế

4. Tự động khởi tạo nhận dạng giọng nói với xử lý bộ đệm cuối cùng

Ví dụ này là một biến thể khác của phương pháp nhận dạng kích hoạt bằng giọng nói với cách xử lý vòng đời khác. Nó tự động khởi động bộ nhận dạng trong quá trình khởi tạo và dừng nó trong quá trình hủy khởi tạo. Một tính năng chính là nó xử lý bộ đệm âm thanh tích lũy cuối cùng trước khi dừng bộ nhận dạng, đảm bảo không mất dữ liệu giọng nói nào khi người dùng muốn kết thúc quá trình nhận dạng. Thiết lập này đặc biệt hữu ích cho các ứng dụng cần thu được trọn vẹn câu nói của người dùng ngay cả khi dừng giữa lúc nói. Các node có thể sao chép.

Các tính năng chính của thiết lập này:

  • Tự động khởi động bộ nhận dạng khi khởi tạo
  • Tự động dừng bộ nhận dạng khi hủy khởi tạo
  • Xử lý bộ đệm âm thanh cuối cùng trước khi dừng hoàn toàn
  • Sử dụng Phát hiện hoạt động giọng nói (VAD) để nhận dạng hiệu quả
  • Đảm bảo không mất dữ liệu giọng nói khi dừng

Đầu vào âm thanh không phát trực tuyến

Ví dụ này nhập dữ liệu âm thanh vào Imported sound wave và nhận dạng toàn bộ dữ liệu âm thanh sau khi nó được nhập. Các nút có thể sao chép.