Các đối tượng âm thanh mô-đun của Roblox cho phép bạn kiểm soát động về âm thanh và trò chuyện bằng giọng nói trong trải nghiệm của bạn. Hầu hết mọi đối tượng âm thanh đều tương ứng với một thiết bị âm thanh trong thế giới thực, và tất cả chúng đều hoạt động cùng nhau để ghi lại và phát âm thanh giống như các thiết bị vật lý của chúng.
Ví dụ, mỗi đối tượng âm thanh về cơ bản rơi vào các danh mục sau:
- Các đối tượng sản xuất luồng âm thanh, chẳng hạn như trình phát âm thanh.
- Các đối tượng tiêu thụ luồng âm thanh, chẳng hạn như bộ phát âm thanh.
- Các đối tượng chỉnh sửa luồng âm thanh, chẳng hạn như hiệu ứng âm thanh.
- Các đối tượng chuyển luồng âm thanh từ một đối tượng âm thanh này sang đối tượng âm thanh khác, chẳng hạn như dây dẫn.
Khi bạn đọc qua hướng dẫn này và tìm hiểu cách mà tất cả các đối tượng âm thanh hoạt động cùng nhau để phát ra âm thanh, bạn sẽ biết cách chính xác ghi lại và truyền nhạc, hiệu ứng âm thanh và giọng nói con người từ trải nghiệm đến người chơi và ngược lại.
Phát âm thanh
Để phát âm thanh trong trải nghiệm của bạn, điều quan trọng là hiểu vai trò của từng đối tượng âm thanh hiện có:
- Một AudioPlayer tải và phát tệp âm thanh bằng cách sử dụng ID tài sản âm thanh đã được chỉ định.
- Một AudioEmitter là một loa ảo phát ra âm thanh vào môi trường 3D.
- Một AudioListener là một micro ảo ghi nhận âm thanh từ môi trường 3D.
- Một AudioDeviceOutput là một thiết bị phần cứng vật lý trong thế giới thực, chẳng hạn như loa hoặc tai nghe.
- Một AudioDeviceInput là một micro vật lý trong thế giới thực.
- Đối tượng AudioTextToSpeech chuyển đổi văn bản thành âm thanh bằng giọng nói nhân tạo.
- Đối tượng AudioSpeechToText chuyển đổi âm thanh nói thành văn bản.
- Một Wire chuyển luồng âm thanh từ một đối tượng âm thanh này đến một đối tượng âm thanh khác.
Cách bạn ghép nối các đối tượng âm thanh này với nhau phụ thuộc vào việc bạn muốn phát âm thanh trực tiếp đến loa hoặc tai nghe của người chơi hay từ các đối tượng trong không gian 3D. Các phần tiếp theo chi tiết cả hai trường hợp.
Âm thanh 2D
Âm thanh 2D là âm thanh không có định hướng phát ra từ không gian nào cụ thể, vẫn giữ nguyên âm lượng bất kể vị trí hoặc hướng của người chơi trong không gian 3D. Loại âm thanh này yêu cầu ba đối tượng âm thanh:
- Một trình phát âm thanh để sản xuất một luồng âm thanh.
- Một thiết bị phần cứng vật lý để phát luồng âm thanh trong thế giới thực.
- Một dây dẫn để chuyển luồng âm thanh từ trình phát âm thanh đến thiết bị phát.
Để minh họa cách cấu hình các đối tượng âm thanh này trong Studio cho âm thanh 2D, sơ đồ sau so sánh mỗi đối tượng với đối tượng âm thanh thực tế tương ứng. Tóm tắt lại:
- AudioPlayer tải và phát tài sản âm thanh của bạn với các thiết lập đã chỉ định.
- AudioDeviceOutput cho phép người chơi nghe âm thanh qua loa hoặc tai nghe của họ.
- Wire kết nối với trình phát âm thanh thông qua thuộc tính SourceInstance, và đến thiết bị phần cứng vật lý qua thuộc tính TargetInstance. Sau đó, nó hoạt động như một cầu nối để chuyển luồng âm thanh từ trình phát âm thanh đến thiết bị phát của người chơi.

