การแปลงคำพูดเป็นข้อความ (STT) เป็นรูปแบบของเทคโนโลยีที่สร้างข้อความจากเสียงพูดโดยอัตโนมัติ ด้วย STT คุณสามารถสร้างโลกที่มีสุขภาพสมบูรณ์ยิ่งขึ้นโดยอนุญาตให้ผู้เล่นพูดคุยกับ NPCs, สร้างข้อความโดยไม่จำเป็นต้องบันทึกเสียงไว้ล่วงหน้า, ปรับปรุงการเข้าถึงสำหรับผู้เล่นที่มีข้อจำกัดในการเคลื่อนไหวหรือการมองเห็น, และให้ผู้เล่นสามารถควบคุมโดยไม่ต้องใช้มือผ่านทางลัดเสียงสำหรับการทำงาน เช่น การเปิดคลังของพวกเขาหรือการร่ายมนต์
โดยใช้ไฟล์ Gingerbread House - Start .rbxl เป็นจุดเริ่มต้น การสอนนี้จะแสดงให้คุณเห็นวิธีการเพิ่มข้อความที่สร้างขึ้นแบบไดนามิกจากคำพูดลงในประสบการณ์ของคุณ รวมถึงแนวทางในการใช้ STT เพื่อให้ผู้เล่นสามารถโต้ตอบกับวัตถุในโลก 3 มิติของคุณ
วัตถุเสียง
ในการสร้างเสียง STT สิ่งสำคัญคือการเข้าใจว่าวัตถุเสียงที่คุณจะทำงานด้วยตลอดการสอนนี้ ได้แก่ สามประเภทดังนี้:
- วัตถุ AudioDeviceInput เป็นอุปกรณ์ฮาร์ดแวร์จริงในโลก เช่น ไมโครโฟนในแล็ปท็อป โทรศัพท์ หรือหูฟัง
- วัตถุ AudioSpeechToText แปลงเสียงพูดให้เป็นสตริงข้อความ
- Wires ส่งสัญญาณเสียงจากวัตถุหนึ่งไปยังอีกวัตถุหนึ่ง
วัตถุเสียงทั้งหมดนี้ทำงานร่วมกันเพื่อตอบสนองต่อการกระทำของผู้เล่นด้วยการสร้างข้อความ STT ตัวอย่างเช่น หากผู้เล่นสวมใส่หูฟังในขณะเล่นประสบการณ์ด้วยแล็ปท็อปของพวกเขา:
- AudioDeviceInput จะจับเสียงพูดของผู้เล่นที่พูดเข้าไมโครโฟนและเป็นสตรีมเสียง
- Wire จะส่งสัญญาณเสียงจาก AudioDeviceInput ไปยัง AudioSpeechToText
- AudioSpeechToText แปลงเสียงพูดของผู้เล่นให้เป็นข้อความ
- ประสบการณ์จะอ่านข้อความนี้และทำการส่งแฟง เช่น แสดงข้อความที่พูดออกมาบนหน้าจอ หรือเปิดประตูตามคำสั่งของผู้เล่น
เปิดใช้งานการใช้ไมโครโฟน
ก่อนที่จะเพิ่ม STT ในประสบการณ์ คุณต้องเปิดใช้งานการใช้ไมโครโฟนและเผยแพร่ประสบการณ์ก่อน
- เปิดไฟล์ Gingerbread House - Start ใน Studio
- สร้างสำเนาท้องถิ่น
- เผยแพร่สำเนาท้องถิ่นของประสบการณ์ของคุณ
- กลับไปที่ Studio ไปที่ File ⟩ Experience Settings ⟩ Communication
- เปิดใช้งาน Enable Microphone
- บันทึกการเปลี่ยนแปลงของคุณ
เพิ่มการจับเสียงพูดอย่างง่าย
ในการเพิ่มการจับเสียงพูดอย่างง่ายในสำเนาท้องถิ่นของไฟล์ Gingerbread House - Start:
เปิดใช้งานการใช้ API ล่าสุดสำหรับเสียง
- ในหน้าต่าง Explorer ให้เลือก VoiceChatService
- ในหน้าต่าง Properties ให้ตั้งค่า UseAudioApi เป็น Enabled
สร้างวัตถุเสียงพื้นฐานที่จะช่วยให้คุณจับคำพูดได้
- ในหน้าต่าง Explorer ไปที่ Workspace > DialogueVolume
- ลบวัตถุทั้งหมดภายในโฟลเดอร์ DialogueVolume
- ใส่วัตถุดังต่อไปนี้ในโฟลเดอร์ DialogueVolume:
- AudioDeviceInput เพื่อจับเสียงพูด
- AudioSpeechToText เพื่อแปลงเสียงพูดเป็นข้อความ
- Wire เพื่อส่งสัญญาณจากการป้อนอุปกรณ์เสียงไปยังอิง STT
- ในหน้าต่าง Properties ของวัตถุ AudioSpeechToText ให้ตั้งสถานะ Enabled เป็นเปิด
- ในหน้าต่าง Properties ของวัตถุ Wire:
- ตั้งค่า SourceInstance เป็น AudioDeviceInput ใหม่ของคุณเพื่อระบุว่าคุณต้องการให้สายส่งเสียงจากอิงเสียงนี้
- ตั้งค่า TargetInstance เป็น AudioSpeechToText ใหม่ของคุณเพื่อตรวจสอบว่าสายจะส่งเสียงไปยังอิงเสียงนี้
ตั้งค่าคุณสมบัติ Player ของการป้อนอุปกรณ์เสียงเป็นผู้เล่นท้องถิ่นในขณะใช้งาน นี่จะบอก Roblox ว่าไมโครโฟนของผู้ใช้คนใดที่จะจับเสียง
- ในหน้าต่าง Explorer ไปที่ StarterPlayer > StarterCharacterScripts
- ใส่ LocalScript และตั้งชื่อว่า ListenForMagicWord
- วางโค้ดต่อไปนี้ในสคริปต์ท้องถิ่นใหม่:
local audioDeviceInput = workspace:WaitForChild('DialogueVolume'):WaitForChild('AudioDeviceInput')-- ผูกไมโครโฟนกับผู้เล่นท้องถิ่นaudioDeviceInput.Player = game.Players.LocalPlayer
ทดสอบการจับเสียงพูดของคุณ
หลังจากที่คุณเพิ่มการจับเสียงพูดอย่างง่าย คุณสามารถทดสอบการเล่นประสบการณ์เพื่อให้แน่ใจว่าการใช้งาน STT ของคุณทำงานได้อย่างถูกต้อง การพูดเข้าสู่อุปกรณ์ไมโครโฟนของคุณควรเติมคุณสมบัติ AudioSpeechToText ด้วยเวอร์ชันข้อความของเสียงพูดของคุณ
เพื่อทดสอบการจับเสียงพูดของคุณ:
- ภายใต้ Test > Clients and Servers ให้เลือก Team Test
- คลิก Start เพื่อเริ่มเซิร์ฟเวอร์ทดสอบ
- ในเซิร์ฟเวอร์ทดสอบใหม่ ให้ปิดเสียงไมโครโฟนของคุณและพูดคำไม่กี่คำ
- ในหน้าต่าง Explorer ไปที่ Workspace > DialogueVolume > AudioSpeechToText
- ในหน้าต่าง Properties ของ AudioSpeechToText ให้ยืนยันว่าคำที่คุณพูดเข้าสู่อุปกรณ์ไมโครโฟนของคุณปรากฏขึ้นเป็นค่าในคุณสมบัติ Text
ใช้ STT กับการเล่นเกม
เพื่อเชื่อมต่อ STT เข้ากับการเล่นเกมและเพื่อเปิดประตูบ้านขนมปังขิงเมื่อผู้เล่นพูดว่า "Open Sesame" ในไมโครโฟนของพวกเขา:
สร้างเหตุการณ์ระยะไกลเพื่อเชื่อมต่อไคลเอนต์กับเซิร์ฟเวอร์
- ตั้งชื่อมันว่า OpenDoor
เพิ่มสคริปต์ใหม่เพื่อแอนิเมตการเปิดประตูบ้านขนมปังขิง
- ใต้ ServerScriptService ให้วาง Script สำหรับเซิร์ฟเวอร์
- ตั้งชื่อมันว่า DoorService
- วางโค้ดต่อไปนี้ในสคริปต์ใหม่:
-- รับบริการ ReplicatedStorage สำหรับการจัดเก็บข้อมูลที่แชร์ระหว่างเซิร์ฟเวอร์และไคลเอนต์-- รับบริการ TweenService สำหรับระบบการจัดเรียงlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local TweenService = game:GetService("TweenService")-- อนุญาตให้คลายรหัสขอให้เซิร์ฟเวอร์เปิดประตูlocal remoteEvent = ReplicatedStorage:WaitForChild("OpenDoor")-- ฟังก์ชันที่แอนิเมตประตูเพื่อเคลื่อนลงและเปิด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-- เชื่อมโยงฟังก์ชันกับเหตุการณ์remoteEvent.OnServerEvent:Connect(openDoor)เชื่อมโยงประตูกับการแปลงคำพูดเป็นข้อความเพื่อให้เกิดการกระทำเมื่อผู้เล่นพูดเข้าสู่ไมโครโฟนของตน
- ไปที่ StarterPlayer > StarterCharacterScripts
- เปิดสคริปต์ ListenForMagicWord ที่คุณสร้างไว้ก่อนหน้านี้
- เพิ่มบรรทัดต่อไปนี้:
-- รับบริการ ReplicatedStorage สำหรับการจัดเก็บข้อมูลที่แชร์ระหว่างเซิร์ฟเวอร์และไคลเอนต์local ReplicatedStorage = game:GetService("ReplicatedStorage")-- รับ RemoveEvent ที่ไคลเอนต์จะปล่อยไปยังเซิร์ฟเวอร์local remoteEvent = ReplicatedStorage:WaitForChild("OpenDoor")-- ค้นหาโหนด STT ในกราฟฉาก-- คุณสมบัติ Text ของโหนดจะได้รับการปรับปรุงเมื่อมันจดจำคำพูดlocal speechToText = workspace:WaitForChild('DialogueVolume'):WaitForChild('AudioSpeechToText')-- ฟังก์ชันที่บอกเซิร์ฟเวอร์ว่าให้เปิดประตูถ้า STT จับคำกล่าว "Open 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)ทดสอบการใช้งาน STT ของคุณ
- ภายใต้ Test > Clients and Servers ให้เลือก Team Test
- คลิก Start เพื่อเริ่มเซิร์ฟเวอร์ทดสอบ
- ในเซิร์ฟเวอร์ทดสอบใหม่ ให้เดินไปที่ประตู ปิดเสียงไมโครโฟนของคุณ และพูดว่า "Open Sesame" ประตูจะต้องเปิดและอนุญาตให้คุณเข้าสู่บ้านขนมปังขิง