মূল কনটেন্টে যান
এআই টিউটোরিয়াল

স্থানীয়ভাবে AI ডিজিটাল মানব কীভাবে তৈরি করবেন

নিজের কম্পিউটারে এমন একটি AI ডিজিটাল মানব তৈরি করতে চান, যা শুনতে, কথা বলতে, ঠোঁট মিলিয়ে কথা বলতে এবং আপনার সঙ্গে কথোপকথন করতে পারে, তাও কোনো AI টুল ব্যবহার না করে বা ব্যয়বহুল

স্থানীয়ভাবে AI ডিজিটাল মানব কীভাবে তৈরি করবেন

নিজের কম্পিউটারে এমন একটি AI ডিজিটাল হিউম্যান তৈরি করতে চান, যে শুনতে, বলতে, ঠোঁট নাড়াতে এবং আপনার সঙ্গে কথোপকথন করতে পারে, অথচ কোনো AI টুল ব্যবহার বা ব্যয়বহুল সাবস্ক্রিপশন ফি দিতে হবে না। স্পিচ রিকগনিশন, লোকাল লার্জ ল্যাঙ্গুয়েজ মডেল, ভয়েস সিন্থেসিস এবং লিপ-সিঙ্ক একসঙ্গে সংযুক্ত করলেই আপনার কম্পিউটারে চলা একটি রিয়েল-টাইম ইন্টার‌্যাক্টিভ সিস্টেম তৈরি করা যায়।

এই নিবন্ধে হার্ডওয়্যার প্রস্তুতি থেকে শুরু করে Windows + WSL2 পরিবেশে সম্পূর্ণ ডিপ্লয়মেন্ট দেখানো হয়েছে। চূড়ান্ত ফলাফল হবে: ওয়েবপেজে কাস্টম ডিজিটাল হিউম্যান দেখা যাবে, আমরা মাইক্রোফোনের মাধ্যমে AI ডিজিটাল হিউম্যানের সঙ্গে কথা বলব, আর AI ডিজিটাল হিউম্যান আপনার ক্লোন করা কণ্ঠে উত্তর দেবে।

১. সম্পূর্ণ সিস্টেমের কার্যপ্রবাহ

এই সমাধানটি একটি মডেল দিয়ে সম্পন্ন হয় না; বরং একাধিক কম্পোনেন্ট ডিপ্লয় করতে হয়:

এখানে, llama.cpp লোকাল ল্যাঙ্গুয়েজ মডেল চালায়; faster-whisper ব্যবহারকারীর কণ্ঠকে টেক্সটে রূপান্তর করে; Qwen3-TTS রেফারেন্স অডিও অনুসারে উত্তরের কণ্ঠ তৈরি করে; আর LiveTalking ও Wav2Lip কণ্ঠকে তার সঙ্গে সামঞ্জস্যপূর্ণ ঠোঁটের নড়াচড়ায় রূপান্তর করে।

২. হার্ডওয়্যার প্রয়োজনীয়তা ও VRAM বাজেট

ন্যূনতম কনফিগারেশন:

  • NVIDIA গ্রাফিক্স কার্ড: 8GB VRAM

  • RAM: 16GB

  • খালি ডিস্ক স্পেস: অন্তত 60GB

  • সিস্টেম: Windows 10/11 এবং WSL2 সমর্থন

প্রস্তাবিত কনফিগারেশন:

  • NVIDIA গ্রাফিক্স কার্ড: 16GB VRAM বা বেশি

  • RAM: 32GB বা বেশি

  • মডেল ও WSL ফাইল রাখার জন্য SSD ব্যবহার করা ভালো

Qwen3 14B কোয়ান্টাইজড মডেলের উদাহরণে VRAM আনুমানিকভাবে এভাবে ভাগ হবে:

  • কম্পোনেন্ট|আনুমানিক VRAM ব্যবহার

  • Qwen3-14B Q4_K_M|প্রায় 9GB

  • faster-whisper large-v3|প্রায় 3GB

  • Qwen3-TTS 1.7B|প্রায় 4GB

  • Wav2Lip 256|প্রায় 1.3GB

  • মোট|প্রায় 17GB

24GB VRAM-এর গ্রাফিক্স কার্ডে এই কম্বিনেশন আরও স্বচ্ছন্দে চলবে। 16GB VRAM হলে 8B মডেল ব্যবহার করে কনটেক্সট দৈর্ঘ্য কমানো যায়; প্রায় 8GB VRAM হলে 4B মডেল ও মাঝারি আকারের স্পিচ রিকগনিশন মডেল দিয়ে শুরু করা ভালো।

৩. WSL2 নেটওয়ার্ক ও মেমরি কনফিগার করা

১.  প্রথমে Windows ব্যবহারকারীর ডিরেক্টরিতে .wslconfig ফাইল তৈরি করুন:

C:\Users\আপনার ব্যবহারকারীর নাম\.wslconfig

২. এতে নিচের বিষয়বস্তু লিখুন:

[wsl2]
memory=32GB
networkingMode=mirrored

[experimental]
hostAddressLoopback=true

memory আপনার প্রকৃত মেমরি অনুযায়ী পরিবর্তন করতে পারেন। সাধারণত ফিজিক্যাল মেমরির অর্ধেক থেকে তিন-চতুর্থাংশ বরাদ্দ করলেই যথেষ্ট। স্থানীয় Windows ও WSL-এর মধ্যে WebRTC যোগাযোগের জন্য hostAddressLoopback=true বিশেষভাবে গুরুত্বপূর্ণ। এটি না থাকলে পরের WebRTC সংযোগ স্থায়ীভাবে ব্যর্থ হবে, অথচ ত্রুটির কারণ বোঝা যাবে না; ব্রাউজারে JSON পার্সিং ত্রুটি দেখাবে এবং ICE প্রার্থী তালিকা খালি থাকবে।

৩. পরিবর্তনের পর PowerShell-এ চালান:

wsl --shutdown

আবার WSL-এ প্রবেশ করার পর কনফিগারেশন কার্যকর হবে।

৪. Windows প্রান্তে লোকাল লার্জ ল্যাঙ্গুয়েজ মডেল চালু করা

