تسمح لك كائنات الصوت المودولية في Roblox بالتحكم الديناميكي في الصوت والدردشة الصوتية في تجاربك. يتوافق كل كائن صوت تقريبًا مع جهاز صوتي في العالم الحقيقي، وتعمل جميعها معًا لالتقاط وتشغيل الصوت مثل نظيراتها المادية.
على سبيل المثال، يقع كل كائن صوتي بشكل مفاهيمي في الفئات التالية:
- كائنات تنتج تدفقات الصوت، مثل مشغلات الصوت.
- كائنات تستهلك تدفقات الصوت، مثل المصدات الصوتية.
- كائنات تعدل تدفقات الصوت، مثل تأثيرات الصوت.
- كائنات تنقل تدفقات الصوت من كائن صوتي إلى آخر، مثل الأسلاك.
بينما تقرأ هذا الدليل وتتعلم كيف تعمل جميع هذه الكائنات الصوتية معًا لإصدار الصوت، ستتعلم كيفية التقاط وتغذية الموسيقى، وتأثيرات الصوت، وصوت الإنسان بدقة من التجربة إلى اللاعب والعكس بالعكس.
تشغيل الصوت
لتشغيل الصوت داخل تجربتك، من المهم فهم دور كل كائن صوت متاح:
- يقوم AudioPlayer بتحميل وتشغيل ملف الصوت باستخدام معرف الأصل الصوتي المحدد.
- AudioEmitter هو مكبر صوت افتراضي يصدر الصوت في البيئة ثلاثية الأبعاد.
- AudioListener هو ميكروفون افتراضي يلتقط الصوت من البيئة ثلاثية الأبعاد.
- AudioDeviceOutput هو جهاز مادي في العالم الحقيقي، مثل مكبر صوت أو سماعات رأس.
- AudioDeviceInput هو ميكروفون مادي في العالم الحقيقي.
- يقوم كائن AudioTextToSpeech بتحويل النص إلى صوت باستخدام صوت إنسان اصطناعي.
- يقوم كائن AudioSpeechToText بتحويل الصوت المنطوق إلى نص.
- كائن Wire ينقل تدفقات الصوت من كائن صوتي إلى آخر.
كيف تقوم بربط هذه الكائنات الصوتية معًا يعتمد على ما إذا كنت تريد إصدار الصوت مباشرة إلى مكبر صوت اللاعب أو سماعات الرأس أو من كائنات في الفضاء ثلاثي الأبعاد. توضح الأقسام التالية كلا السيناريوهين.
الصوت ثنائي الأبعاد
الصوت ثنائي الأبعاد هو صوت غير اتجاهي يتم تشغيله من موقع غير محدد، ويظل بنفس الحجم بغض النظر عن موقع اللاعب أو اتجاهه في الفضاء ثلاثي الأبعاد. يتطلب هذا النوع من الصوت ثلاثة كائنات صوتية:
- مشغل صوت لإنتاج تدفق صوتي.
- جهاز مادي لتشغيل تدفق الصوت في العالم الحقيقي.
- سلك لنقل تدفق الصوت من مشغل الصوت إلى جهاز الإخراج.
لتوضيح كيفية تكوين هذه الكائنات الصوتية في الاستوديو للصوت ثنائي الأبعاد، يقارن الرسم البياني التالي كل كائن مع نظيره من جهاز الصوت في العالم الحقيقي. باختصار:
- يقوم AudioPlayer بتحميل وتشغيل أصل الصوت الخاص بك مع الإعدادات المحددة.
- يسمح AudioDeviceOutput للاعب بسماع الصوت من خلال مكبر الصوت أو سماعات الرأس.
- يتصل Wire بمشغل الصوت من خلال خاصية SourceInstance، وبالجهاز المادي من خلال خاصية TargetInstance. ثم يعمل كجسر لنقل تدفق الصوت من مشغل الصوت إلى جهاز الإخراج الخاص باللاعب.

