Konuşmadan metne geçiş (STT), konuşma seslerinden otomatik olarak metin üreten bir teknoloji türüdür. STT ile, oyuncuların NPC'lerle konuşmasına olanak tanıyarak, belirli sesleri önceden kaydetme gereksinimini ortadan kaldırarak metin oluşturabilir, motor veya görme kısıtlamaları olan oyuncuların erişilebilirliğini artırabilir ve oyunculara envanterlerini açmak veya bir büyü atmak gibi işlemler için ses kısayolları aracılığıyla eller serbest kontroller sağlayabilirsiniz.
Gingerbread House - Start .rbxl dosyasını başlangıç noktası olarak kullanarak, bu öğretici, oyuncunun 3D dünyanızdaki nesnelerle etkileşimde bulunabilmesi için STT uygulamanızla birlikte konuşmadan dinamik olarak üretilen metni deneyiminize nasıl ekleyeceğinizi gösterir.
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 bulunmaktadır:
- AudioDeviceInput nesnesi, bir dizüstü bilgisayardaki, telefon veya kulaklıktaki mikrofon gibi gerçek dünyada fiziksel bir donanım cihazıdır.
- AudioSpeechToText nesnesi, konuşma seslerini metin dizelerine çevirir.
- Wires, ses akışlarını bir nesneden diğerine taşır.
Bu ses nesnelerinin tümü, oyuncu etkileşimlerine yanıt olarak STT metnini oluşturmak için birlikte çalışır. Örneğin, oyuncu dizüstü bilgisayarıyla bir deneyim oynarken bir kulaklık takıyorsa:
- AudioDeviceInput, oyuncunun mikrofonuna konuşarak yaptığı konuşmayı ses akışı olarak yakalar.
- Wire, ses akışını AudioDeviceInput'dan AudioSpeechToText'e taşır.
- AudioSpeechToText, oyuncunun konuşmasını metne dönüştürür.
- Deneyim bu metni okur ve oyuncunun komutuyla ekranında konuşulan metni görüntülemek veya bir kapıyı açmak gibi bir işlem gerçekleştirir.
Mikrofon kullanımını etkinleştir
Bir deneyime STT eklemeden önce, önce mikrofon kullanımını etkinleştirmeli ve deneyimi yayınlamalısınız.
- Studio'da Gingerbread House - Start dosyasını açın.
- Yerel bir kopya oluşturun.
- Deneyiminizin yerel kopyasını yayınlayın.
- Yine Studio'da, Dosya ⟩ Deneyim Ayarları ⟩ İletişim menüsüne gidin.
- Mikrofonu Etkinleştir seçeneğini açın.
- Değişikliklerinizi kaydedin.
Basit konuşma yakalamayı ekle
Gingerbread House - Start dosyasının yerel kopyasına basit konuşma yakalamayı 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 yakalamak için temel ses nesnelerini oluşturun.
- Explorer penceresinde, Workspace > DialogueVolume'a gidin.
- DialogueVolume klasörünün içindeki tüm nesneleri silin.
- Aşağıdaki nesneleri DialogueVolume klasörüne ekleyin:
- Konuşmayı yakalamak için bir AudioDeviceInput.
- Konuşmayı metne dönüştürmek için bir AudioSpeechToText.
- Ses cihazı girdisinden STT örneğine akışı taşımak için bir Wire.
- AudioSpeechToText nesnesinin Properties penceresinde, Enabled durumunu aktif hale getirin.
- Wire nesnesinin Properties penceresinde:
- Akışın bu belirli ses örneğinden taşınması için SourceInstance'yi yeni AudioDeviceInput'inize ayarlayın.
- Akışın bu belirli ses örneğine taşınması için TargetInstance'yi yeni AudioSpeechToText'inize ayarlayın.
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 yakalanacağını söyler.
- Explorer penceresinde, StarterPlayer > StarterCharacterScripts'e gidin.
- Bir LocalScript ekleyin ve adını ListenForMagicWord koyun.
- Yeni yerel scriptin içine 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 deneyimi 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 > Müşteriler ve Sunucular altında, Ekip 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ü onaylayın.
STT'yi oyun oynama ile kullanma
STT'yi oyun oynama ile bağlamak ve oyuncu mikrofonuna "Açıl Susam Açıl" dediğinde zencefil evinin kapısını açmak için:
İstemciyi sunucuya bağlamak için bir uzak etkinlik oluşturun.
- Adını OpenDoor koyun.
Zencefil evinin kapısını açılacak şekilde animasyon yapmak için yeni bir script ekleyin.
- ServerScriptService altında, sunucu tarafında bir Script ekleyin.
- Adını DoorService koyun.
- Yeni scriptin içine 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ı isteyebilmesi içinlocal remoteEvent = ReplicatedStorage:WaitForChild("OpenDoor")-- Kapıyı aşağı hareket ettirip açan animasyonu tanımlayan 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 geçiş ile bağlayarak, oyuncu mikrofonuna konuştuğunda bir eylem gerçekleştirilmesini sağlayın.
- StarterPlayer > StarterCharacterScripts'e gidin.
- Daha önce oluşturduğunuz ListenForMagicWord scriptini 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")-- STT düğümünü sahne grafiğinde 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 yakaladığında sunucuya kapıyı açması için bildiren 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 > Müşteriler ve Sunucular altında, Ekip 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 zencefil evine almalıdır.