১. llama.cpp প্রস্তুত করুন

Windows-এর জন্য উপযুক্ত llama.cpp ডাউনলোড করে নির্দিষ্ট ডিরেক্টরিতে এক্সট্র্যাক্ট করুন, যেমন:

E:\llama.cpp

স্থিতিশীল সংস্করণের ডাউনলোড ঠিকানা: https://pan.quark.cn/s/0073852e4042

২. VRAM অনুযায়ী মডেল নির্বাচন করুন

  • VRAM পরিসর|প্রস্তাবিত মডেল|ডাউনলোড ঠিকানা

  • 16GB বা বেশি|Qwen3-14B-Instruct Q4_K_M|https://pan.quark.cn/s/f48c2144ac71

  • 8–16GB|Qwen3-8B GGUF Q4_K_M|https://pan.quark.cn/s/78b8643f1be3

  • 8GB-এর কম|Qwen3-4B GGUF|https://pan.quark.cn/s/fd588898ccbf

ডাউনলোড করা .gguf ফাইলটি এখানে রাখুন:

E:\llama.cpp\models

৩. ইনফারেন্স সার্ভিস চালু করুন

Windows কমান্ড প্রম্পটে চালান:

cd /d E:\llama.cpp
llama-server -m E:\llama.cpp\models\Qwen3-14B-Instruct-Q4_K_M.gguf ^
  -np 1 -c 8192 -fa on --temp 1.0 --top-p 0.95 ^
  --host 0.0.0.0 --port 8090

কয়েকটি প্যারামিটারের কাজ:

  • host 0.0.0.0: WSL-কে Windows প্রান্তের মডেল সার্ভিসে প্রবেশের অনুমতি দেয়;

  • c 8192: কনটেক্সটের দৈর্ঘ্য নির্ধারণ করে, ছোট কথোপকথনের জন্য যথেষ্ট;

  • temp 1.0: উত্তরকে কম যান্ত্রিক করে;

  • port 8090: সার্ভিস পোর্ট নির্ধারণ করে।

এই কমান্ড উইন্ডোটি সবসময় চালু রাখতে হবে। পোর্ট ব্যবহৃত হচ্ছে দেখালেও সাধারণ পরীক্ষায় কোনো প্রসেস দেখা না গেলে Hyper-V পোর্টটি সংরক্ষণ করেছে কি না পরীক্ষা করুন:

netsh interface ipv4 show excludedportrange protocol=tcp

সংঘাত ধরা পড়লে মডেল সার্ভিস ও কল করা স্ক্রিপ্টের পোর্ট একসঙ্গে পরিবর্তন করাই সবচেয়ে সহজ উপায়।

৫. ডিজিটাল হিউম্যানের বেস ছবি ও ভিডিও তৈরি করা

১. প্রথমে পছন্দের একটি ডিজিটাল হিউম্যানের ছবি ডিজাইন করুন

ডিজিটাল হিউম্যানের ছবিতে শুধু “সুন্দর” হওয়াই যথেষ্ট নয়; পরবর্তী ওয়েব লেআউট ও ঠোঁটের নড়াচড়া তৈরির জন্যও জায়গা রাখতে হবে। তুলনামূলকভাবে স্থিতিশীল কম্পোজিশন হলো:

  • ছবির অনুপাত 16:9;

  • চরিত্রটি ডান পাশের এক-তৃতীয়াংশে থাকবে;

  • বাম পাশে বড় গাঢ় খালি জায়গা থাকবে, যাতে ইন্টার‌্যাক্টিভ আলোকবলয় ও সাবটাইটেল রাখা যায়;

  • ঠোঁট স্বাভাবিকভাবে বন্ধ থাকবে, দাঁত দেখা যাবে না;

  • হাত যেন মুখ, চিবুক ও মুখের আকৃতি ঢেকে না রাখে;

  • তুলনামূলকভাবে গাঢ় সাইড লাইট ব্যবহার করুন, যাতে ঠোঁটের অংশে সামান্য অস্পষ্টতার কারণে অস্বাভাবিকতা কমে।

নিচের প্রম্পটের ধারণা অনুসরণ করে চরিত্র, পোশাক ও দৃশ্য নিজের মতো বদলাতে পারেন:

সিনেমাটিক কম-আলোর সাইড-প্রোফাইল পোর্ট্রেট, একজন প্রাপ্তবয়স্ক নারী ছবির ডান পাশে বসে আছেন, নরম রিম লাইট,
বাম পাশে বড় গাঢ় নেগেটিভ স্পেস, স্বাভাবিক অভিব্যক্তি, ঠোঁট বন্ধ, স্থির ক্যামেরা,
বাস্তবসম্মত ত্বকের টেক্সচার, 16:9 অনুভূমিক কম্পোজিশন।

নেগেটিভ প্রম্পটে যোগ করতে পারেন: মুখ খোলা, দাঁত দেখা, চরিত্র মাঝখানে, উজ্জ্বল বিশৃঙ্খল পটভূমি, হাত দিয়ে মুখ ঢাকা, লেখা, ওয়াটারমার্ক, প্লাস্টিকের মতো ত্বক, কার্টুন স্টাইল।

২. ComfyUI + Wan2.2 দিয়ে 5 সেকেন্ডের ডিজিটাল হিউম্যান ভিডিও তৈরি করুন

ComfyUI ডাউনলোড ও ইনস্টল করে চালু করুন। এরপর Wan2.2-এর ইমেজ-টু-ভিডিও ওয়ার্কফ্লো নির্বাচন করে বেস ছবিটিকে প্রথম ফ্রেম হিসেবে দিন। প্রথমবার ব্যবহারের জন্য নিচের সংযত প্যারামিটার প্রস্তাবিত:

  • প্যারামিটার|প্রস্তাবিত মান

  • রেজোলিউশন|বেস ছবির অনুপাত অনুযায়ী; মূল টিউটোরিয়ালের উদাহরণ 704 × 896

  • দৈর্ঘ্য|5 সেকেন্ড

  • ফ্রেম রেট|25 fps

  • Prompt Enhance|বন্ধ