لتشغيل الصوت غير الاتجاهي:
- في نافذة Explorer، انتقل إلى SoundService وأدخل ما يلي:
- كائن AudioPlayer لإنشاء مصدر صوت.
- كائن AudioDeviceOutput لإنشاء مكبر صوت يعمل في جميع أنحاء التجربة.
- كائن Wire لربط التدفق من مشغل الصوت إلى مكبر الصوت.
- في نافذة Properties لكائن AudioPlayer:
- قم بتعيين AssetID إلى معرف أصل صوتي صالح. إذا لم يكن لديك صوت مخصص خاص بك، يمكنك العثور على أصول صوتية مجانية الاستخدام في متجر المبدعين.
- قم بتمكين Looping إذا كنت تريد أن يتكرر صوتك باستمرار.
- قم بتعيين Volume إلى وحدة السعة التي تريد تشغيل صوتك بها.
- في نافذة Properties لكائن Wire:
- قم بتعيين SourceInstance إلى AudioPlayer لتحديد أنك تريد تشغيل الصوت داخل هذا المشغل الصوتي المحدد.
- قم بتعيين TargetInstance إلى AudioDeviceOutput لتحديد أنك تريد تشغيل الصوت من هذا المكبر الصوتي المحدد.
من هنا، يمكنك تشغيل صوتك غير الاتجاهي باستخدام السكربتات لتشغيله عند انضمام اللاعبين إلى التجربة أو نتيجة لحدث في اللعبة أو تفاعل واجهة المستخدم. لمراجع عينات الكود لهذه الاستخدامات، انظر إضافة صوت ثنائي الأبعاد الدليل.
الصوت ثلاثي الأبعاد
الصوت ثلاثي الأبعاد هو صوت اتجاهي يتم تشغيله من موقع معين في الفضاء ثلاثي الأبعاد، ويزداد أو ينقص في الحجم اعتمادًا على موقع اللاعب واتجاهه بالنسبة للصوت. يتطلب هذا النوع من الصوت ستة كائنات صوتية:
- مشغل صوت لإنتاج تدفق صوتي.
- مصدر صوتي لإصدار تدفق الصوت داخل البيئة.
- مستمع لالتقاط تدفق الصوت من البيئة.
- جهاز مادي لتشغيل تدفق الصوت في العالم الحقيقي.
- سلكان: واحد لنقل تدفق الصوت من مشغل الصوت إلى المصدر، وآخر لنقله من المستمع إلى جهاز الإخراج.
لتوضيح كيفية تكوين هذه الكائنات الصوتية في الاستوديو للصوت ثلاثي الأبعاد، يقارن الرسم البياني التالي كل كائن مع نظيره من جهاز الصوت في العالم الحقيقي. باختصار:
- يقوم AudioPlayer بتحميل وتشغيل أصل الصوت الخاص بك مع الإعدادات المحددة.
- تحدد موضع والد AudioEmitter في الفضاء ثلاثي الأبعاد مكان إصدار ذلك الصوت داخل البيئة.
- إما أن يلتقط AudioListener الصوت من المصدر من الكاميرا المحلية أو من Humanoid.RootPart لشخصية اللاعب، اعتمادًا على المكان الذي تحدده لموقع المستمع الافتراضي.
- يسمح AudioDeviceOutput للاعب بسماع الصوت من خلال مكبر الصوت أو سماعات الرأس.
- يتصل السلك الأول Wire بمشغل الصوت من خلال خاصية SourceInstance، وبالمصدر من خلال خاصية TargetInstance. ثم يعمل كجسر لنقل تدفق الصوت من مشغل الصوت إلى المصدر.
- يتصل السلك الثاني Wire بالمستمع من خلال خاصية SourceInstance، وبالجهاز المادي من خلال خاصية TargetInstance. ثم يعمل كجسر لنقل تدفق الصوت من المستمع إلى جهاز الإخراج الخاص باللاعب.

لتشغيل الصوت الموضعي:
اختر المكان الذي تريد إنشاء AudioListener فيه عندما ينضم اللاعبون إلى التجربة.
- في نافذة Explorer، حدد SoundService.
- في نافذة Properties، قم بتعيين ListenerLocation إلى أحد الخيارات التالية:
- Default - ينشئ ويجعل المستمع تابعًا لـ Workspace.CurrentCamera في التجارب التي تتيح الدردشة الصوتية.
- None - لا ينشئ مستمعًا. هذه الخيار مفيد إذا كنت تريد إنشاء مستمع من خلال سكربت.
- Character - ينشئ ويجعل مستمعًا تابعًا لشخصية اللاعب المحلي.
- Camera - ينشئ ويجعل المستمع تابعًا لـ Workspace.CurrentCamera.
في نافذة Explorer، انتقل إلى الكائن ثلاثي الأبعاد الذي تريد إصدار الصوت منه وأدخل ما يلي:
- كائن AudioPlayer لإنشاء مصدر صوت.
- كائن AudioEmitter لإصدار تدفق موضعي من الكائن ثلاثي الأبعاد.
- كائن Wire لربط التدفق من مولد الصوت إلى المصدر الصوتي.
في نافذة Properties لكائن AudioPlayer:
- قم بتعيين AssetID إلى معرف أصل صوتي صالح. إذا لم يكن لديك صوت مخصص خاص بك، يمكنك العثور على أصول صوتية مجانية الاستخدام في متجر المبدعين.
- قم بتمكين Looping إذا كنت تريد أن يتكرر صوتك باستمرار.
- قم بتعيين Volume إلى وحدة السعة التي تريد تشغيل صوتك بها.
في نافذة Properties لكائن AudioEmitter، قم بتعيين DistanceAttenuation إلى منحنى حجم الصوت حسب المسافة الذي يحدد مدى سماع المستمع للصوت وفقًا للمسافة بينهما.
على سبيل المثال، يقلل المنحنى التالي من حجم الصوت إلى النصف عندما يكون المستمع على بعد 50 وحدة من المصدر، ثم ينخفض حجم الصوت بشكل حاد إلى الصفر عندما يكون المستمع على بعد 70 وحدة.

