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

Cách sử dụng plugin

Plugin Runtime Text To Speech tổng hợp văn bản thành giọng nói bằng cách sử dụng các mô hình giọng nói có thể tải xuống. Các mô hình này được quản lý trong cài đặt plugin trong trình chỉnh sửa, tải xuống và đóng gói để sử dụng trong thời gian chạy. Thực hiện theo các bước dưới đây để bắt đầu.

Phía Editor

Tải xuống các mô hình giọng nói phù hợp cho dự án của bạn như được mô tả tại đây. Bạn có thể tải xuống nhiều mô hình giọng nói cùng một lúc.

Phía Runtime

Tạo bộ tổng hợp bằng cách sử dụng hàm CreateRuntimeTextToSpeech. Đảm bảo bạn duy trì một tham chiếu đến nó (ví dụ: như một biến riêng biệt trong Blueprints hoặc UPROPERTY trong C++) để ngăn nó bị thu gom rác.

Một ví dụ về việc tạo bộ tổng hợp Runtime Text To Speech trong Blueprints

Tổng hợp Giọng nói

Plugin cung cấp hai chế độ tổng hợp giọng nói từ văn bản:

  1. Tổng hợp Giọng nói Thông thường: Tổng hợp toàn bộ văn bản và trả về âm thanh hoàn chỉnh khi kết thúc
  2. Tổng hợp Giọng nói Truyền phát: Cung cấp các đoạn âm thanh khi chúng được tạo ra, cho phép xử lý theo thời gian thực

Mỗi chế độ hỗ trợ hai phương pháp để chọn mô hình giọng nói:

  • Theo Tên: Chọn mô hình giọng nói theo tên của nó (khuyến nghị cho UE 5.4+)
  • Theo Đối tượng: Chọn mô hình giọng nói bằng tham chiếu trực tiếp (khuyến nghị cho UE 5.3 và các phiên bản cũ hơn)

Tổng hợp Giọng nói Thông thường

Theo Tên

Hàm Text To Speech (By Name) thuận tiện hơn trong Blueprints bắt đầu từ UE 5.4. Nó cho phép bạn chọn mô hình giọng nói từ danh sách thả xuống của các mô hình đã tải xuống. Trong các phiên bản UE dưới 5.3, danh sách thả xuống này không xuất hiện, vì vậy nếu bạn đang sử dụng phiên bản cũ hơn, bạn sẽ cần phải tự lặp qua mảng các mô hình giọng nói được trả về bởi GetDownloadedVoiceModels để chọn mô hình bạn cần.

Một ví dụ về việc sử dụng Text To Speech theo Tên trong Blueprints

Theo Đối tượng

Hàm Text To Speech (By Object) hoạt động trên tất cả các phiên bản của Unreal Engine nhưng hiển thị các mô hình giọng nói dưới dạng danh sách thả xuống các tham chiếu tài sản, điều này kém trực quan hơn. Phương pháp này phù hợp cho UE 5.3 trở về trước, hoặc nếu dự án của bạn yêu cầu một tham chiếu trực tiếp đến một tài sản mô hình giọng nói vì bất kỳ lý do nào.

Ví dụ về việc sử dụng Text To Speech by Object trong Blueprints

Nếu bạn đã tải xuống các mô hình nhưng không thấy chúng, hãy mở menu thả xuống Voice Model, nhấp vào biểu tượng cài đặt (hình bánh răng), và bật cả Show Plugin ContentShow Engine Content để hiển thị các mô hình.

Phát giọng nói từ văn bản theo luồng (Streaming Text-to-Speech)

Đối với các văn bản dài hơn hoặc khi bạn muốn xử lý dữ liệu âm thanh theo thời gian thực khi nó đang được tạo ra, bạn có thể sử dụng các phiên bản phát luồng của các hàm Text-to-Speech:

  • Streaming Text To Speech (By Name) (StreamingTextToSpeechByName trong C++)
  • Streaming Text To Speech (By Object) (StreamingTextToSpeechByObject trong C++)