ComfyUI ডাউনলোড ঠিকানা: https://pan.quark.cn/s/bb9d21f1e724

প্রম্পটে শুধু নড়াচড়ার বর্ণনা দিন, আবার চরিত্রের চেহারা বর্ণনা করবেন না। যেমন:

চরিত্রটি একই জায়গায় থাকবে, শুধু সামান্য শ্বাস নেবে, ধীরে একবার চোখের পাতা ফেলবে, মাথা খুব সামান্য স্বাভাবিকভাবে নাড়িয়ে আবার শুরুর ভঙ্গিতে ফিরবে,
ঠোঁট সবসময় বন্ধ থাকবে, স্থির ক্যামেরা, কোনো জুম বা প্যান নয়।

ফাইল এক্সপোর্ট করে নাম দিন: idle.mp4

প্রকৃত কথা বলার সময়ের ঠোঁটের নড়াচড়া Wav2Lip রিয়েল-টাইমে তৈরি করবে, তাই “কথা বলছে”, “শুনছে” ইত্যাদি আলাদা ভিডিও তৈরি করার প্রয়োজন নেই।

এখানে কয়েকটি সাধারণ ভুল ধারণা:

  • প্রম্পট এনহ্যান্সমেন্ট চালু করবেন না; prompt_enhance বন্ধ রাখুন, নইলে মডেল চরিত্র বা দৃশ্য নতুন করে ডিজাইন করতে পারে;

  • আউটপুটের অনুপাত ইনপুট ছবির অনুপাতের সঙ্গে অবশ্যই একই হতে হবে। 16:9 অনুভূমিক বেস ছবি ব্যবহার করলে ওয়ার্কফ্লো সমর্থিত অনুভূমিক মাপ বেছে নিন, যাতে চরিত্র টেনে বিকৃত বা কেটে না যায়;

  • প্রম্পটে শুধু নড়াচড়া লিখুন; চেহারা বারবার বর্ণনা করলে বরং চরিত্রের অবস্থান বদলে যেতে পারে;

  • 5 সেকেন্ডের ভিডিও লুপ করে অপেক্ষার দৃশ্য তৈরির জন্য যথেষ্ট। অকারণে ভিডিও দীর্ঘ করলে পুনরাবৃত্তি বা বিকৃতি দেখা দেওয়ার সম্ভাবনা বাড়ে।

৬. রেফারেন্স কণ্ঠ রেকর্ড করা (ভয়েস ক্লোনিং)

Qwen3-TTS রেফারেন্স অডিও অনুসারে কণ্ঠের ধরন ও বলার ভঙ্গি অনুকরণ করবে। 5–15 সেকেন্ডের একটি অডিও রেকর্ড করার পরামর্শ দেওয়া হয়। শর্তগুলো হলো:

  • শুধু একজন কথা বলবেন;

  • পরিবেশ শান্ত হবে, কোনো সঙ্গীত বা স্পষ্ট প্রতিধ্বনি থাকবে না;

  • কথার গতি স্বাভাবিক হবে এবং আবেগ কাঙ্ক্ষিত ক্লোন করা শৈলীর সঙ্গে সামঞ্জস্যপূর্ণ হবে;

  • সম্পূর্ণ নির্ভুল হুবহু ট্রান্সক্রিপ্টও সংরক্ষণ করতে হবে।

রেকর্ডিং শেষ হলে ফাইলটি এক্সপোর্ট করুন ( wav বা mp3 ফরম্যাটে), ডেস্কটপের AI ফোল্ডারে রাখুন এবং নাম দিন: ref.wav। রেকর্ডিংয়ে বলা কথাগুলো হুবহু লিখে রাখুন, পরে সেটি কনফিগারেশনে দিতে হবে। মনে রাখবেন, আবেগও ক্লোন করা হবে, তাই রেকর্ড করার সময় নিজের পছন্দের ভঙ্গি ব্যবহার করতে পারেন।

রেফারেন্স অডিওর জন্য “ওয়ান-ক্লিক ডিপ্লয়মেন্ট প্যাকেজ” ডাউনলোড করুন। এই স্ক্রিপ্টগুলো ভয়েস কথোপকথনের পরিবেশ ইনস্টল, বিভিন্ন সার্ভিস চালু এবং অডিও-ভিডিও সিঙ্ক্রোনাইজেশন পরিচালনা করতে ব্যবহৃত হয়। প্রকল্পের সংস্করণ অনুযায়ী স্ক্রিপ্ট পরিবর্তিত হতে পারে, তাই ব্যবহারের আগে ডাউনলোড ঠিকানা, পোর্ট ও মডেলের নাম দ্রুত পরীক্ষা করে নেওয়া ভালো। এতে রয়েছে:

  • ফাইল|ব্যবহার

  • install-voice.sh|ভয়েস কথোপকথন অংশের ওয়ান-ক্লিক ইনস্টলেশন

  • start-voice.sh|ভয়েস সার্ভিস চালু / বন্ধ / লগ

  • start-livetalking.sh|লিপ-সিঙ্ক সার্ভিস চালু / বন্ধ

  • avatar-sync.js|অডিও ফরওয়ার্ডিং + ডিজিটাল হিউম্যান ব্যাকগ্রাউন্ড স্তর

  • wav2lip256.pth|লিপ-সিঙ্ক মডেলের ওজন

  • wav2lip256_avatar1.tar.gz|অফিশিয়াল উদাহরণ অবতার (চেইন যাচাইয়ের জন্য)

ওয়ান-ক্লিক ডিপ্লয়মেন্ট প্যাকেজের ডাউনলোড ঠিকানা: https://pan.quark.cn/s/d4fc5bfc88eb

৭. ফাইল গোছানো