Để phát âm thanh không định hướng:
- Trong cửa sổ Explorer, đến SoundService và chèn các mục sau:
- Một đối tượng AudioPlayer để tạo nguồn âm thanh.
- Một đối tượng AudioDeviceOutput để tạo một loa phát suốt trải nghiệm.
- Một đối tượng Wire để kết nối luồng từ trình phát âm thanh đến loa.
- Trong cửa sổ Properties của đối tượng AudioPlayer:
- Đặt AssetID thành một ID tài sản âm thanh hợp lệ. Nếu bạn không có âm thanh tùy chỉnh của riêng mình, bạn có thể tìm thấy các tài sản âm thanh miễn phí trong Creator Store.
- Kích hoạt Looping nếu bạn muốn âm thanh của mình lặp đi lặp lại liên tục.
- Đặt Volume thành đơn vị biên độ bạn muốn phát âm thanh của mình.
- Trong cửa sổ Properties của đối tượng Wire:
- Đặt SourceInstance thành AudioPlayer để chỉ định rằng bạn muốn phát âm thanh trong trình phát âm thanh cụ thể này.
- Đặt TargetInstance thành AudioDeviceOutput để chỉ định rằng bạn muốn phát âm thanh từ loa cụ thể này.
Từ đây, bạn có thể kích hoạt âm thanh không định hướng của mình bằng các script để phát khi người chơi tham gia trải nghiệm hoặc là kết quả của một sự kiện gameplay hoặc tương tác UI. Để tham khảo mã mẫu cho các trường hợp sử dụng này, xem tutorial Thêm âm thanh 2D.
Âm thanh 3D
Âm thanh 3D là âm thanh có định hướng phát ra từ một vị trí cụ thể trong không gian 3D, tăng hoặc giảm âm lượng tùy thuộc vào vị trí và hướng của người chơi đối với âm thanh. Loại âm thanh này yêu cầu sáu đối tượng âm thanh:
- Một trình phát âm thanh để sản xuất một luồng âm thanh.
- Một bộ phát âm thanh để phát ra luồng âm thanh trong môi trường.
- Một bộ lắng nghe để ghi nhận luồng âm thanh từ môi trường.
- Một thiết bị phần cứng vật lý để phát luồng âm thanh trong thế giới thực.
- Hai dây dẫn: một để chuyển luồng âm thanh từ trình phát âm thanh đến bộ phát, và một để chuyển nó từ bộ lắng nghe đến thiết bị phát.
Để minh họa cách cấu hình các đối tượng âm thanh này trong Studio cho âm thanh 3D, sơ đồ sau so sánh mỗi đối tượng với thiết bị âm thanh thực tế tương ứng của chúng. Tóm tắt lại:
- AudioPlayer tải và phát tài sản âm thanh của bạn với các thiết lập đã chỉ định.
- Vị trí của cha của AudioEmitter trong không gian 3D xác định vị trí mà âm thanh phát ra trong môi trường.
- Bộ lắng nghe AudioListener ghi nhận âm thanh từ bộ phát từ camera địa phương hoặc từ Humanoid.RootPart của nhân vật người chơi, tùy thuộc vào nơi bạn đặt vị trí lắng nghe mặc định.
- AudioDeviceOutput cho phép người chơi nghe âm thanh qua loa hoặc tai nghe của họ.
- Dây dẫn đầu tiên Wire kết nối với trình phát âm thanh qua thuộc tính SourceInstance, và với bộ phát qua thuộc tính TargetInstance. Nó sau đó hoạt động như một cầu nối để chuyển luồng âm thanh từ trình phát âm thanh đến bộ phát.
- Dây dẫn thứ hai Wire kết nối với bộ lắng nghe qua thuộc tính SourceInstance, và với thiết bị phần cứng vật lý qua thuộc tính TargetInstance. Nó sau đó hoạt động như một cầu nối để chuyển luồng âm thanh từ bộ lắng nghe đến thiết bị phát của người chơi.

