Konuşmadan Metne (STT), konuşma seslerinden otomatik olarak metin üreten bir teknoloji biçimidir. STT ile, oyuncuların NPC'lerle konuşmasına, belirli sesleri önceden kaydetme ihtiyacı olmadan metin üretmesine, motor veya görme kısıtlamaları olan oyuncular için erişilebilirliği artırmasına ve oyunculara envanterlerini açmak veya bir büyü yapmak gibi eylemler için ses kısayolları aracılığıyla eller serbest kontroller sağlamasına olanak tanıyarak daha sürükleyici dünyalar yaratabilirsiniz.
Gingerbread House - Start .rbxl dosyasını başlangıç noktası olarak kullanarak, bu öğretici, oyununuzda konuşmadan dinamik olarak üretilen metni nasıl ekleyeceğinizi gösterir; ayrıca oyuncunun 3D dünyanızdaki nesnelerle etkileşimde bulunabilmesi için STT'yi nasıl uygulayacağınıza dair rehberlik sağlar.
Ses nesneleri
STT sesi oluşturmak için, bu öğretici boyunca çalışacağınız ses nesnelerini anlamak önemlidir. STT için üç tür ses nesnesi vardır:
- AudioDeviceInput nesnesi, bir dizüstü bilgisayar, telefon veya kulaklık gibi gerçek dünyadaki fiziksel bir donanım cihazıdır.
- AudioSpeechToText nesnesi, konuşma seslerini metin dizelerine dönüştürür.
- Wires, ses akışlarını bir nesneden diğerine taşır.
Bu ses nesnelerinin tümü, oyuncu eylemlerine yanıt olarak STT metni üretmek için birlikte çalışır. Örneğin, oyuncu bir oyun oynarken bir kulaklık takıyorsa:
- AudioDeviceInput, oyuncunun mikrofonuna konuşarak sesini yakalar ve bir ses akışı olarak alır.
- Bir Wire, ses akışını AudioDeviceInput'dan AudioSpeechToText'e taşır.
- AudioSpeechToText, oyuncunun konuşmasını metne dönüştürür.
- Oyun, bu metni okur ve ekranda konuşulan metni görüntülemek veya oyuncunun komutuyla bir kapıyı açmak gibi bir eylem gerçekleştirir.
Mikrofon kullanımını etkinleştir
Bir oyuna STT eklemeden önce, önce mikrofon kullanımını etkinleştirmeniz ve oyunu yayınlamanız gerekir.
- Gingerbread House - Start dosyasını Studio'da açın.
- Yerel bir kopya oluşturun.
- Oyununuzun yerel kopyasını yayınlayın.
- Studio'da Dosya ⟩ Deneyim Ayarları ⟩ İletişim'e gidin.
- Mikrofonu Etkinleştir seçeneğini açın.
- Değişikliklerinizi kaydedin.
Basit konuşma yakalama ekle
Gingerbread House - Start dosyanıza basit bir konuşma yakalama eklemek için:
ses için en son API kullanımını etkinleştirin.
- Explorer penceresinde, VoiceChatService'i seçin.
- Properties penceresinde, UseAudioApi'yi Enabled olarak ayarlayın.
Konuşulan kelimeleri yakalamanıza olanak tanıyacak temel ses nesnelerini oluşturun.
- Explorer penceresinde, Workspace > DialogueVolume'a gidin.
- DialogueVolume klasöründeki tüm nesneleri silin.
- DialogueVolume klasörüne aşağıdaki nesneleri ekleyin:
- Konuşmayı yakalamak için bir AudioDeviceInput.
- Konuşmayı metne dönüştürmek için bir AudioSpeechToText.
- Ses cihazı girişinden STT örneğine akışı taşımak için bir Wire.
- AudioSpeechToText nesnesinin Properties penceresinde, Enabled durumunu açık olarak ayarlayın.
- Wire nesnesinin Properties penceresinde:
- SourceInstance'ı yeni AudioDeviceInput'ınıza ayarlayın; bu, telin bu belirli ses örneğinden ses taşımasını istediğinizi belirtir.
- TargetInstance'ı yeni AudioSpeechToText'inize ayarlayın; bu, telin bu belirli ses örneğine ses taşımasını istediğinizi belirtir.
Ses cihazı girişinin Player özelliğini çalışma zamanında yerel oyuncuya ayarlayın. Bu, Roblox'a hangi kullanıcının mikrofonundan ses yakalayacağını söyler.
- Explorer penceresinde, StarterPlayer > StarterCharacterScripts'e gidin.
- Bir LocalScript ekleyin ve adını ListenForMagicWord olarak belirleyin.
- Yeni yerel script'e aşağıdaki kodu yapıştırın:
local audioDeviceInput = workspace:WaitForChild('DialogueVolume'):WaitForChild('AudioDeviceInput')-- Mikrofonu yerel oyuncuya bağlaraudioDeviceInput.Player = game.Players.LocalPlayer
Konuşma yakalamanızı test edin
Basit konuşma yakalamayı ekledikten sonra, STT uygulamanızın düzgün çalıştığından emin olmak için oyunu test edebilirsiniz. Mikrofonunuza konuşmak, AudioSpeechToText özelliğini konuşmanızın metin versiyonu ile doldurmalıdır.
Konuşma yakalamanızı test etmek için:
- Test > İstemciler ve Sunucular altında, Takım Testi'ni seçin.
- Test sunucusunu başlatmak için Başlat'a tıklayın.
- Yeni test sunucusunda, mikrofonunuzu açın ve birkaç kelime söyleyin.
- Explorer penceresinde, Workspace > DialogueVolume > AudioSpeechToText'e gidin.
- AudioSpeechToText'in Properties penceresinde, mikrofonunuza söylediğiniz kelimelerin Text özelliğinin değeri olarak göründüğünü doğrulayın.
STT'yi oyun ile kullanma
STT'yi oyun ile bağlamak ve oyuncu mikrofonuna "Açıl Susam Açıl" dediğinde zencefilli ev kapısını açmak için:
İstemciyi sunucuya bağlamak için bir uzak olay oluşturun.
- Adını OpenDoor olarak belirleyin.
Zencefilli ev kapısının açılmasını animasyonla göstermek için yeni bir script ekleyin.
- ServerScriptService altında, sunucu tarafında bir Script ekleyin.
- Adını DoorService olarak belirleyin.
- Yeni script'e aşağıdaki kodu yapıştırın:
-- Sunucu ve istemci arasında paylaşılan depolama için ReplicatedStorage hizmetini alır-- Tweening sistemi için TweenService'i alırlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local TweenService = game:GetService("TweenService")-- İstemcinin sunucudan kapıyı açmasını istemesine izin verirlocal remoteEvent = ReplicatedStorage:WaitForChild("OpenDoor")-- Kapıyı aşağı hareket ettirip açan animasyonu gerçekleştiren fonksiyonlocal 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-- Fonksiyonu olaya bağlarremoteEvent.OnServerEvent:Connect(openDoor)Kapıyı konuşmadan metne bağlayın, böylece oyuncu mikrofonuna konuştuğunda bir eylem gerçekleşir.
- StarterPlayer > StarterCharacterScripts'e gidin.
- Daha önce oluşturduğunuz ListenForMagicWord script'ini açın.
- Aşağıdaki satırları ekleyin:
-- Sunucu ve istemci arasında paylaşılan depolama için ReplicatedStorage hizmetini alırlocal ReplicatedStorage = game:GetService("ReplicatedStorage")-- İstemcinin sunucuya ateşleyeceği RemoveEvent'i alırlocal remoteEvent = ReplicatedStorage:WaitForChild("OpenDoor")-- Sahne grafiğinde STT düğümünü bulur-- Düğümün Text özelliği konuşmayı tanıdıkça güncellenirlocal speechToText = workspace:WaitForChild('DialogueVolume'):WaitForChild('AudioSpeechToText')-- STT, oyuncunun "Açıl Susam Açıl" dediğini yakalarsa sunucuya kapıyı açmasını söyleyen fonksiyonspeechToText:GetPropertyChangedSignal('Text'):Connect(function()local text = speechToText.Textif text == '' thenreturnendprint(text)if (text.find(text, 'açıl susam açıl') ~= nil) thenremoteEvent:FireServer()endspeechToText.Text = ''end)STT uygulamanızı test edin.
- Test > İstemciler ve Sunucular altında, Takım Testi'ni seçin.
- Test sunucusunu başlatmak için Başlat'a tıklayın.
- Yeni test sunucusunda, kapıya doğru yürüyün, mikrofonunuzu açın ve "Açıl Susam Açıl" deyin. Kapı açılmalı ve sizi zencefilli evin içine almalıdır.