সবশেষে, 5 সেকেন্ডের ডিজিটাল হিউম্যান ভিডিও ফাইল idle.mp4 এবং অডিও ফাইল ref.wav` ডেস্কটপের AI ফোল্ডারে একসঙ্গে রাখুন। চূড়ান্ত ডিরেক্টরি কাঠামো:

C:\Users\আপনার ব্যবহারকারীর নাম\Desktop\AI\
├── install-voice.sh
├── start-voice.sh
├── start-livetalking.sh
├── avatar-sync.js
├── wav2lip256.pth
├── wav2lip256_avatar1.tar.gz
├── idle.mp4
└── ref.wav

৮. WSL2 ইনস্টল করা (Ubuntu 24.04 ও GPU সমর্থন)

অ্যাডমিনিস্ট্রেটর হিসেবে PowerShell খুলুন:

wsl --update
wsl --install -d Ubuntu-24.04

ইনস্টলেশন শেষ হলে কম্পিউটার রিস্টার্ট করুন, যাতে প্রথম ধাপের .wslconfig কার্যকর হয়। রিস্টার্টের পর Ubuntu টার্মিনাল খুলে ব্যবহারকারীর নাম ও পাসওয়ার্ড সেট করুন এবং GPU পাসথ্রু যাচাই করুন:

nvidia-smi

গ্রাফিক্স কার্ডের মডেল ও ড্রাইভার তথ্য দেখা গেলে GPU পাসথ্রু সঠিকভাবে কাজ করছে।

WSL-এর ভেতরে আবার গ্রাফিক্স ড্রাইভার ইনস্টল করবেন না। গ্রাফিক্স ড্রাইভার শুধু Windows-এ ইনস্টল করতে হবে; WSL হোস্টের দেওয়া CUDA পাসথ্রু ব্যবহার করে। WSL-এর ভেতরে আবার গ্রাফিক্স ড্রাইভার ইনস্টল করলে libcuda.so ওভাররাইট হয়ে GPU অকার্যকর হতে পারে।

৯. ইনস্টলেশন প্যাকেজ WSL-এ কপি করা

 Ubuntu টার্মিনালে Windows ব্যবহারকারীর নাম নিজেরটি দিয়ে বদলে নিন:

#কপি করুন (পথে নিজের ব্যবহারকারীর নাম দিন):
mkdir -p ~/setup
cp -r "/mnt/c/Users/আপনার ব্যবহারকারীর নাম/Desktop/AI/." ~/setup/
cd ~/setup
ls -la

#লাইন এন্ডিং রূপান্তর:
sudo apt update
sudo apt install -y dos2unix
dos2unix *.sh

#এক্সিকিউশন অনুমতি দিন:
chmod +x *.sh
  • লাইন এন্ডিং রূপান্তর করার কারণ: Windows-এর টেক্সট ফাইলে সাধারণত CRLF লাইন ব্রেক ব্যবহৃত হয়। রূপান্তর না করলে bash^M বা bad interpreter ত্রুটি দেখা দিতে পারে, এবং অনেকেই এখানে আটকে যান।

  • সরাসরি /mnt/c-তে প্রচুর Python ফাইল চালালে সাধারণত গতি কমে যায় এবং অনুমতি-সংক্রান্ত সমস্যাও দেখা দিতে পারে। Linux-এর হোম ডিরেক্টরিতে কপি করলে বেশি স্থিতিশীলভাবে চলবে।

দশ. ভয়েস কথোপকথন মডিউল ইনস্টল ও পরীক্ষা

1. ইনস্টলেশন স্ক্রিপ্ট চালান

cd ~/setup
./install-voice.sh

ইনস্টলেশনের সময় Python পরিবেশ তৈরি হবে এবং ভয়েস অ্যাক্টিভিটি ডিটেকশন, faster-whisper, Qwen3-TTS ও ফ্রন্টএন্ড কম্পোনেন্ট প্রস্তুত করা হবে। নেটওয়ার্ক ও হার্ডডিস্কের গতির ওপর নির্ভর করে এতে দশ মিনিটেরও বেশি সময় লাগতে পারে।

2. রেফারেন্স অডিওর ফরম্যাট একীভূত করুন

ffmpeg -i ~/setup/ref.wav -ac 1 -ar 16000 -c:a pcm_s16le ~/s2s/ref.wav

#ফরম্যাট নিশ্চিত করুন: অবশ্যই pcm_s16le / 16000 / 1 চ্যানেল হতে হবে:
ffprobe -v error \
  -show_entries stream=sample_rate,channels,codec_name \
  -show_entries format=duration \
  -of default=nw=1 ~/s2s/ref.wav

পরীক্ষার ফলাফলে অবশ্যই থাকতে হবে:

  • এনকোডিং: pcm_s16le

  • স্যাম্পল রেট: 16000

  • চ্যানেল: মনো

3. রেফারেন্স অডিওর শব্দশব্দ প্রতিলিপি লিখুন

নিচের লেখাটি রেকর্ডিংয়ে বাস্তবে বলা কথার সঙ্গে বদলে দিন:

sed -i 's|^REF_TEXT=.*|REF_TEXT="এখানে রেকর্ডিংয়ের সঙ্গে সম্পূর্ণ মিলে যাওয়া প্রতিলিপি লিখুন"|' ~/setup/start-voice.sh
grep -n "^REF_TEXT=" ~/setup/start-voice.sh

প্রতিলিপিতে কোনো শব্দ বাদ পড়া, ভুল লেখা বা যতিচিহ্নে বড় পার্থক্য থাকলে ক্লোনিংয়ের ফলাফল খারাপ হবে।

4. প্রথমবার চালু করুন

cd ~/setup
./start-voice.sh

এরপর Windows-এর ব্রাউজারে খুলুন:

http://localhost:7860/

ব্রাউজারকে মাইক্রোফোন ব্যবহারের অনুমতি দিন এবং পৃষ্ঠার ইন্টার‌্যাকশন বোতামে ক্লিক করে পরীক্ষা করুন। প্রথমবার Settings-এ গিয়ে NOISE GATE একেবারে বামদিকে নামিয়ে আনা বা সরাসরি বন্ধ করা ভালো। তা না হলে স্বাভাবিক কথাও ব্যাকগ্রাউন্ড শব্দ হিসেবে ফিল্টার হয়ে যেতে পারে।

এগারো. LiveTalking (ঠোঁটের নড়াচড়া সমন্বয়) ও Wav2Lip ইনস্টল করুন

একটি নতুন Ubuntu টার্মিনাল খুলে WSL-এ প্রবেশ করুন এবং ধারাবাহিকভাবে চালান:

mkdir -p ~/livetalking
cd ~/livetalking
git clone https://github.com/lipku/LiveTalking.git
cd LiveTalking

uv venv --python 3.10 .venv-lt
source .venv-lt/bin/activate

uv pip install torch==2.5.0 torchvision==0.20.0 torchaudio==2.5.0 \
  --index-url https://download.pytorch.org/whl/cu124

uv pip install -r requirements.txt
sudo apt install -y ffmpeg libgl1 libglib2.0-0

সিস্টেমে uv না থাকলে আগে uv-এর অফিসিয়াল ইনস্টলেশন নির্দেশনা অনুসারে এটি ইনস্টল করুন, তারপর ওপরের কমান্ডগুলো আবার চালান।

ঠোঁটের নড়াচড়ার মডেল ও ডিফল্ট ডিজিটাল মানব রাখুন:

cd ~/livetalking/LiveTalking

# নাম পরিবর্তন করে অবশ্যই করতে হবে: wav2lip.pth
cp ~/setup/wav2lip256.pth models/wav2lip.pth

# অফিসিয়াল নমুনা অবতার
tar -xzf ~/setup/wav2lip256_avatar1.tar.gz -C data/avatars/

# নিশ্চিত করুন
ls -lh models/ && ls data/avatars/

সতর্কতা: উৎস ফাইলটির নাম wav2lip256.pth হলেও কপি করার পর অবশ্যই wav2lip.pth নামে রাখতে হবে, কারণ প্রকল্পটি ডিফল্টভাবে এই নামেই ওজনের ফাইল খোঁজে।

প্রথমে অফিসিয়াল নমুনা ডিজিটাল মানব পরীক্ষা করুন:

cd ~/livetalking/LiveTalking
source .venv-lt/bin/activate

python app.py --transport webrtc --model wav2lip \
  --avatar_id wav2lip256_avatar1 \
  --stun 'stun:stun.l.google.com:19302'

ব্রাউজারে খুলুন:

http://localhost:8010/index.html

সংযোগ সফল হওয়ার পর একটি চীনা লেখা পাঠান। একই সঙ্গে শব্দ, চরিত্রের নড়াচড়া এবং মিলযুক্ত ঠোঁটের নড়াচড়া দেখা গেলেই এই ধাপ সফলভাবে সম্পন্ন হয়েছে বলে ধরা যাবে।

টার্মিনাল লগের inferfps ও finalfps দিয়ে রিয়েল-টাইম কর্মক্ষমতা দেখা যায়। সাধারণত দুটিই প্রায় 25 বা তার বেশি হওয়া ভালো। inferfps স্পষ্টভাবে কম হলে মডেলের লোড কমাতে বা হালকা কনফিগারেশন ব্যবহার করতে হবে।

অনলাইন টিউটোরিয়ালগুলোতে MuseTalk বেশি সুপারিশ করা হয়। এর ছবির মান ভালো হলেও এই AI ডিজিটাল মানবের জন্য ছবির মানের চাহিদা খুব বেশি নয়, অথচ এর VRAM ব্যবহার মাত্র প্রায় 1.3GB। কম আলো, পাশ ফিরে থাকা মুখ এবং ফ্রেমে মানুষের অংশ ছোট হওয়ার মতো দৃশ্যে কম খরচে গ্রহণযোগ্য ফল পাওয়া যায়, যেখানে MuseTalk 12G VRAM ব্যবহার করে। একই সঙ্গে, সম্পূর্ণ স্থানীয় ডিপ্লয়মেন্টে stun-এরও প্রয়োজন নেই। তবে খালি স্ট্রিং পাঠাবেন না, কারণ STUN ঠিকানার ফরম্যাট ভুল হলে WebRTC চালু হতে ব্যর্থ হতে পারে।

বারো. ভিডিওকে নিজের ডিজিটাল মানব অবতারে রূপান্তর করুন

LiveTalking চলাকালীন খুলুন:

http://localhost:8010/avatar.html

নিচের পদ্ধতিতে তৈরি করার কাজ জমা দিন:

  • অ্যালগরিদম: Wav2Lip

  • Avatar ID: wav2lip256_myavatar (wav2lip256_ প্রিফিক্সটি রাখুন)

  • ভিডিও ফাইল: আগে তৈরি করা idle.mp4

স্ট্যাটাস COMPLETED হওয়া পর্যন্ত অপেক্ষা করুন, তারপর নিজের ডিজিটাল মানব চালু করুন:

cd ~/setup
AVATAR_ID=wav2lip256_myavatar ./start-livetalking.sh

ভবিষ্যতে এটিকে ডিফল্টভাবে চালু করতে চাইলে স্ক্রিপ্টের Avatar ID পরিবর্তন করুন:

sed -i 's/wav2lip256_lingdu/wav2lip256_myavatar/' ~/setup/start-livetalking.sh

তৈরি করার পর মুখের কাছে স্পষ্ট ছিঁড়ে যাওয়া দাগ দেখা দিলে আগে পরীক্ষা করুন, নিষ্ক্রিয় ভিডিওতে হাত, চুল বা কলার বারবার মুখ ও চিবুক ঢেকে রাখছে কি না। তাড়াহুড়ো করে মডেল পরিবর্তন করবেন না।

তেরো. সঠিক ক্রমে সম্পূর্ণ সিস্টেম চালু করুন

পুরো পরিষেবাটি চালাতে তিনটি টার্মিনাল উইন্ডো প্রয়োজন।

প্রথম উইন্ডো: Windows-এর স্থানীয় বড় ভাষা মডেল

cd /d E:\llama.cpp
llama-server -m E:\llama.cpp\models\Qwen3-14B-Instruct-Q4_K_M.gguf ^
  -np 1 -c 8192 -fa on --temp 1.0 --top-p 0.95 ^
  --host 0.0.0.0 --port 8090

 দ্বিতীয় উইন্ডো: WSL ঠোঁট সমন্বয় পরিষেবা

cd ~/setup
./start-livetalking.sh

তৃতীয় উইন্ডো: WSL ভয়েস পরিষেবা

cd ~/setup
./start-voice.sh

শেষে http://localhost:7860/ খুলুন। প্রয়োজনে Ctrl + F5 চাপ দিয়ে জোরপূর্বক রিফ্রেশ করুন। প্রথমে পৃষ্ঠায় ক্লিক করে ডিজিটাল মানবের সংযোগ তৈরি করুন, তারপর ভয়েস ইন্টার‌্যাকশন বোতামে ক্লিক করে কথা বলা শুরু করুন।

পরিষেবা বন্ধ করতে চালান:

./start-voice.sh stop
./start-livetalking.sh stop

Windows-এর llama.cpp উইন্ডো সরাসরি Ctrl + C চাপ দিয়ে বন্ধ করা যায়।

চৌদ্দ. স্বাভাবিক ও কম-বিলম্বের ব্যক্তিত্ব নির্ধারণ করুন

ওয়েব পৃষ্ঠার Settings → INSTRUCTIONS-এ ব্যক্তিত্বের নির্দেশনা লিখুন। শুধু “কোমল, প্রাণবন্ত, সহানুভূতিশীল” ধরনের বিশেষণ স্তূপ করে দেবেন না। মডেলকে উত্তরের ছন্দ শেখাতে কয়েকটি ছোট কথোপকথনের উদাহরণও দেওয়া ভালো।

এ ধরনের নিয়ম ব্যবহার করতে পারেন:

তুমি একজন স্বাভাবিক ও বন্ধুত্বপূর্ণ ভার্চুয়াল সঙ্গী। কথ্য ভঙ্গিতে কথা বলবে, প্রতিবার শুধু দুই থেকে তিনটি বাক্যে উত্তর দেবে।
Markdown, তালিকা, নম্বর, ইমোজি এবং মঞ্চনির্দেশের বর্ণনা ব্যবহার করবে না।
ব্যবহারকারীর প্রশ্ন পুনরাবৃত্তি করবে না, সরাসরি উত্তর দেবে। অনিশ্চিত তথ্যের ক্ষেত্রে সৎভাবে তা জানাবে।

উদাহরণ:
ব্যবহারকারী: আজ একটু ক্লান্ত লাগছে।
সহকারী: তাহলে নিজেকে পুরো শক্তিতে কাজ করতে বাধ্য করো না। একটু পানি পান করো, দশ মিনিট বিশ্রাম নাও, তারপর আমরা ধীরে ধীরে বিষয়টি সামলাব।

ছোট উত্তর শুধু বাস্তব কথোপকথনের মতোই শোনায় না, সম্পূর্ণ ভয়েস সংশ্লেষণের অপেক্ষার সময়ও উল্লেখযোগ্যভাবে কমায়। Markdown ও ইমোজি বন্ধ রাখার উদ্দেশ্য হলো TTS যেন প্রতীক বা ফরম্যাটের চিহ্ন পড়ে না শোনায়। অপ্রয়োজনীয় দীর্ঘ যুক্তি-আউটপুট বন্ধ করে প্রথম বাক্যের বিলম্ব আরও কমাতে /no_think ব্যবহার করা যায়।

পনেরো. কথা কেড়ে নেওয়া ও ভুলভাবে বাধা দেওয়া কমান

রিয়েল-টাইম ভয়েস সিস্টেমে সাধারণত মডেল নয়, “ব্যবহারকারী কখন কথা শেষ করেছে বলে ধরা হবে” সেটিই সবচেয়ে কঠিনভাবে সমন্বয় করতে হয়। চীনা কথোপকথনের মাঝখানে প্রায়ই বিরতি থাকে, তাই নীরবতা শনাক্তের সময় খুব কম হলে সিস্টেম বারবার কথা কেড়ে নিতে পারে।

~/setup/start-voice.sh-এ নিম্নলিখিত প্যারামিটারগুলো চেষ্টা করতে পারেন:

MIN_SILENCE_MS=1200 
VAD_THRESH=0.6
MIN_SPEECH_MS=500
SPEECH_PAD_MS=300

প্যারামিটারগুলোর অর্থ:

  • MIN_SILENCE_MS: কতক্ষণ নীরব থাকার পর একটি বাক্য শেষ হয়েছে বলে ধরা হবে; প্রথমে 1200ms ব্যবহার করুন, প্রতিক্রিয়া ধীর মনে হলে 900ms-এ কমান;

  • VAD_THRESH: ভয়েস অ্যাক্টিভিটির সীমা; কোলাহলপূর্ণ পরিবেশে 0.7 করা যেতে পারে;

  • MIN_SPEECH_MS: অতিরিক্ত স্বল্পস্থায়ী শব্দ ফিল্টার করে;

  • SPEECH_PAD_MS: কথার আগে ও পরে সামান্য বাফার রাখে, ফলে শব্দ গিলে ফেলার সম্ভাবনা কমে।

লগ দেখুন:

tail -f ~/s2s/logs/s2s.log | grep -E "soft-ended|discard"

প্যারামিটার পরিবর্তনের পর লগের আচরণ একেবারেই বদল না হলে সাধারণত প্যারামিটার অকার্যকর নয়, বরং পরিষেবাটি সত্যিই পুনরায় চালু হয়নি।

ষোলো. VRAM না থাকলে কীভাবে লোড কমাবেন

সুবিধার ক্রম অনুযায়ী একে একে চেষ্টা করতে পারেন:

  • Qwen3-14B-এর বদলে Qwen3-8B ব্যবহার করুন, এতে প্রায় 3GB সাশ্রয় হতে পারে;

  • Qwen3-4B ব্যবহার করুন, এতে প্রায় 6GB সাশ্রয় হতে পারে;

  • ভয়েস রিকগনিশন মডেলটি `medium` করুন, এতে প্রায় 1.5GB সাশ্রয় হতে পারে;

  • llama.cpp-এর কনটেক্সট `-c 8192` থেকে `-c 4096`-এ কমান, এতে আরও প্রায় 1GB সাশ্রয় হবে;

  • Wav2Lip রাখুন, VRAM কম থাকলে আরও ভারী ঠোঁট-সমন্বয় মডেলে পরিবর্তন করবেন না।

ভয়েস চ্যাটে প্রতি দফায় সাধারণত মাত্র দুই-তিনটি বাক্য থাকে। 14B ও 8B-এর “শোনার অভিজ্ঞতা”-র পার্থক্য অপেক্ষার সময়ের কারণে তৈরি অভিজ্ঞতার পার্থক্যের চেয়ে বড় নাও হতে পারে। VRAM কম থাকলে আগে স্থিতিশীলতা ও কম বিলম্বকে অগ্রাধিকার দিন।

সতেরো. সাধারণ ত্রুটি দ্রুত যাচাই

  • লক্ষণ|কারণ ও সমাধান

  • bad interpreter বা ^M দেখা যাচ্ছে|স্ক্রিপ্টে Windows লাইন ব্রেক রয়েছে, চালান `dos2unix *.sh

  • WebRTC সব সময় সংযোগ করতে পারছে না|`.wslconfig`-এ `hostAddressLoopback=true` আছে কি না পরীক্ষা করুন, তারপর `wsl --shutdown` চালান

  • ওয়েবপেজে JSON পার্সিং ব্যর্থতার বার্তা|সাধারণত ব্যাকএন্ড 500 ত্রুটি ফেরত দিয়েছে; চালুর টার্মিনালে দেখানো প্রকৃত ত্রুটি পরীক্ষা করুন

  • malformed/uri:invalid scheme|STUN ঠিকানা খালি বা ভুল ফরম্যাটের; একটি বৈধ `stun:` ঠিকানা দিন

  • ওয়েবপেজ খোলা যাচ্ছে, কিন্তু কথা বললে কোনো প্রতিক্রিয়া নেই|NOISE GATE বন্ধ করুন বা এর মাত্রা কমান, এবং ব্রাউজার মাইক্রোফোনের অনুমতি পেয়েছে কি না নিশ্চিত করুন

  • ডিজিটাল মানব বারবার কথা কেড়ে নিচ্ছে|`MIN_SILENCE_MS` বাড়ান, শুরুতে 1200ms দিয়ে পরীক্ষা করার পরামর্শ দেওয়া হয়

  • উত্তর প্রশ্নের সঙ্গে মিলছে না|প্রথমে ভুল বাক্য বিভাজন ঠিক করুন এবং পরস্পরবিরোধী রিয়েল-টাইম ট্রান্সক্রিপশন প্রক্রিয়া একসঙ্গে চালু নেই কি না নিশ্চিত করুন

  • প্রতিবার কণ্ঠের পার্থক্য অনেক|TTS Base মডেল ব্যবহার করা হচ্ছে কি না পরীক্ষা করুন, এবং রেফারেন্স অডিও ও হুবহু লিখিত প্রতিলিপি মিলিয়ে দেখুন

  • কণ্ঠস্বর যেন সুর পরিবর্তিত হয়েছে|`avatar-sync.js`-এর স্যাম্পলিং রেট পরীক্ষা করুন; সাধারণত এটি 16000Hz অডিওর সঙ্গে সামঞ্জস্যপূর্ণ হওয়া উচিত

  • পোর্ট绑定 ব্যর্থ, কিন্তু কোনো প্রসেস খুঁজে পাওয়া যাচ্ছে না|Hyper-V সংরক্ষিত পোর্টের পরিসর দেখুন এবং সংরক্ষিত নয় এমন একটি পোর্ট ব্যবহার করুন

  • GPU পূর্ণ ব্যবহৃত হচ্ছে, কিন্তু দীর্ঘ সময় কোনো অগ্রগতি নেই|ভিডিও মেমরি সিস্টেম মেমরিতে ফিরে যাওয়ার ঘটনা ঘটতে পারে; মডেলের আকার কমান, অথবা NVIDIA কন্ট্রোল প্যানেলে CUDA সিস্টেম মেমরি fallback নীতি পরীক্ষা করুন

  • লোকাল নেটওয়ার্কের IP ব্যবহার করলে মাইক্রোফোন নেই|মাইক্রোফোন ব্যবহারের অনুমতি দিতে ব্রাউজার সাধারণত localhost অথবা HTTPS চায়

  • কম্পিউটার স্লিপ থেকে জাগার পর পরিষেবা কাজ করছে না|`wsl --shutdown` চালিয়ে তিনটি পরিষেবা পুনরায় চালু করুন

  • আবার চালু করলে পোর্ট ব্যবহৃত হওয়ার বার্তা আসে|প্রথমে দুটি `stop` কমান্ড চালান, পুরোনো প্রসেস শেষ হয়েছে নিশ্চিত করে পুনরায় চালু করুন

