প্রকল্পের সংক্ষিপ্ত পরিচিতি
AI রিয়েল-টাইম লাইভরুম হলো একটি ওপেন-সোর্স প্রকল্প, যেখানে AI ডিজিটাল মানুষ স্বয়ংক্রিয়ভাবে লাইভ সম্প্রচার করতে পারে। দর্শকরা মন্তব্য পাঠালে সিস্টেম প্রথমে বিষয়বস্তু ফিল্টার করে, তারপর বর্তমান কণ্ঠস্বর ও অঙ্গভঙ্গির অবস্থার ভিত্তিতে সেগুলো সারিবদ্ধভাবে প্রক্রিয়া করে। ফলে একটি বাক্য শেষ হওয়ার আগেই পরবর্তী নির্দেশ ঢুকে যায় না।
প্রকল্পটিVidu S2 রিয়েল-টাইম ডিজিটাল মানুষ ব্যবহার করে দৃশ্য, শব্দ ও উত্তর তৈরি করে। এই প্রকল্প মন্তব্য ফিল্টার ও সময়সূচি নির্ধারণ, চরিত্রের তথ্য, পোশাকের সংগ্রহ, লাইভরুমের ওভারলে, স্থানীয় ওয়ার্কবেঞ্চ এবং OBS-এ আউটপুট বা সরাসরি স্ট্রিমিং পরিচালনা করে।
কোডটি MIT লাইসেন্সের অধীনে প্রকাশিত। রিপোজিটরিতে লেখকের নিজস্ব চরিত্রের চেহারা, ব্যক্তিত্ব, কণ্ঠস্বর বা মিডিয়া লাইব্রেরি নেই। তাই স্থাপনের পর নিজের চরিত্রের সম্পদ প্রস্তুত করতে হবে এবং বিষয়বস্তুর কপিরাইট ও কমপ্লায়েন্সের দায়িত্ব নিজেকেই নিতে হবে।
ফিচার ও সীমাবদ্ধতা
বর্তমানে সমর্থিত সক্ষমতা
- কাস্টম ব্যক্তিত্ব অনুযায়ী চ্যাটের উত্তর দেওয়া এবং উদ্বোধনী বক্তব্য কনফিগার করা।
- আগে থেকে তৈরি পোশাকের সংগ্রহ থেকে সম্পূর্ণ পোশাক পরিবর্তন করা; একবার পোশাক পরিবর্তনে প্রায় 6 সেকেন্ড লাগে।
- কীওয়ার্ডের মাধ্যমে হৃদয় তৈরি, হাত নাড়া, চোখের পলক ফেলা ইত্যাদি ছোট অঙ্গভঙ্গি চালু করা।
- দর্শকের কোনো বক্তব্য না থাকলে চরিত্রের বিষয়ভাণ্ডার থেকে স্বয়ংক্রিয়ভাবে কথোপকথন শুরু করা, যাতে একটি বিষয় শেষ হওয়ার আগে পুনরাবৃত্তি না হয়।
- অশালীন ও ট্রাফিক-নির্দেশকারী মন্তব্য স্বয়ংক্রিয়ভাবে ফিল্টার করা; উপহার লাইনে আগে আসবে না।
- Vidu মাঝপথে সংযোগ বিচ্ছিন্ন হলে স্বয়ংক্রিয়ভাবে পুনরায় লাইভ শুরু করার সুবিধা ঐচ্ছিকভাবে চালু করা।
যেসব সীমাবদ্ধতা মনে রাখা দরকার
- ডিফল্টভাবে পটভূমি পরিবর্তন, খাওয়া-দাওয়া এবং প্রপস ব্যবহার চালু থাকে না, কারণ রিয়েল-টাইম পুনরায় আঁকার ফলে চরিত্রের পোশাক বিকৃত হতে পারে।
- প্রকল্পটি বর্তমানে গান গাওয়া, গান বাজানো, দাঁড়ানো, পুরো শরীরের অঙ্গভঙ্গি, বড় পরিসরের নাচ বা পণ্য বিক্রির জন্য উপযুক্ত নয়।
- বিভিন্ন লাইভ সেশনের মধ্যে পুরোনো দর্শকদের মনে রাখে না।
- Douyin মন্তব্য সংগ্রহের কোনো বিল্ট-ইন ফিচার নেই। প্ল্যাটফর্মের সরকারি ওপেন API ব্যবহার করুন; লাইভরুমের ওয়েবপেজ স্ক্র্যাপ করবেন না।
পটভূমি ও প্রপস ফিচার ডিফল্টভাবে বন্ধ থাকে। শুধু ব্যক্তিগত পরীক্ষার জন্য config.json-এ {"safety":{"live_visual_edits":true}} সেট করা যায়। প্রকাশ্য লাইভে এটি চালু করার পরামর্শ দেওয়া হয় না।
রানটাইম পরিবেশ প্রস্তুত করুন
শুরু করার আগে নিচের পরিবেশ ও অ্যাকাউন্টগুলো প্রস্তুত করুন:
- macOS অথবা Linux।
- Python 3.11 বা তার পরের সংস্করণ; লেখক Python 3.13 ব্যবহার করেছেন।
libx264এবংaac-সহ ffmpeg।- Vidu ওপেন প্ল্যাটফর্ম API Key, যার শুরু
vda_দিয়ে, এবং অ্যাকাউন্টে পর্যাপ্ত ক্রেডিট আছে তা নিশ্চিত করুন। - ঐচ্ছিক Evolink API Key, যা চেহারার ছবি, পোশাক, প্রপস ও পটভূমি তৈরি করতে এবং ভয়েস ক্লোনের সময় অডিও আপলোড করতে ব্যবহার করা যায়।
- ঐচ্ছিক OBS 30 বা তার পরের সংস্করণ, ক্যামেরা, ওভারলে ও স্ট্রিমিংয়ের জন্য।
- ঐচ্ছিক YouTube স্ট্রিম কী; শুধু বিল্ট-ইন স্ট্রিমিং ব্যবহার করলে এটি প্রয়োজন।
Vidu রিয়েল-টাইম ডিজিটাল মানুষের জন্য সময়ের ভিত্তিতে চার্জ করে। README-তে দেওয়া সরকারি মূল্য হলো প্রতি সেকেন্ডে 1.5 ক্রেডিট; 1 ক্রেডিটের মূল্য 0.03125 ইউয়ান, তাই এক ঘণ্টায় প্রায় 169 ইউয়ান লাগবে। প্রথমে ড্রাই রান মোড ও স্থানীয় মক সার্ভিস ব্যবহার করে প্রক্রিয়াটি যাচাই করার পরামর্শ দেওয়া হয়।
নিরাপদে কী সংরক্ষণ করুন
কী শুধু স্থানীয় কম্পিউটারের ফাইলেই সংরক্ষণ করা উচিত। সার্ভার এগুলো পড়বে এবং ব্রাউজারে পাঠাবে না। প্রথমে ডিফল্ট ডিরেক্টরি তৈরি করুন:
mkdir -p ~/.deepsea/vidu ~/.deepsea/evolink && chmod 700 ~/.deepsea/vidu ~/.deepsea/evolinkmacOS-এ ক্লিপবোর্ডের Vidu Key ডিফল্ট পথে সংরক্ষণ করা যায়:
pbpaste > ~/.deepsea/vidu/api.key && chmod 600 ~/.deepsea/vidu/api.keyEvolink-এর Key ~/.deepsea/evolink/api.key-এ রাখুন। YouTube-এর বিল্ট-ইন স্ট্রিমিং ব্যবহার করলে স্ট্রিম কী ~/.deepsea/youtube/stream.key-এ রাখুন; OBS WebSocket পাসওয়ার্ড রাখুন ~/.deepsea/obs/ws.password-এ। ডিফল্ট পথ config.json-এ পরিবর্তন করা যায়।
প্রকল্প ইনস্টল করুন
GitHub থেকে রিপোজিটরি ক্লোন করে প্রকল্প ডিরেক্টরিতে যান:
git clone https://github.com/garycaogan/ai-live-avatar.git
cd ai-live-avatarPython ভার্চুয়াল পরিবেশ তৈরি করে নির্ভরতাগুলো ইনস্টল করুন:
python3 -m venv .venv
.venv/bin/pip install -r requirements.txtস্টেজ পেজটি Alibaba Cloud RTC ওয়েব SDK-এর ওপর নির্ভর করে। প্রকল্পটি SDK পুনরায় বিতরণ করে না; বরং একটি স্ক্রিপ্টের মাধ্যমে সরকারি CDN থেকে ডাউনলোড করে এবং যাচাই করে:
./tools/fetch_vendor.shসবশেষে নমুনা কনফিগারেশন ফাইলটি কপি করুন:
cp config.example.json config.jsonওয়ার্কবেঞ্চ চালু করুন
সার্ভিস চালান:
.venv/bin/python server.pyসার্ভিসটি ডিফল্টভাবে শুধু স্থানীয় কম্পিউটারে শোনে। চালু হওয়ার পর ব্রাউজারে http://127.0.0.1:28900/workbench খুললে ওয়ার্কবেঞ্চে প্রবেশ করা যাবে।
সাময়িকভাবে Vidu ক্রেডিট খরচ করতে না চাইলে লাইভরুম পেজে ড্রাই রান লাইভ ব্যবহার করুন। এই মোড Vidu-কে কল করে না; শুধু মন্তব্য ফিল্টার, সারিবদ্ধকরণ ও ওভারলে প্রদর্শন করে। প্রকল্পে tests/dev_mock_stack.py দেওয়া আছে, যা স্থানীয় মক Vidu-এর সঙ্গে সংযোগ করে সম্পূর্ণ নিয়ন্ত্রণপ্রবাহ পরীক্ষা করতে সাহায্য করে।
নিজের ডিজিটাল মানুষ চরিত্র তৈরি করুন
1. চেহারার ছবি প্রস্তুত করুন
অ্যাসেট পেজে একটি চেহারার ছবি আপলোড করুন, অথবা Evolink ব্যবহার করে তৈরি করুন। বেস ছবিটি চরিত্রের চেহারা, পোশাক, ঘর ও স্থায়ী অভিব্যক্তিতে প্রভাব ফেলে। README-তে একক ব্যক্তির ক্লোজ-আপ, টেবিলের ওপর দুই হাত রাখা এবং স্বাভাবিক অভিব্যক্তির ছবি ব্যবহারের পরামর্শ দেওয়া হয়েছে।
আড়াআড়ি কম্পোজিশনটি Douyin-এর মতো উল্লম্ব লাইভ পেজের ওপরের ছোট ফ্রেমে বসানো হবে এবং 1.2:1 অনুপাতে ক্রপ করা হবে। তাই বেস ছবির কম্পোজিশন আগে থেকেই উপযোগী করে নেওয়া ভালো।
2. চরিত্রের তথ্য তৈরি করুন
চরিত্র পেজে নতুন চরিত্র তৈরি করুন, চেহারার ছবিকে বেস ছবি হিসেবে বেছে নিন, তারপর নাম, ব্যক্তিত্ব ও উদ্বোধনী বক্তব্য পূরণ করুন। ব্যক্তিত্বে কথা বলার ধরনকে গুরুত্ব দিন; সম্পূর্ণ উদাহরণ বাক্য লিখবেন না, কারণ মডেল সেগুলো হুবহু পড়ে শোনাতে পারে।
3. পোশাকের সংগ্রহ যোগ করুন
পোশাক পেজে কয়েকটি পোশাক যোগ করুন। প্রতিটি পোশাক সম্পূর্ণ একটি ছবিতে থাকা উচিত। ঘর, আলো ও কম্পোজিশন বেস ছবির সঙ্গে যতটা সম্ভব মিল থাকা দরকার, নইলে পোশাক পরিবর্তনের সময় দৃশ্যে স্পষ্ট ঝাঁকুনি দেখা দিতে পারে।
4. কণ্ঠস্বর কনফিগার করুন
ভয়েস পেজে সিস্টেমের কণ্ঠস্বর বেছে নিন, অথবা 10 থেকে 20 সেকেন্ডের পরিষ্কার মানুষের কণ্ঠ আপলোড করে ক্লোন করুন। Vidu ভয়েস ক্লোনিংয়ের জন্য অর্থ লাগে; উপকরণ আপলোডের আগে সংশ্লিষ্ট কণ্ঠ ব্যবহারের অনুমতি আপনার আছে কি না নিশ্চিত করুন।
5. অঙ্গভঙ্গি কনফিগার করুন
অ্যাকশন পেজে মন্তব্যের কীওয়ার্ডের সঙ্গে যুক্ত অঙ্গভঙ্গি পরিবর্তন করা যায়। চরিত্র সেটিংসে অপেক্ষার সময়ের ছোট অঙ্গভঙ্গিও সম্পাদনা করা যায়, যাতে নতুন মন্তব্য না থাকলে দৃশ্যটি আরও স্বাভাবিক দেখায়।
চরিত্রের তথ্য assets/avatars/profiles.json-এ এবং ব্যক্তিত্ব personas/-এ সংরক্ষিত হয়। এই ফাইলগুলো ইতিমধ্যে .gitignore-এ বাদ দেওয়া আছে, তাই রিপোজিটরিতে জমা হবে না।
মন্তব্য প্রক্রিয়া বুঝুন
ওয়ার্কবেঞ্চের লাইভরুম পেজে হাতে করে মক মন্তব্য পাঠানো যায়। বাস্তব মন্তব্য নিচের API-এর মাধ্যমে জমা দেওয়া যায়:
curl -s -X POST http://127.0.0.1:28900/api/danmaku \
-H 'Content-Type: application/json' \
-d '{"user":"দর্শকA","text":"একটি পোশাক বদলান","gift":0}'মন্তব্য সিস্টেমে প্রবেশের পর প্রথমে moderation.json-এর ফিল্টার শব্দ পরীক্ষা করা হয়। এরপর live/router.py নিয়ম অনুযায়ী সেটিকে চ্যাট, পোশাক পরিবর্তন, প্রপস, পটভূমি, অঙ্গভঙ্গি অথবা পুনরুদ্ধার হিসেবে শনাক্ত করে। এই শনাক্তকরণে বড় ভাষা মডেল ব্যবহার করা হয় না, তাই অতিরিক্ত বিলম্ব বা খরচ হয় না।
ডিফল্টভাবে প্রপস ও পটভূমির অনুরোধ সাধারণ চ্যাট হিসেবে বিবেচিত হয়। মন্তব্য শনাক্তকরণ সহজ ও স্পষ্ট বক্তব্যে ভালো কাজ করে, যেমন অ্যাঙ্করের পাশের ছোটখাটো বিষয় জিজ্ঞেস করা, পোশাকের সংগ্রহে থাকা নাম ব্যবহার করে পোশাক বদলানো, অথবা একবারে একটি অঙ্গভঙ্গির অনুরোধ করা।
নিচের বিষয়গুলো সাধারণত ফলাফলে প্রভাব ফেলে: একটি বাক্যে একাধিক কাজ থাকা, রিয়েল-টাইম সংবাদ বা আবহাওয়া জিজ্ঞেস করা, গান গাওয়া বা গান বাজানোর অনুরোধ করা। জটিল অনুরোধকে একাধিক সহজ মন্তব্যে ভাগ করার পরামর্শ দেওয়া হয়।
OBS সংযুক্ত করুন
ওয়ার্কবেঞ্চের স্ট্রিমিং পেজে আউটপুট পদ্ধতি OBS-এ পরিবর্তন করুন, তারপর OBS-এ একটি ব্রাউজার সোর্স যোগ করুন। প্রয়োজন অনুযায়ী নিচের ঠিকানাগুলো বেছে নিন:
- শুধু ডিজিটাল মানুষ দেখান:
http://127.0.0.1:28900/stage?obs=1&role=obs&layer=avatar - শুধু স্বচ্ছ ওভারলে দেখান:
http://127.0.0.1:28900/stage?overlay=1 - ডিজিটাল মানুষ ও ওভারলে দেখান:
http://127.0.0.1:28900/stage?obs=1&role=obs&layer=all
সম্পূর্ণ দৃশ্যের জন্য প্রস্থ 1080 এবং উচ্চতা 1920 সেট করার পরামর্শ দেওয়া হয়। ব্রাউজার সোর্সে “OBS-এর মাধ্যমে অডিও নিয়ন্ত্রণ করুন” বিকল্পটি নির্বাচন করতে হবে। সার্ভিসটি শুধু স্থানীয় কম্পিউটারে শোনে, তাই OBS এবং প্রকল্পের সার্ভিস একই কম্পিউটারে চলতে হবে।
স্বয়ংক্রিয়ভাবে OBS দৃশ্য তৈরি করতে tools/obs_control.py ব্যবহার করা যায়। ওভারলেতে “AI দ্বারা রিয়েল-টাইমে তৈরি দৃশ্য” চিহ্নটি স্থায়ীভাবে থাকবে। AI ডিজিটাল মানুষ লাইভের জন্য এটি প্ল্যাটফর্মের প্রয়োজনীয়তা, তাই এটি রাখা উচিত।
Douyin লাইভের দৃশ্য কনফিগার করুন
Douyin-এর প্রচলিত ডিজিটাল মানুষ লাইভরুমে আড়াআড়ি দৃশ্য ব্যবহার করা হয়। মোবাইল ডিভাইসে দৃশ্যটি ওপরের অংশে থাকে এবং মন্তব্য নিচে দেখানো হয়। “Douyin লাইভরুম” দৃশ্য তৈরি করতে নিচের কমান্ড চালানো যায়:
.venv/bin/python tools/obs_control.py setup douyin --camera FaceTimeএই কমান্ড OBS ক্যানভাসকে 1296×1080, অর্থাৎ 1.2:1 অনুপাতে সেট করবে এবং ডিজিটাল মানুষ, তথ্য কার্ড, সাবটাইটেল ও বাস্তব ক্যামেরা কনফিগার করবে। --camera-এর পরে ক্যামেরার নামের একটি অংশ লিখুন; এটি বাদ দিলে পাওয়া প্রথম বাস্তব ক্যামেরাটি ব্যবহার করা হবে।
প্রথমবার চালানোর সময় macOS OBS-কে ক্যামেরা ব্যবহারের অনুমতি চাইতে পারে। অনুমতি দেওয়ার পর আবার চালালে ক্যামেরা ক্রপ সঠিকভাবে প্রয়োগ হবে। আড়াআড়ি ও উল্লম্ব দৃশ্য যেকোনো সময় বদলানো যায়। দুটিই একই ডিজিটাল মানুষ স্তর ব্যবহার করে, তাই অতিরিক্ত অংশগ্রহণের আসন দখল করে না।
Douyin লাইভ সহচরের সঙ্গে সংযোগের দুটি উপায় আছে: OBS ভার্চুয়াল ক্যামেরা চালু করে লাইভ সহচরে OBS Virtual Camera নির্বাচন করা; অথবা লাইভ সহচরে উইন্ডো সোর্স যোগ করে OBS প্রজেকশন উইন্ডো ক্যাপচার করা। ভার্চুয়াল ক্যামেরা শুধু দৃশ্য পাঠায়, শব্দ পাঠায় না। তাই লাইভ সহচর “Douyin লাইভরুম” দৃশ্যের কম্পিউটার অডিও সংগ্রহ করতে পারে কি না তা নিশ্চিত করতে হবে।
অ্যাকাউন্টে তৃতীয় পক্ষের স্ট্রিমিংয়ের অনুমতি থাকলে OBS-এ প্ল্যাটফর্মের দেওয়া স্ট্রিম ঠিকানা সরাসরি পূরণ করা যায়। Douyin মন্তব্য স্বয়ংক্রিয়ভাবে প্রকল্পে প্রবেশ করবে না। Douyin ওপেন প্ল্যাটফর্মের লাইভ ফিচার API-এর মাধ্যমে অনুমতি নিয়ে ডেটা /api/danmaku-এ পাঠাতে হবে।
লাইভরুমের তথ্য কার্ড সম্পাদনা করুন
স্টেজ পেজের ওপরের বাম ও ডান কোণের তথ্য কার্ডে এই লাইভে কী করা যায়, আপাতত কী করা যায় না এবং কীভাবে আরও কার্যকর মন্তব্য পাঠাতে হয় তা দেখানো হয়। বিষয়বস্তু আসে assets/stage_panel.json থেকে; ফাইলটি না থাকলে assets/stage_panel.example.json ব্যবহার করা হয়।
নমুনা ফাইল কপি করে নিজের বিষয়বস্তুতে পরিবর্তন করুন। স্টেজ পেজ এক মিনিটের মধ্যে স্বয়ংক্রিয়ভাবে রিফ্রেশ হবে এবং বিল্ট-ইন স্ট্রিমিংয়ের ওভারলে সঙ্গে সঙ্গে নতুন বিষয়বস্তু ব্যবহার করবে। outfit_hint ব্যবহার করে বিভিন্ন চরিত্রের জন্য পোশাক পরিবর্তনের নির্দেশ আলাদাভাবে সেট করা যায়।
স্বয়ংক্রিয় পুনরায় লাইভ চালু করুন
লাইভ চলাকালে Vidu মাঝে মাঝে সংযোগ বিচ্ছিন্ন করতে পারে। স্বয়ংক্রিয় পুনরুদ্ধার চালু থাকলে প্রকল্পটি 3 সেকেন্ড অপেক্ষা করে পুনরায় লাইভ শুরু করবে; এক ঘণ্টায় সর্বোচ্চ 6 বার চেষ্টা করবে। তবে পর্যাপ্ত ক্রেডিট না থাকা বা বিষয়বস্তু যাচাইয়ের কারণে সংযোগ বিচ্ছিন্ন হলে স্বয়ংক্রিয়ভাবে পুনরায় চেষ্টা করবে না।
API-এর মাধ্যমে চালু করুন:
curl -s -X POST http://127.0.0.1:28900/api/settings \
-H 'Content-Type: application/json' \
-d '{"auto_recover":true}'config.json-এও সেট করা যায়:
{"schedule":{"auto_recover":true}}দীর্ঘ সময় লাইভ করার আগে অ্যাকাউন্টের ব্যালেন্স, চরিত্রের উপকরণ ও নেটওয়ার্ক অবস্থা যাচাই করুন এবং ড্রাই রান বা স্থানীয় মক সার্ভিস ব্যবহার করে পুনরুদ্ধার প্রক্রিয়া পরীক্ষা করার পরামর্শ দেওয়া হয়।
পরীক্ষা ও প্রকল্পের কাঠামো
প্রকল্পের পরীক্ষায় স্থানীয় মক Vidu ব্যবহার করা হয়, তাই কোনো খরচ হয় না। চালাতে পারেন:
python -m unittest tests.test_logic tests.test_workbench tests.test_e2eপ্রধান ডিরেক্টরি ও ফাইলগুলোর ব্যবহার নিচে দেওয়া হলো:
server.py:সার্ভিসের প্রবেশবিন্দু এবং ডিফল্ট কনফিগারেশন।live/:লাইভ সম্প্রচার শিডিউলিং, Vidu রিয়েল-টাইম API, ব্যারেজ শনাক্তকরণ, ওয়ারড্রোব, উপকরণ তৈরি, বিল্ট-ইন স্ট্রিমিং এবং ওয়ার্কবেঞ্চ API।static/:ওয়ার্কবেঞ্চ, স্টেজ পেজ এবং পুরোনো কনসোল।WORKBENCH_API.md:ওয়ার্কবেঞ্চে ব্যবহৃত সব API।tests/:টেস্ট কোড এবং স্থানীয় মক সার্ভিস।
উপসংহার
এই প্রকল্পটি Vidu রিয়েল-টাইম ডিজিটাল মানব, ব্যারেজের নিয়ম, চরিত্রের সম্পদ এবং লাইভ আউটপুটকে একটি স্থানীয় ওয়ার্কফ্লোতে যুক্ত করেছে। প্রথমে ড্রাই-রান মোডে ফিল্টারিং, সারিবদ্ধকরণ, ওয়ারড্রোব এবং লেয়ারিং সম্পর্কে পরিচিত হওয়ার পরামর্শ দেওয়া হচ্ছে। এরপর নিজের অবতার, কণ্ঠস্বর এবং OBS দৃশ্য কনফিগার করে সবশেষে বাস্তব প্ল্যাটফর্মে সংযোগ করুন।
সর্বজনীন লাইভ সম্প্রচারের সময় দৃশ্য বিকৃত করতে পারে এমন রিয়েল-টাইম ব্যাকগ্রাউন্ড ও প্রপ সম্পাদনা বন্ধ করা উচিত, প্ল্যাটফর্মের অফিসিয়াল ইন্টার্যাকশন API ব্যবহার করা উচিত এবং AI-উৎপাদিত কনটেন্টের লেবেল রাখা উচিত। একই সঙ্গে, মানুষের কণ্ঠস্বর, চরিত্রের অবয়ব, সঙ্গীত এবং অন্যান্য উপকরণের জন্য আগেই ব্যবহারের অনুমতি নিশ্চিত করা উচিত।