Để phát âm thanh vị trí:
Chọn nơi bạn muốn tạo một AudioListener khi người chơi xuất hiện trong trải nghiệm.
- Trong cửa sổ Explorer, chọn SoundService.
- Trong cửa sổ Properties, đặt ListenerLocation thành một trong các mục sau:
- Mặc định - Tạo và gán bộ lắng nghe cho Workspace.CurrentCamera trong các trải nghiệm có kích hoạt trò chuyện bằng giọng nói.
- Không có - Không tạo bộ lắng nghe. Tùy chọn này hữu ích nếu bạn muốn tạo bộ lắng nghe thông qua một script.
- Nhân vật - Tạo và gán bộ lắng nghe cho nhân vật của người chơi địa phương.
- Camera - Tạo và gán bộ lắng nghe cho Workspace.CurrentCamera.
Trong cửa sổ Explorer, đến đối tượng 3D mà bạn muốn phát âm thanh và chèn các mục sau:
- Một đối tượng AudioPlayer để tạo một nguồn âm thanh.
- Một đối tượng AudioEmitter để phát ra luồng vị trí từ đối tượng 3D.
- Một đối tượng Wire để kết nối luồng từ trình phát âm thanh đến bộ phát âm thanh.
Trong cửa sổ Properties của đối tượng AudioPlayer:
- Đặt AssetID thành một ID tài sản âm thanh hợp lệ. Nếu bạn không có âm thanh tùy chỉnh của riêng mình, bạn có thể tìm thấy các tài sản âm thanh miễn phí trong Creator Store.
- Kích hoạt Looping nếu bạn muốn âm thanh của mình lặp đi lặp lại liên tục.
- Đặt Volume thành đơn vị biên độ mà bạn muốn phát âm thanh.
Trong cửa sổ Properties của đối tượng AudioEmitter, đặt DistanceAttenuation thành một đường cong âm lượng theo khoảng cách xác định mức độ âm lượng mà bộ lắng nghe nghe thấy từ bộ phát theo khoảng cách giữa chúng.
Ví dụ, đường cong sau sẽ giảm âm lượng âm thanh xuống một nửa khi bộ lắng nghe cách bộ phát 50 studs, sau đó âm lượng sẽ giảm mạnh xuống không khi bộ lắng nghe cách bộ phát 70 studs.

Trong cửa sổ Properties của đối tượng Wire:
- Đặt SourceInstance thành AudioPlayer để chỉ định rằng bạn muốn phát âm thanh trong trình phát âm thanh cụ thể này.
- Đặt TargetInstance thành AudioEmitter để chỉ định rằng bạn muốn phát âm thanh từ bộ phát âm thanh cụ thể này.
Từ đây, bạn có thể kích hoạt âm thanh định hướng của mình bằng các script để phát khi người chơi tham gia trải nghiệm hoặc như là kết quả của một sự kiện gameplay hoặc tương tác UI. Để tham khảo mã mẫu cho các trường hợp sử dụng này, xem tutorial Thêm âm thanh 3D.
Văn bản thành giọng nói
Văn bản thành giọng nói (TTS) là một hình thức công nghệ hỗ trợ chuyển đổi chuỗi văn bản thành âm thanh nói bằng giọng nói nhân tạo. Loại âm thanh này yêu cầu năm đối tượng âm thanh:
- Một bộ tạo âm thanh nói để tải và chuyển đổi văn bản thành âm thanh.
- Một bộ phát âm thanh để phát luồng âm thanh trong môi trường.
- Một bộ lắng nghe để ghi nhận luồng âm thanh từ môi trường.
- Một thiết bị phần cứng vật lý để phát luồng âm thanh trong thế giới thực.
- Đối với âm thanh 2D - Một dây dẫn để chuyển luồng âm thanh từ bộ tạo âm thanh nói đến thiết bị phát.
- Đối với âm thanh 3D - Hai dây dẫn: một dây dẫn để chuyển luồng âm thanh từ bộ tạo âm thanh nói đến bộ phát, và một dây dẫn khác để chuyển nó từ bộ lắng nghe đến thiết bị phát.
Cách bạn cấu hình các đối tượng này phụ thuộc vào việc bạn muốn tạo âm thanh TTS 2D hay âm thanh TTS 3D. Để biết thêm chi tiết về cả hai quy trình, hãy nhấp vào các tab sau.
Để minh họa cách cấu hình các đối tượng âm thanh này trong Studio cho âm thanh TTS 2D, sơ đồ sau so sánh mỗi đối tượng với đối tượng âm thanh thực tế tương ứng. Tóm tắt lại:
- Đối tượng AudioTextToSpeech tải và chuyển đổi chuỗi văn bản thành âm thanh nói.
- AudioDeviceOutput cho phép người chơi nghe âm thanh qua loa hoặc tai nghe của họ.
- Wire kết nối với bộ tạo âm thanh nói thông qua thuộc tính SourceInstance, và đến thiết bị phần cứng vật lý qua thuộc tính TargetInstance. Nó sau đó hoạt động như một cầu nối để chuyển luồng âm thanh từ bộ tạo âm thanh nói đến thiết bị phát của người chơi.