আঠারো, ঐচ্ছিক: এক-ক্লিক স্টার্টআপ স্ক্রিপ্ট তৈরি করা

তিনটি পরিষেবা স্বাধীনভাবে স্থিতিশীলভাবে চালানো যাচ্ছে নিশ্চিত হওয়ার পর, Windows-এ start-ai-avatar.bat নামে একটি ফাইল তৈরি করতে পারেন:

@echo off
start "llama-server" cmd /k "cd /d E:\llama.cpp && llama-server -m E:\llama.cpp\models\Qwen3-14B-Instruct-Q4_K_M.gguf -np 1 -c 8192 -fa on --temp 1.0 --host 0.0.0.0 --port 8090"
timeout /t 25

start "livetalking" wsl -d Ubuntu-24.04 -- bash -lc "cd ~/setup && ./start-livetalking.sh"
timeout /t 30

start "voice" wsl -d Ubuntu-24.04 -- bash -lc "cd ~/setup && ./start-voice.sh"
timeout /t 10

start http://localhost:7860/

অপেক্ষার সময় আপনার কম্পিউটার অনুযায়ী সামঞ্জস্য করুন। প্রথমবার ডিপ্লয় করার সময় সরাসরি ব্যাচ স্ক্রিপ্টের ওপর নির্ভর করবেন না; এতে কোনো ধাপ ব্যর্থ হলে কোন পরিষেবায় সমস্যা হয়েছে তা শনাক্ত করা কঠিন হয়।

