تحويل الكلام إلى نص (STT) هو شكل من أشكال التكنولوجيا التي تنشئ تلقائيًا نصوصًا من أصوات الكلام. مع STT، يمكنك إنشاء عوالم أكثر غمرًا من خلال السماح للاعبين بالتحدث إلى الشخصيات غير القابلة للعب، وتوليد نصوص دون الحاجة إلى تسجيل صوتي محدد مسبقًا، وتحسين إمكانية الوصول للاعبين الذين يعانون من قيود حركية أو بصرية، وتوفير عناصر تحكم يدوية للاعبين من خلال اختصارات صوتية لإجراءات مثل فتح مخزونهم أو إلقاء تعويذة.
باستخدام منزل الزنجبيل - البداية .rbxl كنقطة انطلاق، يوضح لك هذا الدليل كيفية إضافة نص يتم توليده ديناميكيًا من الكلام إلى تجربتك، بما في ذلك إرشادات حول كيفية تنفيذ STT حتى يتمكن اللاعب من التفاعل مع الكائنات في عالمك ثلاثي الأبعاد.
كائنات الصوت
لإنشاء صوت STT، من المهم أن نفهم كائنات الصوت التي ستعمل بها طوال هذا الدليل. هناك ثلاثة أنواع من كائنات الصوت لـ STT:
- كائن AudioDeviceInput هو جهاز مادي في العالم الحقيقي، مثل ميكروفون في حاسوب محمول أو هاتف أو سماعة رأس.
- كائن AudioSpeechToText يحول أصوات الكلام إلى سلاسل نصية.
- Wires تحمل تدفقات الصوت من كائن إلى آخر.
تعمل جميع هذه الكائنات الصوتية معًا لتوليد نص STT استجابةً لأفعال اللاعب. على سبيل المثال، إذا كان اللاعب يرتدي سماعة رأس أثناء لعب تجربة باستخدام حاسوبه المحمول:
- يلتقط AudioDeviceInput كلام اللاعب كما يُقال في ميكروفونه وكتيار صوتي.
- تحمل Wire التيار الصوتي من AudioDeviceInput إلى AudioSpeechToText.
- يحول AudioSpeechToText كلام اللاعب إلى نص.
- تقرأ التجربة هذا النص وتقوم بتنفيذ إجراء، مثل عرض النص المنطوق على الشاشة أو فتح باب عند أمر اللاعب.
تفعيل استخدام الميكروفون
قبل إضافة STT إلى تجربة، يجب أولاً تفعيل استخدام الميكروفون ونشر التجربة.
- افتح ملف منزل الزنجبيل - البداية في Studio.
- أنشئ نسخة محلية.
- انشر نسختك المحلية من التجربة.
- عد إلى Studio، انتقل إلى ملف ⟩ إعدادات التجربة ⟩ الاتصالات.
- قم بتشغيل تمكين الميكروفون.
- احفظ تغييراتك.
إضافة التقاط كلام بسيط
لإضافة التقاط كلام بسيط إلى نسختك المحلية من ملف منزل الزنجبيل - البداية:
قم بتمكين استخدام أحدث واجهة برمجة التطبيقات للصوت.
- في نافذة Explorer، حدد VoiceChatService.
- في نافذة الخصائص، تعيين UseAudioApi إلى مفعل.
أنشئ كائنات الصوت الأساسية التي ستتيح لك التقاط الكلمات المنطوقة.
- في نافذة Explorer، انتقل إلى Workspace > DialogueVolume.
- احذف جميع الكائنات داخل مجلد DialogueVolume.
- أدخل الكائنات التالية في مجلد DialogueVolume:
- AudioDeviceInput لالتقاط الكلام.
- AudioSpeechToText لتحويل الكلام إلى نص.
- Wire لحمل التيار من إدخال جهاز الصوت إلى مثيل STT.
- في نافذة الخصائص لكائن AudioSpeechToText، قم بتعيين حالة Enabled إلى ON.
- في نافذة الخصائص لكائن 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 بنسخة نصية من كلامك.
لاختبار التقاط الكلام:
- تحت اختبار > العملاء والخوادم، اختر اختبار الفريق.
- انقر على بدء لبدء خادم الاختبار.
- في خادم الاختبار الجديد، قم بإلغاء كتم صوت الميكروفون وتحدث ببعض الكلمات.
- في نافذة Explorer، انتقل إلى Workspace > DialogueVolume > AudioSpeechToText.
- في نافذة الخصائص لـ AudioSpeechToText، تأكد من أن الكلمات التي قدتها في الميكروفون قد ظهرت كقيمة لخاصية Text.
استخدام STT مع طريقة اللعب
لربط STT بطريقة اللعب وجعل باب منزل الزنجبيل يفتح عندما يقول اللاعب "افتح يا سمسم" في الميكروفون الخاص به:
أنشئ حدث عن بُعد لربط العميل بالخادم.
- سمها 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 في رسمة المشهد-- يتم تحديث خاصية النص الخاصة بالعقدة عندما تتعرف على الكلامlocal speechToText = workspace:WaitForChild('DialogueVolume'):WaitForChild('AudioSpeechToText')-- وظيفة تخبر الخادم بفتح الباب إذا التقط STT اللاعب وهو يقول "افتح يا سمسم"speechToText:GetPropertyChangedSignal('Text'):Connect(function()local text = speechToText.Textif text == '' thenreturnendprint(text)if (text.find(text, 'افتح يا سمسم') ~= nil) thenremoteEvent:FireServer()endspeechToText.Text = ''end)اختبر تنفيذ STT الخاص بك.
- تحت اختبار > العملاء والخوادم، اختر اختبار الفريق.
- انقر على ابدأ لبدء خادم الاختبار.
- في خادم الاختبار الجديد، اقترب من الباب، ألغِ كتم صوت الميكروفون، وقل "افتح يا سمسم". يجب أن يفتح الباب ويسمح لك بالدخول إلى منزل الزنجبيل.