در این تسک، پیادهسازی ارتباط صوتی میان کاربران (شهروندان) پس از ورود به محیط سهبعدی متاورس رنگ بر بستر شبکه Mirror مورد نیاز است.
این ارتباط باید در پلتفرمهای زیر پشتیبانی شود:
• مرورگر (WebGL)
• هدست Quest
• نسخه اجرایی Windows (exe)
ارتباط صوتی باید بر اساس موقعیت آواتارها در محیط، بهصورت بلادرنگ و با حداقل تأخیر انجام شود.
الزامات و منطق ارتباط صوتی
1. هر آواتار دارای مالک حقیقی است و تنها آواتارها مجاز به ارسال و دریافت صوت در محیط هستند.
2. بهصورت پیشفرض، زمانی که دو آواتار در فاصله حداکثر ۳ متری یکدیگر قرار بگیرند، یک جلسه (Session) صوتی تشکیل شده و ارتباط صوتی از طریق سوکت برقرار میشود.
3. شدت صدای آواتارها باید متناسب با فاصله آنها از یکدیگر تغییر کند؛ هرچه فاصله کمتر باشد، صدا بلندتر پخش شود.
4. صدا باید بهصورت فضایی (Spatial / Dolby) و بر اساس موقعیت مکانی آواتارها (راست، چپ، جلو، پشت) به آواتار دیگر ارسال و پخش شود.
5. اگر دو آواتار در یک جلسه باشند و یکی از آنها میکروفن خود را ببندد:
• ارسال دادههای VOICE از طریق سوکت برای آن آواتار غیرفعال شود.
• هیچ داده صوتی از سمت آن آواتار ارسال نگردد.
6. اگر آواتاری بلندگوی خود را ببندد:
• دریافت دادههای SPEAKER برای آن آواتار غیرفعال شود.
• در مکالمه دو نفره، ارسال صدا به آن آواتار متوقف شود.
• در مکالمه چندنفره، صدا همچنان برای سایر آواتارهایی که اسپیکر آنها فعال است ارسال شود.
7. در صورتی که دو آواتار در حال مکالمه باشند و آواتار سومی وارد محدوده ۳ متری آنها شود:
• آواتار جدید به جلسه اضافه میشود.
• امکان شنیدن و صحبت کردن برای او فراهم خواهد بود.
• هر مکالمه (دو نفره یا چند نفره) یک جلسه محسوب میشود.
• با خروج هر آواتار از محدوده، ارتباط او از جلسه قطع میشود.
• در صورتی که همه آواتارها از محدوده 3 متری خارج شوند و از یکدیگر دور شوند، جلسه بهطور کامل بسته میشود.(یعنی هر اواتار با اواتار دیگری فاصله ای بیشتر از 3 متر داشته باشد)
8. هر جلسه دارای یک شناسه یکتا است:
• شناسه جلسه پس از پایان آن نباید مجدداً استفاده شود.
• شناسه جلسه پس از اتمام، باطل (Burn) شده و جلسه جدید شناسه جدید دریافت میکند.
9. در صورتی که:
• آواتار A و B در فاصله ۳ متری باشند → یک جلسه
• آواتار C نیز در فاصله ۳ متری آواتار B قرار گیرد
در این حالت:
• دو جلسه مستقل ایجاد میشود.
• آواتار B در هر دو جلسه حضور دارد.
• اگر A و C همزمان صحبت کنند، آواتار B صدای هر دو را دریافت میکند.
10. هنگام تشکیل جلسه:
• لیست شناسه آواتارهای حاضر در جلسه در سمت چپ صفحه نمایش داده میشود.
• کنار هر شناسه، دکمه بستن صدای همان آواتار وجود دارد.
• امکان بستن صدای کل (Mute All) نیز در محیط فراهم باشد.
• در صورت بستن صدای یک آواتار، پروتکل عدم ارسال یا عدم دریافت داده صوتی اعمال شود.
11. ضبط مکالمات:
• هر جلسه با شناسه مخصوص خود در یک دایرکتوری جداگانه ذخیره میشود.
• کل مکالمه از شروع تا پایان جلسه ضبط میگردد.
• فرمت فایل صوتی: ogg یا فرمت بهینهتر.
• در کنار فایل صوتی، یک فایل json با همان شناسه جلسه ایجاد شود که شامل:
• زمان شروع جلسه
• زمان ورود هر آواتار به جلسه
مثال
{
"session_start": "23:12:33",
"avatars": {
"A": "23:12:33",
"B": "23:12:33",
"C": "23:13:11"
}
}
• هر آواتار بتواند بر اساس این اطلاعات، صوت جلسه را پخش یا دانلود کند.
توجه فرمایید هر اواتار تنها میتواند بخشی از جلسه را خود در ان حضور دارد را دانلود و پخش نمایید.
12. کیفیت ارتباط صوتی باید مشابه Google Meet و با کمترین تأخیر ممکن (Low Latency) باشد.
13. بهمنظور توسعه هوش مصنوعی و استفاده از NPC:
• سیستم باید امکان دریافت صوت از خارج از شبکه را نیز داشته باشد.
• مکالمه با NPCها از طریق زیرساخت هوش مصنوعی خارج از شبکه انجام میشود.
• پاسخ صوتی NPC از طریق سوکت به شبکه ارسال و در محیط پخش خواهد شد.
توجه فرمایید :
تسک میبایست کاملا بومی سازی شده باشد و بدون پیش نیاز و وابستگی به CDN و لایسنس باشد
زمان تحویل: 40 روز
-------------------------------------------------------------------------------------
منابع تسک
لینک سایت رسمی پروژه :
https://rgb.irpsc.com/fa
دسترسی به سامانه مدیریت بر مدیران :
https://crm.irpsc.com