উনিশ, মোবাইল থেকে অ্যাক্সেস ও ইন্টারনেটে উন্মুক্ত করার নিরাপত্তা সমস্যা

ব্রাউজারের মাইক্রোফোন একটি সংবেদনশীল অনুমতি। সাধারণ লোকাল নেটওয়ার্ক IP দিয়ে ওয়েবপেজ খুললে, পেজটি নিরাপদ কনটেক্সটে না থাকায় ব্রাউজার অনুমতি প্রত্যাখ্যান করতে পারে। প্রযুক্তিগতভাবে Cloudflare Tunnel-এর মতো টুল ব্যবহার করে স্থানীয় পেজকে HTTPS ঠিকানায় ম্যাপ করা যায়, যেমন:

cloudflared tunnel --url http://localhost:7860

তবে এর অর্থ হলো স্থানীয় পরিষেবা ইন্টারনেটের মাধ্যমে অ্যাক্সেসযোগ্য হতে পারে। পরিচয় যাচাইবিহীন অস্থায়ী ঠিকানা প্রকাশ্যে ছড়িয়ে দেবেন না, বিশেষ করে ব্যক্তিগত কণ্ঠ, কথোপকথনের রেকর্ড ও ক্যামেরার ফুটেজযুক্ত পরিষেবা সরাসরি উন্মুক্ত করবেন না। দূর থেকে ব্যবহার করতে হলে অন্তত অ্যাক্সেস নিয়ন্ত্রণ যোগ করুন এবং ব্যবহার শেষে দ্রুত টানেল বন্ধ করুন।