Để phát âm thanh TTS 2D:
- Trong cửa sổ Explorer, đến SoundService và chèn các mục sau:
- Một đối tượng AudioTextToSpeech để tạo một bộ tạo âm thanh nói.
- Một đối tượng AudioDeviceOutput để tạo một loa phát suốt trải nghiệm.
- Một đối tượng Wire để kết nối luồng từ bộ tạo âm thanh nói đến loa.
- Trong cửa sổ Properties của đối tượng AudioTextToSpeech:
Đặt Text thành bất kỳ điều gì bạn muốn giọng nói nói. Có giới hạn 300 ký tự cho mỗi yêu cầu.
Đặt VoiceId thành một số từ 1 đến 10, tùy thuộc vào giọng nói nhân tạo mà bạn muốn sử dụng trong bảng sau.
Danh sách các giọng nói nhân tạoVoiceID Mô tả Giọng nói Ví dụ Âm thanh 1 Nam Anh 2 Nữ Anh 3 Nam Mỹ #1 4 Nữ Mỹ #1 5 Nam Mỹ #2 6 Nữ Mỹ #2 7 Nam Úc 8 Nữ Úc 9 Giọng nói cổ điển #1 10 Giọng nói cổ điển #2 11 Giọng nói của người dẫn chương trình 101 Nam Tây Ban Nha 102 Nữ Tây Ban Nha 201 Nam Đức 202 Nữ Đức 301 Nam Ý 302 Nữ Ý 401 Nam Pháp 402 Nữ Pháp
Đặt Volume thành đơn vị biên độ mà bạn muốn phát âm thanh của mình.
- Trong cửa sổ Properties của đối tượng Wire:
- Đặt SourceInstance thành AudioTextToSpeech để chỉ định rằng bạn muốn phát âm thanh trong bộ tạo âm thanh nói cụ thể này.
- Đặt TargetInstance thành AudioDeviceOutput để chỉ định rằng bạn muốn phát âm thanh từ loa cụ thể này.
Từ đây, bạn có thể kích hoạt âm thanh TTS của mình bằng các script. Để tham khảo mã mẫu cho âm thanh TTS, bao gồm cách cấu hình TTS nhạy cảm với ngữ cảnh mà thích nghi dựa trên người chơi, trạng thái của môi trường của họ, hoặc tình trạng gameplay, xem tutorial Thêm văn bản thành giọng nói.
Giọng nói thành văn bản
Giọng nói thành văn bản (STT) là một hình thức công nghệ tự động tạo ra các chuỗi văn bản từ âm thanh nói. Loại âm thanh này yêu cầu ba đối tượng âm thanh:
- Một bộ tạo văn bản để tải và chuyển đổi âm thanh thành văn bản.
- Một thiết bị phần cứng vật lý như micro để ghi nhận âm thanh đầu vào.
- Một dây dẫn để chuyển luồng âm thanh từ thiết bị đầu vào đến bộ tạo văn bản.
Tất cả các đối tượng âm thanh này hoạt động cùng nhau để tạo ra văn bản STT phản ứng với hành động của người chơi. Ví dụ, nếu người chơi đang đeo tai nghe trong khi chơi một trải nghiệm trên máy tính xách tay của họ:
- AudioDeviceInput ghi nhận giọng nói của người chơi, được phát ra vào micro của họ và như một luồng âm thanh.
- AudioSpeechToText chuyển đổi giọng nói của người chơi thành văn bản.
- Trải nghiệm đọc văn bản này và thực hiện một hành động, chẳng hạn như hiển thị văn bản đã nói trên màn hình hoặc mở cửa theo lệnh của người chơi.