في نافذة Properties لكائن Wire:
- قم بتعيين SourceInstance إلى AudioPlayer لتحديد أنك تريد تشغيل الصوت داخل هذا المشغل الصوتي المحدد.
- قم بتعيين TargetInstance إلى AudioEmitter لتحديد أنك تريد تشغيل الصوت من هذا المصدر الصوتي المحدد.
من هنا، يمكنك تشغيل صوتك الاتجاهي باستخدام السكربتات لتشغيله عند انضمام اللاعبين إلى التجربة أو نتيجة لحدث في اللعبة أو تفاعل واجهة المستخدم. لمراجع عينات الكود لهذه الاستخدامات، انظر إضافة صوت ثلاثي الأبعاد الدليل.
تحويل النص إلى صوت
تحويل النص إلى صوت (TTS) هو شكل من أشكال التكنولوجيا المساعدة التي تحول سلاسل النص إلى أصوات كلام باستخدام صوت اصطناعي. يتطلب هذا النوع من الصوت خمسة كائنات صوتية:
- مولد صوتي لتحميل وتحويل النص إلى صوت.
- مصدر صوتي لإصدار تدفق الصوت داخل البيئة.
- مستمع لالتقاط تدفق الصوت من البيئة.
- جهاز مادي لتشغيل تدفق الصوت في العالم الحقيقي.
- للصوت ثنائي الأبعاد - سلك لنقل تدفق الصوت من مولد الصوت إلى جهاز الإخراج.
- للصوت ثلاثي الأبعاد - سلكان: واحد لنقل تدفق الصوت من مولد الصوت إلى المصدر، وآخر لنقله من المستمع إلى جهاز الإخراج.
كيف تقوم بتكوين هذه الكائنات يعتمد على ما إذا كنت تريد إنشاء صوت TTS ثنائي الأبعاد أو صوت TTS ثلاثي الأبعاد. لمزيد من التفاصيل حول أي من العمليات، انقر بين علامات التبويب التالية.
لتوضيح كيفية تكوين هذه الكائنات الصوتية في الاستوديو لصوت TTS ثنائي الأبعاد، يقارن الرسم البياني التالي كل كائن مع نظيره من جهاز الصوت في العالم الحقيقي. باختصار:
- يقوم كائن AudioTextToSpeech بتحميل وتحويل سلاسل النص إلى أصوات كلام.
- يسمح AudioDeviceOutput للاعب بسماع الصوت من خلال مكبر الصوت أو سماعات الرأس.
- يتصل Wire بمولد الصوت من خلال خاصية SourceInstance، وبالجهاز المادي من خلال خاصية TargetInstance. ثم يعمل كجسر لنقل تدفق الصوت من مولد الصوت إلى جهاز الإخراج الخاص باللاعب.

