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

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

Streaming Sound Wave, cùng với các kiểu dẫn xuất của nó như Capturable Sound Wave, hỗ trợ Phát Hiện Hoạt Động Giọng Nói (VAD). VAD lọc dữ liệu âm thanh đầu vào để chỉ điền vào bộ đệm nội bộ khi phát hiện giọng nói.

Plugin này cung cấp hai cách triển khai VAD:

Triển khai mặc định sử dụng libfvad, một thư viện phát hiện hoạt động giọng nói nhẹ hoạt động hiệu quả trên tất cả các nền tảng và phiên bản engine được hỗ trợ bởi Runtime Audio Importer.

Cách sử dụng cơ bản

Để kích hoạt VAD sau khi tạo một sound wave, hãy sử dụng hàm ToggleVAD:

Toggle VAD node

Sau khi bật VAD, bạn có thể đặt lại nó bất cứ lúc nào:

Reset VAD node

Cài đặt VAD mặc định

Khi sử dụng nhà cung cấp VAD mặc định, bạn có thể điều chỉnh mức độ nhạy của nó bằng cách thay đổi chế độ VAD:

Set VAD Mode node

Tham số mode kiểm soát mức độ quyết liệt mà VAD lọc âm thanh. Giá trị càng cao thì càng hạn chế, nghĩa là ít có khả năng báo dương tính giả nhưng có thể bỏ sót một số giọng nói.

Nhà cung cấp VAD

Sau khi kích hoạt VAD bằng hàm ToggleVAD, bạn có thể chọn giữa các nhà cung cấp phát hiện hoạt động giọng nói khác nhau để phù hợp với nhu cầu của mình. Nhà cung cấp mặc định được tích hợp sẵn, trong khi các nhà cung cấp bổ sung như Silero VAD có sẵn thông qua các plugin mở rộng.

Set VAD Provider node

Lấy Nhà cung cấp VAD hiện tại

Bạn có thể lấy nhà cung cấp VAD hiện được gán cho một Sound Wave đang phát trực tuyến bằng cách sử dụng hàm GetVADProvider. Điều này hữu ích khi bạn cần truy cập chức năng dành riêng cho nhà cung cấp, chẳng hạn như cài đặt ngưỡng giọng nói của Silero VAD, mà không cần phải giữ một tham chiếu riêng.

Get VAD Provider node

Để truy cập các tính năng dành riêng cho provider, hãy ép kiểu provider được trả về sang kiểu mong muốn. Ví dụ: để truy cập chức năng cụ thể của Silero VAD:

Get VAD Provider Cast To Silero node

Silero VAD Extension

Silero VAD cung cấp khả năng phát hiện giọng nói chính xác hơn bằng cách sử dụng mạng nơ-ron. Để sử dụng:

  1. Hãy đảm bảo rằng plugin Runtime Audio Importer đã được cài đặt trong dự án của bạn.

  2. Dành cho UE 5.5 trở về trước: Trước khi tải xuống plugin mở rộng Silero VAD, hãy đảm bảo rằng NNERuntimeORT đã bị vô hiệu hóa trong dự án của bạn. Việc kích hoạt NNERuntimeORT có thể gây ra sự cố khi sử dụng Silero VAD trên các phiên bản engine này do xung đột.

  3. Tải xuống plugin mở rộng Silero VAD từ đây

  4. Giải nén thư mục từ kho lưu trữ đã tải xuống vào thư mục Plugins của dự án của bạn (tạo thư mục này nếu nó chưa tồn tại).

  5. Đối với UE 5.6 trở lên: Sửa tệp RuntimeAudioImporterSileroVAD.uplugin để thêm phụ thuộc NNERuntimeORT. Trong trường "Plugins", sau khi thêm RuntimeAudioImporter, hãy thêm:

    ,
    {
    "Name": "NNERuntimeORT",
    "Enabled": true
    }
  6. 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
  • VAD mặc định hoạt động với tất cả phiên bản engine được hỗ trợ bởi Runtime Audio Importer (UE 4.24, 4.25, 4.26, 4.27, 5.0, 5.1, 5.2, 5.3, 5.4, 5.5, 5.6, 5.7, và 5.8)

  • Silero VAD hỗ trợ Unreal Engine 4.27 và tất cả các phiên bản UE5 (4.27, 5.0, 5.1, 5.2, 5.3, 5.4, 5.5, 5.6, 5.7 và 5.8)

  • UE 5.5 trở về trước: NNERuntimeORT phải được tắt trước khi sử dụng Silero VAD để ngăn chặn sự cố do xung đột plugin. Cụ thể trong UE 5.3, NNERuntimeORTCpu và NNERuntimeORTGpu cũng phải được tắt.

  • Yêu cầu UE 5.6+: Bắt đầu từ Unreal Engine 5.6, tiện ích mở rộng Silero VAD yêu cầu phụ thuộc plugin NNERuntimeORT được thêm thủ công vào tệp .uplugin

  • Silero VAD có sẵn cho Windows, Linux, Mac, Android (bao gồm Meta Quest) và iOS

  • 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 thủ công, hãy xem Hướng dẫn Xây dựng Plugin

