Dịch 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 văn bản từ âm thanh lời nói. Với STT, bạn có thể tạo ra những thế giới sống động hơn bằng cách cho phép người chơi nói chuyện với NPC, tạo ra văn bản mà không cần phải ghi âm trước âm thanh cụ thể, cải thiện khả năng tiếp cận cho những người chơi có hạn chế về vận động hoặc thị giác, và cung cấp cho người chơi quyền điều khiển bằng giọng nói để thực hiện các hành động như mở túi đồ hoặc triệu hồi phép thuật.
Sử dụng tệp Gingerbread House - Start .rbxl làm điểm khởi đầu, hướng dẫn này sẽ chỉ cho bạn cách thêm văn bản được tạo động từ giọng nói vào trải nghiệm của bạn, bao gồm hướng dẫn cách thực hiện STT sao cho người chơi có thể tương tác với các đối tượng trong thế giới 3D của bạn.
Đối tượng âm thanh
Để tạo âm thanh STT, điều quan trọng là hiểu các đối tượng âm thanh mà bạn sẽ làm việc trong toàn bộ hướng dẫn này. Có ba loại đối tượng âm thanh cho STT:
- Đối tượng AudioDeviceInput là một thiết bị phần cứng vật lý trong thế giới thực, như một микрофоны trong máy tính xách tay, điện thoại hoặc tai nghe.
- Đối tượng AudioSpeechToText chuyển đổi âm thanh lời nói thành các chuỗi văn bản.
- Wires truyền tải các luồng âm thanh từ một đối tượng này sang đối tượng khác.
Tất cả những đối tượng âm thanh này làm việc cùng nhau để tạo ra văn bản STT đáp ứng các 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 trải nghiệm trên máy tính xách tay của họ:
- AudioDeviceInput ghi lại lời nói của người chơi, như khi nói vào микрофоны của họ và dưới dạng luồng âm thanh.
- Một Wire truyền tải luồng âm thanh từ AudioDeviceInput đến AudioSpeechToText.
- AudioSpeechToText chuyển đổi lời 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.
Bật sử dụng микрофоны
Trước khi thêm STT vào một trải nghiệm, bạn phải bật trước việc sử dụng микрофоны và xuất bản trải nghiệm này.
- Mở tệp Gingerbread House - Start trong Studio.
- Tạo một bản sao cục bộ.
- Xuất bản bản sao cục bộ của trải nghiệm.
- Quay lại Studio, vào Tệp ⟩ Cài đặt Trải nghiệm ⟩ Giao tiếp.
- Bật Bật Microphone.
- Lưu thay đổi của bạn.
Thêm ghi âm giọng nói đơn giản
Để thêm ghi âm giọng nói đơn giản vào bản sao cục bộ của tệp Gingerbread House - Start:
Bậ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.
Tạo các đối tượng âm thanh cơ bản cho phép bạn ghi lại lời nói.
- Trong cửa sổ Explorer, đi đến Workspace > DialogueVolume.
- Xóa tất cả các đối tượng bên trong thư mục DialogueVolume.
- Chèn các đối tượng sau vào thư mục DialogueVolume:
- Một AudioDeviceInput để ghi lại lời nói.
- Một AudioSpeechToText để chuyển đổi lời nói thành văn bản.
- Một Wire để truyền tải luồng từ đầu vào thiết bị âm thanh đến phiên bản 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 truyền tải â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 chuyển â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 cục bộ trong thời gian chạy. Điều này cho biết Roblox sẽ ghi lại âm thanh từ микрофоны của người dùng nào.
- Trong cửa sổ Explorer, đi đến StarterPlayer > StarterCharacterScripts.
- Chèn một LocalScript và đặt tên là ListenForMagicWord.
- Dán mã sau vào kịch bản cục bộ mới:
local audioDeviceInput = workspace:WaitForChild('DialogueVolume'):WaitForChild('AudioDeviceInput')-- Liên kết микрофона với người chơi cục bộaudioDeviceInput.Player = game.Players.LocalPlayer
Kiểm tra ghi âm giọng nói của bạn
Sau khi bạn thêm ghi âm giọng nói đơn giản, bạn có thể thử nghiệm trải nghiệm để đảm bảo rằng việc thực hiện STT của bạn hoạt động đúng cách. Nói vào микрофоны của bạn sẽ làm cho thuộc tính AudioSpeechToText được nhập với phiên bản văn bản của lời nói của bạn.
Để kiểm tra ghi âm giọng nói của bạn:
- Dưới Kiểm tra > Khách hàng và Máy chủ, chọn Kiểm tra Đội.
- Nhấp Bắt đầu để khởi động máy chủ thử nghiệm.
- Trong máy chủ thử nghiệm mới, bỏ tiếng микрофон của bạn và nói vài từ.
- Trong cửa sổ Explorer, đi đến Workspace > DialogueVolume > AudioSpeechToText.
- Trong cửa sổ Properties của AudioSpeechToText, xác nhận rằng các từ bạn đã nói vào микрофоны của bạn đã xuất hiện dưới dạng giá trị của thuộc tính Text.
Sử dụng STT với gameplay
Để kết nối STT với gameplay và mở cửa ngôi nhà gừng khi người chơi nói "Mở Sesame" vào микрофоны của họ:
Tạo một sự kiện từ xa để kết nối máy khách với máy chủ.
- Đặt tên nó là OpenDoor.
Thêm một kịch bản mới để động bộ hóa việc mở cửa ngôi nhà gừng.
- Dưới ServerScriptService, chèn một Script bên phía máy chủ.
- Đặt tên nó là DoorService.
- Dán mã sau vào kịch bản mới:
-- Lấy dịch vụ ReplicatedStorage để lưu trữ chung giữa máy chủ và máy khách-- Lấy TweenService cho hệ thống tweeninglocal ReplicatedStorage = game:GetService("ReplicatedStorage")local TweenService = game:GetService("TweenService")-- Cho phép máy khách yêu cầu máy chủ mở cửalocal remoteEvent = ReplicatedStorage:WaitForChild("OpenDoor")-- Hàm hoạt hình mở cửa để di chuyển xuống và mởlocal function openDoor()local doorPart = workspace:WaitForChild("Door")local tweenInfo = TweenInfo.new(2, Enum.EasingStyle.Linear)local tween = TweenService:Create(doorPart, tweenInfo, {Position = doorPart.Position + Vector3.new(0, -15, 0)})tween:Play()end-- Kết nối hàm với sự kiệnremoteEvent.OnServerEvent:Connect(openDoor)Kết nối cửa với dịch giọng nói thành văn bản sao cho một hành động xảy ra khi người chơi nói vào микрофоны của họ.
- Đi đến StarterPlayer > StarterCharacterScripts.
- Mở kịch bản ListenForMagicWord mà bạn đã tạo trước đó.
- Thêm các dòng sau:
-- Lấy dịch vụ ReplicatedStorage để lưu trữ chung giữa máy chủ và máy kháchlocal ReplicatedStorage = game:GetService("ReplicatedStorage")-- Lấy RemoveEvent mà máy khách sẽ phát đến máy chủlocal remoteEvent = ReplicatedStorage:WaitForChild("OpenDoor")-- Tìm nút STT trong đồ thị cảnh-- Thuộc tính Text của nút sẽ cập nhật khi nhận diện lời nóilocal speechToText = workspace:WaitForChild('DialogueVolume'):WaitForChild('AudioSpeechToText')-- Hàm này nói với máy chủ để mở cửa nếu STT ghi lại người chơi nói "Mở Sesame"speechToText:GetPropertyChangedSignal('Text'):Connect(function()local text = speechToText.Textif text == '' thenreturnendprint(text)if (text.find(text, 'open sesame') ~= nil) thenremoteEvent:FireServer()endspeechToText.Text = ''end)Kiểm tra việc thực hiện STT của bạn.
- Dưới Kiểm tra > Khách hàng và Máy chủ, chọn Kiểm tra Đội.
- Nhấp Bắt đầu để khởi động máy chủ thử nghiệm.
- Trong máy chủ thử nghiệm mới, đi đến gần cửa, bỏ tiếng микрофоны của bạn và nói "Mở Sesame". Cửa nên mở và cho phép bạn vào ngôi nhà gừng.