لتشغيل صوت تحويل النص إلى صوت ثنائي الأبعاد:
- في نافذة Explorer، انتقل إلى SoundService وأدخل ما يلي:
- كائن AudioTextToSpeech لإنشاء مولد صوت.
- كائن AudioDeviceOutput لإنشاء مكبر صوت يعمل في جميع أنحاء التجربة.
- كائن Wire لربط التدفق من مولد الصوت إلى مكبر الصوت.
- في نافذة Properties لكائن AudioTextToSpeech:
- قم بتعيين Text إلى أي شيء تريده أن تقوله الصوت. هناك حد يبلغ 300 حرف لكل طلب.
- قم بتعيين VoiceId إلى رقم الصوت الاصطناعي الذي تريد استخدامه. للحصول على قائمة كاملة بالأصوات المتاحة، انظر قائمة الأصوات الاصطناعية.
- قم بتعيين Volume إلى وحدة السعة التي تريد تشغيل صوتك بها.
- في نافذة Properties لكائن Wire:
- قم بتعيين SourceInstance إلى AudioTextToSpeech لتحديد أنك تريد تشغيل الصوت داخل هذا المولد الصوتي المحدد.
- قم بتعيين TargetInstance إلى AudioDeviceOutput لتحديد أنك تريد تشغيل الصوت من هذا المكبر الصوتي المحدد.
من هنا، يمكنك تشغيل صوت TTS الخاص بك باستخدام السكربتات. لمراجع عينات الكود لصوت TTS، بما في ذلك كيفية تكوين TTS الواعي بالسياق الذي يتكيف بالنسبة للاعب، وحالة بيئته، أو حالة اللعبة، انظر إضافة تحويل النص إلى صوت الدليل.
قائمة الأصوات الاصطناعية
| VoiceID | وصف الصوت | مثال صوتي |
|---|---|---|
| 1 | ذكر بريطاني | |
| 2 | أنثى بريطانية | |
| 3 | ذكر من الولايات المتحدة #1 | |
| 4 | أنثى من الولايات المتحدة #1 | |
| 5 | ذكر من الولايات المتحدة #2 | |
| 6 | أنثى من الولايات المتحدة #2 | |
| 7 | ذكر أسترالي | |
| 8 | أنثى أسترالية | |
| 9 | صوت قديم #1 | |
| 10 | صوت قديم #2 | |
| 11 | صوت المضيف | |
| 101 | ذكر إسباني | |
| 102 | أنثى إسبانية | |
| 201 | ذكر ألماني | |
| 202 | أنثى ألمانية | |
| 301 | ذكر إيطالي | |
| 302 | أنثى إيطالية | |
| 401 | ذكر فرنسي | |
| 402 | أنثى فرنسية | |
| 501 | ذكر صيني (ماندرين) | |
| 502 | أنثى صينية (ماندرين) | |
| 601 | ذكر هندي | |
| 602 | أنثى هندية | |
| 701 | ذكر ياباني | |
| 702 | أنثى يابانية | |
| 801 | ذكر عربي | |
| 802 | أنثى عربية | |
| 901 | ذكر كوري | |
| 902 | أنثى كورية | |
| 1001 | ذكر برتغالي | |
| 1002 | أنثى برتغالية |
تحويل الصوت إلى نص
تحويل الصوت إلى نص (STT) هو شكل من أشكال التكنولوجيا التي تولد تلقائيًا سلاسل نصية من أصوات الكلام. يتطلب هذا النوع من الصوت ثلاثة كائنات صوتية:
- مولد نصي لتحميل وتحويل الصوت إلى نص.
- جهاز مادي مثل ميكروفون لالتقاط إدخال الصوت.
- سلك لنقل تدفق الصوت من جهاز الإدخال إلى مولد النص.
تعمل جميع هذه الكائنات الصوتية معًا لتوليد نص STT استجابةً لإجراءات اللاعب. على سبيل المثال، إذا كان اللاعب يرتدي سماعة رأس أثناء اللعب بتجربة على جهاز الكمبيوتر المحمول الخاص به:
- يلتقط AudioDeviceInput صوت اللاعب، كما يتم التحدث به إلى الميكروفون الخاص به وكتيار من الصوت.
- يقوم AudioSpeechToText بتحويل صوت اللاعب إلى نص.
- تقرأ التجربة هذا النص وتقوم بإجراء، مثل عرض النص المنطوق على الشاشة أو فتح باب بناءً على أمر اللاعب.