বিশ, ডিপ্লয়মেন্ট সত্যিই সফল হয়েছে কি না বোঝার উপায়

“ওয়েবপেজ খোলা যাচ্ছে” এটিকে সফলতার মানদণ্ড হিসেবে ধরবেন না। নিচের ক্রমে যাচাই করার পরামর্শ দেওয়া হয়:

  • 1. llama.cpp-এর 8090 পোর্ট স্বাভাবিকভাবে চীনা উত্তর তৈরি করতে পারে;

  • 2. ভয়েস ওয়েবপেজ মাইক্রোফোনের ইনপুট শনাক্ত করে সংশ্লেষিত কণ্ঠ ফেরত দেয়;

  • 3. LiveTalking-এর ডেমো চরিত্র কথা বলতে পারে এবং মিলযুক্ত লিপ-সিঙ্ক তৈরি করে;

  • 4. কাস্টম অপেক্ষমাণ ভিডিও সফলভাবে Avatar-এ রূপান্তর করা যায়;

  • 5. তিনটি পরিষেবা সংযুক্ত করার পর প্রথম বাক্যের অপেক্ষা প্রায় 1–2 সেকেন্ড হয় এবং ধারাবাহিক কথোপকথনে বারবার কথা কেড়ে নেওয়ার সমস্যা থাকে না;

  • 6. দীর্ঘ সময় চলার সময় ভিডিও মেমরি ক্রমাগত বাড়ে না, এবং পরিষেবা পুনরায় চালু ও বন্ধ করার কমান্ড কার্যকর থাকে।

