Teks-dari-Ucapan (STT) adalah bentuk teknologi yang secara otomatis menghasilkan teks dari suara ucapan. Dengan STT, Anda dapat membuat dunia yang lebih imersif dengan memungkinkan pemain berbicara dengan NPC, menghasilkan teks tanpa perlu merekam audio tertentu sebelumnya, meningkatkan aksesibilitas untuk pemain dengan keterbatasan motorik atau penglihatan, dan memberikan pemain kontrol tanpa tangan melalui pintasan suara untuk tindakan seperti membuka inventaris mereka atau mengucapkan mantra.
Menggunakan file Gingerbread House - Start .rbxl sebagai tempat awal, tutorial ini menunjukkan cara menambahkan teks yang dihasilkan secara dinamis dari ucapan ke pengalaman Anda, termasuk panduan tentang cara menerapkan STT sehingga pemain dapat berinteraksi dengan objek di dunia 3D Anda.
Objek audio
Untuk membuat audio STT, penting untuk memahami objek audio yang akan Anda kerjakan sepanjang tutorial ini. Ada tiga jenis objek audio untuk STT:
- Objek AudioDeviceInput adalah perangkat keras fisik di dunia nyata, seperti mikrofon di laptop, ponsel, atau headset.
- Objek AudioSpeechToText mengubah suara ucapan menjadi string teks.
- Wires membawa aliran audio dari satu objek ke objek lainnya.
Semua objek audio ini bekerja sama untuk menghasilkan teks STT sebagai respons terhadap tindakan pemain. Misalnya, jika pemain mengenakan headset saat bermain pengalaman dengan laptop mereka:
- AudioDeviceInput menangkap ucapan pemain, sebagaimana diucapkan ke mikrofon mereka dan sebagai aliran audio.
- Sebuah Wire membawa aliran audio dari AudioDeviceInput ke AudioSpeechToText.
- AudioSpeechToText mengubah ucapan pemain menjadi teks.
- Pengalaman membaca teks ini dan melakukan tindakan, seperti menampilkan teks yang diucapkan di layar atau membuka pintu sesuai perintah pemain.
Aktifkan penggunaan mikrofon
Sebelum menambahkan STT ke pengalaman, Anda harus terlebih dahulu mengaktifkan penggunaan mikrofon dan menerbitkan pengalaman tersebut.
- Buka file Gingerbread House - Start di Studio.
- Buat salinan lokal.
- Terbitkan salinan lokal dari pengalaman Anda.
- Kembali ke Studio, pergi ke File ⟩ Pengaturan Pengalaman ⟩ Komunikasi.
- Aktifkan Aktifkan Mikrofon.
- Simpan perubahan Anda.
Tambahkan pengambilan ucapan sederhana
Untuk menambahkan pengambilan ucapan sederhana ke salinan lokal Anda dari file Gingerbread House - Start:
Aktifkan penggunaan API terbaru untuk suara.
- Di jendela Explorer, pilih VoiceChatService.
- Di jendela Properties, atur UseAudioApi ke Enabled.
Buat objek audio dasar yang akan memungkinkan Anda menangkap kata-kata yang diucapkan.
- Di jendela Explorer, pergi ke Workspace > DialogueVolume.
- Hapus semua objek di dalam folder DialogueVolume.
- Sisipkan objek berikut ke dalam folder DialogueVolume:
- Sebuah AudioDeviceInput untuk menangkap ucapan.
- Sebuah AudioSpeechToText untuk mengkonversi ucapan menjadi teks.
- Sebuah Wire untuk membawa aliran dari perangkat audio input ke instance STT.
- Di jendela Properties dari objek AudioSpeechToText, atur status Enabled ke aktif.
- Di jendela Properties dari objek Wire:
- Atur SourceInstance ke AudioDeviceInput baru Anda untuk menentukan bahwa Anda ingin kabel ini membawa audio dari instance audio spesifik ini.
- Atur TargetInstance ke AudioSpeechToText baru Anda untuk menentukan bahwa Anda ingin kabel ini membawa audio ke instance audio spesifik ini.
Atur properti Player dari perangkat audio input ke pemain lokal saat runtime. Ini memberi tahu Roblox mikrofon pengguna mana yang harus menangkap audio.
- Di jendela Explorer, pergi ke StarterPlayer > StarterCharacterScripts.
- Sisipkan sebuah LocalScript dan beri nama ListenForMagicWord.
- Tempelkan kode berikut ke dalam skrip lokal baru:
local audioDeviceInput = workspace:WaitForChild('DialogueVolume'):WaitForChild('AudioDeviceInput')-- Mengikat mikrofon ke pemain lokalaudioDeviceInput.Player = game.Players.LocalPlayer
Uji pengambilan ucapan Anda
Setelah Anda menambahkan pengambilan ucapan sederhana, Anda dapat melakukan uji coba pengalaman untuk memastikan implementasi STT Anda berfungsi dengan baik. Berbicara ke mikrofon Anda seharusnya mengisi properti AudioSpeechToText dengan versi teks dari ucapan Anda.
Untuk menguji pengambilan ucapan Anda:
- Di bawah Uji > Klien dan Server, pilih Uji Tim.
- Klik Mulai untuk memulai server uji.
- Di server uji baru, aktifkan mikrofon Anda dan ucapkan beberapa kata.
- Di jendela Explorer, pergi ke Workspace > DialogueVolume > AudioSpeechToText.
- Di jendela Properties dari AudioSpeechToText, konfirmasi bahwa kata-kata yang Anda ucapkan ke mikrofon Anda telah muncul sebagai nilai dari properti Text.
Gunakan STT dengan gameplay
Untuk menghubungkan STT ke gameplay dan membuka pintu rumah jahe ketika pemain mengucapkan "Open Sesame" ke mikrofon mereka:
Buat sebuah acara remote untuk menghubungkan klien ke server.
- Namai itu OpenDoor.
Tambahkan skrip baru untuk menganimasikan pembukaan pintu rumah jahe.
- Di bawah ServerScriptService, sisipkan sebuah Script sisi server.
- Namai itu DoorService.
- Tempelkan kode berikut ke dalam skrip baru:
-- Mendapatkan layanan ReplicatedStorage untuk penyimpanan bersama antara server dan klien-- Mendapatkan TweenService untuk sistem tweeninglocal ReplicatedStorage = game:GetService("ReplicatedStorage")local TweenService = game:GetService("TweenService")-- Memungkinkan klien untuk meminta server membuka pintulocal remoteEvent = ReplicatedStorage:WaitForChild("OpenDoor")-- Fungsi yang menganimasikan pintu untuk bergerak ke bawah dan terbukalocal 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-- Menghubungkan fungsi ke acararemoteEvent.OnServerEvent:Connect(openDoor)Hubungkan pintu ke teks-dari-ucapan sehingga sebuah tindakan terjadi ketika pemain berbicara ke mikrofon mereka.
- Pergi ke StarterPlayer > StarterCharacterScripts.
- Buka skrip ListenForMagicWord yang Anda buat sebelumnya.
- Tambahkan baris berikut:
-- Mendapatkan layanan ReplicatedStorage untuk penyimpanan bersama antara server dan klienlocal ReplicatedStorage = game:GetService("ReplicatedStorage")-- Mendapatkan RemoteEvent yang akan diaktifkan klien ke serverlocal remoteEvent = ReplicatedStorage:WaitForChild("OpenDoor")-- Menemukan node STT dalam grafik scene-- Properti Text node diperbarui saat mengenali ucapanlocal speechToText = workspace:WaitForChild('DialogueVolume'):WaitForChild('AudioSpeechToText')-- Fungsi yang memberitahu server untuk membuka pintu jika STT menangkap pemain yang mengucapkan "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)Uji implementasi STT Anda.
- Di bawah Uji > Klien dan Server, pilih Uji Tim.
- Klik Mulai untuk memulai server uji.
- Di server uji baru, berjalanlah ke pintu, aktifkan mikrofon Anda, dan katakan "Open Sesame". Pintu harus terbuka dan membiarkan Anda masuk ke rumah jahe.