لتنفيذ تحويل الصوت إلى نص في تجربتك:
- قم بتمكين استخدام أحدث واجهة برمجة التطبيقات للصوت.
- في نافذة Explorer، حدد VoiceChatService.
- في نافذة Properties، قم بتعيين UseAudioApi إلى Enabled.
- في نافذة Explorer، انتقل إلى SoundService وأدخل ما يلي:
- كائن AudioDeviceInput لالتقاط الصوت.
- كائن AudioSpeechToText لتحويل الصوت إلى نص.
- سلك لنقل التدفق من جهاز إدخال الصوت إلى مثيل STT.
- في نافذة Properties لكائن AudioSpeechToText، قم بتعيين حالة Enabled إلى التشغيل.
- في نافذة Properties لكائن Wire:
- قم بتعيين SourceInstance إلى AudioDeviceInput الجديد الخاص بك لتحديد أنك تريد أن يحمل السلك الصوت من هذا المثيل الصوتي المحدد.
- قم بتعيين TargetInstance إلى AudioSpeechToText الجديد الخاص بك لتحديد أنك تريد أن يحمل السلك الصوت إلى هذا المثيل الصوتي المحدد.
- قم بتعيين خاصية Player لجهاز إدخال الصوت إلى اللاعب المحلي في وقت التشغيل باستخدام audioDeviceInput.Player = game.Players.LocalPlayer. هذا يخبر Roblox من أي مستخدم يجب التقاط الصوت.
بعد إعداد STT في تجربتك، يمكنك تشغيله باستخدام السكربتات. لمراجع عينات الكود، انظر إضافة تحويل الصوت إلى نص الدليل.
اللغات المدعومة
لا يتطلب تمكين اللغات المدعومة أي تكوين. يقوم Roblox تلقائيًا بالكشف عن اللغة المنطوقة من الصوت ويقوم بنسخها.
يدعم STT اللغات التالية:
- العربية
- الصينية (المبسطة)
- الصينية (التقليدية)
- الإنجليزية
- الفرنسية
- الألمانية
- الإندونيسية
- الإيطالية
- اليابانية
- الكورية
- البولندية
- البرتغالية
- الإسبانية
- الروسية
- التركية
- التايلاندية
- الفيتنامية
تصفية الكلمات المتشابهة
عند تنفيذ STT في تجربتك، قد ترغب في تحسين دقة المطابقة عن طريق تصفية الكلمات التي تبدو مشابهة للكلمات التي تريد من اللاعب قولها. للقيام بذلك، يمكنك مقارنة الكلمات المعترف بها بواسطة AudioSpeechToText مع قوائم الكلمات المعروفة:
- قم بتنظيف وتجزئة مخرجات Text من AudioSpeechToText لإنشاء جدول من السلاسل الصغيرة التي يمكن تحليلها ومقارنتها.
- إزالة علامات الترقيم.
- تحويل السلسلة بالكامل إلى أحرف صغيرة.
- تقسيم السلسلة حسب المسافات البيضاء لإنتاج جدول من الكلمات.
- قم بإنشاء جداول مرشحة لتحضير سلاسل النص الخاصة بك للمقارنة.
- قم بتنظيف وتجزئة كل سلسلة مرجعية.
- قم بتخزين هذه الكلمات المعالجة في جدول منفصل.
- قارن واطابق الكلمات في كلا الجدولين للتعرف على مدخلات الكلام التي قريبة من العبارات المستهدفة، حتى لو كانت تتضمن اختلافات صغيرة.
- للتحقق البسيط، تحقق مما إذا كانت السلاسل هي نفسها تمامًا.
- للمطابقة الأكثر مرونة، يمكنك كتابة منطق مخصص لقبول الاستبدالات (مثل "colour" بدلاً من "color") أو مطابقة مجموعة فرعية من الكلمات وحساب درجة التشابه.
تخصيص الصوت
تسمح لك تأثيرات الصوت بتعديل أو تحسين تدفقات الصوت بشكل غير تدميري قبل أن تصل إلى آذان اللاعب. يمكنك تطبيق هذه التأثيرات لجعل صوتك أكثر غمرًا داخل التجارب، مثل استخدام كائن AudioEqualizer لجعل صوت المطر يبدو مكتومًا، أو كائن AudioCompressor للتحكم في الحد الأقصى لحجم الصوت، أو AudioReverb لإضافة المزيد من الانعكاسات الواقعية للصوت في المساحات الداخلية.
للحصول على تعليمات حول كيفية تكوين تأثيرات الصوت، بالإضافة إلى مقارنات جنبًا إلى جنب قبل وبعد تخصيص صوتك، انظر تأثيرات الصوت.


تشغيل الصوت
يمكنك تشغيل الصوت سياقيًا من سكربت عن طريق استدعاء Play() على كائن AudioPlayer الذي تم توصيله بشكل صحيح. على سبيل المثال، إذا قمت بربط سكربت بمشغل صوت، يمكنك تشغيل الأصل الصوتي من خلال شيء مثل هذا:
local audio = script.Parent
local something = ...
something.SomeEvent:Connect(function()
audio:Play()
end)للحصول على عينات كود أكثر تعقيدًا لتشغيل الصوت، مثل ردود الفعل في اللعبة، وتفاعلات واجهة المستخدم، وضوضاء الخلفية المتكررة، انظر إضافة صوت ثنائي الأبعاد، إضافة صوت ثلاثي الأبعاد، وإضافة تحويل النص إلى صوت الدلائل.