Khi đã cài đặt, bạn có thể chọn nó làm nhà cung cấp VAD của mình bằng cách sử dụng hàm SetVADProvider với nhà cung cấp Silero.

Ngưỡng giọng nói

Silero VAD provider hiển thị một tham số Speech Threshold điều khiển điểm tin cậy tối thiểu (từ đầu ra xác suất giọng nói của mạng nơ-ron) cần thiết để coi một đoạn âm thanh là giọng nói. Bạn có thể đặt nó bằng cách sử dụng hàm SetSpeechThreshold, có sẵn sau khi lấy provider bằng GetVADProvider và ép kiểu nó thành kiểu Silero VAD provider.

Set Speech Threshold node

SetSpeechThreshold trả về true nếu ngưỡng được áp dụng thành công, và false nếu không (ví dụ như nếu giá trị nằm ngoài phạm vi hợp lệ).

Một ngưỡng cao hơn làm cho việc phát hiện trở nên thận trọng hơn: nó giảm thiểu các kết quả dương tính giả từ tiếng ồn nền, nhưng có thể bỏ sót các giọng nói nhẹ hoặc không rõ ràng. Một ngưỡng thấp hơn làm cho việc phát hiện nhạy hơn: nó bắt được nhiều giọng nói hơn, nhưng nguy cơ dương tính giả tăng lên. Giá trị mặc định là 0.5.

Phát hiện bắt đầu và kết thúc lời nói

Phát hiện hoạt động giọng nói không chỉ phát hiện sự hiện diện của giọng nói, mà còn cho phép phát hiện thời điểm bắt đầu và kết thúc hoạt động giọng nói. Điều này hữu ích để kích hoạt sự kiện khi giọng nói bắt đầu hoặc kết thúc trong quá trình phát lại hoặc thu âm.

Bạn có thể tùy chỉnh độ nhạy của việc phát hiện bắt đầu và kết thúc giọng nói bằng cách điều chỉnh các tham số như thời lượng giọng nói tối thiểu và thời lượng im lặng. Những tham số này giúp tinh chỉnh việc phát hiện để tránh các lỗi phát hiện sai, ví dụ như nhận diện nhầm âm thanh ngắn hoặc các khoảng dừng quá ngắn giữa các câu nói.

Thời lượng thoại tối thiểu

Tham số Minimum Speech Duration đặt lượng tối thiểu của hoạt động giọng nói liên tục cần thiết để kích hoạt sự kiện bắt đầu giọng nói. Điều này giúp lọc bỏ những tiếng ồn ngắn không nên được coi là giọng nói, để đảm bảo chỉ có hoạt động giọng nói kéo dài mới được nhận dạng. Giá trị mặc định cho Minimum Speech Duration300 mili giây.

Set Minimum Speech Duration node

Thời lượng im lặng

Tham số Silence Duration thiết lập khoảng thời gian im lặng cần thiết để kích hoạt sự kiện kết thúc giọng nói. Điều này ngăn việc phát hiện giọng nói kết thúc sớm trong các khoảng dừng tự nhiên giữa các từ hoặc câu. Giá trị mặc định cho Silence Duration500 milliseconds.

Set Silence Duration node

Ràng buộc với Speech Delegates

Bạn có thể liên kết đến các delegate cụ thể khi lời nói bắt đầu hoặc kết thúc. Điều này hữu ích để kích hoạt hành vi tùy chỉnh dựa trên hoạt động lời nói, chẳng hạn như bắt đầu hoặc dừng nhận dạng văn bản, hoặc điều chỉnh âm lượng của các nguồn âm thanh khác.

Bind Event To On Speech Started Bind Event To On Speech Ended

So sánh các nhà cung cấp VAD

VAD mặc định (libfvad)

Ưu điểm:

  • Nhẹ và hiệu quả
  • Hoạt động trên mọi nền tảng
  • Sử dụng tài nguyên tối thiểu
  • Phù hợp cho thiết bị di động và thiết bị tiêu thụ điện năng thấp

Tốt nhất cho:

  • Phát hiện giọng nói đơn giản trong môi trường yên tĩnh
  • Ứng dụng di động
  • Dự án ưu tiên hiệu suất
  • Khi cần hỗ trợ đa nền tảng