Các hàm này cung cấp dữ liệu âm thanh theo từng khối (chunk) khi chúng được tạo ra, cho phép xử lý ngay lập tức mà không cần đợi toàn bộ quá trình tổng hợp hoàn tất. Điều này hữu ích cho nhiều ứng dụng khác nhau như phát lại âm thanh thời gian thực, trực quan hóa trực tiếp, hoặc bất kỳ tình huống nào bạn cần xử lý dữ liệu giọng nói một cách gia tăng.

Phát luồng theo tên (Streaming By Name)

Hàm Streaming Text To Speech (By Name) hoạt động tương tự như phiên bản thông thường nhưng cung cấp dữ liệu âm thanh theo từng khối thông qua delegate On Speech Chunk.

Ví dụ về sử dụng Streaming Text To Speech by Name trong Blueprints

Streaming Theo Đối Tượng

Hàm Streaming Text To Speech (By Object) cung cấp cùng chức năng streaming nhưng nhận tham chiếu đối tượng mô hình giọng nói.

Ví dụ về sử dụng Streaming Text To Speech by Object trong Blueprints

Phát lại Âm thanh

Đối với tính năng chuyển văn bản thành giọng nói thông thường (không phát trực tuyến), delegate On Speech Result cung cấp âm thanh đã tổng hợp dưới dạng dữ liệu PCM ở định dạng float (dưới dạng mảng byte trong Blueprint hoặc TArray<uint8> trong C++), cùng với Sample RateNum Of Channels.

Để phát lại, bạn nên sử dụng plugin Runtime Audio Importer để chuyển đổi dữ liệu âm thanh thô thành sóng âm thanh có thể phát được.

Dưới đây là ví dụ về cách các node Blueprint để tổng hợp văn bản và phát âm thanh có thể trông như thế nào (Các node có thể sao chép):

Hủy Tổng Hợp Văn Bản Thành Giọng Nói

Bạn có thể hủy một thao tác tổng hợp văn bản thành giọng nói đang diễn ra bất kỳ lúc nào bằng cách gọi hàm CancelSpeechSynthesis trên phiên bản bộ tổng hợp của bạn:

Hủy Tổng Hợp Văn Bản Thành Giọng Nói trong Blueprint

Khi một quá trình tổng hợp bị hủy bỏ:

  • Quá trình tổng hợp sẽ dừng lại nhanh nhất có thể
  • Mọi callback đang diễn ra sẽ bị chấm dứt
  • Delegate hoàn thành sẽ được gọi với bSuccess = false và một thông báo lỗi cho biết quá trình tổng hợp đã bị hủy
  • Mọi tài nguyên được cấp phát cho quá trình tổng hợp sẽ được dọn dẹp đúng cách

Điều này đặc biệt hữu ích cho các văn bản dài hoặc khi bạn cần ngắt phát lại để bắt đầu một quá trình tổng hợp mới.

Lựa Chọn Diễn Giả

Cả hai hàm Text To Speech đều chấp nhận một tham số ID diễn giả tùy chọn, điều này hữu ích khi làm việc với các mô hình giọng nói hỗ trợ nhiều diễn giả. Bạn có thể sử dụng các hàm GetSpeakerCountFromVoiceModel hoặc GetSpeakerCountFromModelName để kiểm tra xem mô hình giọng nói bạn chọn có hỗ trợ nhiều diễn giả hay không. Nếu có nhiều diễn giả khả dụng, chỉ cần chỉ định ID diễn giả mong muốn khi gọi các hàm Text To Speech. Một số mô hình giọng nói cung cấp sự đa dạng phong phú - ví dụ, English LibriTTS bao gồm hơn 900 diễn giả khác nhau để bạn lựa chọn.

Plugin Runtime Audio Importer cũng cung cấp các tính năng bổ sung như xuất dữ liệu âm thanh ra tệp, chuyển nó đến SoundCue, MetaSound, và hơn thế nữa. Để biết thêm chi tiết, hãy xem tài liệu Runtime Audio Importer.