Để triển khai chức năng giọng nói thành văn bản trong trải nghiệm của bạn:
- Kích hoạt việc sử dụng API mới nhất cho giọng nói.
- Trong cửa sổ Explorer, chọn VoiceChatService.
- Trong cửa sổ Properties, đặt UseAudioApi thành Enabled.
- Trong cửa sổ Explorer, đến SoundService và chèn các mục sau:
- Một AudioDeviceInput để ghi nhận giọng nói.
- Một AudioSpeechToText để chuyển đổi giọng nói thành văn bản.
- Một Wire để chuyển luồng từ đầu vào thiết bị âm thanh đến đối tượng STT.
- Trong cửa sổ Properties của đối tượng AudioSpeechToText, đặt trạng thái Enabled thành bật.
- Trong cửa sổ Properties của đối tượng Wire:
- Đặt SourceInstance thành AudioDeviceInput mới của bạn để chỉ định rằng bạn muốn dây dẫn mang âm thanh từ phiên bản âm thanh cụ thể này.
- Đặt TargetInstance thành AudioSpeechToText mới của bạn để chỉ định rằng bạn muốn dây dẫn mang âm thanh đến phiên bản âm thanh cụ thể này.
- Đặt thuộc tính Player của đầu vào thiết bị âm thanh thành người chơi địa phương tại thời gian thực với audioDeviceInput.Player = game.Players.LocalPlayer. Điều này nói cho Roblox biết microphone của người dùng nào sẽ được ghi nhận âm thanh.
Sau khi thiết lập chức năng STT trong trải nghiệm của bạn, bạn có thể kích hoạt nó bằng các script. Để tham khảo mã mẫu, xem tutorial Thêm giọng nói thành văn bản.
Ngôn ngữ được hỗ trợ
Không cần cấu hình gì để kích hoạt các ngôn ngữ được hỗ trợ. Roblox sẽ tự động phát hiện ngôn ngữ nói từ âm thanh và chuyển đổi thành văn bản.
STT hỗ trợ các ngôn ngữ sau:
- Ả Rập
- Trung Quốc (Đơn giản hóa)
- Trung Quốc (Bổ sung)
- Tiếng Anh
- Tiếng Pháp
- Tiếng Đức
- Tiếng Indonesia
- Tiếng Ý
- Tiếng Nhật
- Tiếng Hàn
- Tiếng Ba Lan
- Tiếng Bồ Đào Nha
- Tiếng Tây Ban Nha
- Tiếng Nga
- Tiếng Thổ Nhĩ Kỳ
- Tiếng Thái
- Tiếng Việt
Lọc cho các từ tương tự
Khi bạn triển khai STT trong trải nghiệm của mình, bạn có thể muốn cải thiện độ chính xác khớp bằng cách lọc các từ có âm thanh tương tự với các từ mà bạn thực sự muốn người chơi nói. Để làm điều này, bạn có thể so sánh các từ được AudioSpeechToText nhận diện với các danh sách từ đã biết:
- Làm sạch và phân tách đầu ra Text của AudioSpeechToText để tạo ra một bảng các chuỗi viết thường có thể được phân tích và so sánh.
- Loại bỏ các ký tự chấm câu.
- Chuyển đổi toàn bộ chuỗi thành chữ thường.
- Tách chuỗi theo dấu cách để tạo ra một bảng các từ.
- Tạo bảng ứng viên để chuẩn bị cho các chuỗi của bạn cho việc so sánh.
- Làm sạch và phân tách mỗi chuỗi tham chiếu.
- Lưu trữ những từ đã xử lý này trong một bảng riêng.
- So sánh và khớp các từ trong cả hai bảng để nhận diện các đầu vào giọng nói gần giống với các cụm từ mục tiêu của bạn, ngay cả khi chúng bao gồm các biến thể nhỏ.
- Đối với các kiểm tra đơn giản, hãy kiểm tra xem các chuỗi có hoàn toàn giống nhau hay không.
- Đối với các khớp linh hoạt hơn, bạn có thể viết logic tùy chỉnh để chấp nhận các thay thế (chẳng hạn như "colour" thay vì "color") hoặc khớp một tập hợp con của các từ và tính toán điểm tương đồng.
Tùy chỉnh âm thanh
Các hiệu ứng âm thanh cho phép bạn chỉnh sửa hoặc tăng cường luồng âm thanh trước khi nó đến tai người chơi mà không làm hỏng chúng. Bạn có thể áp dụng các hiệu ứng này để biến âm thanh của bạn trở nên sống động hơn trong các trải nghiệm, chẳng hạn như sử dụng một đối tượng AudioEqualizer để làm cho tiếng mưa nghe bị nghẹt, đối tượng AudioCompressor để kiểm soát âm lượng tối đa của một âm thanh, hoặc AudioReverb để thêm các phản xạ âm thanh thực tế hơn trong các không gian nội thất.
Để biết hướng dẫn chi tiết về cách cấu hình các hiệu ứng âm thanh cũng như các so sánh trực tiếp giữa trước và sau khi bạn tùy chỉnh âm thanh của mình, hãy xem Các hiệu ứng âm thanh.


Kích hoạt âm thanh
Bạn có thể kích hoạt âm thanh theo ngữ cảnh từ một script bằng cách gọi Play() trên một đối tượng AudioPlayer đã được nối dây đúng cách. Ví dụ, nếu bạn gán một script cho một trình phát âm thanh, bạn có thể kích hoạt tài sản âm thanh thông qua một cái gì đó như thế này:
local audio = script.Parent
local something = ...
something.SomeEvent:Connect(function()
audio:Play()
end)
Để biết thêm các mẫu mã phức tạp để kích hoạt âm thanh, chẳng hạn như cho phản hồi gameplay, tương tác UI và tiếng ồn nền lặp lại, xem các tutorial Thêm âm thanh 2D, Thêm âm thanh 3D và Thêm văn bản thành giọng nói.