একটি উত্তরের বিলম্ব সাধারণত একাধিক ধাপের যোগফল থেকে আসে: ভয়েস শনাক্তকরণ, ভাষা মডেলের প্রথম token, ভয়েস সংশ্লেষণ, লিপ-সিঙ্কের inference এবং সম্পূর্ণ অডিওর জন্য অপেক্ষার buffer। অভিজ্ঞতা উন্নত করতে প্রথমে লগ দেখে কোন ধাপটি সবচেয়ে ধীর তা নির্ধারণ করুন, অন্ধভাবে সব মডেল বদলাবেন না।

উপসংহার:

এই সমাধানের আসল আকর্ষণ শুধু “একটি ছবিকে কথা বলানো” নয়; বরং এটি কয়েকটি স্থানীয় AI মডিউলকে যুক্ত করে একটি পূর্ণাঙ্গ রিয়েল-টাইম ইন্টার‌্যাকশন চেইন তৈরি করে। এটি ভার্চুয়াল সঙ্গী হিসেবে ব্যবহার করা যায়, আবার প্রদর্শনী হলের গাইড, ডেস্কটপ ভয়েস অ্যাসিস্ট্যান্ট, লাইভস্ট্রিমের ডিজিটাল মানব বা চরিত্রের প্রোটোটাইপ হিসেবেও রূপান্তর করা যায়।

প্রথমবার ডিপ্লয় করার সময় সবচেয়ে স্থিতিশীল কৌশল হলো ধাপে ধাপে যাচাই করা: প্রথমে ভাষা মডেল চালান, তারপর ভয়েস পরীক্ষা করুন, এরপর লিপ-সিঙ্ক পরীক্ষা করুন, সবশেষে কাস্টম চরিত্র ব্যবহার করুন। প্রতিটি ধাপের সফলতার মানদণ্ড স্পষ্ট থাকলে জটিল সিস্টেমকেও শনাক্তযোগ্য ও পুনরুৎপাদনযোগ্য ছোট সমস্যার সমষ্টিতে ভাগ করা যায়।

শেষবারের মতো মনে করিয়ে দিই: ডিজিটাল মানবের চেহারা ও কণ্ঠ উভয়ই ব্যক্তিগত অধিকার-সংক্রান্ত বিষয় হতে পারে। প্রকাশ্য প্রদর্শন বা বাণিজ্যিক ব্যবহারের আগে অবশ্যই উপকরণের অধিকারধারীর অনুমতি নিন এবং স্পষ্টভাবে জানান যে এগুলো AI সিস্টেমে ব্যবহার করে মানুষের সঙ্গে ইন্টার‌্যাক্টিভ কথোপকথন করা হচ্ছে।

#এআই অডিও#এআই ডিজাইন#এআই প্রোগ্রামিং#এআই ফাইন্যান্স#এআই ব্রাউজার#এআই ভিডিও#ডেটা বিশ্লেষণ#দক্ষতা টুল#বড় মডেল#মুক্ত উৎস